You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让babel正确识别波斯语特殊Unicode字符?

解决Babel编译波斯语双语文档的PDFLaTeX/XeLaTeX问题

PDFLaTeX 编译报错:U+0654字符未配置

问题

用pdflatex编译包含波斯语Hamza字符(U+0654,对应文本中的ٔ)的内容时,触发编译错误:

! LaTeX Error: Unicode character ٔ (U+0654) not set up for use with LaTeX.

解决办法

fontenc的LAE编码默认不支持该组合字符,可通过以下方式修复:

  • 手动映射字符:在导言区添加代码,让LaTeX识别U+0654:
    \DeclareUnicodeCharacter{0654}{\textHamzaAbove}
    
    也可以直接在文本中用命令替代特殊字符,把خانوادهٔ改成خانواده\textHamzaAbove。
  • 切换UTF-8编码:更新导言区配置,让LaTeX直接处理UTF-8格式的字符:
    \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage[LAE,T1]{fontenc}
    \usepackage[farsi,english]{babel}
    

XeLaTeX 编译无波斯语显示且字体报错

问题

用xelatex编译时,波斯语内容完全不显示,同时弹出大量字体缺失警告,例如:

Missing character: There is no خ ("62E) in font nazli!

解决办法

XeLaTeX不兼容传统的fontenc编码包,必须调整配置逻辑:

  1. 移除旧编码配置:删除导言区的fontenc包,XeLaTeX依赖系统字体,不需要传统编码设置。
  2. 正确配置babelfont:明确指定波斯语使用的系统字体,示例代码如下:
\documentclass{article}
\usepackage[english,farsi]{babel}
% 替换为你系统中已安装的波斯语字体,比如Vazirmatn、IranNastaliq
\babelfont[farsi]{rm}{Vazirmatn}
\babelfont[farsi]{sf}{Vazirmatn}
\babelfont[farsi]{tt}{Vazirmatn Mono}

\begin{document}
English content here.

\begin{otherlanguage}{farsi}
سلام
خانوادهٔ من
\end{otherlanguage}
\end{document}
  1. 注意事项:确保指定的字体已安装在系统中,字体名称要和系统内的完全匹配(比如Windows下可能是Vazirmatn Regular,Linux/macOS直接用Vazirmatn即可)。如果坚持用Nazli,需确认安装的是完整字符集版本的Nazli字体。

内容的提问来源于stack exchange,提问作者flauschtrud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:35:18