插入 PDF 时有没有办法更改目录中的页码?

插入 PDF 时有没有办法更改目录中的页码?

在我的文档开头,我插入了一个 3 页的 PDF。在目录中,我引用了上述 3 页 PDF 中的项目。但是,目录旁边的页码不正确。有没有办法更改这个页码。这是 MWE

我像这样导入到 LaTeX 中:

\includepdf[pages=-]{resources/frontmatter.pdf}

现在我将其放在 \begin{document} 之后

% add signature block stuff
\addcontentsline{toc}{section}{Signature Block}
\addcontentsline{toc}{section}{Record of Revision}
\setcounter{page}{4}

那么我的目录显示的内容如下:

目录

我希望签名栏和修订记录旁边的页码分别为 2 和 3。我不关心目录是否超链接到签名栏或修订记录;只是想更改页码。

答案1

pdfpages提供addtotoc一个选项,用于指定应将包含的文档的哪些部分添加到目录中。它需要 5 个参数:

addtotoc={<page number>, <section>, <level>, <heading>, <label>}

因此,您可以包含文档的各个组件并放置适当的addtotoc参数以确保正确的格式和链接。

在此处输入图片描述

\documentclass{article}

\usepackage{pdfpages,lipsum}
\usepackage{hyperref}

\newcounter{secnumdepthstore}% For storing whatever secnumdepth is

\begin{document}

\tableofcontents

\setcounter{secnumdepthstore}{\value{secnumdepth}}% Store value of secnumdepth counter
\setcounter{secnumdepth}{0}% Avoid numbering sections
\includepdf[
  pages=1-2,
  addtotoc={%
    1,% <page number>
    section,% <section>
    1,% <level>
    Signature block,% <heading>
    signature_block% <label>
  }
]{example-image-letter-numbered.pdf}

\includepdf[
  pages=3,
  addtotoc={%
    3,% <page number>
    section,% <section>
    1, % <level>
    Record of revision,% <heading>
    record_of_revision% <label>
  }
]{example-image-letter-numbered.pdf}

\setcounter{secnumdepth}{\value{secnumdepthstore}}% Restore section numbering up to secnumdepth

\section{Introduction}
\lipsum[1-10]

\end{document}

由于未指定您使用的文档类,因此secnumdepth在包含页面之前,我会捕获 (指定哪些部分单元已编号或未编号)的值 - 将其设置为0因此\section(处于级别1)未编号 - 并在包含页面后重置它。

答案2

请注意,这对应于 的 TOC 条目\section*

\documentclass{article}
\usepackage{lipsum}

\AddToHook{shipout/background}{\ifodd\value{page}%
    \setlength{\dimen0}{\dimexpr 1in+\oddsidemargin}%
  \else
    \setlength{\dimen0}{\dimexpr 1in+\evensidemargin}%
  \fi
  \setlength{\dimen1}{\dimexpr 1in+\topmargin+\headheight+\headsep+\topskip}% first baseline
  \ifnum\value{page}=2\relax \put (\dimen0,-\dimen1)
    {\addcontentsline{toc}{section}{Signature Block}}\fi
  \ifnum\value{page}=3\relax \put (\dimen0,-\dimen1)
    {\addcontentsline{toc}{section}{Record of Revision}}\fi}

\begin{document}
\tableofcontents

\newpage
\lipsum[1-12]

\end{document}

只是为了好玩,这里有一个超文本兼容版本\section。您甚至可以使用调整位置\put

\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}

\AddToHook{shipout/background}{\ifodd\value{page}%
    \setlength{\dimen0}{\dimexpr 1in+\oddsidemargin}%
  \else
    \setlength{\dimen0}{\dimexpr 1in+\evensidemargin}%
  \fi
  \setlength{\dimen1}{\dimexpr 1in+\topmargin+\headheight+\headsep+\topskip}% first baseline
  \ifnum\value{page}=2\relax \put (\dimen0,-\dimen1)
    {\refstepcounter{section}\addcontentsline{toc}{section}{\string\numberline{\thesection}Signature Block}}\fi
  \ifnum\value{page}=3\relax \put (\dimen0,-\dimen1)
    {\refstepcounter{section}{\addcontentsline{toc}{section}{\string\numberline{\thesection}Record of Revision}}}\fi}

\begin{document}
\tableofcontents

\newpage
\lipsum[1-12]

\end{document}

相关内容