让数学显示在 PDF 书签中

让数学显示在 PDF 书签中

PDF 书签中的许多数学符号都乱了。

例子:

\documentclass{article}
\usepackage{amssymb}

\makeatletter
\usepackage{bookmark}
\makeatother

\begin{document}

\section{Is in $\in$, Set minus $\backslash$, Positive integers $\mathbb{Z}^{+}$}

Hello.
\end{document}

输出 PDF:

在此处输入图片描述

$\in$变成空格,$\backslash$变成“026E30F,$\mathbb{Z}^{+}$变成Z+。

我可以在 Adob​​e Acrobat 中手动更改 PDF 书签,在其中我输入 unicode 数学字符,如下所示:

在 ∈ 中,集合减 \,正整数 ℤ⁺

在此处输入图片描述

但我想知道我是否可以在 tex 文件本身中执行此操作。例如,我知道可以为章节/子章节/等的标题输入替代的“简称”,以便此“简称”(而不是实际标题)显示在目录中。

PDF 书签也有类似的可能性吗?

答案1

书签中不能使用数学引擎和不同的字体。它们是简单的字符串,但至少可以用 Unicode 给出。后者可以通过选项unicode(或pdfencoding=auto)启用,hyperref该选项由包用于bookmark转换书签字符串。

选项psdextra增加了对许多符号的支持,尤其是数学符号。

\pdfstringdefDisableCommands可用于重新定义书签命令。示例使用它来添加对的支持,\backslash方法是将其替换为支持的\textbackslash

\texorpdfstring可用于指定书签替换字符串:

  • \mathbb{Z}替换为 U+2124 (双字符大写 Z),
  • 上标+由 U+207A(上标加号)替换。

完整示例:

\documentclass{article}
\usepackage{amssymb}

\usepackage[unicode,psdextra]{hyperref}
\usepackage{bookmark}
\pdfstringdefDisableCommands{\let\backslash\textbackslash}

\begin{document}

\section{%
  Is in $\in$,
  Set minus $\backslash$,
  Positive integers \texorpdfstring{$\mathbb{Z}^{+}$}{\unichar{"2124}\unichar{"207A}}%
}

Hello.
\end{document}

数学转换的美元符号会被自动过滤掉。如果警告令人担忧,则\texorpdfstring有帮助,例如\texorpdfstring{$\in$}{\in}

结果(Adobe Reader):

Adobe Reader 中的书签

相关内容