\documentclass{article}
\usepackage{pdfpages}
\usepackage{hyperref}
\begin{document}
\nameref{mypdflabel} on page~\ref{mypdflabel}
\newpage
\newcounter{inclPDFpage}
\includepdf[pages=-,link,linkname="This is the title I want",pagecommand={\refstepcounter{inclPDFpage}\label{mypdflabel}}]{mypdf.pdf}
\end{document}
上述代码的输出只是“在第 2 页”,但我希望它显示“这是我想要在第 2 页显示的标题”,这就是我认为 nameref 会做的。
关于如何让它发挥作用,我有什么想法吗?
答案1
linkname
不提供页面名称等,它仅更改超级锚点名称,例如,linkname=foo
给出foo.1
等,其中1
是页码。
下面的例子确实提供了正确的\@currentlabelname
存储方式\label
,稍后会用 进行提取\nameref
,但请注意,如果包含的.pdf
文件中含有超过页面的内容,LaTeX 将会抱怨多个标签具有相同的名称。
\documentclass{article}
\usepackage{pdfpages}
\usepackage{hyperref}
\makeatletter
\newcommand{\providename}[2]{%
\edef\@currentlabelname{#1}%
\label{#2}%
}
\makeatother
\begin{document}
\nameref{mypdflabel} on page~\ref{mypdflabel}
\newpage
\newcounter{inclPDFpage}
\includepdf[pages=-,link,pagecommand={\refstepcounter{inclPDFpage}\providename{This is the title I want}{mypdflabel}}]{7.pdf}
\end{document}