html转markdown_MarkTeX:优雅的Markdown转PDF方案

3082dd3018a37dc2aacf45613f439b20.png
sailist/MarkTex​github.com
1299893a5c4195cfd5c4197a681d7f53.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

特性介绍

# 特性<sub>下标在这里</sub>
- 支持目前主流的所有markdown语法(目前,脚注和xml标签暂时不支持)
- 额外添加了下划线语法(`__下划线__`)
- 表格自动调整列宽
- 复选框支持三种
- 无论是本地图片还是网络图片,都能够支持。

5c76e89c115dca746c313a29c896267f.png

文字效果与五级标题

# 效果演示

本文用于演示和测试转换后的效果

## 普通文本
支持一般的文本和**加粗**,*斜体*,`行内代码`,和$InLine Formula$,[超链接](http://github.com),注意公式暂时不支持中文。

~~删除线~~,__下划线__

## 二级标题

### 三级标题
目录编号支持到三级标题,可以通过修改latex文件或者直接更改模板来完成。

#### 四级标题
##### 五级标题

8d1585cac8dcac2fa94558447ce8a7c0.png

表格

可以完美的自适应表格列宽(测试效果良好,不排除特例),不过暂时不支持表格内插入图片

## 表格
支持一般的文本格式,暂时不支持表格内图片。另外,表格取消了浮动(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

列表、序号、复选框

## 列表和序号/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://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

fb66ab24a7297e072693988a8fd896f3.png

公式

## 公式
公式不支持中文,并且没有编号
$$
f(x_i)=ax_i+b
$$

579f564b2c437678e25d3b215790be35.png

代码

代码使用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

引用

## 引用
> 引用内环境和普通文本基本一致,但是不支持标题。
> 演示**加粗**,*斜体*,`行内代码`,$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

9803f9fc3d8743f3134398b516b8513f.png

新特性:引入其他Markdown文档

# 新特性-引入其他Markdown文档

非常酷的特性!可以使用特殊的html标签来引入其他的MarkDown!

<include>./table_example.md</include>

<include>./formula_example.md</include>

66dd8a5f3977939fc7448416a486eb20.png

1d08bad4fab1f0ea30904f225086ceab.png

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的嵌套,也就是说,加粗,斜体,代码这些是不能嵌套使用的,如果嵌套,会按代码中处理的优先级处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值