在 LuaLaTeX 中,我用来\includepdf[pages=-, noautoscale=true]{myEmbeddedDoc.pdf}
包含外部多页 PDF 文件“myEmbeddedDoc.pdf”。(此命令由“pdfpages”包提供。\usepackage{pdfpages}
)在包含此 PDF 文档之前,我希望在我的 LaTeX 文档中显示文本“请参阅页面上嵌入的文档‘myEmbeddedDoc.pdf’X-是(否页)”,其中X是所含文档的起始页,是是所含文档的结束页,并且否是所含文档的页数。我希望X,是, 和否由 LaTeX 自动填充。这可能吗?如果可以,我该怎么做?(为了实现这一点,我是否需要不同的命令或 LaTeX 包来包含外部 PDF 文档?)
编辑:澄清我的问题:我想要包含的 PDF 文档的页码——即在包含的 LaTeX 文档的上下文中,不是解析所包含文档中的任何页码。例如,如果 myEmbeddedDoc.pdf(所包含的 PDF 文档)本身有 3 页长,并在 LaTeX 文档的第 4 页之后被包含(这意味着所包含的 PDF 文档将包含 LaTeX 文档的第 5-7 页),那么我希望 LaTeX 文档第 4 页上的文本显示“请参阅第 myEmbeddedDoc.pdf5-7(3页)。”我需要自动生成这些数字,因为这在我的 LaTeX 文档中已经完成了很多次。手动编辑生成的 PDF 文件是行不通的。
答案1
假设lipsum50.pdf
包含 50 段 Lorem Ipsum 文本(由\lipsum[1-50]
以下人员生成)lipsum
。
以下最小示例提供了\insertpdf[<opts>]{<PDF>}
其工作原理,\includepdf[<opts>]{<PDF>}
只需添加一个*-firstpage
和*-lastpage
\label
即可\pageref
。此外,\pagediff{<PDF>}
使用上述页面引用来计算包含的页面数*。
\documentclass{article}
\usepackage{pdfpages,refcount}
\usepackage{lipsum}
\makeatletter
\newcommand{\insertpdf}[2][]{%
\clearpage
\label{#2-firstpage}%
\includepdf[#1]{#2}%
\immediate\write\@auxout{\string\newlabel{#2-lastpage}{{\@currentlabel}{\number\numexpr\value{page}-1}}}%
}
\newcommand{\pagediff}[1]{%
\number\numexpr\getpagerefnumber{#1-lastpage}-\getpagerefnumber{#1-firstpage}+1\relax
}
\makeatother
\begin{document}
\section{A section}
\lipsum[1-30]% Pages 1-6
See pages \pageref{lipsum50-firstpage}-\pageref{lipsum50-lastpage} (\pagediff{lipsum50} pages).
\insertpdf[pages=1-3]{lipsum50}% Pages 7-9
\lipsum[31-50]% Pages 10-13
\end{document}
* 还有其他方法可以计算外部 PDF 中的页数。请参阅获取外部 PDF 的页数。
Ahyperref
兼容的解决方案需要稍微修改一下。第一个\pageref
erence 可以按原样使用,因为 是\label
在包含的第一个页面上设置的。最后一个页面实际上是计算出来的,因此\pageref
不能直接使用。相反,我们使用 直接指向页面page.X
\hyperlink
(参见指向给定页面的 PDF 超链接)。
\documentclass{article}
\usepackage{pdfpages,refcount,hyperref}
\usepackage{lipsum}
\makeatletter
\newcommand{\insertpdf}[2][]{%
\clearpage
\phantomsection
\label{#2-firstpage}%
\includepdf[#1]{#2}%
\immediate\write\@auxout{\string\newlabel{#2-lastpage}{{\@currentlabel}{\number\numexpr\value{page}-1}{}{}{}}}%
}
\newcommand{\pagediff}[1]{%
\number\numexpr\getpagerefnumber{#1-lastpage}-\getpagerefnumber{#1-firstpage}+1\relax
}
\makeatother
\begin{document}
\section{A section}
\lipsum[1-30]% Pages 1-6
See pages \pageref{lipsum50-firstpage}-%
\hyperlink{page.\getpagerefnumber{lipsum50-lastpage}}{\pageref*{lipsum50-lastpage}} (\pagediff{lipsum50} pages).
\insertpdf[pages=1-3]{lipsum50}% Pages 7-9
\lipsum[31-50]% Pages 10-13
\end{document}