Ich verwende Tikz, um eine einfache Schwellenwert-Logikeinheit zu zeichnen.
Ich habe folgenden Code:
\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}
Dies erzeugt die folgende Ausgabe:
Wie Sie sehen, ist der Text im Knoten nicht zentriert. Ich habe versucht, text centered
die align=center
Größe des Knotens mithilfe von anzupassen minimum width=8mm, inner sep=0mm,
.
Wie kann ich den Text genau zentrieren? Ich glaube der Mathemodus macht Probleme.
Antwort1
Der Text ist tatsächlich zentriert, es handelt sich also nicht um ein Ausrichtungsproblem, sondern um ein Problem damit \textwidth
, dass sich der Kreisknoten, wenn Sie ihn entfernen, an den Inhalt anpassen kann und, fertig, er ist zentriert.
Mein Vorschlag ist, text width=1em
seinen Wert aus dem Stil zu entfernen oder zu erhöhen.
Hier seht ihr, was ich meine:
und das ist der Code:
\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}
Antwort2
Das Problem ist bereits in der Antwort von @Alenanno beschrieben, d. h. Ihr Text im Knoten function
ist breiter als die vorgeschriebene Textbreite – folglich läuft er auf der rechten Seite des Knotens über. Die Lösung besteht darin, (ii) text width
im basic
Knoten eine breitere Breite vorzuschreiben oder (ii) basic
in der Definition des function
Stils nicht zu verwenden, wie dies im unten vorgeschlagenen MWE geschieht. Darin werden hauptsächlich themenfremde Vorschläge gemacht:
- verwendet wird die in der Bibliothek definierte Syntax
positioning
- Stil
function
wird unabhängig definiert vonbasic
- für Kantenbeschriftungen wird
quotes
eine Bibliothek verwendet - für wird vom Knoten gezogen
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}