BEARBEITEN

BEARBEITEN

Ich habe ein Format, das wiederholt Ti verwendetkZ Bilder im Hintergrund bestimmter Seiten. Da diese Bilder benötigen remember picture, overlay, können sie nicht ausgelagert werden. Um die Kompilierungszeit zu kontrollieren, speichere ich daher Bilder, die ich immer wieder brauche, in Boxen am Anfang des Dokuments und verwende diese Boxen dann nur auf den Seiten, auf denen ich sie brauche.

Das funktioniert gut. Das einzige Problem ist, dass ich mehrfach definierte Labels bekomme. Das Problem ist nicht so sehr, dass LaTeX mich davor warnt, sondern dass es viele davon gibt und sie Warnungen übertönen, die mir wichtig sind. Insbesondere möchte ich wissen, ob andere Labels mehrfach definiert werden, weil das meine Querverweise durcheinanderbringen würde.

Ich versuche also, die Anzahl der falschen Warnungen, die ich bekomme, zu reduzieren. Bei externalisierten Bildern habe ich ein paar Fortschritte gemacht (indem ich ein Makro pagesltsnur bei Externalisierung neu definiert habe), aber für die Bilder, die ich boxe, muss ich (wenn möglich) etwas anderes machen.

Hier ist ein Minimalbeispiel, das das Problem demonstriert.

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

Der Punkt hier ist also, dass das Bild einmal generiert und unter gespeichert wird \mybox. Diese Box wird dann auf Seite 1 in den Hintergrund gestellt. Sie wird dann auf Seite 3 in den Hintergrund gestellt. Die Ausgabe ist in Ordnung.

gewünschte Ausgabe

Das Problem besteht darin, dass eine mehrfach definierte Etikettenwarnung generiert wird

LaTeX Warning: Label `pgfid1' multiply defined.

weil die .auxDatei enthält

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

Gibt es dafür Hilfe? Offensichtlich ist die Warnung in dem Sinne unberechtigt, dass sie nichts schadet. Aber meine Liste der Warnungen ist voll von unberechtigten Warnungen, die ich nicht loswerden kann, und es wird nahezu unmöglich, die zu finden, die ich identifizieren muss, insbesondere wenn ich in Eile bin.

BEARBEITEN

Nur zur Klarstellung: Ich weiß, dass es remember picturedafür verantwortlich ist, die Beschriftungen in die .auxDatei zu schreiben, die die Warnungen auslösen. Aber das Entfernen davon ist keine Option, weil overlayes erforderlich ist:

warum ich <code>Bild merken</code> brauche

Antwort1

Wie ich in den Kommentaren erwähnt habe, wäre es meiner Meinung nach eine echte Lösung, den Tikz-Merkermechanismus nicht zu verwenden, da Sie hier keine aktuellen Koordinaten speichern müssen, da Sie das Tikz an einer festen Position auf der Seite platzieren.

Von hier aus ist es jedoch am einfachsten, alle Einstellungen nach der ersten zu ignorieren, indem Sie einen Befehl in die AUX-Datei schreiben, der die Einstellung verwirft.

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

das erzeugt eine AUX-Datei

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

also wird der zweite \pgfsysmarkverworfen.

verwandte Informationen