我在尝试使用带有文本的框并尝试重新缩放它们时学习了有关 tikz .pic 的更多信息。 (对于这个例子,我可以创建一个 png 文件然后包含它的图形,但我宁愿了解如何在 tikz 中正确地执行此操作。)或者 .pic 根本不是正确的工具。无论如何,它们都是初学者的问题。
这是一个简单的例子:
\documentclass[border=3mm,12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
testboxtext/.pic={
\draw[black, fill=gray] (0,0) rectangle (60,40);
\draw[fill=white] (20,20) rectangle (25,35) node[pos=0.5,rotate=90] { some text };
}
}
\begin{document}
\begin{tikzpicture}
\draw[step=1, gray, very thin] (-1,-1) grid (101,101);
\pic[scale=1] at (10,10) {testboxtext};
\pic[scale=0.25] at (10,60) {testboxtext};
\pic[scale=0.5, rotate=90] at (50,60) {testboxtext};
\end{tikzpicture}
\end{document}
所以现在我们有三个块,里面有一些文本,显然现在很难看清。
scale=1 pic 字体大小是如何确定的?我可以将字体大小命令粘贴在 testboxtext 中,但这违背了目的。从某种意义上说,我想告诉它一个相对于框的比例,比如框大小的 80%。
scale=0.25pic 的字体大小相对于框有所不同。如何最好地请求比例缩放?
并适度相关
- 能否告诉 tikz 将框内的文本缩小到完全适合?这意味着换行符等。因此,如果文本很长,它会选择较小的字体大小(和换行符)。
谢谢您的建议。
/iaw
答案1
缩放通常不会影响字体大小,而只会影响 tikz 绘制的元素的大小。如果您没有明确覆盖其设置,则字体大小始终由您的 documentclass 定义。请考虑以下示例:
\documentclass[tikz, border=2mm]{standalone}
%
\begin{document}
%
\begin{tikzpicture}
\draw (0,0) rectangle (2,1) node [midway] {Test};
\draw [gray, dashed] (0.5,0.25) rectangle (1.5,0.75) (-1,-0.5) rectangle (3,1.5);
\end{tikzpicture}
%
\begin{tikzpicture}[scale=0.5]
\draw (0,0) rectangle (2,1) node [midway] {Test};
\draw[white] (-3,-1.5) rectangle (5,2.5);% just for scaling the standalone page correctly
\end{tikzpicture}
%
\begin{tikzpicture}[scale=2]
\draw (0,0) rectangle (2,1) node [midway] {Test};
\end{tikzpicture}
\end{document}
在这里,我在第一个 tikzpicture 中绘制了三个矩形,并在中间插入了文本。标记为灰色和虚线的内部和外部矩形分别对应于黑色实心矩形的 0.5 和 2 的缩放比例。然后,我采用实心矩形的定义,并在接下来的两个 tikzpicture 中以 0.5 和 2 的缩放比例绘制它们,正如您所见,只有矩形的大小发生了变化,但字体大小保持不变。
因此结果是,根据 tikz 元素缩放字体大小实际上不起作用,但你可以根据字体大小定义元素,即以 em 为单位(1 em 实际上是字体大小)
那么你可以例如说:
\documentclass[tikz, border=2mm]{standalone}
%
\begin{document}
%
\begin{tikzpicture}
\draw (0em,0em) rectangle (4em,2em) node [midway] {Test};
\draw [gray, dashed] (1em,0.5em) rectangle (3em,1.5em) (-2em,-1em) rectangle (6em,3em);
\end{tikzpicture}
%
\begin{tikzpicture}[scale=0.5]
\draw (0em,0em) rectangle (4em,2em) node [midway] {Test};
\draw[white] (-6em,-3em) rectangle (10em,5em);% just for scaling the standalone page correctly
\end{tikzpicture}
%
\begin{tikzpicture}[scale=2]
\draw (0em,0em) rectangle (4em,2em) node [midway] {Test};
\end{tikzpicture}
\end{document}
因此,在第一张图片中,我们再次定义了一个矩形,现在其高度是字体大小的两倍,宽度是字体大小的四倍。虚线灰色部分再次对应于缩放比例 2 和 0.5。现在,当我们将初始矩形缩放 0.5 倍(第二张图片)时,我们知道,它最终的高度是字体大小,宽度是字体大小的两倍,并且如您所见,它恰好适合。而缩放比例为 2 时,高度是字体大小的四倍,宽度是字体大小的八倍。因此,如果您想让字体适合方框,您实际上必须让方框适合字体!
最后但并非最不重要的一点是,字体大小的变化也会相应地改变绘图,这些绘图以 em 为单位定义。为了进行比较,我绘制了一个 2 cm x 1 cm 的外矩形:
\documentclass[tikz, border=2mm]{standalone}
%
\begin{document}
%
\begin{tikzpicture}
\draw (0em,0em) rectangle (2em,1em) node [midway] (a) {Test};
\node[draw, shape=rectangle, minimum width= 2cm, minimum height=1cm, anchor=center] at (a) {};
\end{tikzpicture}
%
{\huge
\begin{tikzpicture}
\draw (0em,0em) rectangle (2em,1em) node [midway] (a) {Test};
\node[draw, shape=rectangle, minimum width= 2cm, minimum height=1cm, anchor=center] at (a) {};
\end{tikzpicture}
}
%
{\tiny
\begin{tikzpicture}
\draw (0em,0em) rectangle (2em,1em) node [midway] (a) {Test};
\node[draw, shape=rectangle, minimum width= 2cm, minimum height=1cm, anchor=center] at (a) {};
\end{tikzpicture}
}
\end{document}