![3082dd3018a37dc2aacf45613f439b20.png](https://i-blog.csdnimg.cn/blog_migrate/d270221721f1d5fb369484134ca5fd0d.jpeg)
![1299893a5c4195cfd5c4197a681d7f53.png](https://i-blog.csdnimg.cn/blog_migrate/c631d6e652f19f6b560e8d5bb44cdf82.png)
MarkTex
MarkTex是将Markdown内容转换为Latex文档的Python库,如果熟悉一些LaTeX的话,那么该库应该是当前最好最美观排版最舒适可定制性最强的Markdown转PDF的方案。
使用方式
% 因为pip源刚上传,所以用国内源可能会找不到
pip install marktex -i https://pypi.python.org/pypi
from marktex.texrender import MarkTex
doc = MarkTex.convert_file("path/of/markdownfile","path/of/output_image/dir")
doc.generate_tex()
目录outoput/
下的例子可以通过以下代码生成
from marktex.example import run_example
run_example("./output/")
你也可以通过命令行运行:
输出到对应文件的 "文件名" 所在的目录下:
marktex a.md b.md ...
输出到一个同一的文件夹下:
marktex a.md b.md ... -o "path"
指定输出到各自文件夹,必须保证路径个数和文件个数相同:
marktex a.md b.md ... -e "pathfora" "pathforb" ...
特性介绍
具体可以参考example.md 其pdf输出效果可以参考 example.pdf
目录
[toc]
![bf3d62fd10110c13f9fe20aa7610df65.png](https://i-blog.csdnimg.cn/blog_migrate/a5551539f2e380791039801baf6c1169.jpeg)
特性介绍
# 特性<sub>下标在这里</sub>
- 支持目前主流的所有markdown语法(目前,脚注和xml标签暂时不支持)
- 额外添加了下划线语法(`__下划线__`)
- 表格自动调整列宽
- 复选框支持三种
- 无论是本地图片还是网络图片,都能够支持。
![5c76e89c115dca746c313a29c896267f.png](https://i-blog.csdnimg.cn/blog_migrate/bf70443ff429b2f70288ada3353a387b.jpeg)
文字效果与五级标题
# 效果演示
本文用于演示和测试转换后的效果
## 普通文本
支持一般的文本和**加粗**,*斜体*,`行内代码`,和$InLine Formula$,[超链接](http://github.com),注意公式暂时不支持中文。
~~删除线~~,__下划线__
## 二级标题
### 三级标题
目录编号支持到三级标题,可以通过修改latex文件或者直接更改模板来完成。
#### 四级标题
##### 五级标题
![8d1585cac8dcac2fa94558447ce8a7c0.png](https://i-blog.csdnimg.cn/blog_migrate/97de3d1ada3131dbe15d2f2ad94778ca.jpeg)
表格
可以完美的自适应表格列宽(测试效果良好,不排除特例),不过暂时不支持表格内插入图片
## 表格
支持一般的文本格式,暂时不支持表格内图片。另外,表格取消了浮动(float),因此不支持对表格的描述(caption),不过在Markdown中也没有对表格的描述,因此也不算功能不完善。
|ColA| ColB |
|--|--|
| **Table Bold** | *Table Italic*|
| `Table Code` | $Table Formula$|
|[Table line](www.github.com)|Table Text|
|A|B|C|Long Text Sample Long Text Sample Long Text Sample Long Text Sample Long Text Sample Long Text Sample |
|--|--|--|--|
|A|B|C|D|
|A|B|C|D|
|A|B|C|D|
![5a0722ba5a04070e1ca87c0ad2b8c583.png](https://i-blog.csdnimg.cn/blog_migrate/e6261c91988920186b8a52264b07a1e6.jpeg)
列表、序号、复选框
## 列表和序号/itemize&enumerate
- 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
- 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
- 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
1. 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
2. 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
3. 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
[x] 支持
[√] 三种
[] 复选框格式
![9cd0edd3719bfdf437b58de44b241413.png](https://i-blog.csdnimg.cn/blog_migrate/3d8b527bb1e2b733aaa285f4e54a5924.jpeg)
图片
图片支持网络图片和本地图片,会被统一的哈希命名后存放到自定义的图片目录下
## 图片
和表格一样,取消了浮动,因此暂时不支持对图片的描述。不过本项目支持网络图片,会在转换的时候自动下载到本地。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190726170401866.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NhaWxpc3Q=,size_16,color_FFFFFF,t_70)
相对路径:
![](./exampleimage.png)
![165ac5b26bb039ba6330441f341f0773.png](https://i-blog.csdnimg.cn/blog_migrate/92bb54d7a4f763fdad757b9c763fa2f2.jpeg)
![fb66ab24a7297e072693988a8fd896f3.png](https://i-blog.csdnimg.cn/blog_migrate/21f1acc614de2e7a4d2673e936f2c72e.jpeg)
公式
## 公式
公式不支持中文,并且没有编号
$$
f(x_i)=ax_i+b
$$
![579f564b2c437678e25d3b215790be35.png](https://i-blog.csdnimg.cn/blog_migrate/d71b0f460623d017c3c22538249f133b.jpeg)
代码
代码使用tcolorbox和minted,基本支持所有主流语言。支持的所有语言请参考 [Code Highlighting with minted](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted)
if __name__ == "__main__":
print("hello world!")
#include<stdio.h>
int main(){
printf("hello world")
return 0;
}
![adea1684b4b42b6648c82c97ed6d9d20.png](https://i-blog.csdnimg.cn/blog_migrate/7f01006558dc46e78e412c5641ec2ee0.jpeg)
引用
## 引用
> 引用内环境和普通文本基本一致,但是不支持标题。
> 演示**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
> - 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
> 1. 支持**加粗**,*斜体*,`行内代码`,$Inline Formula$,[超链接](www.github.com)
> 表格:
> |ColA| ColB |
>|--|--|
>| **Table Bold** | *Table Italic*|
>| `Table Code` | $Table Formula$|
>|[Table line](www.github.com)|Table Text|
> 公式:
> $$F(x_i) = wx_i+b$$
> 图片:
> ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190726170401866.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NhaWxpc3Q=,size_16,color_FFFFFF,t_70)
>
![e6804686c64b1af3dd58c5220f55b98b.png](https://i-blog.csdnimg.cn/blog_migrate/001e5892e4e0551b75512c913217f133.jpeg)
![9803f9fc3d8743f3134398b516b8513f.png](https://i-blog.csdnimg.cn/blog_migrate/6d435dcd8cc469035ee9a44d8ed9fff5.jpeg)
新特性:引入其他Markdown文档
# 新特性-引入其他Markdown文档
非常酷的特性!可以使用特殊的html标签来引入其他的MarkDown!
<include>./table_example.md</include>
<include>./formula_example.md</include>
![66dd8a5f3977939fc7448416a486eb20.png](https://i-blog.csdnimg.cn/blog_migrate/0295dd45a7021d385752835887f9203d.jpeg)
![1d08bad4fab1f0ea30904f225086ceab.png](https://i-blog.csdnimg.cn/blog_migrate/34c68aea6fdb68a74419d33a570c0064.jpeg)
TODOs
[x] 2019年7月29日:删除线和下划线的添加
[x] 2019年7月29日:复选框的识别
[x] 2019年7月29日:目录
[x] 2019年7月30日:表格的美化
[x] 2019年8月1日:支持xml标签的识别
目前支持<title>
,<author>
,<sub>
,<super>
,目前可以统一被分析到markdown的目录树,不过没有考虑好转换成tex的方式。
[x] 2019年8月1日:图片相对路径的优化,更改了类的参数,图片将统一放到tex文件所在路径的images
路径下,并在tex文件内统一使用相对路径进行表示
[x] 封面
[x] 2019年8月2日:通过引入标签,支持多个markdown文件合并
[] 水印
[] 正式支持四级和五级标题
[x] 代码环境美化(2019年10月25日完成)
[x] 参数可定制化(可以通过修改tex模板来完成,2019年10月25日)
[] 支持加粗、斜体、...这些语法的嵌套
[] 添加对MarkDown直接支持但是LaTeX不支持的符号的转换如(θ)
注意
最新支持的全部语法可以在example.md中参考,相应的效果可以查看example.pdf,README中因为比较麻烦,更新可能不会很及时。
另外有一些小的规范需要注意,否则转换可能会出错:
- 引用环境会一直保持知道碰到第一行空行,因此单纯的不使用引用标记 > 是不好用的,需要空行
- 目前不支持基本Token的嵌套,也就是说,加粗,斜体,代码这些是不能嵌套使用的,如果嵌套,会按代码中处理的优先级处理