此代码
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[text width = 3cm]{
a a a a a a a a a a a a a a a a a a a a\\
\tikz{\draw (0,0) node {A} -- (1,0) node {B};}\hspace*{10cm}\\
a a a a a a a a a a a a a a a a a a a a
};
\end{tikzpicture}
\end{document}
给出结果:
它将 A 和 B 之间的线放在 B 的右侧,而不是 A 和 B 之间。在外部节点中指定文本宽度不知何故会让 TikZ 在放置内部线时感到困惑。我怎样才能让它正常运行,使线位于 A 和 B 之间,这是它应该在的位置?
答案1
显然内部 tikz 继承了该text width
设置。如果你绘制节点,它是可见的:
该线从节点 A 的中心延伸到节点 B 的中心,但是节点太宽,以至于节点 B 的文本最终位于该线的左侧。
如果您重置该text width
选项,则可以恢复预期的行为。
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[text width = 3cm]{
a a a a a a a a a a a a a a a a a a a a\\
\tikz[text width={}]{\draw (0,0) node {A}
-- (1,0) node {B};}
\hspace*{10cm}
\\
a a a a a a a a a a a a a a a a a a a a
};
\end{tikzpicture}
\end{document}
答案2
正如 Torbjørn 在评论中所说,嵌套 tikzpictures效果不太好。下面是使用\subnode
来自tikzmark
包(正是为这种事情而设计的)。
\documentclass{article}
%\url{https://tex.stackexchange.com/q/387792/86}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{tikzpicture}
\node[text width = 3cm]{
a a a a a a a a a a a a a a a a a a a a\\
\tikz{\draw (0,0) node {A} -- (1,0) node {B};}\hspace*{10cm}\\
a a a a a a a a a a a a a a a a a a a a
};
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
\node[text width = 3cm]{
a a a a a a a a a a a a a a a a a a a a\\
\mbox{\subnode{a}{A}\hspace{1cm}\subnode{b}{B}} \\
a a a a a a a a a a a a a a a a a a a a
};
\draw (a) -- (b);
\end{tikzpicture}
\end{document}
(\mbox
需要 ,因为否则 之后的线就会断开A
;我不确定为什么会这样。)