包 hyperref 警告:PDF 字符串中不允许使用令牌

包 hyperref 警告:PDF 字符串中不允许使用令牌

我的文档包含由包格式化的章节标题listings。(章节名称是configure脚本开关的名称。)

\subsection{\lstinline!--enable-so-version!}\label{enable-so-version}

处理 LaTeX 源时我收到以下警告:

Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\lstinline' on input line 231.

我能避免这种情况吗?如果有指令可以手动(而不是自动)设置 PDF TOC 条目字符串,我愿意复制没有列表格式修饰的标题字符串。

答案1

许多通过不可扩展内容(分配、catcode 更改等)工作的命令在书签中不起作用。PDF 查看器不是 TeX,也不理解 TeX 语言。

hyperref提供\texorpdfstring为普通情况和书签情况提供不同的代码:

\documentclass{article}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{bookmark}

\begin{document}
  \tableofcontents
  \section{%
    \texorpdfstring{\lstinline!--enable-so-version!}%
                   {-{}-enable-so-version}}
\end{document}

Result

评论:

  • 里面的花括号-{}-enable可防止书签代码产生连字符并将两个单连字符转换为短划线。
  • 推荐使用软件包bookmark,书签更新速度更快,软件包提供的功能更多。

相关内容