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 文档中插入阿拉伯文的步骤
- 设置编译引擎。 在编辑器的编译选项中选择 XeLaTeX 或 LuaLaTeX,之后每次编译都使用同一引擎。
- 在导言区加载 polyglossia。 写入加载命令,设置默认语言为英文,并声明阿拉伯语为其他语言,这样阿拉伯文段落会按阿拉伯语规则排版。
- 定义阿拉伯文字体。 用 fontspec 宏包中的新字体命令定义一个字体族,参数里写明 Script=Arabic,字体名与本机安装的名称一致,例如 Amiri。
- 包裹阿拉伯文段落。 整段阿拉伯文放入 arabic 环境,环境内使用第 3 步定义的字体。单个词或短语可以用 textarabic 命令包裹。
- 处理英文与阿拉伯文相邻的句子。 英文专有名词和数字留在默认语言中,阿拉伯文段落与英文段落之间空一行,减少方向切换时的错位。
- 处理公式中的阿拉伯文。 数学环境内的阿拉伯文要用 text 命令包裹,并指定阿拉伯文字体,否则公式会按数学字体渲染,字母可能无法连写。
- 编译两次并检查 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 分别设置语言与字体,并把阿拉伯文段落放进正确的环境。编译后按连写、方向、标点、数字和原稿比对逐项检查,文档就能稳定地混排英文与阿拉伯文。


