Estoy usando tikz para dibujar una unidad lógica de umbral simple.
Tengo el siguiente código:
\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}
Esto genera el siguiente resultado:
Como puede ver, el texto en el nodo no está centrado. Intenté text centered
e align=center
intenté ajustar el tamaño del nodo usando minimum width=8mm, inner sep=0mm,
.
¿Cómo puedo ajustar el texto para que esté exactamente centrado? Creo que el modo matemático causa problemas.
Respuesta1
En realidad el texto está centrado, por lo que no es un problema de alineación, sino un problema de \textwidth
, si lo eliminas, el nodo del círculo se puede adaptar al contenido y listo, está centrado.
Mi sugerencia es eliminar text width=1em
o aumentar su valor del estilo.
Aquí puedes ver lo que quiero decir:
y este es el código:
\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}
Respuesta2
El problema ya se describe en la respuesta de @Alenanno, es decir, el texto en el nodo function
es más ancho que el ancho de texto prescrito; en consecuencia, se extiende en el lado derecho del nodo. La solución es (ii) prescribir un nodo más amplio text width
o basic
(ii) no utilizar basic
en la definición del function
estilo, como se hace en el MWE sugerido a continuación. En él se proponen sugerencias en su mayoría fuera de tema:
- Se utiliza la sintaxis definida en la biblioteca.
positioning
- El estilo
function
se define independientemente debasic
- para etiquetas de borde se utiliza
quotes
la biblioteca - para se extrae del nodo
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}