
У меня есть раздел кода ниже, метка «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
Метка должна существоватьснаружиузел, чтобы избежать путаницы между содержимым и этикеткой. Самый простой ИМХО — добавить дополнительный узел для маркировки.
\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
. Это решение использует anchor
и at
команды положения узла.
Код
\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}