latex支持python吗_用MarkDown和Python编写LaTex

PyTex是一个Python库,用于简化LaTeX文档的编写,特别是数学建模竞赛试题。它允许使用Markdown,提供清晰的结构,支持Python逻辑,优化了表格和图的插入。尽管Pylatex已停止更新,但PyTex继续发展,增加更多功能,如Markdown到LaTeX的转换,便于多人协作和实时预览。通过PyTex,可以方便地添加标题、摘要、目录和section,以及处理变量和公式。此外,PyTex还提供了试卷编写模块和神经网络结构可视化的未来计划。
摘要由CSDN通过智能技术生成

前一段时间承包了西电爱数社数学竞赛试题模版的编写,但是用LaTex编写很多复杂的操作都很不方便,尤其是是要用变量的话,虽然LaTex是原生支持的,但是使用起来跟一般编程语言还是差太多了,于是我寻找了一下用编程编写LaTex的方法,就发现了Pylatex。大概总结了下它相对于一般LaTex编写的优势。结构比latex清晰。

可以使用编程的逻辑写论文。

可以使用Python里面很多优雅的操作。

表格、图等东西更方便。

在编写竞赛试题的过程中,渐渐熟悉了Pylatex,也渐渐发现了一些它的弊端,在使用LaTex编写论文的过程中,虽然整体结构的编写更容易了,但是在还是有几个方面不太舒服。很多时候要在Python中使用大段的文字

如果你从网上找一些现成的latex代码段复制过来会造成同一个命令有些使用Python对象,有些使用纯LaTex代码,最后代码会非常混乱。

依然不能很高效的多人合作编写。

于是我在使用过程中对Pylatex代码进行了一些优化,并自己写了一个库(PyTex)来解决这些问题,正巧近期西电要举办线上的数模校赛,于是专门针对数模进行了一波优化,基本解决了上面的几个问题。将所有大段文字编写全部移植到MarkDown端,解决了Python端需要大段文字的问题。

基本实现MarkDown转换成LaTex代码的功能,不必寻找LaTex的代码块,可以直接找md代码块了。

可以通过将论文分成不同的md,分给不同的人编写,甚至可以用git同步实时预览。

当然PyTex还有一个更重要的优势就是是Pylatex已经停止更新了,而PyTex才刚刚开始更新,以后还会加很多功能(当然也有可能直接鸽了)。下面来介绍一下PyTex。

安装

这个项目使用 Python 开发,请确保你本地安装了它。

建议使用pip安装本库。

$ pip install bone-pytex

使用说明

使用时,你必须创建一个文档实例。

from pytex import MathDocument

doc = MathDocument('数学建模', packages=["amsmath", "graphicx", "amssymb", "cite"],

standard="GJS", preface=False)

如果你使用了默认的标准页,可以通过命令添加队伍信息

doc.set_information(problem_num="A", team_num="0001", school_name="最强大学",

member_names=("a", "b", "c"), supervisor="teacher", date=(2020, 4, 20))

你可以将md文档转换为latex

from pytex.utils import md2tex, MarkDown

latex_code1 = md2tex(path="md/abstract.md")

latex_code2 = md2tex(file=open("md/abstract.md", 'r', encoding='UTF-8'))

latex_code3 = MarkDown("md/abstract.md")

你可以在文档中添加标题、摘要、目录。

doc.add_title()

keys = ["出租车资源配置", "供求匹配模型", "缓解程度判断模型", "分区域动态实时补贴方案"]

doc.add_abstract(latex_code, keys)

doc.add_toc()

你可以在文档中添加 使用固定格式编写的md文档 作为一个section。

doc.add_section(path="md/wtcs.md")

你可以在文档中添加指定标题和内容的 section。

doc.add_section(title="符号说明", content="大家好啊")

你可以在文档中添加变量,将会自动添加到变量表中,同时还可以使用符号转化器将其转换为latex代码

from pytex.utils import SymbolTransformer

from pylatex import NoEscape

x = doc.add_var("x", NoEscape("这是一个优秀的$x$"))

st = SymbolTransformer()

formula, name = st.sym2tex((x**2+7)*5)

最后,你可以生成tex文档,或者pdf文档

doc.generate_pdf('resources/math', compiler='XeLatex', clean_tex=False, clean=False)

特色功能提供了试卷编写模块,详情见pytex/exam/README.md。

支持Markdown到LaTex的转换。

针对数模进行了大幅度优化,提供了模板。

支持定义局部操作(废弃)。

计划实现功能神经网络结构可视化,输入处理形状变换可视化。

Python端编辑公式。

Python端添加文献。

图制作。

代码仓库

GitHub: PyTex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值