markdown测试
什么是 Markdown?
Markdown 是一种文本格式。你可以用它来控制文档的显示。使用 markdown,你可以创建粗体的文字,斜体的文字,添加图片,并且创建列表 等等。基本上来讲,Markdown 就是普通的文字加上 # 或者 * 等符号。
语法说明
标题
# 这是 <h1> 一级标题
## 这是 <h2> 二级标题
### 这是 <h3> 三级标题
#### 这是 <h4> 四级标题
##### 这是 <h5> 五级标题
###### 这是 <h6> 六级标题
如果你想要给你的标题添加 id 或者 class,请在标题最后添加 {#id .class1 .class2}。例如:
# 这个标题拥有 1 个 id {#my_id}
# 这个标题有 2 个 classes {.class1 .class2}
这是一个 MPE 扩展的特性。
强调
<!-- prettier-ignore -->
*这会是 斜体 的文字*
_这会是 斜体 的文字_
**这会是 粗体 的文字**
__这会是 粗体 的文字__
_你也 **组合** 这些符号_
~~这个文字将会被横线删除~~
列表
无序列表
- Item 1
- Item 2
- Item 2a
- Item 2b
有序列表
1. Item 1
1. Item 2
1. Item 3
1. Item 3a
1. Item 3b
添加图片

Format: 
链接
https://github.com - 自动生成!
[GitHub](https://github.com)
引用
正如 Kanye West 所说:
> We're living the future so
> the present is our past.
分割线
如下,三个或者更多的
---
连字符
---
星号
---
下划线
行内代码
我觉得你应该在这里使用
`<addr>` 才对。
代码块
你可以在你的代码上面和下面添加 <code>```</code> 来表示代码块。
语法高亮
你可以给你的代码块添加任何一种语言的语法高亮
例如,给 ruby 代码添加语法高亮:
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
会得到下面的效果:
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
代码块 class(MPE 扩展的特性)
你可以给你的代码块设置 class。
例如,添加 class1 class2 到一个 代码块:
```javascript {.class1 .class}
function add(x, y) {
return x + y
}
```
代码行数
如果你想要你的代码块显示代码行数,只要添加 line-numbers class 就可以了。
例如:
```javascript {.line-numbers}
function add(x, y) {
return x + y
}
```
将会得到下面的显示效果:
高亮代码行数
你可以通过添加 highlight 属性的方式来高亮代码行数:
```javascript {highlight=10}
### 任务列表
```markdown
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
- [x] list syntax required (any unordered or ordered list supported)
- [x] this is a complete item
- [ ] this is an incomplete item
表格
<!-- prettier-ignore -->
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
扩展的语法
表格
需要在插件设置中打开
enableExtendedTableSyntax选项来使其工作。
Emoji & Font-Awesome
只适用于
markdown-it parser而不适用于pandoc parser。
缺省下是启用的。你可以在插件设置里禁用此功能。
:smile:
:fa-car:
上标
30^th^
下标
H~2~O
脚注
Content [^1]
[^1]: Hi! This is a footnote
缩略
_[HTML]: Hyper Text Markup Language
_[W3C]: World Wide Web Consortium
The HTML specification
is maintained by the W3C.
标记
==marked==
CriticMarkup
CriticMarkup 缺省是禁用的,你可以通过插件设置来启动它。
有关 CriticMarkup 的更多信息,请查看 CriticMarkup 用户指南.
这里有 5 种基本语法:
- 添加
{++ ++} - 删除
{-- --} - 替换
{~~ ~> ~~} - 注释
{>> <<} - 高亮
{== ==}{>> <<}
CriticMarkup 仅可用于 markdown-it parser,不与 pandoc parser 兼容。
参考
- Mastering Markdown
- Daring Fireball: Markdown Basics
数学
Markdown Preview Enhanced 使用 KaTeX 或者 MathJax 来渲染数学表达式。
KaTeX 拥有比 MathJax 更快的性能,但是它却少了很多 MathJax 拥有的特性。你可以查看 KaTeX supported functions/symbols 来了解 KaTeX 支持那些符号和函数。
默认下的分隔符:
$...$或者\(...\)中的数学表达式将会在行内显示。$$...$$或者\[...\]或者 <code>```math</code> 中的数学表达式将会在块内显示。
你可以在 插件设置中 选择数学渲染引擎以及分隔符。
你也可以通过 <kbd>cmd-shift-p</kbd> 然后选择 Markdown Preview Enhanced: Open Mathjax config 命令来打开 Mathjax 配置文件。
图像
Markdown Preview Enhanced 内部支持 flow charts, sequence diagrams, mermaid, PlantUML, WaveDrom, GraphViz,Vega & Vega-lite,Ditaa 图像渲染。
你也可以通过使用 Code Chunk 来渲染 TikZ, Python Matplotlib, Plotly 等图像。
Please note that some diagrams doesn't work well with file export like PDF, pandoc, etc.
Flow Charts
这一特性基于 flowchart.js。
flow代码快中的内容将会被 flowchart.js 渲染。
Sequence Diagrams
这一特性基于 js-sequence-diagrams。
sequence代码快中的内容将会被 js-sequence-diagrams 渲染。- 支持两个主题
simple(默认主题)和hand。
Mermaid
Markdown Preview Enhanced 使用 mermaid 来渲染流程图和时序图。
mermaid代码块中的内容将会渲染 mermaid 图像。- 查看 mermaid 文档 了解更多如果创建图形。
三个 mermaid 主题是支持的,并且你可以在 插件设置 中设置主题:
mermaid.cssmermaid.dark.cssmermaid.forest.css
你还可以通过 Markdown Preview Enhanced: Open Mermaid Config 命令打开 mermaid 配置文件。
PlantUML
Markdown Preview Enhanced 使用 PlantUML 来创建各种图形。(Java 是需要先被安装好的)
- 你可以安装 Graphviz(非必需)来辅助生成各种各种图形。
puml或者plantuml代码块中的内容将会被 PlantUML 渲染。
如果代码中 @start... 没有被找到,那么 @startuml ... @enduml 将会被自动添加。
WaveDrom
Markdown Preview Enhanced 使用 WaveDrom 来渲染 digital timing diagram.
wavedrom代码块中的内容将会被 WaveDrom 渲染。
GraphViz
Markdown Preview Enhanced 使用 Viz.js 来渲染 dot 语言 图形。
viz或者dot代码块中的内容将会被 Viz.js 渲染。- 你可以通过
{engine="..."}来选择不同的渲染引擎。 引擎circo,dot,neato,osage,或者twopi是被支持的。默认下,使用dot引擎。
Vega 和 Vega-lite
Markdown Preview Enhanced 支持 vega 以及 vega-lite 的静态图像.
vega代码块中的内容将会被 vega 渲染。vega-lite代码块中的内容将会被 vega-lite 渲染。JSON以及YAML的输入是支持的。
你也可以 @import 一个 JSON 或者 YAML 文件作为 vega 图像,例如:
@import "your_vega_source.json" {as="vega"}
@import "your_vega_lite_source.json" {as="vega-lite"}
Ditaa
Markdown Preview Enhanced 支持 ditaa。
(Java 是需要先被安装好的)
ditaa 整合于 code chunk, for example:
<pre>
+--------+ +-------+ +-------+
| | --+ ditaa +--> | |
| Text | +-------+ |diagram|
|Document| |!magic!| | |
| {d}| | | | |
+---+----+ +-------+ +-------+
: ^
| Lots of work |
+-------------------------+
</pre>
<kbd>shift-enter</kbd> 来运行 code chunk。 设置
{hide=true}来隐藏代码块。 设置{run_on_save=true}启动当文件保存时,渲染 ditaa 图像。
如果你只是想要显示代码块而不想画图,则只要在后面添加 {code_block=true} 即可:
```mermaid {code_block=true}
// 你的 mermaid 代码
```
你可以为图像的容器添加属性。 例如:
```puml {align="center"}
a->b
```
将会把 puml 的图像放在中间。
当你保存你的 markdown 文件到 GFM Markdown 时, 所有图像将会被保存为 png 文件到 imageFolderPath 文件夹。
你可以设置导出文件的文件名 {filename="图片.png"}。
例如:
```mermaid {filename="我的mermaid.png"}
...
```
目录列表(TOC)
Markdown Preview Enhanced 支持你在 markdown 文件中创建 TOC。
你可以通过 <kbd>cmd-shift-p</kbd> 然后选择 Markdown Preview Enhanced: Create Toc 命令来创建 TOC。
多个 TOCs 可以被创建。
如果你想要在你的 TOC 中排除一个标题,请在你的标题 后面 添加 {ignore=true} 即可。
TOC 将会在你的 markdown 文件保存时更新。 你需要保持预览打开才能更新 TOC。
设置
- orderedList 是否使用有序列表。
- depthFrom, depthTo
[1~6]包含的。 - ignoreLink
如果设置为
true,那么 TOC 将不会被超链接。
[TOC]
你也可以通过在你的 markdown 文件中输入 [TOC] 来创建 TOC。
例如:
[TOC]
# 标题 1
## 标题 2 {ignore=true}
标题 2 将会被目录忽略.
但是,这种方式创建的 TOC 只会在预览中显示,而不会修改你的 markdown 文件。
[TOC] 以及边栏 TOC 的设置
你可以通过编写 front-matter 来进行设置:
---
toc:
depth_from: 1
depth_to: 6
ordered: false
---
导入外部文件
咋使呢?
仅仅
@import "你的文件"
就可以了,很简单对吧~ <code>d(`・∀・)b</code>
<!-- @import "your_file" --> 的写法也是支持的。
刷新按钮
刷新按钮可以在你的预览右上角找到。 点击它将会清空文件缓存并且刷新预览。 这个功能将会十分有用如果你想要清除图片缓存 #144 #249。
支持的文件类型
.jpeg(.jpg), .gif, .png, .apng, .svg, .bmp文件将会直接被当作 markdown 图片被引用。.csv文件将会被转换成 markdown 表格。.mermaid将会被 mermaid 渲染。.dot文件将会被 viz.js (graphviz) 渲染。.plantuml(.puml)文件将会被 PlantUML 渲染。.html将会直接被引入。.js将会被引用为<script src="你的 js 文件"></script>。.less和.css将会被引用为 style。目前less只支持本地文件。.css文件将会被引用为<link rel="stylesheet" href="你的 css 文件">。.pdf文件将会被pdf2svg转换为svg然后被引用。markdown将会被分析处理然后被引用。- 其他所有的文件都将被视为代码块。
设置图片
@import "test.png" {width="300px" height="200px" title="图片的标题" alt="我的 alt"}
引用在线文件
例如:
@import "https://raw.githubusercontent.com/shd101wyy/markdown-preview-enhanced/master/LICENSE.md"
引用 PDF 文件
如果你要引用 PDF 文件,你需要事先安装好 pdf2svg。 Markdown Preview Enhanced 支持引用本地或者在线的 PDF 文件。 但是,引用大的 PDF 文件是不推荐的。
例如:
@import "test.pdf"
PDF 设置
- page_no
显示第
nth页。例如{page_no=1}将会只显示 PDF 文件的第 1 页。 - page_begin, page_end
包含的。例如
{page_begin=2 page_end=4}将会显示第 2,3,4 页。
强制渲染为代码块
@import "test.puml" {code_block=true class="line-numbers"}
@import "test.py" {class="line-numbers"}
As(作为)代码块
@import "test.json" {as="vega-lite"}
导入特定行数
@import "test.md" {line_begin=2}
@import "test.md" {line_begin=2 line_end=10}
@import "test.md" {line_end=-4}
引用文件作为 Code Chunk
@import "test.py" {cmd="python3"}
Code Chunk
未来可能会有变动
Markdown Preview Enhanced 支持渲染代码的运行结果。
```bash {cmd=true}
ls .
```
```javascript {cmd="node"}
const date = Date.now()
console.log(date.toString())
```
⚠️ 脚本运行默认是禁用的并且需要在 Atom 和 VSCode 的插件设置中开启来进行使用
请小心使用这一特性,因为它很有可能造成安全问题! 当你的脚本运行设置是开启的,你的电脑很有可能被黑客攻击,如果有人使你运行了 Markdown 文档中的恶意代码。
设置名称:
enableScriptExecution
命令 & 快捷键
Markdown Preview Enhanced: Run Code Chunk或者 <kbd>shift-enter</kbd> 运行你现在光标所在的一个 code chunk。Markdown Preview Enhanced: Run All Code Chunks或者 <kbd>ctrl-shift-enter</kbd> 运行所有的 code chunks。
格式
你可以通过以下形式来设置 code chunk:<code>```lang {cmd=your_cmd opt1=value1 opt2=value2 ...}</code>。
如果一个属性的值是 true,那么它可以被省略,(e.g. {cmd hide} 和 {cmd=true hide=true} 相同)。
lang 你想要代码所高亮的语言。 这个是要被放在最前面的。
基本设置
cmd
将要被运行的命令。
如果 cmd 没有被提供,那么 lang 将会被视作为命令。
例如:
```python {cmd="/usr/local/bin/python3"}
print("这个将会运行 python3 程序")
```
output
html, markdown, text, png, none
设置你想要如何显示你的代码结果。
html 将会添加输出结果为 html。
markdown 将会添加输出结果为 markdown。(MathJax 以及 graphs 在这种情况下是不被支持的)
text 将会添加输出结果到 pre 块。
png 将会添加输出结果到 base64 图片。
none 将会隐藏输出结果。
例如:
```gnuplot {cmd=true output="html"}
set terminal svg
set title "Simple Plots" font ",20"
set key left box
set samples 50
set style data points
plot [-10:10] sin(x),atan(x),cos(atan(x))
```
args 需要被添加到命令的 args 。 例如:
```python {cmd=true args=["-v"]}
print("Verbose will be printed first")
```
```erd {cmd=true args=["-i", "$input_file", "-f", "svg"] output="html"}
# output svg format and append as html result.
```
stdin
如果 stdin 被设置为 true,那么代码将会被传递到 stdin 而不是作为文件。
hide
hide 将会隐藏代码块但是会显示运行结果,默认为 false。
例如:
```python {hide=true}
print('you can see this output message, but not this code')
```
continue
如果设置 continue: true,那么这个 code chunk 将会继续运行上一个 code chunk 的内容。
如果设置continue: id,那么这个 code chunk 从拥有这个 id 的 code chunk 运行。
例如:
```python {cmd=true id="izdlk700"}
x = 1
```
```python {cmd=true id="izdlkdim"}
x = 2
```
```python {cmd=true continue="izdlk700" id="izdlkhso"}
print(x) # will print 1
```
class
如果设置 class="class1 class2",那么 class1 class2 将会被添加到 code chunk。
line-numbersclass 将会添加代码行数到 code chunk。
element 你想要添加的元素。 请查看下面的 Plotly 例子。
run_on_save boolean
当 markdown 文件被保存时,自动运行 code chunk。默认 false。
modify_source boolean
插入 code chunk 的运行结果直接到 markdown 文件。默认 false。
id
Code chunk 的 id。这个选项可以配合 continue 选项使用。
宏
-
input_file
input_file将会拷贝你的 code chunk 中的代码,然后在你的 markdown 文件的目录下生成一个临时文件,并且会在 code chunk 运行结束后被自动删除。 默认条件下,它被作为程序运行的最后一个参数。 但是,如果你想要改变input_file在你的args中的位置,你可以使用$input_file宏。例如:...your code here
Matplotlib
如果设置 matplotlib=true,那么你的 python code chunk 将会在你的预览中绘制图像。
例如:
```python {cmd=true matplotlib=true}
import matplotlib.pyplot as plt
plt.plot([1,2,3, 4])
plt.show() # show figure
```
LaTeX
Markdown Preview Enhanced 也支持 LaTeX 编译。
在使用这个特性之前,你需要先安装好 pdf2svg 以及 LaTeX engine。
然后你就可以很简单的利用 code chunk 编写 LaTeX 了:
```latex {cmd=true}
\documentclass{standalone}
\begin{document}
Hello world!
\end{document}
```
LaTeX 输出设置
latex_zoom
如果设置了 latex_zoom=num,那么输出结果将会被缩放 num 倍。
latex_width 输出结果的宽度。
latex_height 输出结果的高度。
latex_engine
就会被用来编译 tex 文件的 latex 引擎。默认下 pdflatex 是被使用的。你可以在 插件设置 中改变它的默认值。
TikZ 例子
推荐使用 standalone 绘制 tikz 图形。
Plotly
Markdown Preview Enhanced 支持你轻松的绘制 Plotly 图形。 例如:
- 第一行中的
@import "https://cdn.plot.ly/plotly-latest.min.js"使用了 文件引用 的特性来引用plotly-latest.min.js文件。但是,引用本地的 js 文件是推荐的,因为这样更快。 - 接着我们创建了
javascriptcode chunk.
Demo
下面的例子展示了如何利用 erd 库绘制 ER diagram。
```erd {cmd=true output="html" args=["-i", "$input_file", "-f", "svg"]}
[Person]
*name
height
weight
+birth_location_id
[Location]
*id
city
state
country
Person *--1 Location
```
erd {cmd=true output="html" args=["-i", "$input_file", "-f", "svg"]}
erd是我们将要用到的程序。 (当然你得先安装好这个程序)output="html"意味着代码的输出结果将会被视作为html。args显示了我们将要用到的参数。
接着我们点击 运行按钮来运行我们的代码。
展示
bash
gnuplot with svg output
局限
- 暂时不能在
ebook工作。 pandoc document export中可能会有问题。