这个问题在这里得到了一个关于如何使 TikZ 节点文本可点击的有趣回应。
我正在使用该graphdrawing
包来自动设置图表,因此无法\hyperlink
在“环境中”使用该命令\graph
。我目前的文件如下所示:
\documentclass{article}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage{tikz}
\usetikzlibrary{trees,calc}
\usepackage{tikz}
\usetikzlibrary{graphs, graphdrawing}
\usegdlibrary{trees, layered}
\begin{document}
\begin{tikzpicture}
\tikz [rounded corners]
\graph [layered layout, sibling distance=8mm, level distance=8mm]
{
A -> B -> C -> A
};
\end{tikzpicture}
\clearpage
\section{Target A}
\label{sec:A}
\clearpage
\section{Target B}
\label{sec:B}
\clearpage
\section{Target C}
\label{sec:C}
\end{document}
我怎样才能设置超链接,以便当我使用时单击图表中的 A,它会带我到标题为“A”的部分graphdrawing
?
答案1
时机很好!——我刚刚为自己的文档制作了类似的“内容图”。:o)
工作原理:我为所有部分分配标签,并将它们用作图形节点的名称。然后使用命令排版节点\myref
,该命令将三个指向给定标签的超链接输出为节点文本的一部分。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,graphs,graphdrawing}
\usegdlibrary{layered}
% Use frenchlinks for nifty small caps
\usepackage[frenchlinks]{hyperref}
\begin{document}
% Hyperlinks to: Section # Section name Page number
% ————————— ———————————— ————————————
\newcommand\myref[1]{\ref{#1}. \textbf{\nameref{#1}}\\\footnotesize p. \pageref{#1}}
% — ————————————————————— —————————————
% Period ^ Bold Small text
\section*{Graph of contents}
\begin{tikzpicture}[>=latex']
% (Note that you don’t need both \begin{tikzpicture} and \tikz)
\graph [
layered layout, level distance=4em, sibling distance=3em,
nodes={
% Draw nodes as rectangles with centered text and a bit of horizontal padding
draw, align=center, inner xsep=0.5em,
% Use \myref to typeset nodes using their name (viz. section label) as input
typeset={\myref{\tikzgraphnodefullname}}
},
] { a -> { b -> c, d } };
\end{tikzpicture}
\section{The first section} \label{a}
\section{The second section} \label{b}
\section{The third section} \label{c}
\section{The fourth section} \label{d}
\end{document}
如果您想将前缀保留在您的部分标签中,您可以将其粘贴在、、和命令sec:
的开头。\ref
\nameref
\pageref
如果你希望整个矩形都可以点击,可以看看这个问题。
编辑
在阅读草稿时计算机视觉:算法与应用,我注意到一个很好的例子第 42 页上的“内容图表”:
使用我上面给出的方法应该可以制作这种图表。
可能相关的问题: