在 tikz 中绘制一个圆,中心有一条线,两边都有文字

Drawing a circle with a line down its center and text on either side in tikz

我想创建一个圆形节点,其中一条线完全位于中心,线的两边都有文本。到目前为止,下面的代码绘制了一个与文本高度相同的条,但没有延伸到整个圆心。我怎样才能做到这一点?

\begin{tikzpicture}
\node (y) [shape=circle,draw] at (0,0) {$\Sigma | f$};
\end{tikzpicture}

有很多方法可以做到这一点。

tikz 中有多部分节点和形状的概念,圆形分割,允许在圆形中有一个双部分。问题是只允许水平拆分,而进行垂直拆分需要 1/ 旋转形状以进行垂直拆分和 2/ 以相反方向旋转内部文本。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.multipart}

\begin{document}
\begin{tikzpicture}
\node [circle split,draw,rotate=90] (y) {\rotatebox{-90}{$\sigma$}
     \nodepart{lower} \rotatebox{-90}{$f$}};
\end{tikzpicture}
\end{document}

但是使用常规 tikz 命令执行此操作非常简单,并且可以更好地控制节点外观和文本对齐。

我建议,先放你的文本节点。然后使用拟合库确定最佳圆尺寸。最后画垂直线。

这里是对应的代码

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}
\node[anchor=east,baseline] (sigma) at (0,0) {$\sigma$} ;
\node[anchor=west,baseline] (f) at (0,0) {$f$} ;
\node[circle,draw,fit={(sigma)(f)}] (y) {} ;
\draw (y.south) -- (y.north) ;
\end{tikzpicture}
\end{document}

可以在节点y上用inner sep参数修改文本和圆圈之间的space。

如果您需要多个直径相同的圆,请将 fit= 替换为 minimum width=1cm(或其他)。

最后,如果您需要更近的节点,请将 inner sep=0.5pt(或任何其他值)添加到前两个节点。

这是不同参数的结果。

\begin{tikzpicture}
\node[anchor=east,baseline,inner sep=0.5pt] (sigma) at (0,0) {$\sigma$} ;
\node[anchor=west,baseline,inner sep=0.5pt] (f) at (0,0) {$f$} ;
\node[circle,draw,fit={(sigma)(f)},inner sep=1pt] (y) {} ;
\draw (y.south) -- (y.north) ;
\end{tikzpicture}