如何缩放包含矩阵的 tikz 图片?

如何缩放包含矩阵的 tikz 图片?

以下 LaTeX 文档保存在路径为 的文件中~/test.tex

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
   \tikz[transform shape, scale=1.0] \draw (0,0) rectangle (1,1);
   \tikz[transform shape, scale=0.5] \draw (0,0) rectangle (1,1);
   \tikz[transform shape, scale=1.0] \matrix{\draw (0,0) rectangle (1,1);\\};
   \tikz[transform shape, scale=0.5] \matrix{\draw (0,0) rectangle (1,1);\\};
\end{document}

当在终端执行以下命令时:

cd ~
pdflatex 测试

在路径 处生成一个 PDF 文件~/test.pdf。在 PDF 查看器中打开时,文件显示如下:

比例尺正方形

缩放对带有矩阵的 TikZ 图片没有影响。为什么?如何缩放包含矩阵的 TikZ 图片?

答案1

Z/PGF 手册指出“旋转和缩放对整个矩阵没有影响(但是,您仍然可以正常转换单元格的内容)。在矩阵排版之前,转换矩阵的旋转和缩放部分将被重置。”

因此,使用\tikz[scale=0.5] \matrix{\draw (0,0) rectangle (1,1);\\};可以缩放外部矩阵节点所在的外部坐标系,但不能缩放矩阵单元内的坐标系。但是,您可以使用 缩放单元every matrix/.style={cells={scale=0.5}}

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
   \tikz[scale=1.0] \draw (0,0) rectangle (1,1);
   \tikz[scale=0.5] \draw (0,0) rectangle (1,1);

   \tikz \matrix{\draw (0,0) rectangle (1,1);\\};
   \tikz[every matrix/.style={cells={scale=0.5}}] \matrix{\draw (0,0) rectangle (1,1);\\};
\end{document}

在此处输入图片描述


transform shape我猜,您正在寻找一些也适用于矩阵的选项行。transform canvas但是,您可以尝试一下,这也会改变线宽。您还可以创建自己的转换选项,其中还包括上述单元格转换(将其放在您的序言中或tikz加载之后和第一次使用定义的选项之前的某个地方):

\tikzset{
    transform everything/.style={transform shape, #1, every matrix/.style={cells={#1}}}
}

然后将其用作或命令的transform everything={scale=0.5}选项。不过,我并没有对此进行广泛的测试,因此请谨慎处理。在某些情况下,由于转换的重复应用,结果可能不如预期。此外,虽然这可以与一起使用,但我想其他转换(例如)将无法很好地工作。tikzpicture\tikzscalerotate

相关内容