just do it and waiting

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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
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

扩展为line_blocks

列表

无序列表

在无序列表中包含其他段落或代码块的举例:

* 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

扩展为 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, ...
  1. My first example will be numbered (1).
  2. My second example will be numbered (2).

Explanation of examples.

  1. My third example will be numbered (3).

  2. 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.
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开发了几个用于交叉引用的插件,分别是:

  1. pandoc-fignos 图片交叉引用
  2. pandoc-eqnos 公式交叉引用
  3. pandoc-tablenos 表格交叉引用
  4. 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