我正在使用 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 中所做的那樣。其中提出的大多是偏離主題的建議:basic
function
- 使用的是庫中定義的語法
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}