Есть много способов сделать это.
В 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}
Вы можете изменить пространство междутекст и окружность с параметром inner sep
на узле y.
Если вам нужно несколько кругов одинакового диаметра, замените 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}