令牌不允许警告希伯来数字?

令牌不允许警告希伯来数字?

我使用 Latex 做作业,用我们的母语希伯来语写作。我用它来polyglossia配置文档中的语言设置和字体,并hyperref在需要的地方添加链接。

我最近想添加一个目录,这样可以更轻松地浏览文档。hyperref 的一个很棒的功能是 TOC 包含链接,让我可以轻松跳转到文档中的所需位置(老实说,我认为这应该是 TOC 的默认功能)。

然而,我在尝试添加目录时遇到了一个奇怪的问题。我对问题和问题/答案的不同部分使用了自定义计数器,我用字母对各个部分进行编号,例如:

סעיף א, סעיף ב, סעיף ג

翻译为: A 部分、 B 部分、 C 部分、...

实现此目的的简化版本代码:

\documentclass{article}

\usepackage{xparse}
\usepackage{hyperref}

\hypersetup{
    colorlinks,
    linkcolor=blue
}

% Font and language settings
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}

\newfontfamily\hebrewfont[
    Script=Hebrew,
    ItalicFont=*-Regular,
    ItalicFeatures={FakeSlant=0.3},
]{Assistant}

\setmainlanguage{hebrew}
\setotherlanguage{english}
\setsansfont{Assistant}
\setmonofont{Assistant}

\newcounter{ProblemNum}
\newcounter{SubProblemNum}[ProblemNum]

\NewExpandableDocumentCommand{\TheProblemNum}{}{\arabic{ProblemNum}}
\NewExpandableDocumentCommand{\TheSubProblemNum}{}{\alph{SubProblemNum}} % <- This causes the warnings

\NewDocumentCommand{\Problem}{ o }{
    \stepcounter{ProblemNum}

    % Add the "unnumbered" subsections to TOC
    \phantomsection
    \addcontentsline{toc}{subsection}{שאלה \TheProblemNum \IfNoValueF{#1}{\; #1}}
    \subsection*{שאלה \TheProblemNum \IfNoValueF{#1}{\; #1}}
}

\NewDocumentCommand{\Solution}{}{
    \phantomsection
    \addcontentsline{toc}{subsubsection}{פתרון}
    \subsubsection*{פתרון}
}
\NewDocumentCommand{\Part}{}{
    \stepcounter{SubProblemNum}
    \phantomsection
    \addcontentsline{toc}{subsubsection}{סעיף \TheSubProblemNum}
    \subsubsection*{סעיף \TheSubProblemNum}
}

\begin{document}
\tableofcontents

\newpage
\Problem
דוגמה לשאלה
\Solution
\Part
פתרון לסעיף הראשון.
\Part
פתרון לסעיף השני.
\end{document}

我正在使用字体助手

问题是,当编译多部分问题时,我收到警告: Token not allowed in a PDF string (Unicode):(hyperref) removing \@hebrew@numeral。我知道这是因为我使用了\alph{SubProblemNum}答案的部分。更改为可以\arabic{SubProblemNum}消除警告。奇怪的是,编译后文档看起来不错,所以看起来警告是无害的:

我该如何修复这些警告,或者至少消除它们?

答案1

一个更简单的例子是

\documentclass{article}
\usepackage{polyglossia}
\usepackage{hyperref}

\newfontfamily\hebrewfont[Script=Hebrew]{Arial}
\setmainlanguage{hebrew}

\newcounter{mycounter}

\begin{document}
\setcounter{mycounter}{5}

\section{Text \alph{mycounter} more text}

\end{document}

文档中没有问题:

在此处输入图片描述

hyperref 抱怨,因为它不能正确处理\alph命令(内部调用\@hebrew@numeral书签(PDF 大纲/导航)

在此处输入图片描述

对此,我们能做的不多。command 的当前定义\@hebrew@numeral非常不可扩展,hyperref 确实没有机会在这里做一些明智的事情。该命令需要完全重写才能在书签中工作。您可以使用来抑制处理(以及警告),\texorpdfstring{\alph{mycounter}}{}但这是否足够好取决于您自己。

相关内容