Code

Code

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:

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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 insideSchlü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 labelzusammen mit anderen Optionen an die Operation übergeben werden (z. B. inner sep=1ptum 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

Bildbeschreibung hier eingeben

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 anchorund atKnotenpositionsbefehle.

Bildbeschreibung hier eingeben

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}

verwandte Informationen