我将于下个月提交一篇 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}
上面代码中的)。