Giter Site home page Giter Site logo

marktex's Introduction

MarkTex

MarkTex是将Markdown内容转换为Latex文档的Python库,如果熟悉一些LaTeX的话,那么该库应该是当前最好最美观排版最舒适可定制性最强的Markdown转PDF的方案。

特性汇总

  1. 支持markdown中基本上所有的特性:标题、代码、引用、目录、图片、表格、链接...
  2. 图片支持行内图片(会自动调整大小适应一行)和行间图片,支持使用本地相对路径和网络链接,会自动判断下载
  3. 表格自动调整列宽,且进行了相关美化,不会变丑
  4. 支持通过tex模板文件定制
  5. 支持在当前markdown中引入其他markdown和tex文件,实现很方便的协作 ...

最新支持的全部语法可以在example.md中参考,相应的效果可以查看example.pdf,README中因为比较麻烦,更新可能不会很及时。

使用方式

% 因为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]

在这里插入图片描述

特性介绍

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

在这里插入图片描述

文字效果与五级标题

# 效果演示

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

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

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

## 二级标题

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

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

在这里插入图片描述

表格

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

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

在这里插入图片描述

列表、序号、复选框

## 列表和序号/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] 支持
 [√] 三种
 [] 复选框格式

在这里插入图片描述

图片

图片支持网络图片和本地图片,会被统一的哈希命名后存放到自定义的图片目录下

## 图片
和表格一样,取消了浮动,因此暂时不支持对图片的描述。不过本项目支持网络图片,会在转换的时候自动下载到本地。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190726170401866.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NhaWxpc3Q=,size_16,color_FFFFFF,t_70)

在这里插入图片描述 在这里插入图片描述

公式

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

在这里插入图片描述

代码

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

引用

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

在这里插入图片描述

在这里插入图片描述

新特性

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

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

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

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

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月30日:正式支持四级和五级标题,已经通过paragraph和subparagraph来实现,但格式不是很好看,因此不推荐使用。 [x] 代码环境美化(2019年10月25日完成) [x] 参数可定制化(可以通过修改tex模板来完成,2019年10月25日) [] 支持加粗、斜体、...这些语法的嵌套(放弃) [] 添加对MarkDown直接支持但是LaTeX不支持的符号的转换如(θ) [x] 2019年10月30日:添加LaTeX混排,<include>标签内加入.md文件则引入md文件,加入.tex文件则引入tex文件,注意没有办法区分序言区,是完全复制粘贴的形式,使用方式请按照latex中include命令的使用方式,不要在文件中添加只在序言区生效的命令。 [] 支持在线编译直接生成pdf(根据我的库synctex

注意

有一些小的规范需要注意,否则转换可能会出错:

  • 引用环境会一直保持知道碰到第一行空行,因此单纯的不使用引用标记 > 是不好用的,需要空行
  • 目前不支持基本Token的嵌套,也就是说,加粗,斜体,代码这些是不能嵌套使用的,如果嵌套,会按代码中处理的优先级处理

marktex's People

Contributors

sailist avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.