Pandoc's markdown
2020-08-27
段落
分段必须要用空行隔开,多个空行只当作1个空行。如果需要强制空行,可以用反斜杠符加换行符。例如
段落1
段落2
段落3
段落4 \
段落5 \
\
\ 段落6
段落1 段落2
段落3
段落4
段落5
段落6
扩展名为escaped_line-breaks
标题
ATX-style标题
标准markdown不要求标题的前面需要空行,而pandoc’s markdown要求在标题前要有空行,标题中可以有url符号和强调符号,例如
# A level-one heading with a [link](/url) and *emphasis*
扩展名为blank_before_header
标题属性
标题属性中的内容可以是
{#identifier .class .class key=value key=value}
扩展为 header_attributes
标题标识符
给标题添加一个标识符号,可以自己添加{#identifier}
,如果自己不添加,将会自动设为{#标题}
。例如:
<!--手动添加-->
# My heading {#foo}
<!--自动添加-->
# 段落
[段落](#段落) 跳转到
跳转到段落
标题编号
如果指定了--number-sections
,将会自动给各个标题编号,但是有些标题不想被编号,这时,在标题的标识符中添加-
或.unnumbered
即可,例如:
# My heading {-}
# My heading {.unnumbered}
代码块
缩进代码块
只需要4个空格或者一个TAB即可将接下来的内容变为代码块
if (a > 3) {
moveShip(5 * gravity, DOWN);
}
围栏代码块
波浪线型
可以添加多个属性,例如
~~~~ {#mycode .haskell .numberLines startFrom="100"}
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++
qsort (filter (>= x) xs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
扩展为 fenced_code_blocks
行块
行块主要应用于诗歌和地址,可以保留行内空格等空白符,只需要在行前加入|
符号。例如:
| The limerick packs laughs anatomical
| In space that is quite economical.
| But the good ones I've seen
| So seldom are clean
| And the clean ones so seldom are comical
| 200 Main St. | Berkeley, CA 94718
In space that is quite economical.
But the good ones I’ve seen
So seldom are clean
And the clean ones so seldom are comical
Berkeley, CA 94718
扩展为line_blocks
列表
无序列表
在无序列表中包含其他段落或代码块的举例:
* First paragraph.
Continued.
* Second paragraph. With a code block, which must be indented
eight spaces:
{ code }
First paragraph.
Continued.
Second paragraph. With a code block, which must be indented eight spaces:
{ code }
有序列表
序列的标识符可以是以下的任意一种:
#. #. #.1. 2. 3.
4) 5) 6)
i. ii. iii.
(2) (5) (8) a. b. c.
Check列表
- [ ] an unchecked task list item
- [x] checked item
- an unchecked task list item
- checked item
扩展为 task_lists
定义列表
比较长的定义。
Term 1
: Definition 1
Term 2 with *inline markup*
: Definition 2
{ some code, part of Definition 2 }
Third paragraph of definition 2.
- Term 1
Definition 1
- Term 2 with inline markup
Definition 2
{ some code, part of Definition 2 }
Third paragraph of definition 2.
短一点的定义可以见简化为
Term 1
~ Definition 1
Term 2
~ Definition 2a ~ Definition 2b
- Term 1
- Definition 1
- Term 2
- Definition 2a
- Definition 2b
扩展为definition_lists
引用列表
引用列表会根据@
自动标号,如果@
后面跟了标识符,则可以在其他地方用(@标识符)
引用,例如
(@) My first example will be numbered (1).
(@) My second example will be numbered (2).
Explanation of examples.
(@) My third example will be numbered (3).
(@good) This is a good example.
As (@good) illustrates, ...
- My first example will be numbered (1).
- My second example will be numbered (2).
Explanation of examples.
My third example will be numbered (3).
This is a good example.
As (4) illustrates, …
扩展为example_lists
表格
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax.
Right | Left | Default | Center |
---|---|---|---|
12 | 12 | 12 | 12 |
123 | 123 | 123 | 123 |
1 | 1 | 1 | 1 |
元数据块
---
title: 'Pandoc's Markdown语法'
author:
- Perom
- Huang
date: 2020/8/25
keywords: [noting, nothingness]
abstract: |
本文主要包含了pandoc's markdown的特殊语法。内容上(1)不含一般mardown的语法,(2)只含个人常用的特殊语法,为了最大的保证和一般mardkown的兼容性,只摘取了与一般markdown相似的用法的语法。
...
插件
交叉引用
开发者tomduck开发了几个用于交叉引用的插件,分别是:
- pandoc-fignos 图片交叉引用
- pandoc-eqnos 公式交叉引用
- pandoc-tablenos 表格交叉引用
- pandoc-xnos 包含上面3个插件的集合
这3个插件方法安装方法都类似,都是用pip安装,安装
pip install pandoc-xxxxx --user
安装之后要把这几个插件的可执行文件的路径放到系统PATH,最后pandoc转换时加入--filter pandoc-xxxxx
即可。
转换
pandoc’s markdown to pdf
要求:pandoc, latex, 插件(可选), 模版(可选)
这里个人常用eisvogel模版
pandoc --from markdown demo.md -o demo.pdf --template eisvogel --listing --pdf-engine=xelatex --number-sections -V CJKmainfont="Songti SC" --filter pandoc-eqnos pandoc-fignos pandoc-tablenos