如何引用包含的 PDF 的页面范围

如何引用包含的 PDF 的页面范围

我在我的文档中包含了一个多页 PDF,如下所示:

\begin{flushleft}                                                                                                           
\textlabel{Annexure 5}{email}: Email exchange                                                                                                                                                
\end{flushleft}                                                                                                             
\includepdf[pages={1-},scale=0.75]{email.pdf} 

PDF 跨越多页。我想引用 PDF 占用的页面范围。使用 \pageref{email} 我只得到起始页。

答案1

要引用多页 PDF 所占用的页面范围,您可以按以下方式使用\label和命令:\pageref

\begin{flushleft}
\textlabel{Annexure 5}{email}: Email exchange (\pageref{email}-\pageref{emailend})
\end{flushleft}
\includepdf[pages={1-},scale=0.75]{email.pdf}
\label{emailend}

\label命令为 PDF 创建一个名为“email”的参考点。该\pageref命令检索该参考点的页码。PDF\label末尾的命令创建另一个名为“emailend”的参考点。该\pageref命令检索该参考点的页码。最后,计算两个页码之间的差值,并在文本中显示页面范围。

答案2

您不会想逐字逐句地使用下面的代码,但它演示了一种可行的方法。我并没有完全使用这种方法,但我经常使用一些有点类似的方法,即从和获取总页数\pdfximage{}\pdflastximagepages当我第一次研究这个方法时,我找不到高级接口,所以这个方法使用了 pdfTeX 中的一些东西。因此,它可能适用于其他引擎,也可能不适用于其他引擎。

基本上,这用于pagecommand为第一页设置标签。\pdfximage将这个值减一并添加到这个值。这用于设置自定义计数器。然后将此计数器的值与 PDF 的每个后续页面的页面计数器进行比较,如果匹配则设置结束标签。然后可以进行交叉引用。应该可以完全避免设置第二个标签的需要,但我无法让它工作,因为我无法弄清楚如何以可扩展的方式恢复 PDF 第一页的值,而不会更严重地滥用标准 LaTeX。

理想情况下,pdfpages应该提供一个简单的键值接口来设置首页和最后一页的标签,但事实并非如此,尽管它显然是从引擎中检索相同类型的信息。因此,我重新发明了不方便的方形格式的轮子……

\begin{filecontents}{\jobname-email.tex}
\documentclass{article}
\begin{document}
  1\par
  \clearpage
  2\par
  \clearpage
  3\par
  \clearpage
  4
\end{document}
\end{filecontents}

\documentclass{article}
\usepackage{pdfpages}
\newcounter {mypdfcounter}
\setcounter {mypdfcounter} {0}
\newcommand \textlabel[2]{#2}% no idea what this is meant to do or how it is meant to be defined
\begin{document}
\begin{flushleft}                                                                                                           
  \textlabel{Annexure 5}{email}: Email exchange \pageref{pdf:email}--\pageref{pdf:email2}                                                                                                                                        
\end{flushleft}     
\pdfximage {\jobname-email.pdf}
\def \makethispdfpagestyle{\setcounter{mypdfcounter}{\thepage}\addtocounter{mypdfcounter}{-1}\addtocounter{mypdfcounter}{\pdflastximagepages}\label{pdf:email}}
\makeatletter
\def \makenextpdfpagestyle{\ifnum\c@page=\c@mypdfcounter\label{pdf:email2}\fi}
\makeatother
\def \makepdfpagestyle{%
  \makethispdfpagestyle
  \thispagestyle{empty}%
  \global\let\makethispdfpagestyle\makenextpdfpagestyle
}
\includepdf[pages={1-},scale=0.75,pagecommand=\makepdfpagestyle]{\jobname-email} 


\end{document}

交叉引用 PDF 的第一页和最后一页

请注意,我不知道\textlabel{}{}要做什么,也不知道您如何实现对 PDF 第一页的引用,因为除非您添加到列表中,否则这不是自动的。由于您没有提供任何代码,因此我对后者没有任何假设,而对前者做了一些难以置信的简单的事情。您的任何实际内容是否适用于此答案中的代码是任何人的猜测,但除了您之外没有人知道。

相关内容