EDITAR

EDITAR

Eu tenho um formato que usa Ti repetidamentekZ imagens no fundo de determinadas páginas. Como essas imagens exigem remember picture, overlay, elas não podem ser externalizadas. Para controlar o tempo de compilação, salvo as imagens necessárias repetidamente em caixas no início do documento e depois uso essas caixas nas páginas onde preciso delas.

Isso funciona bem. O único problema é que recebo rótulos definidos de forma múltipla. O problema não é tanto que o LaTeX me avisa sobre isso, mas sim que existem muitos deles e eles abafam os avisos que me interessam. Em particular, quero saber se outros rótulos são definidos de forma múltipla, porque isso atrapalharia minhas referências cruzadas.

Portanto, estou tentando reduzir o número de avisos falsos que recebo. Fiz um pequeno progresso no caso de imagens externalizadas (redefinindo uma macro pagesltsapenas quando externalizando), mas preciso fazer algo diferente (se possível) para as imagens que estou encaixotando.

Aqui está um exemplo mínimo que demonstra o problema.

\documentclass{article}
\usepackage{tikz,everypage,kantlipsum}
\newsavebox\mybox

\begin{document}
\sbox\mybox{%
  \begin{tikzpicture}[remember picture, overlay]
    \shade [top color=blue!50!black, bottom color=blue!50!black, middle color=blue!50!cyan] (current page.north west) rectangle (current page.south east);
  \end{tikzpicture}%
}%
\AddThispageHook{\usebox\mybox}
\kant[1-8]
\AddThispageHook{\usebox\mybox}
\kant[9-10]
\end{document} 

Portanto, o ponto aqui é que a imagem seja gerada uma vez e salva no arquivo \mybox. Esta caixa é então colocada em segundo plano na página 1. Ela é então colocada em segundo plano na página 3. A saída é boa.

saída desejada

O problema é que ele gera um aviso de rótulo multidefinido

LaTeX Warning: Label `pgfid1' multiply defined.

porque o .auxarquivo contém

\pgfsyspdfmark {pgfid1}{4736286}{47362867}
\pgfsyspdfmark {pgfid1}{4736286}{47362867}

Existe alguma ajuda para isso? Obviamente, o aviso é espúrio no sentido de que não prejudica nada. Mas minha lista de avisos está sendo inundada por avisos espúrios dos quais não consigo me livrar e está ficando quase impossível encontrar aqueles que preciso identificar, especialmente quando estou com pressa.

EDITAR

Só para esclarecer, sei que ele remember pictureé o responsável por escrever os rótulos no .auxarquivo que acionam os avisos. Mas remover isso não é uma opção porque overlayexige:

por que preciso de <code>lembrar a imagem</code>

Responder1

Como mencionei nos comentários, acho que uma solução real seria não usar o mecanismo de lembrança do tikz, pois aqui você não precisa salvar nenhuma coordenada atual, pois está colocando o tikz em uma posição fixa na página.

Porém, a partir daqui, o mais fácil é ignorar todas as configurações após a primeira, escrevendo um comando no arquivo aux que descarta a configuração.

\documentclass{article}
\usepackage{tikz,everypage,kantlipsum}
\newsavebox\mybox
\makeatletter
\def\eatpgfmark{\write\@auxout{\string\@gobblefour}}
\makeatother
\begin{document}
\sbox\mybox{%
  \begin{tikzpicture}[remember picture, overlay]
    \shade [top color=blue!50!black, bottom color=blue!50!black, middle color=blue!50!cyan] (current page.north west) rectangle (current page.south east);
  \end{tikzpicture}%
}%
\AddThispageHook{\usebox\mybox}
\kant[1-8]
\AddThispageHook{\eatpgfmark\usebox\mybox}
\kant[9-10]
\end{document} 

que produz um arquivo aux

\relax 
\pgfsyspdfmark {pgfid1}{4736286}{47362867}
\@gobblefour
\pgfsyspdfmark {pgfid1}{4736286}{47362867}

então o segundo \pgfsysmarké descartado.

informação relacionada