将 circuits.logic.IEC 中的标签置于中心

将 circuits.logic.IEC 中的标签置于中心

tikz 电路库将门的标签与节点顶部对齐,而不是与中心对齐。有什么方法可以将标签移动到中心吗?

即:非门的黑色标签由 tikz 电路库绘制,红色标签是我希望 tikz 绘制标签的位置。

非门

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.logic.IEC}
\begin{document}
\begin{tikzpicture}[circuit logic IEC]
    \node (not) [not gate]{};
    \node[text=red] {1};
\end{tikzpicture}
\end{document}

答案1

根据pgfmanual.pdf第 554 页,您可以使用

在此处输入图片描述

它需要库,shapes.gates.logic.IEC并且仅定义topbottom和对齐。但深入研究代码后,我可以用很少的示例定义一个对我有用的对齐。我不知道它是否会出问题。leftrightcenter

无论如何,如果您使用此center对齐,则可能node's text会覆盖它。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.logic.IEC}\usetikzlibrary{shapes.gates.logic.IEC}

\pgfkeys{/pgf/logic gate IEC symbol align/.cd,
  center/.code=\pgftransformyshift{0pt},
}

\begin{document}
\begin{tikzpicture}[circuit logic IEC]
    \node (not) [logic gate IEC symbol align={center}, not gate, draw]{};
%    \node[text=red] {1};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

有点黑客行为,但你可以增加非门的内部分离器。

% arara: pdflatex

\documentclass[tikz]{standalone}
\usetikzlibrary{circuits.logic.IEC}

\begin{document}
    \begin{tikzpicture}[%
        ,circuit logic IEC
        ,not gate/.append style={inner sep=15}
        ]
    \node[text=red] {1};
    \node (not) [not gate]{};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容