我正在尝试创建一个包含以下内容的文档:
- 封面图片(见1在这篇文章下方)使用包设置为背景
eso-pic
。 - 我使用外部化的几张 tikz 图片
\tikzexternalize[up to date check={md5}]
。
问题:封面图像的一部分包含在 tikz 图片的背景中。
我怎样才能解决这个问题并保持外部化?
下列的汤姆的回答:在我的完整文档中,我\AddToShipoutPictureBG
在宏内部使用,所以我必须\tikzset{external/optimize command away=\mymacro}
在宏定义之后而不是在\tikzexternalize
命令中进行设置。
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[up to date check={md5}]
\usepackage{eso-pic}
\usepackage{graphicx}
\begin{document}
% Add title image across the complete page
\AddToShipoutPictureBG*{\AtPageLowerLeft{%
\includegraphics[width=\paperwidth,height=\paperheight]{my_picture.jpg}}}
\newpage\null\newpage
\tikzsetnextfilename{tikz_picture}
\begin{tikzpicture}
\draw[red, thick] (-1,2) -- (2,-4);
\draw[red, thick] (-1,-1) -- (2,2);
\filldraw[red] (0,0) circle (2pt) node[anchor=west]{A tikz picture};
\end{tikzpicture}
\end{document}
答案1
optimize command away=\AddToShipoutPictureBG
你可以在 enable 时使用该选项。注意必须在命令之前加载\tikzexternalize
包。eso-pic
\tikzexternalize
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\usepackage{eso-pic} %%load the 'eso-pic' package before '\tikzexternalize', otherwise the command '\AddToShipoutPictureBG' will not be defined.
\tikzexternalize[
up to date check={md5},
optimize command away=\AddToShipoutPictureBG
]
\usepackage{graphicx}
\begin{document}
% Add title image across the complete page
\AddToShipoutPictureBG*{\AtPageLowerLeft{%
\includegraphics[width=\paperwidth,height=\paperheight]{example-image-a}}}
\newpage\null\newpage
\tikzsetnextfilename{tikz_picture}
\begin{tikzpicture}
\draw[red, thick] (-1,2) -- (2,-4);
\draw[red, thick] (-1,-1) -- (2,2);
\filldraw[red] (0,0) circle (2pt) node[anchor=west]{A tikz picture};
\end{tikzpicture}
\end{document}