LaTeX 工具编写 | Python 实战
闲言碎语
正则表达式是一种功能强大的字符串处理工具,几乎所有关于字符串的操作都可以用它来实现。本篇将展示如何使用 Python 中的正则表达式来编写 LaTeX 工具。
闲言碎语
正则表达式是一种功能强大的字符串处理工具,几乎所有关于字符串的操作都可以用它来实现。本篇文章将展示如何使用 Python 中的正则表达式来编写 LaTeX 工具。
我们先展示效果,末尾再补充代码,将其写入 mylatex.py
即可使用本文的示例。
您提供的关于 LaTeX 矩阵与 Markdown 表格的代码及示例都很好,下面是一些润色建议,以便提升清晰度和可读性。
LaTeX 矩阵
示例
计算矩阵的 5 次幂,并导出 LaTeX 代码:
-
输入代码如下:
1
2
3from mylatex import latex_matrix
mat = matrix([[1, 2, 3], [2, 3, 4], [4, 5, 6]]) # matrix 是 sagemath 自带函数
latex_matrix(list(mat^5)) -
输出的 LaTeX 代码效果:
注:本例中使用的代码为 sagemath;实际上,sagemath 自带的功能可以输出 LaTeX 格式,不过样式较为固定。
函数代码
1 | def latex_matrix(mat: list, hrows=None, hcols=None, copy=True) -> str: |
Markdown 表格
Markdown 语法请参阅 这篇博客。下面我们讨论 Markdown 表格的生成方法,其与 LaTeX 的思路类似。
示例
-
打印表格,输入代码如下:
1
2
3
4
5
6
7
8
9from mylatex import markdown_table, MDtable_to_array_table
# 方法一:指定标题
content = [[1, 2, 3], [2, 3, 4]]
title = ["a", "b", "c"]
markdown_table(content, title=title)
# 方法二:不指定标题
content = [["a", "b", "c"], [1, 2, 3], [2, 3, 4]]
markdown_table(content) -
显示效果:
a b c 1 2 3 2 3 4
注:使用
MDtable_to_array_table
可将 Markdown 格式的表格代码转换为 LaTeX 的array
形式
Python 代码
-
将列表转换为 Markdown 表格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26def markdown_table(content: list, title=None, copy=True) -> str:
"""将列表转化为 Markdown 表格格式
Args:
content (list): 表格内容
title (list, optional): 表格标题,默认为 content 的第一行
copy (bool, optional): 是否复制到剪贴板. 默认为 True.
Returns:
str: 生成的 Markdown 代码
"""
# 表格第二行格式(居中)
align = "|".join([":-:"] * len(content[0]))
# 行内元素用 | 分割
content = ["|".join(str(i) for i in line) for line in content]
# 设置标题
if title is None: # 未定义标题,默认取第一行为标题
title = content[0]
content = content[1:]
else:
title = "|".join(str(i) for i in title)
# 合并并导出文本
txt = "\n".join([title, align, *content])
if copy:
pyperclip.copy(txt)
return txt -
将 Markdown 表格转换为 LaTeX 的
array
表格1
2
3
4
5
6
7
8
9
10
11
12
13
14def MDtable_to_array_table(txt: str, copy=True) -> str:
"""将 Markdown 格式的字符串转换为 LaTeX 数组形式
Args:
txt (str): Markdown 表格字符串
copy (bool, optional): 是否复制到剪贴板. 默认为 True.
Returns:
str: 生成的 LaTeX 代码
"""
lines = txt.split("\n") # 按行拆分
lines.pop(1) # 去掉格式行
lines = [line.split("|") for line in lines]
return latex_array_table(lines, copy=copy)
Dynkin 图
TODO。
毕业论文要画很多图,之前用 tikz + python 写绘图工具,做了一部分。工具完整成型再放上来。
小结
以上,我们用 Python 编写工具,以自动生成 LaTeX 和 Markdown 格式的代码。
文章采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 学习乐园!
评论