我想知道如何引用 Tikz 图片之外的 Tikz 节点,就像引用图像一样。这一页列出了可能的\ref{}
对象(不包括节点),但也许有一个包被它忽略了。无论如何,我想知道它通常是怎么做的。例如:
\begin{tikzpicture}
\node (a) at (0,0){example node};
\end{tikzpicture}
Desired function: ~\ref{node: a}, or something like this
我目前正在使用节点label
来明确引用它,但这似乎不是最好的方法。
答案1
如果我理解正确的话,您可能正在寻找这个。
\customlabel
从这个帖子用于创建新的可引用标签。您还可以在此处找到如果不想使用 hyperref 可以做什么。我不知道是否有一个版本既可以使用 hyperref 也可以不使用 hyperref。- 创建了一种新样式
referencable node
,它可以步进节点计数器并将其显示为标签。
您可以这样使用它。
\documentclass{article}
\usepackage{tikz}
\usepackage{hyperref}
\newcounter{node}
\makeatletter% from https://tex.stackexchange.com/a/160035/121799
\newcommand{\customlabel}[2]{%
\protected@write \@auxout {}{\string \newlabel {#1}{{#2}{\thepage}{#2}{#1}{}} }%
\hypertarget{#1}{#2}
}
\tikzset{autonumbered node/.style={/utils/exec={\stepcounter{node}},
label=above:{\arabic{node}}}}
\newcommand{\nodelabel}[1]{%
\protect\customlabel{#1}{\arabic{node}}}
\makeatother
\begin{document}
\begin{tikzpicture}
\node[autonumbered node] (a) at (0,0) {example node\nodelabel{node:a}};
\node[autonumbered node] (b) at (2,1) {another example node\nodelabel{node:b}};
\end{tikzpicture}
Node~\ref{node:a} is a node and so is \ref{node:b}.
\clearpage
\begin{tikzpicture}
\node[autonumbered node] (c) at (0,0) {yet another example node\nodelabel{node:c}};
\end{tikzpicture}
Node~\ref{node:a} is on page~\pageref{node:a} and node~\ref{node:c} is on
page~\pageref{node:c}.
\end{document}