以下 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
\tikz
scale
rotate