导航上一个下一个用于自己的自动标签

导航上一个下一个用于自己的自动标签

我想在我的 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提取超锚点。\getrefbykeydefaultrefcounthyperref

标签是根据计数器值自动生成的,然后\@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}

在此处输入图片描述

相关内容