tikzノードのテキストを中央揃えにする

tikzノードのテキストを中央揃えにする

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でより広く規定するか、(ii) 以下の MWE で提案されているように、スタイルの定義でbasic使用しないことです。提案されているのは、主にトピック外の提案です。basicfunction

  • ライブラリで定義された構文が使用される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}

ここに画像の説明を入力してください

関連情報