代码

代码

我有下面的代码部分,标签“B”显示在角落的外侧,我们如何将其交换到内角?或者还有其他好的建议来标记它?

\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}

输出图片为:

在此处输入图片描述

答案1

标签应该存在外部节点,以避免内容和标签混淆。最简单的 IMO 是添加一个额外的节点用于标记。

\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}

在此处输入图片描述

答案2

@Harish 的解决方案的另一种选择(我认为更简单)是手动设置标签节点的锚点。我遵循这个答案 并定义一个inside键,使标签被放在节点“内部”:

\usepackage{etoolbox}
\makeatletter
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\makeatother

然后,可以将这个键label与其他选项一起传递给操作(例如,inner sep=1pt为标签节点提供额外的填充)。

代码

\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}

输出

在此处输入图片描述

答案3

与@Harish 和@Kevin 的解决方案(我认为简单易行)相比,此尝试也是一种替代解决方案。第一个需要calc,另一个需要inside/.code。此解决方案使用anchorat节点位置命令。

在此处输入图片描述

代码

\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}

相关内容