【已解决】PyLaTeX 编译中文出现乱码
最近在使用PyLaTeX编辑文档时,由于是第一次在Python中编写中文的LaTeX文档,所以遇到了以下的问题:
- PyLaTeX无法编译中文;
- 产生的.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
,因为它可以根据需要编译latex
,biblatex
和其他文件。
在安装latexmk之前,需要先安装perl.exe
,建议安装strawberry perl
。然后在MikTex Console
的package
里下载安装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文件:
如果在交叉引用时,发生错误,可参考我的另一个文章:https://blog.csdn.net/qq_39560620/article/details/105356869
参考链接:
Github上的参考issue: https://github.com/JelteF/PyLaTeX/issues/128
generate_pdf()的官方介绍
使用miktex中使用latexmk
Strawberry perl 官方下载地址