PDF 在包含在 TikZ 环境中时会被修改

PDF 在包含在 TikZ 环境中时会被修改

我有一个使用 TikZ 代码生成的 PDF:

\documentclass[tikz]{standalone}

\begin{document}
    \begin{tikzpicture}
        \draw [line width=10pt] (0,0)--(2,2)--(4,1)--(6,3);
    \end{tikzpicture}
\end{document}

输出的PDF为(文件名为file01.pdf):

在此处输入图片描述

\includegraphics如果我使用以下代码将此 PDF 插入到另一个 TikZ 环境中的另一个文件中(请注意[line join=round]选项):

\documentclass[tikz]{standalone}

\begin{document}
    \begin{tikzpicture} [line join=round]
        \node (file1) at (0,0) {\includegraphics[]{file01.pdf}};
    \end{tikzpicture}
\end{document}

输出 PDF 为:

在此处输入图片描述

这怎么可能?TikZ 环境如何更改最终输出中包含的 PDF 内容?我也尝试过使用colorline width选项,但它们对最终输出没有影响。

答案1

TikZ(或者说pgf)在开始时重置了绘图状态的某些方面tikzpicture。这包括颜色和线宽,但不包括线连接方法。PDF 在包含在其他 PDF 中时不会自动“重置”这些值,因此“子”PDF 会继承“父”中设置的任何值。因此,如果您更改线连接设置,这将显示在未明确设置它的任何包含的 PDF 中。从理论上讲,颜色或线宽也是如此,但 TikZ 重置意味着“子”实际上与“父”中的任何更改无关。


这一观点在https://github.com/pgf-tikz/pgf/issues/870. 可以申请

\tikzset{
    every picture/.style={%
        execute at begin picture={%
            \pgfsetbuttcap%
            \pgfsetmiterjoin%
            \pgfsetmiterlimit{10}%
            \pgfsetdash{}{0pt}%
        }
    }
}

强制适当的默认值。

相关内容