tikz .pic 带文本缩放

tikz .pic 带文本缩放

我在尝试使用带有文本的框并尝试重新缩放它们时学习了有关 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}

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容