我有一個重複使用 Ti 的格式k某些頁面的背景有 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 頁的背景中。
問題是它會產生多重定義的標籤警告
LaTeX Warning: Label `pgfid1' multiply defined.
因為該.aux
文件包含
\pgfsyspdfmark {pgfid1}{4736286}{47362867}
\pgfsyspdfmark {pgfid1}{4736286}{47362867}
有什麼幫助嗎?顯然,這個警告是虛假的,因為它不會傷害任何東西。但是我的警告清單被我無法擺脫的虛假警告所淹沒,而且幾乎不可能找到我確實需要識別的警告,尤其是當我很著急的時候。
編輯
只是為了澄清,我知道remember picture
負責將標籤寫入.aux
觸發警告的文件。但刪除它不是一個選項,因為overlay
需要它:
答案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
被丟棄。