似乎在使用时Tikz
,节点和/或tikzpicture
环境会在绘图周围添加空间。下面的 MWE 中显示了一个示例,其中绘制了一个简单的正方形三次。首先,它只在单个中绘制tikzpicture
,然后在嵌套中绘制tikzpicture
,最后在嵌套中绘制tikzpicture
并inner sep
调整。最后一张图片让我怀疑有些宽度需要设置为零。
\documentclass[tikz]{standalone}
\standaloneenv{tikzpicture} % New page for every image
% The code for the square
\newcommand\Square[1][]{
\begin{tikzpicture}[#1]
\draw (0,0)--(1,0)--(1,1)--(0,1)--cycle;
\end{tikzpicture}
}
\begin{document}
% Image with correct cropping
\Square[x=1.5cm,y=1.5cm]
% Image with a lot of space
\begin{tikzpicture}
\node at (0,0){
\Square[x=1.5cm,y=1.5cm]
};
\end{tikzpicture}
% Image with some cropping
\begin{tikzpicture}
\node[inner sep=0pt] at (0,0){
\Square[x=1.5cm,y=1.5cm]
};
\end{tikzpicture}
\end{document}
三个输出图像(或页面)如下。
如何消除这种间距?嵌套这些环境对于我正在处理的特定问题是必要的,并且\includegraphics[clip]{}
不能与\standaloneenv{tikzpicture}
(只是为了防止standalone
裁剪失败而尝试的)结合使用。
答案1
您的定义中有虚假空格\Square
:
\newcommand\Square[1][]{% <--- a space was here
\begin{tikzpicture}[#1]
\draw (0,0)--(1,0)--(1,1)--(0,1)--cycle;
\end{tikzpicture}% <--- a space was here
}
这是我改变定义后得到的结果:
第一个方块效果很好,因为 TeX 处于“垂直模式”,所以它会忽略第一个空格;然后它会忽略最后一个空格,所以\par
最后一个空格也会被忽略。在其他两种情况下,空格已经在 内tikzpicture
,所以它们不再被忽略。