我想在我的 PDF 中添加一些导航功能,例如从更改注释跳转到更改注释,或从待办事项注释跳转到待办事项注释,或从下一个注释跳转回来,例如
\newcounter{cnt:todo}
\newcommand{\todo}{
\stepcounter{cnt:todo}
\marginpar[
\centering\label{todo:cnt:todo}
\hyperref[todo:cnt:todo-1]{$\Leftarrow$}
\normalsize{$\bigstar$}\xspace\index{todo}
\hyperref[todo:cnt:todo+1]{$\Rightarrow$}
]{
\centering\label{todo:cnt:todo}
\hyperref[todo:cnt:todo-1]{$\Leftarrow$}
\normalsize{$\bigstar$}\xspace\index{todo}
\hyperref[todo:cnt:todo+1]{$\Rightarrow$}
}
\xspace
}
抱歉,我使用了伪代码,但我之所以问这个问题,是因为我一无所知,我想那些能够回答这个问题的人无论如何都会习惯使用伪代码起草想法
欢迎所有为我指明阅读方向的提示,当然也欢迎所有解决方案。
答案1
最简单的方法是将标签放在 a 后面,然后使用(从包中,无论如何都会被加载)\refstepcounter
提取超锚点。\getrefbykeydefault
refcount
hyperref
标签是根据计数器值自动生成的,然后\@ifundefined{r@....}{}{}
应用以检查标签是否已经存在 - 这将阻止消息。(旁注:标签foo
存储在名为的宏中\r@foo
)
左/右页的代码是相同的,所以我将其包装在一个宏中并在\ToDo
命令中调用它。
请至少编译两次!
\documentclass[twoside]{book}
\usepackage{blindtext}
\usepackage{amssymb}
\usepackage{imakeidx}
\usepackage{mathtools}
\usepackage{hyperref}
\newcounter{todocntr}
\makeatletter
\newcommand{\navcommoncode}{%
\centering
\label{todo:\number\value{todocntr}}%
\@ifundefined{r@todo:\the\numexpr\number\value{todocntr}-1}{%
}{%
\hyperlink{\getrefbykeydefault{todo:\the\numexpr\number\value{todocntr}-1}{anchor}{0}}{$\Leftarrow$}
}%
{\normalsize\quad$\bigstar$}\quad\index{todo}%
\@ifundefined{r@todo:\the\numexpr\number\value{todocntr}+1}{%
}{%
\hyperlink{\getrefbykeydefault{todo:\the\numexpr\number\value{todocntr}+1}{anchor}{0}}{$\Rightarrow$}
}%
}
\makeatother
\newcommand{\ToDo}{%
\refstepcounter{todocntr}%
\marginpar[%
\navcommoncode%
]{%
\navcommoncode%
}%
}
\makeindex
\begin{document}
\chapter{First}
\blindtext
\ToDo
\blindtext[3]
\ToDo
\blindtext[20]
\ToDo
Foo \ToDo
\blindtext[50]
\ToDo
\printindex
\end{document}