【已解决】PyLaTeX 编译中文出现乱码

【已解决】PyLaTeX 编译中文出现乱码

最近在使用PyLaTeX编辑文档时,由于是第一次在Python中编写中文的LaTeX文档,所以遇到了以下的问题:

  1. PyLaTeX无法编译中文;
  2. 产生的.pdf文件中,中文显示为乱码。

解决步骤:
在使用PyLaTeX创建文档时,引用ctex中文宏包。代码为:

# Use ctex package
doc.packages.add(Package('ctex'))

这个时候,虽然可以创建带有中文的.tex文件了,但是在创建的.pdf文件中,中文是以乱码的形式出现的。因此,解决方法为在generate_pdf()中使用XeLaTeX编译器。代码为:

doc.generate_pdf('testPylatex5',compiler='xelatex', clean_tex=False)

其中,testPylatex5为文件名。


注意:
对于xelatex解决方案要注意的重要一点是,这需要安装latexmk,因此强烈建议安装latexmk,因为它可以根据需要编译latexbiblatex和其他文件。

在安装latexmk之前,需要先安装perl.exe,建议安装strawberry perl。然后在MikTex Consolepackage里下载安装latexmk。在安装完成后,重启计算机。

部分创建文档的代码:

if __name__ == '__main__':
    # Document with `\maketitle` command activated
    doc = Document()

    doc.packages.add(Package('ctex'))
    doc.preamble.append(Command('title', '已解决PyLaTeX中文编译问题!!'))
    doc.preamble.append(Command('author', 'XXX'))
    doc.preamble.append(Command('date', NoEscape(r'\today')))
    doc.append(NoEscape(r'\maketitle'))
        
    # Add stuff to the document
    with doc.create(Section('First section')):
        doc.append('Some text.')
        with doc.create(Figure(position='h!')) as kitten_pic: 
                kitten_pic.add_image('kitten.jpg', width='8cm') 
                kitten_pic.add_caption('小猫') 
       
    doc.generate_pdf('testPylatex5',compiler='xelatex', clean_tex=False)
    tex = doc.dumps() # The document as string in LaTeX syntax

创建成功的.pdf文件:
PyLaTeX创建中文pdf
如果在交叉引用时,发生错误,可参考我的另一个文章:https://blog.csdn.net/qq_39560620/article/details/105356869

参考链接:
Github上的参考issue: https://github.com/JelteF/PyLaTeX/issues/128
generate_pdf()的官方介绍
使用miktex中使用latexmk
Strawberry perl 官方下载地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值