假设我们想要预定义一些形状以供稍后在TikZ
图片中使用。
最小工作示例(MWE):
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\def\testone#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testtwo#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testthree#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testfour#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testfive#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\begin{tikzpicture}
\testone{(0,0)}{0};
\end{tikzpicture}
\end{document}
结果截图:
问题说明:
如您所见,绘图左侧有大量空白。似乎每个空白\def\figure
都会导致向右移动一点,最终导致出现这个大空白。
这些不需要的空间从何而来?我该如何避免它?
答案1
它不是来自 Ti钾Z 环境本身。例如,此代码运行良好:
\documentclass{standalone}
\usepackage{tikz}
\def\testone#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testtwo#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testthree#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testfour#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\def\testfive#1#2{
\begin{scope}[shift={#1}, rotate=#2]
\draw(0,0) rectangle (2,1);
\end{scope}}
\begin{document}
\begin{tikzpicture}
\testone{(0,0)}{0};
\end{tikzpicture}
\end{document}
换句话说,空白行产生换行符或空格,包含在standalone
PDF 输出中。
我在这里建议不要定义命令,而是定义 Ti钾Z。pic
\documentclass[tikz]{standalone}
\tikzset{
myrectangle/.pic={
\begin{scope}[rotate=#1]
\draw (0,0) rectangle (2,1);
\end{scope}
}
}
\begin{document}
\begin{tikzpicture}
\pic at (0,0) {myrectangle=0};
\end{tikzpicture}
\end{document}