Я использую tikz для рисования простого порогового логического блока.
У меня есть следующий код:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{basic/.style={draw,fill=blue!20,text width=1em,text badly centered}}
\tikzset{functions/.style={basic,circle,fill=blue!10}}
%\tikzset{inputs/.style={basic,circle,fill=blue!20}}
\begin{document}
\begin{tikzpicture}
\node (center) {y};
\node[functions,left=3em of center, anchor=center] (left) {\scriptsize $\theta$=5};
\path[draw,->] (left) -- (center);
\node[left=3em of left] (l2) {};
\node[below of=l2] (n) {$x_2$};
\path[draw,->] (n) -- node[below, rotate=34] {\scriptsize $\omega_2=4$} (left);
\node[above of=l2] (1) {$x_1$};
\path[draw,->] (1) -- node[above, rotate=-34] {\scriptsize $\omega_1=3$} (left);
\end{tikzpicture}
\end{document}
Это генерирует следующий вывод:
Как вы видите, текст в узле не отцентрирован. Я пробовал text centered
и align=center
пробовал настроить размер узла с помощью minimum width=8mm, inner sep=0mm,
.
Как мне настроить текст так, чтобы он был точно по центру? Я считаю, что математический режим создает проблемы.
решение1
Текст на самом деле центрирован, так что это не проблема выравнивания, а проблема того \textwidth
, что если его удалить, то круглый узел может адаптироваться к содержимому, и вот, он центрирован.
Я предлагаю удалить text width=1em
или увеличить его значение из стиля.
Вот здесь вы можете понять, что я имею в виду:
и вот код:
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{basic/.style={draw,fill=blue!20,text width=1em}}
\tikzset{functions/.style={basic,circle,fill=blue!10}}
%\tikzset{inputs/.style={basic,circle,fill=blue!20}}
\begin{document}
\begin{tikzpicture}
\node[functions, anchor=center] (left) {\scriptsize $\theta$=5};
\node[functions,above=3em of left, anchor=center, text width=% resets the text width
] (left) {\scriptsize $\theta$=5};
\end{tikzpicture}
\end{document}
решение2
Проблема уже описана в ответе @Alenanno, т.е. ваш текст в узле function
шире предписанной ширины текста - следовательно, он выплескивается на правую сторону узла. Решение - (ii) предписать шире text width
в basic
узле или (ii) не использовать basic
в определении стиля function
, как это сделано в предложенном MWE ниже. В нем предлагаются в основном не по теме предложения:
- используются синтаксисы, определенные в библиотеке
positioning
- стиль
function
определяется независимо отbasic
- для меток краев используется
quotes
библиотека - для взято из узла
function
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,
quotes}
\tikzset{basic/.style = {draw,fill=blue!20, inner sep=1pt,
minimum width=1em, align=center},
functions/.style = {basic,circle,fill=blue!10, font=\scriptsize},
every edge/.append style = {->},
every edge quotes/.style = {auto, inner sep=1pt, font=\scriptsize, sloped}
}
\begin{document}
\begin{tikzpicture}[
node distance =1.5em and 3em
]
\node[functions] (f) {$\theta$=5};
\node[above left=of f] (x1) {$x_1$};
\node[below left=of f] (x2) {$x_2$};
\node[right=of f] (y) {$y$};
%
\path (x1) edge ["$\omega_1=3$"] (f)
(x2) edge ["$\omega_2=4$" '] (f)
(f) edge (y);
\end{tikzpicture}
\end{document}