我无法记住嵌套 tikz 图片中定义的名称的坐标。请看以下最小工作示例:
\documentclass{article}
\usepackage{tikz-qtree}
\newcommand{\inlinenode}[2]{
There are\\
several line\\
breaks\\
#2\tikz[remember picture]\coordinate (#1);\\
and #1 is not\\
in the center}
\begin{document}
\tikzset{every tree node/.style={align=center,anchor=north}}
\begin{tikzpicture}
\Tree [.{Root}
[.\node{\inlinenode{x1}{$x_1$}}; ]
[.\node (x2) {$x_2$}; ]
]
\path[thick,color=red] (x1) edge (x2);
\end{tikzpicture}
\end{document}
我想使用红线将 x1 与 x2 连接起来,这对 x2 来说很好,但另一端却指向一个奇怪的地方而不是 x1。
我尝试运行pdflatex多次,但x1的位置变得更加奇怪。
我想要实现的效果应该在上图中可见,我想要一个多行节点,在文本中有一个特殊的单词/图形,然后将这个单词连接到另一个节点(或者甚至将另一个特殊单词连接到节点的另一个多行文本中)。请随意修改我的方法。
我也尝试用#2\tikz...\coordinate(#1)
(\subnode{#1}{#2}
例如这个类似的问题),但结果是一样的。
答案1
在 中tikz-qtree
,每个子项实际上是一个单独的 pgfpicture。这意味着,当您以这样的方式在子项之间进行绘制时,您是在两个不同的 pgfpicture 之间进行绘制,因此两个都需要应用remember picture
密钥。
但是,即便如此,你还是会遇到这样的问题:你将 a 嵌套tikzpicture
在 the 内部pgfpicture
(而它本身又嵌套在 main 中tikzpicture
),因此仅仅将其放在remember picture
最外层tikzpicture
是行不通的。但这正是\subnode
来自tikzmark
该库的设计目的在于处理:它定义一个节点的子节点,而无需设置全新的 tikzpicture。
因此使用\subnode
并remember picture
得到:
\documentclass{article}
%\url{http://tex.stackexchange.com/q/153756/86}
\usepackage{tikz-qtree}
\usetikzlibrary{tikzmark}
\newcommand{\inlinenode}[2]{
There are\\
several line\\
breaks\\
\subnode{#1}{#2} \\
and #1 is not\\
in the center}
\begin{document}
\tikzset{every tree node/.style={align=center,anchor=north}}
\begin{tikzpicture}[remember picture]
\Tree [.{Root}
[.\node {\inlinenode{x1}{$x_1$}}; ]
[.\node (x2) {$x_2$}; ]
]
\path[thick,color=red] (x1) edge (x2);
\end{tikzpicture}
\end{document}