假设我用下面的代码绘制一个红色图像,生成input.pdf:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt,red]
\draw (0,0) rectangle (50,50);
\draw (25,25) circle (25);
\end{tikzpicture}
\end{document}
然后包含 input.pdf 并在该图像上绘制相同的东西(用黑色绘制):
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
\node[anchor=south west,inner sep=0,outer sep=0] at (0,0) {\includegraphics{input.pdf}};
\draw (0,0) rectangle (50,50);
\draw (25,25) circle (25);
\end{tikzpicture}
\end{document}
但黑线并没有完全覆盖红线,见下面的放大部分:
我绘制的图像代码有什么问题?
答案1
好的,我刚刚尝试了我认为应该有效的方法,令人惊讶的是,它确实有效。就是这样。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
\node[anchor=south west,inner sep=0,outer sep=0] at (-\pgflinewidth/2,-\pgflinewidth/2) {\includegraphics{input.pdf}};
\draw (0,0) rectangle (50,50);
\draw (25,25) circle (25);
\end{tikzpicture}
\end{document}
生产
正如预期的那样。为什么?你把节点放在锚点上south west
,正如
David Purton 指出的那样,你的图像比线宽宽(和高)了一半(因为它在每个方向上都比线宽宽和高了一半)。为什么会这样?你通过指定的坐标绘制一条路径,线宽会添加到其中。我知道这个解释很笨拙,用 marmot 语言解释会容易得多,但我不确定如何输入这个,所以作为折衷,我添加了一个数字。;-)
答案2
@marmot 解决方案的替代方法是将图像放在 (25,25) 处,与圆圈对齐,并将其固定在圆圈的中心:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
\node[inner sep=0,outer sep=0] at (25,25) {\includegraphics{input.pdf}};
\draw (0,0) rectangle (50,50);
\draw (25,25) circle (25);
\end{tikzpicture}
\end{document}