編集

編集

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ラベルをファイルに書き込むのは であることを知っています。ただし、これを削除することはオプションではありません。.auxoverlay

なぜ <code>remember picture</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}

したがって、2 番目は\pgfsysmark破棄されます。

関連情報