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 pageslts
apenas 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.
O problema é que ele gera um aviso de rótulo multidefinido
LaTeX Warning: Label `pgfid1' multiply defined.
porque o .aux
arquivo 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 .aux
arquivo que acionam os avisos. Mas remover isso não é uma opção porque overlay
exige:
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.