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+。
我可以在 Adobe 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):