PyLaTeX: 中文使用label和ref出错的解决方法

PyLaTeX :中文使用label和ref出错的解决方法


在一般的LaTeX文件中,我们一般都会给图片、表格等添加 \label{},并在文章中使用 \ref{}来引用该图片、表格。然而,在PyLaTeX中,是没有可以直接添加 \label{}\ref{}的类。在手动添加 \label{}\ref{}时,也遇到了不少的问题。以下内容为一些问题及解决方法。

问题

  1. 如何添加\label{}\ref{}
  2. 在添加了\label{}\ref{}后,交叉引用屡次出错,得编译多次才能成功。或者需要使用tex编辑器打开.tex文件,使用XeLaTeX编译器编译两次才能成功。
  3. 在PyLaTeX中如何使用latexmkXeLaTeX

解决方法

问题1: 在PyLaTeX中直接使用LaTeX中的语句。在LaTeX中,label 和reference分别为\label{fig:kitten}%\ref{fig:kitten}。在PyLaTeX中应该添加的语句为:kitten_pic.append(Command('label', 'fig:kitten'))doc.append(NoEscape(r'\ref{fig:kitten}'))

问题2: 导致这个问题原因有两个:

  1. 在为图片添加\label{}时,把\label{}添加在了\caption{}的前面,引起交叉引用错误。只需要将\label{}放在\caption{}的后面,问题就可以解决了。这个问题在使用LaTeX时,也是会经常发生的。这个问题也可以参考链接: https://texfaq.org/FAQ-crossref
with doc.create(Figure(position='H')) as kitten_pic: 
                        kitten_pic.add_image('kitten.jpg', width='6cm') 
                        kitten_pic.add_caption('小猫')
                        kitten_pic.append(Command('label', 'fig:kitten'))

可以在.tex文件中查看这部分语句:

\begin{figure}[H]%
\centering%
\includegraphics[width=6cm]{kitten.jpg}%
\caption{小猫}%
\label{fig:kitten}%
\end{figure}
  1. 在PyLaTeX中只使用XeLaTeX编译器。为了解决这个问题,只要在PyLaTeX中同时使用latexmkXeLaTeX就可以了。
doc.generate_pdf('full',compiler='latexmk', compiler_args=['-xelatex'], clean_tex=False)

注意: 第一个compiler只接受str(),第二个compiler_args只接受list。否则,将会出现以下错误:
在这里插入图片描述
问题3: 问题2 的回答。

参考链接:
我在Github上的issue答案:https://github.com/JelteF/PyLaTeX/issues/151
Latexmk中的XeLaTeX: http://blog.wxm.be/2015/08/05/use-xelatex-by-default-in-latexmk.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值