Os 'rótulos definidos multiplicados' referem-se ao último item rotulado?

Os 'rótulos definidos multiplicados' referem-se ao último item rotulado?

Em meu trabalho como compositor LaTeX, costumo lidar com with multiply definedavisos de rótulos. A maioria deles é sobre equações.

Minha pergunta é: o \refcomando "sempre" refere-se ao último item rotulado? Na minha experiência é assim, mas gostaria de saber se há casos (por exemplo, configurações ou pacotes) em que isso não seja verdade.

Por exemplo, se eu tiver:

\documentclass[11pt]{article}

\begin{document}

\section{Introduction}

Equation~(\ref{eq1})
\begin{equation}
1 +1 =3
\label{eq1}
\end{equation}
Equation~(\ref{eq1})
\begin{equation}
2 +2 =5
\label{eq1}
\end{equation}

\end{document}

ambas as referências referem-se à última equação.

Observação.Sempre pedimos ao(s) autor(es) que verifiquem o aviso, mas a política da minha empresa é remover o aviso "antes" de enviar as provas. Estou procurando uma forma de "script" para gerenciar esses casos, comentando todos os rótulos definidos de forma múltipla, exceto o último, mas preciso saber se essa é uma abordagem segura.

Responder1

Se você olhar para o .auxarquivo, verá

\relax 
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}}
\newlabel{eq1}{{1}{1}}
\newlabel{eq1}{{2}{1}}

Como parte do \begin{document}, o LaTeX lê o .auxarquivo (conforme produzido na execução anterior) e o comando \newlabel{eq1}{{1}{1}}essencialmente faz

\global\@namedef{r@eq1}{{1}{1}}

que é então substituído pelo posterior

\global\@namedef{r@eq1}{{2}{1}}

com o efeito que \ref{eq1}apontará para a equação 2, pois \ref{eq1}verifica se a macro \r@eq1(produzida com \csname, portanto os números são legais nela) está definida e, no caso, utiliza o conteúdo do primeiro par de chaves do seu texto substituto ( \pagerefusa o segundo).

Quando \end{document}é processado, o .auxarquivo produzido na execução atual é lido, mas \newlabelfaz coisas diferentes, entre elas verificar se o rótulo já apareceu.

A solução é muito simples:nuncarótulos duplicados. Caso existam, você precisa pedir ao autor para corrigi-los. Usar o último pode não ser a intenção do autor.

informação relacionada