看起来该scale
选项只缩放行的长度,而不缩放文本的大小。例如,以下代码中的1
和和 不缩放。true
\begin{tikzpicture}[thick, scale=0.6]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}
有人能告诉我如何在 tikzpicture 中缩放所有内容吗?非常感谢!
PS:这是与 Beamer 一起演示时的图片。
答案1
缩放不会影响某些方面;最明显的是节点大小和线宽。在简单的图片中,相应地调整线宽并不难,但节点可能很难。可以强制缩放节点:将缩放选项直接放在节点的属性中。这样就\node[above,scale=0.6] at (8,11) {true};
可以缩放节点。在每个节点上都这样做有点烦人,所以有一种every node
样式可以用来做到这一点。因此:
\begin{tikzpicture}[thick,scale=0.6, every node/.style={scale=0.6}]
即便如此,如果您想更改比例因子,您仍然必须记住每次都在此处更改两件事。幸运的是,有一个键transform shape
表示当前变换已应用于节点。使用此功能的危险在于,这还会应用任何恰好对节点有效的旋转(通常只应用平移)。如果您没有任何旋转,那么:
\begin{tikzpicture}[thick,scale=0.6, every node/.style={transform shape}]
就很好了。
如果您确实有或者担心这些旋转(或者任何其他感兴趣的人),那么设置一个global scale
键来解决这个问题很简单:
\tikzset{global scale/.style={
scale=#1,
every node/.style={scale=#1}
}
}
回到“正常”的解决方案。以下是各种解决方案:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\framebox{\begin{tikzpicture}[thick]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}}
\framebox{\begin{tikzpicture}[thick, scale=0.6]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}}
\framebox{\begin{tikzpicture}[thick, transform canvas={scale=0.6}]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}}
\framebox{\begin{tikzpicture}[thick,scale=0.6, every node/.style={scale=0.6}]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}}
\framebox{\begin{tikzpicture}[thick,scale=0.6, every node/.style={transform shape}]
\draw [dashed] (1,12) -- (11,12);
\node[above] at (4,11) {1}; \node[above] at (8,11) {true};
\end{tikzpicture}}
\end{document}
我把\framebox
s 放进去,因为如果你仔细数的话,你会看到第三个例子没有吗!事实上,它最终出现在页面顶部的某个位置,超出了包装standalone
所认为的页面范围。所以它被剪掉了。
答案2
如果你想缩放 tikz 图片中的所有内容,你也可以将其放在\scalebox
或\resizebox
(来自包图形/x)
例子:
\scalebox{0.6}{
[Your tikz goes here]
}
\resizebox{.75\textwidth}{!}{
[Your tikz goes here]
}
这也适用于节点、文本等,相反,transform canvas
它不会将您的图片传送到没有人会想到的地方,这曾经发生在我身上。
答案3
该transform canvas
选项会缩放所有内容,包括文本。请注意,这可能会导致边界框错误...
答案4
该包adjustbox
可用于此目的。 它使用起来相当简单,而且与resizebox
和相比似乎更强大、更通用scalebox
。