TikZ 矩阵内部的缩放不起作用?

TikZ 矩阵内部的缩放不起作用?

我在缩放矩阵内的 TikZ 绘图时遇到了一些困难:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}[scale=.5]
    \matrix [yshift=2cm]{
       \draw (0,0)--(0.2,1)--(1,1.2)--(1.2,0)--(0,0);&
       \node{Some text that should not be scaled};\\
    };

    \draw (0,0)--(0.2,1)--(1,1.2)--(1.2,0)--(0,0);
    \end{tikzpicture}

 \end{document}

在此处输入图片描述

如您所见,同一张图片在矩阵外部缩放,但在内部没有缩放。我无法使用scaleboxresizebox方法,因为原始图片中有一些文本不应缩放,因为当您通过 TikZ 自己的选项缩放时,默认情况下会发生这种情况。

那么,为什么绘图在矩阵内不缩放? 有什么方法可以让它缩放而不缩放文本吗?

答案1

这是关于单元格图片问题的灰色地带之一。一个不太完美的解决方案是自己设置转换。

\documentclass[margin=5pt,tikz]{standalone}
\begin{document}

    \begin{tikzpicture}[scale=.5]
    \pgfgettransform\mytrafo
    \matrix [yshift=2cm,execute at begin cell=\pgfsettransform\mytrafo]{
       \draw (0,0)--(0.2cm,1cm)--(1cm,1.2cm)--(1.2cm,0)--cycle;&
       \node{Some text that should not be scaled};\\
    };

    \draw (0,0)--(0.2,1)--(1,1.2)--(1.2,0)--(0,0);
    \end{tikzpicture}

 \end{document}

在此处输入图片描述

答案2

\pgfgettransform作为使用和在接受的答案中所建议的替代方法pgfsettransform,您还可以按如下方式明确转换表格的每个单元格:

\matrix [yshift=2cm, every cell/.style={scale=0.5}]{
   \draw (0,0)--(0.2cm,1cm)--(1cm,1.2cm)--(1.2cm,0)--cycle;&
   \node{Some text that should not be scaled};\\
};

相关内容