
Tengo la siguiente sección de código, la etiqueta "B" se muestra en el exterior de la esquina, ¿cómo podemos cambiarla a la esquina interior? ¿O alguna otra buena sugerencia para etiquetarlo?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc}
\begin{document}
\begin{tikzpicture}[inner sep=0mm,outer sep=0,node distance=4em,
box/.style={draw,anchor=west,minimum width=10em,minimum height=3em},
]
\node (A) [box] {A};
\node (B) [below=of A.west,box,label=south west:B] {};
\end{tikzpicture}
\end{document}
La imagen de salida es:
Respuesta1
Se supone que existe una etiquetaafueraun nodo para evitar confusión entre el contenido y la etiqueta. La OMI más sencilla es agregar un nodo adicional para etiquetar.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc}
\begin{document}
\begin{tikzpicture}[inner sep=0mm,outer sep=0,node distance=4em,
box/.style={draw,anchor=west,minimum width=10em,minimum height=3em},
]
\node (A) [box] {A};
\node (B) [below=of A.west,box] {}node at ($(B.south west) +(0.15,0.15)$) {B};
\end{tikzpicture}
\end{document}
Respuesta2
Una alternativa a la solución de @Harish (que creo que es más fácil) es configurar manualmente el ancla del nodo de etiqueta. Yo sigoesta respuesta y defina una inside
clave, que hace que las etiquetas se coloquen "dentro" de un nodo:
\usepackage{etoolbox}
\makeatletter
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\makeatother
Luego se puede pasar esta clave a la label
operación junto con otras opciones (por ejemplo, inner sep=1pt
para dar relleno adicional al nodo de etiqueta).
Código
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc}
\usepackage{etoolbox}
\makeatletter
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\makeatother
\begin{document}
\begin{tikzpicture}[inner sep=0mm,outer sep=0,node distance=4em,
box/.style={draw,anchor=west,minimum width=10em,minimum height=3em},
]
\node (A) [box] {A};
\node (B) [below=of A.west,box,label={[inside,inner sep=1pt]south west:B}] {};
\end{tikzpicture}
\end{document}
Producción
Respuesta3
Este intento también es una solución alternativa en comparación con las soluciones de @Harish y @Kevin (que creo que es fácil y simple). El primero necesita calc
, el otro necesita inside/.code
. Esta solución utiliza comandos anchor
y at
de posición de nodo.
Código
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc}
\begin{document}
\begin{tikzpicture}[inner sep=0.1mm,outer sep=0,node distance=4em,
box/.style={draw,anchor=west,minimum width=10em,minimum height=3em},
]
\node (A) [box] {A};
\node (B) [below=of A.west, box] {};
\node [anchor=south west, at=(B.south west)]{B};
\end{tikzpicture}
\end{document}