\begin{tikzpicture}[scale=x]
\node[scale=y] (a,b)
当设置复杂的图片并手动定位所有内容(指定所有(a,b))时,更改 x 以使其变大或变小会使所有内容都搞砸。
我想我可以使用调整大小的框,但我认为比例 x 将是整体比例,并将其值设置为任何值也会缩放其中的所有比例......事实并非如此。
但也许还有更简单的方法?
答案1
这么简洁的问题确实很难理解,但也许原帖作者正在寻找transform shape
?看:
\documentclass[]{article}
\usepackage{tikz}
\begin{document}
{\Huge X}
\begin{tikzpicture}[
]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\bigskip
{\Huge X}
\begin{tikzpicture}[
scale=0.5]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\bigskip
{\Huge X}
\begin{tikzpicture}[
scale=0.5, every node/.style={transform shape}]
\node[draw] at (0,0) {A};
\node[draw, scale=2] at (1,0) {B};
\end{tikzpicture}
\end{document}
会产生(巨大的X是为了参考,注意基线的变化):
答案2
scale
不支持该选项tikzpicture
。它只是在图片范围内全局设置,因此它会影响图片中具有此类选项的所有内容。这可能是所有内容,也可能什么都没有,但通常会是某些内容,而不是其他内容。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [ultra thick, ->] (0,0) -- (1,1) node [right] {A};
\begin{scope}[scale=2, xshift=10mm]
\draw [ultra thick, ->] (0,0) -- (1,1) node [right] {A};
\end{scope}
\end{tikzpicture}
\end{document}
一般来说,这就是您想要的:字体、线宽和箭头不受缩放影响,但坐标却不受影响。
使用\resizebox
是邪恶的,正是因为它会影响框中的所有东西:线条、字体等等。这远远不是最佳选择,因为这意味着文档中的字体和线条不一致。当使用具有可用光学尺寸的字体时,失真会更大,因为为较大或较小尺寸设计的字形将代替适合上下文的字形进行渲染。
在无法避免调整大小的情况下,tikzscale
最好使用\resizebox
,因为它将保持线宽和字体大小,同时比仅缩放恰好支持 的图片元素更全面、更一致地缩放其余部分scale
。