多语言文档的 Babel 和 documentclass 冲突

多语言文档的 Babel 和 documentclass 冲突

我将于下个月提交一篇 ACM 文章,但遇到了一些问题。该文章需要使用文档acmart类(下载链接这里我需要能够用多种语言(英语、俄语、阿拉伯语、中文)呈现单词和句子。经过搜索,我找到了一个使用 Babel 的可能选项,并且对于下面的简单示例,一切都按预期进行编译:

示例 1:

\documentclass[letterpaper, 12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T2A,LAE,T1]{fontenc}
\usepackage[arabic,russian,main=english]{babel}

\begin{document}

\section{Test}

Test foreign languages:

\begin{itemize}
    \item Russian: \foreignlanguage{russian}{Я} (should work for Babel options 1, 2)
    \item Arabic: \foreignlanguage{arabic}{و} (should only work for Babel option 2)
\end{itemize}

\end{document}

当我将所需的 documentclass 合并到上述代码中时,就会出现问题。上述代码的更改在此处进行

示例 2:

% Following babel documentation / stackexchange 
% https://tex.stackexchange.com/questions/529681
% http://mirror.ox.ac.uk/sites/ctan.org/macros/latex/required/babel/base/babel.pdf pp6

% \PassOptionsToPackage{russian,arabic,main=english}{babel}
% ----- DOCUMENTCLASS OPTIONS -----
% A simple latex style
% \documentclass[letterpaper, 12pt]{article}  % Documentlcass option 1 (works with Babel options 1, 2)
% The required documentclass for the contribution
\documentclass[manuscript]{acmart}  % Documentclass option 2 (works only with Babel option 1)
% --- END DOCUMENTCLASS OPTIONS ---

\usepackage[utf8]{inputenc}
\usepackage[T2A,LAE,T1]{fontenc}

% ---- BABEL OPTIONS (choose one) ----
% When un-commented, the babel options below builds as expected 
% \usepackage[russian,main=english]{babel}  % Babel option 1
% This toggles the inclusion of Arabic, but causes many errors
\usepackage[arabic,russian,main=english]{babel}   % Babel option 2
% -- END BABEL OPTIONS --

\author{Annonymous Author}
\email{[email protected]}
\orcid{1234-1234-1234}
\affiliation{%
  \institution{institution name}
  \streetaddress{street address}
  \city{city}
  \state{state}
  \postcode{postcode}
}

\title{title}

\begin{document}
\begin{abstract}abs\end{abstract}

\maketitle

\section{Test}

When `Babel option 2' active, the section number is wrong: it should be `1 TEST', 
but gets compiled to `0.1 TEST'. Many errors accompany it, relating to counter 
definitions etc. 

Test foreign languages:

\begin{itemize}
    \item Russian: \foreignlanguage{russian}{Я} (should work for Babel options 1, 2)
    \item Arabic: \foreignlanguage{arabic}{و} (should only work for Babel option 2)
\end{itemize}

\end{document}

输出的文档几乎符合我的预期:俄文和阿拉伯文字母按预期显示,但部分计数器现在不正确。在示例 1 的情况下,部分名称为,1 TEST但对于示例 2,部分名称为0.1 TEST。如果我添加图形、表格、算法、定理等,它们也都会以“0”为前缀。虽然我可以通过重新定义所有内容来解决这个问题,但重新定义 documentclass 似乎并不是正确的做法……

我尝试过几件事:

  • 如果我arabic从 babel 包选项中删除,并从列表中删除阿拉伯语项(即仅英语和俄语),文档就可以正常编译。这表明我的问题的原因是与阿拉伯语 babel 冲突。不幸的是,我需要将阿拉伯语文本添加到我的文档中,所以不能这样做。
  • 我阅读了一些内容并遇到了类似的问题(例如) 讨论了与某些语言的冲突。我听从了他们的建议,并像\PassOptionsToPackage{russian,arabic,main=english}{babel}以前一样添加了选项\documentclass。您可以在示例 2 中看到此框架(Babel 选项 1 和 2 已被注释掉)。
  • 我尝试使用arabxetex,它可以很好地嵌入外语,但不幸的是,这个包需要 XeLaTeX(我相信),而它与 documentclass 不兼容。

感觉这里的定义有些矛盾。虽然我有相当多的编写 Latex 文档的经验,但我必须承认,对于这种类型的错误,我感到很不适应。有人能给我一些建议吗?我是不是用错了PassOptionsToPackage


我在 Overleaf 上进行编译(使用 documentclass 选项 2、babel 选项 2,并且不使用 PassOptionsToPackage),抛出了以下错误(它们都引用了\section{Test}上面代码中的)。

编译错误的截图

相关内容