目录中缺少链接

目录中缺少链接

我正在使用 moderncv,并进行了一些自定义修改。不幸的是,目录缺少章节链接。

我创建了一个最小化的示例,它由以下文件组成:

  • 例子.tex
\documentclass[11pt,a4paper]{moderncv}
\usepackage[german]{babel}
\usepackage{moderncv-additions}
\usepackage{lipsum}

\begin{document}
\vfill
\begin{minipage}{1.0\textwidth}
    \section{Inhalt}
    \tableofcontents
\end{minipage}
\newpage
\chapter{Chapter1}{}
\lipsum[1]
\newpage
\chapter{Chapter2 }{}
\lipsum[1]
\end{document}
  • 现代简历
\DeclareOption{a4paper}{
  \setlength\paperheight{297mm}
  \setlength\paperwidth{210mm}}
\newcommand\@ptsize{}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\ProcessOptions\relax
\input{size1\@ptsize.clo}
\RequirePackage{etoolbox}
\RequirePackage{url}
\urlstyle{tt}
\AtEndPreamble{
  \RequirePackage[unicode]{hyperref}
  \AtBeginDocument{
    \hypersetup{
   }}
  \pagenumbering{arabic}
}
\newcommand*{\section}[1]{%
 }
\endinput
  • moderncv-additions.sty
\AtEndPreamble{
    \renewcommand*{\contentsline}[4]{%
      #2 \dotfill #3\\
    }
    \newcommand{\chapter}{\@ifstar
                         \chapterStar
                         \chapterNoStar }
    \newcommand*{\chapterNoStar}[2]{%
      {%
       \addcontentsline{toc}{chapter}{#1#2}%
       \chapter*{#1}{#2}%
      }%
    }
    \newcommand*{\chapterStar}[2]{%
      {%
        \hfill%
      }%
    }
    \renewcommand*{\@starttoc}[1]{%
      \begingroup
        \makeatletter
        \parskip\z@
        \@input{\jobname.#1}%
        \if@filesw
          \expandafter\newwrite\csname tf@#1\endcsname
          \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
        \fi
        \@nobreakfalse
      \endgroup
    }
    \def\tableofcontents{\@starttoc{toc}}
}

您知道如何获取 TOC 链接吗?

答案1

您没有获得目录链接,因为您重新定义\contentsline为排除它们。带有 hyperref 的正常定义充满了与 hyperref 相关的添加。如果您重新定义它只是为了添加\dotfill,我建议保持不变,但定义\l@chapter为调用\@dottedtocline

\newcommand*\l@chapter{\@dottedtocline{1}{1.5em}{2.3em}}

或者模仿\l@chapter你尝试做的事情\contentsline

\newcommand*{\l@chapter}[2]{%
  \noindent #1 \dotfill #2\par
}

那么您仍然需要进行两处更改才能获得正确的页面链接:

  1. 由于您定义了自己的简单\chapter命令,它没有链接目标,因此\phantomsection在之前添加\addcontentsline

  2. 提前定义页码,以便 hyperref 包能够看到它。将\pagenumbering{arabic}其取出\AtBeginDocument并让其立即执行。其他几件事也可以通过这种方式做得更好。

您的目录小页面无法放在该行上,因为其前面有段落缩进,因此请使用

\noindent
\begin{minipage}{\textwidth} ...

相关内容