26 de jul. de 2014

Contador em LaTeX com referência cruzada

Quem usa LaTeX sabe que é possível referenciar figuras, tabelas e equações através de labels, porque usa contadores internos, como variáveis de programação mesmo. Então, é possível, sim, ter um contador ao longo do texto e fazer referência a esse contador.

Minha primeira tentativa foi usando os comandos \newcounter{foo} e \addtocounter{foo}{1}. O primeiro, que vai no preâmbulo, define uma variável foo que vai ser incrementada ao longo do texto através do segundo comando, onde o número entre chaves é o número a somar ao contador. Esse sistema funciona para referências diretas, por exemplo, se eu estiver falando Tabela 3 em vez de tabela a seguir, basta incrementar o contador e mostrar, no texto, quanto vale o contador (eu usei o \arabic{foo}). A referência que usei para essa tentativa foi o LaTeX Counters.

Então, percebi que, se precisasse referenciar ao tal foo mais à frente do texto, perderia a referência, pois só teria o valor atual de foo (se, por exemplo, forem colocados dois foo entre onde quero referenciar e onde estou referenciando, vou obter foo+2). Se acharam confuso, aposto que este tópico está ainda mais, vejam o exemplo abaixo para esclarecer.

A solução foi com os comandos \newenvironment e \refstepcounter. No primeiro, defino o nome do novo ambiente entre chaves e o número de argumentos a ser recebido entre colchetes. O segundo serve para guardar uma referência numa label a este número. (Mais sobre o \newenvironment em Wikibooks). A seguir está o código:

  1. \documentclass{article}
  2.  
  3. \newcounter{tabela} \setcounter{tabela}{0}
  4. \newcounter{subtabela}[tabela] \setcounter{subtabela}{0}
  5.  
  6. \newenvironment{tabela}[1]
  7. {
  8.    \refstepcounter{tabela} %contador
  9.     \textbf{Tabela \thetabela} #1
  10. }
  11.  
  12. \begin{document}
  13.  
  14. \tabela{Primeira Tabela}\label{um}\\
  15. \tabela{Segunda Tabela}\label{dois}\\
  16. \tabela{Terceira Tabela}\label{tres}\\
  17. \tabela{Quarta Tabela}\label{quatro}\\
  18.  
  19. Tabela 1 = \ref{um}\\
  20. Tabela 3 = \ref{tres}\\
  21. Tabela 2 = \ref{dois}\\
  22. Tabela 4 = \ref{quatro}\\
  23. \end{document}

O comando \tabela recebe como entrada o texto da tabela e dá como saída em negrito seu número, seguido do texto. Abaixo a saída gerada:

Um comentário:

Samyr disse...

Eu estava exatamente com essa dúvida. Meus parabens pela solução.

Quem sou eu

Raphael Fernandes
Carioca, Brasileiro, Estudante de Robótica
Hiperativo, Imperativo
Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
Musicalmente falando, sou assim.

Related Posts Plugin for WordPress, Blogger...

Veja também...