LaTeX e os ficheiros temporários

O LaTeX é um processador que lê um ficheiro, processa-o, e gera outro ficheiro com o resultado do processamento.  O primeiro ficheiro (de entrada) é um ficheiro de texto, frequentemente chamado de ficheiro fonte, que contém o texto do nosso documento e comandos LaTeX que especificam maioritariamente a estrutura desse documento.  O processamento realizado pelo (pdf)LaTeX gera um ficheiro PDF que, com base em templates de visualização, contém uma representação tipográfica do nosso texto.

O ficheiro fonte, normalmente com a extensão “.tex”, contém com frequência referências para figuras, tabelas, equações, ou outros objectos numerados presentes no documento, bem como citações de outros documentos presentes na bibliografia.  Em ambos os casos, quando o processador LaTeX encontra uma referência para um objeto (e.g., “blah~\ref{fig:label} blah”) ou uma citação bibliográfica (e.g., “blah~\cite{fig:label} blah”), estas podem referenciar algo que só está definido mais à frente, pelo que o LaTeX não sabe o que colocar no lugar da referência/citação.

O LaTeX resolve esta questão da correspondência das etiquetas dos objetos numerados e das citações para os respetivos identificadores, recorrendo a ficheiros temporários/auxiliares.

Lidar com referências para objetos numerados

O processador LaTeX mantém contadores separados para cada tipo de objeto numerado e, quando está a processar o ficheiro fonte, sempre que encontra uma definição de um objeto numerado este contador é incrementado. Quando, por exemplo, encontra a definição de figura com a etiqueta “\label{fig:label}”, regista num ficheiro auxiliar a correspondência da etiqueta “fig:label” para o número da respetiva figura e incrementa o contador de figuras. Procede de igual forma para as tabelas, equações e outros objetos afins.

Assim, no final do primeiro processamento do ficheiro fonte, temos um PDF onde todas as referências a objetos numerados (e citações) aparecem com pontos de interrogação.  Mas no tal ficheiro auxiliar está a correspondência de todas as etiquetas encontradas no documento para os respetivos identificadores.

Ao processar de novo o documento, sempre que o LaTeX encontraos referência a um objeto numerado (e.g., “blah~\ref{fig:label} blah”) o ficheiro auxiliar é consultado e esta é substituída pelo respetivo identificador que estava registado no ficheiro auxiliar.  Da segunda (e seguintes) vezes que o processador LaTeX corre, uma nova versão do ficheiro auxiliar é produzida pelo processamento corrente mas é a versão anterior (da última execução) que é utilizada para substituir as referências que aparecem no texto.

Assim, as referências a objetos numerados estão sempre “um processamento atrasado” em relação ao documento. Por isso, para garantir que todas as referências estão corretas e atualizadas, é necessário processar o documento três vezes seguidas sem fazer qualquer alteração neste.

Lidar com bibliografia

A situação com a bibliografia é parecida mas não igual.  Quando aparece uma citação bibliográfica no documento (e.g., “blah~\cite{doc} blah”) o LaTeX não sabe como representar a citação, porque não sabe nem o valor associado nem como representar esse valor (devido às muitas normas para citação bibliográfica).

Para realizar esta tarefa, o LaTeX conta com um processador adicional (normalmente o “bibtex”) que conhece as muitas normas de citação e representação da bibliografia e gera, também em ficheiros auxiliares, a correspondência do “\cite{doc}” para algo dependente da norma utilizada, como por exemplo “[1]”, ou “[Lou17]”, ou “Lourenço (2017)”.  O bibtex utiliza mais uns ficheiros auxiliares adicionais para dar indicações ao LaTeX de como as referências bibliográficas devem ser apresentadas (normalmente no final do documento).

Assim, tal como acontece nas referências a objetos numerados, as citações também estão sempre “um processamento atrasado” em relação ao documento.

Regra de algibeira

Quando vai produzir a versão final do seu documento realize os seguintes passos:

  1. Limpar todos os ficheiros auxiliares (normalmente os editores de texto apropriados para LaTeX têm uma opção num dos menus para realizar esta tarefa).
  2. Executar os seguintes passos:
    pdfLaTeX -> bibtex -> pdfLaTeX -> pdfLaTeX
  3. Assegure-se que o processamento do seu documento não gerou quaisquer erros.
  4. Reveja todos os warnings e assegure-se que nenhum deles se refere a referências ou citações desconhecidas.  Isto normalmente acontece por erro ao digitar a etiqueta no respetivo “\ref{etiqueta}” ou “\cite{doc}”.

Comentários

Mensagens populares deste blogue

Como forçar uma nova linha dentro de uma tabela?

Sobre o posicionamento de figuras e tabelas no documento

Gráfico ou Tabela?