LaTeX阿拉伯文怎么排版:从右到左书写

讲清 LaTeX 排版阿拉伯文要换哪种编译引擎、怎样用 polyglossia 和 fontspec 设置语言与字体、如何在英文段落和公式中正确混排,并给出编译后的核对清单。

写论文、讲义或双语材料时,很多人会在 LaTeX 里同时放英文和阿拉伯文。结果常见的问题是:阿拉伯文字母不连写、整句方向错乱、标点跑到错误的一侧,甚至编译直接报错。问题根源在于阿拉伯文从右往左书写,字母还会根据所在位置变形,需要支持阿拉伯字形的字体和专门的语言设置,处理方式与拉丁字母、中文都不同。

这篇文章讲的是 LaTeX 中阿拉伯文的具体设置方法。读完后,你能判断该用哪种编译引擎,在导言区搭好语言和字体,把阿拉伯文段落与英文正文混排,并能逐项检查编译结果。

LaTeX 阿拉伯语排版要不要换引擎?一句话结论:要,用 XeLaTeX 或 LuaLaTeX 编译,并通过 polyglossia 切换语言。

你的情况推荐做法原因
文档主体是英文,只有几段阿拉伯文XeLaTeX 加 polyglossia,阿拉伯文段落放入 arabic 环境配置量小,方向切换和字体调用都比较直接
大量阿拉伯文,页眉、目录也要用阿拉伯语LuaLaTeX 加 polyglossia,并把阿拉伯语设为主语言整篇文档的方向和版式设置更完整
阿拉伯文主要是引文或短词XeLaTeX,用 textarabic 命令包裹短语不打断英文段落的结构
只能使用 pdfLaTeX 的老模板改用 XeLaTeX 重新编译,或把阿拉伯文先转为图片嵌入pdfLaTeX 需要额外宏包,字形连写和方向支持较弱
需要在网页上写 LaTeX 并导出先在网页编辑器里确认源码,再下载到本地编译核对网页端的预览不能代替本地编译结果

开始之前:先确认这几点

1. 确认编译引擎。 阿拉伯文连写依赖字体中的字形表,XeLaTeX 和 LuaLaTeX 能直接读取 OpenType 字体。如果你的编辑器默认是 pdfLaTeX,先在编译设置里改掉,否则后面的字体设置不会生效。

2. 准备阿拉伯文字体。 Amiri、Noto Naskh Arabic、Scheherazade New 都是开源字体,支持常见的阿拉伯字形。字体需要安装在本机,或放进项目目录;缺字体时编译日志会提示找不到字体或缺少字符。

3. 确定文档的主语言。 如果英文是主体、阿拉伯文是插入内容,用默认语言设为英文,阿拉伯文作为其他语言。如果整篇以阿拉伯语为主,则要把阿拉伯语设为主语言,页眉、页码和目录的方向都会受影响。

4. 确认数字和标点的形式。 阿拉伯语常用东阿拉伯数字,英文和科技写作常用西文数字。期刊或学校模板如有要求,先问清楚,再在语言选项中设置数字形式。

5. 确认源文件编码。 源文件保存为 UTF-8,阿拉伯文可以直接粘贴。如果从其他软件复制后出现乱码,先检查编辑器的编码设置,不要急于改命令。

在 LaTeX 文档中插入阿拉伯文的步骤

  1. 设置编译引擎。 在编辑器的编译选项中选择 XeLaTeX 或 LuaLaTeX,之后每次编译都使用同一引擎。
  2. 在导言区加载 polyglossia。 写入加载命令,设置默认语言为英文,并声明阿拉伯语为其他语言,这样阿拉伯文段落会按阿拉伯语规则排版。
  3. 定义阿拉伯文字体。 用 fontspec 宏包中的新字体命令定义一个字体族,参数里写明 Script=Arabic,字体名与本机安装的名称一致,例如 Amiri。
  4. 包裹阿拉伯文段落。 整段阿拉伯文放入 arabic 环境,环境内使用第 3 步定义的字体。单个词或短语可以用 textarabic 命令包裹。
  5. 处理英文与阿拉伯文相邻的句子。 英文专有名词和数字留在默认语言中,阿拉伯文段落与英文段落之间空一行,减少方向切换时的错位。
  6. 处理公式中的阿拉伯文。 数学环境内的阿拉伯文要用 text 命令包裹,并指定阿拉伯文字体,否则公式会按数学字体渲染,字母可能无法连写。
  7. 编译两次并检查 PDF。 第一次编译生成交叉引用,第二次编译更新编号和目录,然后逐页查看阿拉伯文段落。

做完后逐项核对

检查项怎么看有问题怎么办
字母是否连写放大 PDF,看阿拉伯字母在词中是否相连字体不支持或未指定 Script=Arabic,换字体并检查字体名
整句方向句子从右往左读,主语和修饰成分的顺序正常检查是否漏写 arabic 环境,或阿拉伯文被英文段落包住
标点位置问号、逗号、句号是否在阿拉伯文的正确一侧把标点放回阿拉伯文段落内,避免跨语言边界
数字形式数字是东阿拉伯数字还是西文数字,与要求一致在语言选项中调整数字形式,并统一全文
编译日志有没有字体未找到、缺少字符的警告安装字体或在字体命令中写明正确路径,再重新编译
与原稿比对逐段对照原文,检查漏句、错词、专名拼写机器翻译或 OCR 得到的阿拉伯文必须人工核对,不能直接交付

📊 核心对比

编译引擎阿拉伯文支持情况适合的场景
XeLaTeX直接读取 OpenType 字体,阿拉伯文连写和方向配合 polyglossia 使用较为成熟英文为主、插入阿拉伯文段落的论文和报告
LuaLaTeX同样支持 OpenType 字体,可编写 Lua 脚本扩展功能阿拉伯语为主、版式要求复杂的文档
pdfLaTeX需要额外宏包,字体和方向支持较弱,部分模板不兼容只适合维护旧模板,新文档不建议使用

❓ 常见问题(FAQ)

1. 为什么 pdfLaTeX 编译阿拉伯文会报错?

pdfLaTeX 的字体系统不直接支持阿拉伯文的 OpenType 字形,常见的做法依赖额外宏包,兼容性和连写效果都不稳定。换成 XeLaTeX 或 LuaLaTeX,再配合 fontspec 和 polyglossia,通常能解决大部分报错。

2. 阿拉伯文和中文能在同一个文档里用吗?

可以。中文一般通过 ctex 或 xeCJK 设置,阿拉伯文通过 polyglossia 和单独的字体族设置,两者分别指定字体,互不干扰。如果编译出现字体冲突,先检查两套字体是否被同一个命令覆盖。

3. 阿拉伯文参考文献怎么处理?

参考文献可以用 biblatex 管理,在条目中标明语言,让样式按阿拉伯语规则排列。阿拉伯文作者名和题目要与原文核对,避免拼写和音译不一致。

4. 想把英文 LaTeX 源码翻译成阿拉伯语,可以用 OmniDoc 吗?

OmniDoc 支持 LaTeX 源码包的文档翻译,可以在 omnidoc.top 上传源码包,选择译文输出后下载。翻译结果仍需在本地用 XeLaTeX 或 LuaLaTeX 编译,逐页检查阿拉伯文方向、连写和公式,并请熟悉阿拉伯语的人核对专业术语。

📝 总结

LaTeX 阿拉伯语排版的关键是三件事:换用 XeLaTeX 或 LuaLaTeX 编译,用 polyglossia 和 fontspec 分别设置语言与字体,并把阿拉伯文段落放进正确的环境。编译后按连写、方向、标点、数字和原稿比对逐项检查,文档就能稳定地混排英文与阿拉伯文。

打开 OmniDoc,编辑、转换或翻译你的 LaTeX 文档

更新于 2026-11-04