
Ich habe den folgenden Codeabschnitt. Die Bezeichnung „B“ wird an der Außenseite der Ecke angezeigt. Wie können wir sie an die Innenecke verlegen? Oder haben Sie einen anderen guten Vorschlag für die Bezeichnung?
\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}
Das Ausgabebild ist:
Antwort1
Ein Label muss existierendraußenein Knoten, um Verwechslungen zwischen Inhalt und Beschriftung zu vermeiden. Am einfachsten ist es meiner Meinung nach, einen zusätzlichen Knoten für die Beschriftung hinzuzufügen.
\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}
Antwort2
Eine Alternative zu @Harishs Lösung (die meiner Meinung nach einfacher ist) besteht darin, den Anker des Label-Knotens manuell zu setzen. Ich folgediese Antwort und definieren Sie einen inside
Schlüssel, der dazu führt, dass Beschriftungen „innerhalb“ eines Knotens platziert werden:
\usepackage{etoolbox}
\makeatletter
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\makeatother
Anschließend kann dieser Schlüssel label
zusammen mit anderen Optionen an die Operation übergeben werden (z. B. inner sep=1pt
um dem Beschriftungsknoten zusätzliche Polsterung zu verleihen).
Code
\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}
Ausgabe
Antwort3
Dieser Versuch ist auch eine alternative Lösung im Vergleich zu den Lösungen von @Harish und @Kevin (die ich für leicht und einfach halte). Die erste braucht calc
, die andere braucht inside/.code
. Diese Lösung verwendet anchor
und at
Knotenpositionsbefehle.
Code
\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}