我正在使用 Tikz 处理可重复使用的图像部分。感谢TikZ 3.0---多个参数pic
,我发现了如何使用参数来做宏。
但是,使用预定义图片的问题是tikzscale
它们不会与图像的其余部分一起缩放。这里有一个小例子。
主文件包含 tikz 宏和包含语句:
\documentclass{article}
\usepackage{tikz,tikzscale}
\usetikzlibrary{math}
\tikzset{pics/tripile/.style args={#1}{code={
\coordinate (top) at (0,#1);
\foreach \i in{0,...,#1}
\foreach \j in{0,...,\i}
{
\tikzmath{
\y = .3*(2/3*#1-\i)*cos(30);
\x = .3*(\i/2-\j);}
\draw (\x,\y) circle (3pt);
}
}}}
\begin{document}
\thispagestyle{empty}
\includegraphics[width=.2\textwidth]{test.tikz}
\includegraphics[width=.3\textwidth]{test.tikz}
\includegraphics[width=.4\textwidth]{test.tikz}
\end{document}
然后该文件test.tikz
提供图像
\begin{tikzpicture}[thick]
\draw (0,0) -- (2,0) -- (2,2) -- (0,2) -- cycle;
\pic at (1,1) {tripile=3};
\end{tikzpicture}
输出如下
但我希望正方形和一堆圆圈之间的比例在缩放时保持不变,就像
有没有办法定义可缩放的图片?
答案1
默认情况下,图片不会缩放。您可以使用 键transform shape
来启用此行为(pgf 手册第 252 页/第 18.2 节,pic 语法)。在您的特定示例中,这将是
\pic at (1,1) [transform shape] {tripile=3};
附注:pgf 手册指出图片很慢;如果您只是画圆圈,使用节点可能会更快(可以使用相同的键进行缩放。transform shape
)