我在缩放矩阵内的 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}
如您所见,同一张图片在矩阵外部缩放,但在内部没有缩放。我无法使用scalebox
或resizebox
方法,因为原始图片中有一些文本不应缩放,因为当您通过 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};\\
};