我经常编写从主绘制程序调用的程序。我希望我的程序与调用它的 tikz 图片的比例无关。
在下面的例子中,我希望程序\cir
能够绘制8pt
圆形,而不管 tikz 图片的比例如何。有没有办法恢复到 scale=1?
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\newcommand{\cir}[1]{%
\draw #1 circle (8pt);}
\begin{tikzpicture}[scale=10]
\draw (0,0) -- (1,1);
\cir{(0.5,0.5)};
\end{tikzpicture}
\end{document}
答案1
您可以应用该shift only
选项以确保忽略缩放效果,如(红色圆圈)所示\cirA
。如果您希望将缩放应用于位置,则可以scope
使用缩放位置,然后应用于宏shift only
生成的圆形绘图\cirB
(蓝色圆圈):
代码:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\newcommand{\cirA}[2][]{%
\draw [shift only, #1] #2 circle (8pt);}
\newcommand{\cirB}[2][]{%
\begin{scope}[shift={#2}]
\draw [shift only, #1] (0,0) circle (8pt);
\end{scope}
}
\begin{tikzpicture}[scale=10]
\draw (0,0) -- (1,1);
\cirA[fill=red]{(0.5,0.5)};
\cirB[fill=blue]{(0.5,0.5)};
\end{tikzpicture}
\end{document}