我知道这个问题被问到近80次最好的解决方案可能是使用\texorpdfstring{...}{...}
,但我不想让文档内部变得混乱,所以我在考虑此解决方案。
\pdfstringdefDisableCommands{%
\def\${}%
\def\alpha{alpha}%
}
但这并不能改变事实
\section{$\alpha$}
发出警告
包 hyperref 警告:PDF 字符串(PDFDocEncoding)中不允许使用标记:(hyperref)删除“数学移位”[...]
所以问题是:在分段处理数学时我可以使用\pdfstringdefDisableCommands{...}
来避免使用吗?\texorpdfstring{...}{...}
答案1
这里我使用\(...\)
代替$...$
。避免警告。
\documentclass{article}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
% \def${}%
\def\alpha{alpha}%
\def\({}%
\def\){}%
\def\texttt#1{<#1>}%
}
\begin{document}
\section{\texttt{xyz}\(\alpha\)}
\end{document}
或者在替换中添加更多描述:
\documentclass{article}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
\def\alpha{alpha}%
\def\({Math:[}%
\def\){]}%
\def\texttt#1{<#1>}%
}
\begin{document}
\section{\texttt{xyz}\(\alpha\)}
\end{document}
答案2
由于我正在使用unicode-math
包,所以我实际上在我的工作中这样做:
\documentclass{article}
\usepackage[unicode]{hyperref}
\usepackage{unicode-math}
\newcommand\pdfmath[1]{\texorpdfstring{$#1$}{#1}}
\begin{document}
\section{\pdfmath{α}}
\end{document}
或者,正如 Heiko Oberdiek 所建议的,如果你不喜欢unicode-math
,你可以这样做:
\documentclass{article}
\usepackage[unicode,psdextra]{hyperref}
\newcommand\pdfmath[1]{\texorpdfstring{$#1$}{#1}}
\begin{document}
\section{\pdfmath{\alpha}}
\end{document}
虽然不是最理想的,但比普通的要好一点\texorpdfstring
。所以,所有这些只是如果你像我一样不喜欢\(
和\)
作为数学的界限(但也看到https://tex.stackexchange.com/a/513/56823以及特别是下面关于此的评论),否则你最好参考 Steven + Heiko 的答案。;)