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:

Nenhum comentário:

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...