РЕДАКТИРОВАТЬ

РЕДАКТИРОВАТЬ

У меня есть формат, который многократно использует TiкZ-изображения на заднем плане некоторых страниц. Поскольку эти изображения требуют remember picture, overlay, их нельзя вынести наружу. Чтобы контролировать время компиляции, я сохраняю нужные мне изображения повторно в полях в начале документа, а затем просто использую эти поля на тех страницах, где они мне нужны.

Это работает отлично. Единственная проблема в том, что я получаю множественно определенные метки. Проблема не столько в том, что LaTeX предупреждает меня об этом, сколько в том, что их много, и они заглушают предупреждения, которые меня интересуют. В частности, я хочу знать, получают ли другие метки множественно определенные, потому что это испортит мои перекрестные ссылки.

Поэтому я пытаюсь сократить количество ложных предупреждений, которые я получаю. Я добился небольшого прогресса в случае с внешними изображениями (переопределив макрос только pagesltsпри внешнем), но мне нужно сделать что-то другое (если возможно) для изображений, которые я упаковываю.

Вот минимальный пример, демонстрирующий проблему.

\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} 

Итак, суть в том, что изображение генерируется один раз и сохраняется в \mybox. Затем это поле помещается на задний план на странице 1. Затем оно помещается на задний план на странице 3. Вывод в порядке.

желаемый результат

Проблема в том, что он генерирует предупреждение о множественно определенной метке

LaTeX Warning: Label `pgfid1' multiply defined.

потому что .auxфайл содержит

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

Есть ли какая-то помощь? Очевидно, что предупреждение ложное в том смысле, что оно ничему не вредит. Но мой список предупреждений завален ложными предупреждениями, от которых я не могу избавиться, и становится почти невозможно найти те, которые мне нужно идентифицировать, особенно когда я спешу.

РЕДАКТИРОВАТЬ

Просто для ясности, я знаю, что это remember pictureотвечает за запись меток в .auxфайл, которые вызывают предупреждения. Но удалить это не вариант, потому что overlayтребует:

зачем мне нужно <code>запомнить картинку</code>

решение1

Как я уже упоминал в комментариях, я думаю, что реальным решением было бы не использовать механизм запоминания tikz, поскольку здесь вам не нужно сохранять какие-либо текущие координаты, поскольку вы размещаете tikz в фиксированном положении на странице.

Однако, начиная с этого момента, проще всего просто игнорировать все настройки после первой, записав в aux-файл команду, которая отменяет настройку.

\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} 

который создает aux-файл

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

поэтому второй вариант \pgfsysmarkотбрасывается.

Связанный контент