Tikz 中图像的可缩放预定义部分

Tikz 中图像的可缩放预定义部分

我正在使用 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

相关内容