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)在樣式定義中basic不使用,如下面建議的 MWE 中所做的那樣。其中提出的大多是偏離主題的建議:basicfunction

  • 使用的是庫中定義的語法positioning
  • 樣式function的定義獨立於basic
  • 對於邊緣標籤使用quotes
  • for 是從節點中提取的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}

在此輸入影像描述

相關內容