当我尝试babel
hebrew
与 KOMA-Script 字母类一起使用时,会出现一系列错误。查看文件后hebrew.ldf
,我认为原因是babel
hebrew
检查文档类列表,如article
或letter
,以找出命令,如\thesection
应重新定义命令(如)。我还在网上找到了这个解释,例如https://groups.google.com/forum/#!topic/de.comp.text.tex/_79cjuF_6m0(在德国)。
我认为这与moderncv+Hebrew 中未定义的控制序列错误。
对于类似这样的类,scrartcl
似乎有一种简单的解决方案,即将这些变量定义为空。但是在这种情况下,scrlttr2
变量会很多。所以我正在寻找一种解决方案,它不包括定义所有这些变量,最好也不包括更改文件babel
hebrew
。
我的最小工作示例:
\documentclass{scrlttr2}
\usepackage[utf8x]{inputenc}
\usepackage[hebrew, english]{babel}
\usepackage{culmus}
\setkomavar{subject}{\foreinglanguage{hebrew}{שלום}}
\begin{document}
\begin{letter}{Example Person}
\opening{Dear Example,}
\ldots
\closing{Best regards,}
\end{letter}
\end{document}
所有错误都属于“未定义的控制序列”类型,例如
ERROR: Undefined control sequence. --- TeX said --- <argument> \thesection l.174 }
答案1
scrartcl
我会尝试将 class与 package 一起使用scrletter
。因此,您可以假装加载类,而不是告诉hebrew.ldf
您类letter
已加载(请参阅 Ulrike 对问题的评论)article
。尽管如此,仍然会有一个错误消息,因为在里面scrletter
设置了一个标签。这会导致\label{\thisletter.lastpage}
\end{letter}
\newlabel{\@@number {1}.lastpage}{{\beginL \@@number {1}\endL }{\@@number {1}}
在aux
文件中。\beginL
此处导致出现错误消息。我不知道这是否\label
是使用中的一般问题babel-hebrew
,但如果您不需要最后一页功能,您可以使用简单的补丁来删除它。
和:
\documentclass{scrartcl}
\usepackage[utf8x]{inputenc}
\makeatletter\@namedef{[email protected]}{0000/00/00}\makeatother
\usepackage[hebrew,english]{babel}
\usepackage{scrletter}
\usepackage{culmus}
\setkomavar{subject}{\foreignlanguage{hebrew}{שלום}}
\usepackage{xpatch}
% remove label from \endletter
\xpatchcmd{\endletter}{\label{\thisletter.lastpage}}{}{}{}
\begin{document}
\begin{letter}{Example Person}
\opening{Dear Example,}
\ldots
\closing{Best regards,}
\end{letter}
\end{document}
我得到:
我不知道这是否是预期的结果。我也不知道这个技巧是否能用于真正的希伯来字母。
确实 最好 的 是 拥有 一个 更好 的babel-hebrew
。