标题中希腊字母的字母常数错误不正确:LuaLaTeX 中的 unicode-math 和 hyperref 存在错误

标题中希腊字母的字母常数错误不正确:LuaLaTeX 中的 unicode-math 和 hyperref 存在错误

unicode-math这是或hyperref中的一个错误吗LuaLaTeX

    % !TeX program = lualatex                                   
    % !TeX encoding = utf8
    
    \documentclass[14pt]{extarticle}
    
    \usepackage{fontspec}
    \usepackage{amsmath}
    \setsansfont{CMU Sans Serif}
    \setmainfont{CMU Serif}
    \setmonofont{CMU Typewriter Text}
    \usepackage{unicode-math} % this one DOES NOT cause error without hyperref
    \usepackage[english]{babel}
    \usepackage{hyperref} % this one DOES NOT cause error without unicode-math
    
    
    \begin{document}
    
    \section{title $\alpha$}
    
    \end{document}

我收到错误

不正确的字母常数。\section{title $\alpha$}

答案1

书签只能包含相当简单的文本。这意味着 hyperref 必须将 LaTeX 输入转换为有意义的内容。为此,它通常会删除或替换有问题的内容。一般来说,hyperref 至少可以避免此过程中的错误,但它无法处理已分配给字符的命令:https://github.com/latex3/hyperref/issues/63. 遗憾的是 unicode-math 在很多地方都出现了这种情况。

您可以使用\texorpdfstringhyperref 提供替代方案。例如,直接 unicode 字符 U+1D6FC 适用于大多数 pdf 阅读器。您可以直接输入它,也可以使用以下符号^^

\documentclass[14pt]{extarticle}

    \usepackage{fontspec}
    \usepackage{amsmath}
    \setsansfont{CMU Sans Serif}
    \setmainfont{CMU Serif}
    \setmonofont{CMU Typewriter Text}
    \usepackage{unicode-math} % 
    \usepackage[english]{babel}
    \usepackage{hyperref} % 


    \begin{document}

    \section{title \texorpdfstring{$\alpha$}{

答案2

我相信你遇到了 pdf 书签指定方式的一个基本缺陷,而不是其中任何一个的unicode-math缺陷hyperref 本身

可以使用设备\texorpdfstring来解决此缺点。例如,在 LuaLaTeX 下,

\section{title \texorpdfstring{$\alpha$}{$\symit{alpha}$}}

将导致title alpha(注意:不是 title α) 出现在书签中。

在旁边:即使x03B1Unicode 表中的插槽指向 α,并且 CMU Serif 字体在该插槽中有正确的符号,

\section{title \texorpdfstring{$\alpha$}{\symbol{"03B1}}}

根本不起作用,因为书签现在显示title "03B1。这肯定比 更不令人满意title alpha,不是吗?(​​这也是为什么我一开始就认为书签的形成方式存在根本问题。)

这个故事的寓意是什么?也许,我们应该避免在显示为 pdf 书签的命令参数中使用数学模式希腊字母。

相关内容