Songs 包无法使用 lua/xelatex 生成 PDF 书签

Songs 包无法使用 lua/xelatex 生成 PDF 书签

以下 MWE\beginsong 使用 pdflatex 编译时会为每个生成 PDF 书签,但使用 lua/xelatex 编译时则不会

\documentclass{article}
\usepackage{lipsum}
\usepackage[bookmarks=true]{hyperref}

\usepackage[lyric]{songs}

\begin{document}

\begin{songs}{} 
\beginsong{My Song}
\beginverse
\lipsum[1]
\endverse
\endsong
\end{songs}

\end{document}

答案1

手册“PDF 书签和链接”第 11.6.3 节指出

每个 \beginsong 环境都会添加一个 PDF 书签(如果生成 PDF)

...并提供用于自定义此行为的代码片段。如果在可执行文件中包含了默认代码片段的等效内容,则 xelatex 会生成 pdf 书签。我猜想上面提到的“如果生成 PDF”会转化为某种依赖于 pdflatex 的检查,而使用其他引擎时会失败。

以下是修改后的有效 MWE:

\documentclass{article}
\usepackage{lipsum}
\usepackage[bookmarks=true]{hyperref}

\usepackage[lyric]{songs}

% Required for pdf bookmarks if using xelatex/lualatex instead of pdflatex
\renewcommand{\songtarget}[2]
{\pdfbookmark[#1]{\thesongnum. \songtitle}{#2}}
\renewcommand{\songlink}[2]{\hyperlink{#1}{#2}}

\begin{document}

\begin{songs}{}

\beginsong{My Song}
\beginverse
 \lipsum[1]
\endverse
\endsong
\end{songs}
\end{document}

相关内容