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

如何在Manim中配置LuaLaTeX编写阿拉伯语文本?配置失败求助

在Manim中使用LuaLaTeX渲染阿拉伯语文本的配置方法

1. 正确配置TexTemplate

你之前的写法有误,不是直接定义class TexTemplate,而是要创建自定义TexTemplate实例,同时必须添加阿拉伯语渲染所需的LaTeX前置代码(依赖多语言包和阿拉伯语字体):

from manim import TexTemplate, Tex, Scene

# 配置支持阿拉伯语的LuaLaTeX模板
arabic_tex_template = TexTemplate(
    tex_compiler="lualatex",
    preamble=r"""
        \usepackage{polyglossia}
        \setmainlanguage{english}
        \setotherlanguage{arabic}
        \newfontfamily\arabicfont[Script=Arabic]{Amiri}
    """
)
  • polyglossia是LuaLaTeX下处理多语言的首选包,适配性优于babel;
  • Amiri是开源阿拉伯语字体,需确保系统已安装(Ubuntu可通过sudo apt install fonts-amiri安装,Windows/macOS直接下载字体文件安装即可),也可替换为Scheherazade New等其他阿拉伯语字体。

2. 用Tex对象渲染阿拉伯语文本

渲染时需将阿拉伯语内容包裹在\textarabic{}命令中,同时显式指定自定义模板:

class ArabicDemo(Scene):
    def construct(self):
        # 纯阿拉伯语文本
        arabic_line = Tex(r"\textarabic{مرحبا بالعالم من Manim}", tex_template=arabic_tex_template)
        self.play(Write(arabic_line))
        self.wait()

        # 混合多语言文本
        mixed_line = Tex(r"中文:你好 | \textarabic{عربي: مرحبا} | English: Hello", tex_template=arabic_tex_template)
        self.play(Transform(arabic_line, mixed_line))
        self.wait()

3. 排查常见问题

  • 确认LuaLaTeX可正常调用:终端输入lualatex --version,返回版本信息则说明路径配置正常;
  • 必须在Tex对象中指定tex_template=arabic_tex_template,否则Manim会默认使用XeLaTeX模板;
  • 若出现字体报错,检查系统是否真的安装了指定字体,或更换为已安装的阿拉伯语字体;
  • 查看Manim生成的临时LaTeX文件(路径通常为media/Tex),手动用lualatex编译该文件,可定位具体的LaTeX语法或依赖问题。

4. 简化方案:纯文本场景用Text对象

如果不需要渲染LaTeX公式,仅展示纯阿拉伯语文本,可直接使用Manim的Text对象,无需配置LaTeX模板:

class ArabicTextDemo(Scene):
    def construct(self):
        arabic_text = Text("مرحبا بالعالم", font="Amiri")
        self.play(Write(arabic_text))
        self.wait()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:15:19