在 includepdf 中使用 linkname

在 includepdf 中使用 linkname
\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}

相关内容