使用 cjhebrew (和 hyperef) 的希伯来语部分

使用 cjhebrew (和 hyperef) 的希伯来语部分

我有时会在英语或德语文本中写希伯来语单词。为此,我使用 cjhebrew。除非我尝试用希伯来语写一个章节或小节,否则它工作正常。使用

\subsection{\cjRL{kwl}}

我明白了

aTeX Font Warning: Font shape `U/cjheb/bx/n' undefined
(Font)              using `U/cjheb/m/n' instead on input line 27.

! Argument of \@sect has an extra }.
<inserted text> 
            \par 
l.27   \subsection{\cjRL{kwl}}

(我之前尝试过 \<...>,结果相同)。

问题原来是与 hyperref 的干扰。我用它来链接 pdf 文档中的章节和目录。有没有 hyperref 或章节的替代方案?

答案1

此错误消息是将章节标题转换为书签字符串期间命令中断的典型情况。

软件包cjhebrew使用 7 位希伯来语字体编码,这在书签字符串中不起作用。\cjRL即使字体问题可以解决,它也不可扩展,也无法工作。但可以在书签生成期间禁用宏:

\pdfstringdefDisableCommands{%
  \let\cjRL\@gobble % it can't be supported
}

书签中出现的\cjRL及其参数会被忽略。

要在书签中获取希伯来语内容,hyperref需要选项unicode,因为 PDFDocEncoding 不包含希伯来字母。\texorpdfstring允许为书签指定替代方案。

问题仍然存在,如何在书签中获取希伯来字母?

  • 如果将包与选项或 一起inputenc使用,则可以直接给出字符。包直接使用这些字符(绕过通过 LICR 进行的转换)。utf8utf8xhyperref
  • 自 2012/07/30 v6.82w 起:\hebalef,,\hebbet
  • \unichar支持 Unicode 数值。因此U+05D0 HEBREW LETTER ALEF可以将其寻址为 \unichar{"05D0}\unichar{1488}

示例文件:

\documentclass{article}
\usepackage{cjhebrew}
\usepackage[unicode]{hyperref}
\usepackage{bookmark}

\pdfstringdefDisableCommands{%
  \let\cjRL\@gobble % it can't be supported
}
\begin{document}
\cjRL{kwl}
\section{%
  \texorpdfstring{\cjRL{kwl}}%
  {\unichar{"05DB}\unichar{"05D5}\unichar{"05DC}}%
}

% with hyperref 2012/07/30 v6.82w or later
% \section{\texorpdfstring{\cjRL{kwl}}{\hebkaf\hebvav\heblamed}}
\end{document}

答案2

[这应该是一条评论,但由于图片的原因,我无法以评论的形式发布。]

可能是你与其他软件包有交互(如果是,请重新排序),或者是非标准的乳胶发行版?我问这个问题是因为以下操作在我的系统上运行良好:

\documentclass{article}
\usepackage{cjhebrew}
\begin{document}
\cjRL{kwl}
\section{\cjRL{kwl}}
\subsection{\cjRL{kwl}}
\end{document}

在此处输入图片描述

答案3

使用多语系统和希伯来语字体和 hyperref 时也会出现类似的问题。可以采用 Heiko Oberdiek 在他的回答

\documentclass{article}

\usepackage[hidelinks]{hyperref}

\usepackage{polyglossia} 
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\newfontfamily\englishfont[Mapping=tex-text]{Latin Modern Roman}
\newfontfamily\hebrewfont[Scale=MatchLowercase]{Ezra SIL}
\DeclareTextFontCommand{\ez}{\hebrewfont}

\begin{document}

\tableofcontents

\section{\texorpdfstring{\ez{ב}}{\unichar{"05D1}}}

\end{document}

相关内容