
Tenho a seção de código abaixo, o rótulo “B” é exibido na parte externa do canto, como podemos trocá-lo para o canto interno? ou alguma outra boa sugestão para rotulá-lo?
\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}
A imagem de saída é:
Responder1
Supõe-se que exista um rótuloforaum nó para evitar confusão entre o conteúdo e o rótulo. O IMO mais fácil é adicionar um nó extra para rotulagem.
\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}
Responder2
Uma alternativa à solução do @Harish (que considero mais fácil) é definir manualmente a âncora do nó do rótulo. eu sigoesta resposta e defina uma inside
chave, que faz com que os rótulos sejam colocados "dentro" de um nó:
\usepackage{etoolbox}
\makeatletter
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\makeatother
Então pode-se passar esta chave para a label
operação junto com outras opções (por exemplo, inner sep=1pt
para dar preenchimento extra ao nó do rótulo).
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}
Saída
Responder3
Esta tentativa também é uma solução alternativa quando comparada com as soluções de @Harish e @Kevin (que considero fáceis e simples). O primeiro precisa calc
, o outro precisa inside/.code
. Esta solução usa anchor
comandos at
de posição de nó.
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}