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=centerminimum 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) 아래 제안된 MWE에서 수행된 것처럼 (ii) 노드 text width에서 더 넓은 범위를 규정하거나 (ii) 스타일 정의에 basic사용하지 않는 것 입니다. 여기에는 주로 주제에서 벗어난 제안이 제안됩니다.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}

여기에 이미지 설명을 입력하세요

관련 정보