Tikz:独立缩放(和旋转)形状和文本

Tikz:独立缩放(和旋转)形状和文本

是否可以为每个节点单独设置形状比例和标签比例,而无需设置形状的最小尺寸或全局设置尺寸?对于某些形状,旋转具有类似的依赖性,因为shape border rotate对它们不起作用。

似乎始终启用一些自动适应功能,因为即使使用像“{\tiny label-text}”这样的标签也会影响形状的比例。

例如,我希望使用大小差异与库中完全相同的逻辑门符号,例如 NAND 门大于 NOT 门。我不希望这些符号中的任何一个遵循其标签中的字符数或标签的字体大小。此外,不同的符号可能需要不同的最小尺寸,因此我需要针对每个符号单独进行调整,但旋转问题仍然无法解决。

相反,如果我想让两个圆形符号中的一个变大,我仍然希望它们都有相同字体大小的标签。

显示比例和标签尺寸之间依赖关系的来源:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{lmodern}
\usetikzlibrary{positioning, shapes, shapes.gates.logic.US, shadows, arrows}
\usepackage{anyfontsize}

\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}[
    every node/.style={line width=2mm, draw}
    ]
    \node (input1) [circle, thick, font=\fontsize{10}{0}\selectfont] at (0,0) {x};
    \node (input2) [circle, thick, font=\fontsize{10}{0}\selectfont, below=5mm of input1] {\Large xyz};
    \node (input3) [circle, font=\fontsize{20}{0}\selectfont, below=5mm of input2] {x};
    \node (input4) [not gate US, thick, scale=1.5, below=5mm of input3] {scale 2};
    \node (input5) [not gate US, thick, scale=3, below=8mm of input4] {scale 3};
\end{tikzpicture}
\end{document}

左列给出了结果。右列给出了近似的期望输出:

在此处输入图片描述

答案1

大多数节点形状定义(当然是提供 PGF/TikZ 的那些定义)使用以下值/pgf/inner xsep/pgf/inner ysep作为填充以某种形式存在于文本和节点自己的路径之间。

对于rectangle形状的inner xsep左边和右边添加的,inner ysep文本的上面和下面添加的。

默认情况下,两个值都是 0.3333em,即字体大小相关的长度。但是,当评估这些值时,键的字体font和节点文本中使用的任何字体大小都不是活动的。

为此,node font可以像下面的代码中一样使用键,或者需要在节点之前更改字体大小 - 在路径内部或路径之前,尽管后者在路径之后仍然有效,并且两者都会影响以 ex 或 em 为单位的任何距离,当然。


值得注意的例外是coordinate形状(是的,这也是一个节点)但它既没有文本部分也没有路径。

代码

\documentclass[tikz]{standalone}
\usepackage{lmodern}
\usepackage{anyfontsize}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[nodes={line width=2mm, draw, thick}]
\node (input1)                                         {x};
\node (input2) [node font=\Large,     below=of input1] {x};
\node (input3) [node font=\fontsize{180}{0}\selectfont,
                                      below=of input2] {x};
\end{tikzpicture}
\begin{tikzpicture}[nodes={line width=2mm, draw, thick}]
                             \node (input1)                   {x};
\Large                       \node (input2) [below=of input1] {x};
\fontsize{180}{0}\selectfont \node (input3) [below=of input2] {x};
\end{tikzpicture}
\begin{tikzpicture}[nodes={line width=2mm, draw, thick}]
                       \node (input1)                   {x};
\path \pgfextra{\Large} node (input2) [below=of input1] {x};
\path[/utils/exec=\fontsize{180}{0}\selectfont]
                        node (input3) [below=of input2] {x};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容