Markdown (2)

本文详细介绍了Markdown的使用,包括标题和目录的创建,如标题标记和规范,以及目录的自动生成。此外,还讲解了引用段落的标记、链接和嵌套,以及列表(无序、有序和任务清单)的使用方法。强调和代码排版的规则也有所阐述,如代码段的展示和反斜杠的转义。文章特别提到了Typora编辑器的快捷键和使用技巧,帮助提升Markdown编写效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Markdown(2)

上回介绍到了段落标记和行内标记。这回我们分别介绍各类Markdown所支持的各种格式。这些格式有的是段落标记,有的是行内标记,有的则有段落标记和行内标记两种形式,有的则需要段落标记和行内标记配合才能生效。

标题和目录

标题标记

标题是一种段落标记。

就像之前提到的,在一个段落行首加#然后空格(一定要有空格),就把这一段标记为了标题。如果加2个#就表示二级标题,如果加3个#就表示三级标题。依此类推,直到六级标题。一般没有七级标题。

# 这是一级标题

## 这是二级标题

### 这是三级标题

#### 这是四级标题

## 这是另一个二级标题

## 这里还有一个二级标题

标题的规范

所有标题应当形成一个树状的结构。跟在同级标题后边的标题表示并列关系,跟在高级(数字越小越高级)标题后边的标题从属于所跟的高级标题。这样一级标题就是树根,二级三级等一级一级的标题就书的枝杈。

为了维持树形结构,尽量只在一个文本中使用一次一级标题。而且这个一级标题最好是第一个段落。也不要跨级别使用标题。二级标题下变一定用三级,三级下用四级。不要出现二级标题下直接用四级、五级、六级标题的情况。还有不要给文章加太多的层级。

虽然Markdown支持到六级标题,但是一般五六级标题根本用不到。如果文章比较短,用到二级标题就可以了。文章很长的情况下才需要用三四级标题进一步细分。

这些不是强制性的语法规则,而是一种代码风格。帮助你写出容易看懂, 井然有序的代码。

Typora快捷键

Typora默认当光标在某一段时使用Ctrl加数字键的组合键可以把这一段设置成数字对应等级的标题。使用Ctrl+=可以让光标所在段落标题等级升高一级。用Ctrl+-降低一级。六级标题降低一级是普通段落。普通段落升高一级是六级标题。Ctrl+0把光标所在段落设为普通段落。

目录

Typora支持TOC标记。TOC就是Table Of Content的缩写。这个标记也是一个段落标记。但是它不需要标记任何的内容段落,单独作为一段就行了。源码中TOC标记写作[toc]

@[toc]
# 这是一级标题

## 这是二级标题

### 这是三级标题

## 这是另一个二级标题

上边这段代码在渲染后,标记toc的地方会被自动生成的目录所代替。点击目录中的项目可以直接跳转到对应的段落。这个目录则是根据各个等级的标题标记所生成的。如果你按规范写标题标记,自动生成的目录会非常清晰。反之,只会生成一个很难看的目录。

TOC标记的插入位置,没有明确的要求。可以在一级标题之前,或者一级标题之后其他标题之前。也可以放到文本中任何地方。但是我建议TOC放在文章中靠前的地方比较好。

不一定要用TOC

Typora编辑Markdown的时候可以用侧栏查看文章大纲结构(也是根据标题生成的)。Typora在导出PDF的时候,不论有没有TOC标记,都会自动生成PDF的书签。这种情况下,我认为不一定要用TOC标记再在页面中插入一个目录。

引用段落

引用段落标记

引用段落是一种段落标记。被标记的段落会显示为引用段落样式,通常是引述内容,注释等。在样式上可以和正文相区别。

在段首加>然后空格,就把整个段落标记为引用段落。

引用段落的链接

如果两个相邻的段落都被标记为引用段落。那么这两个引用段落会表现为两个互不相连的引用块。如果把分隔两个段落的空行上打上也打上>。那么两个引用段落就会合并到一个引用块中显示(但是仍为两个段落)。

> 这两个引用段

> 彼此不连接

> 下边这两个引用段
>
> 会显示在同一个引用块里。但是是一个引用块里的两段。

引用段落的嵌套

引用块里还能嵌套别的格式。比如一个引用段在表示引用的标记>(注意加个空格)之后再加上#(也要加空格)。那么这个段落就会表示为引用中的标题。

夏五月,郑伯克段于鄢。

> ## 《左传》的看法
> 
> 共叔段超越了一个做弟弟的本分,所以称段而不是弟。
>
> ## 《公羊传》的看法
>
> 之所以说“克”,那完全是为了强调郑庄公的恶。
>
> ## 《谷梁传》的看法
>
> 所不说杀,而说克,那是为了表示,共叔段当时不是只身一人,而是有很多人追随他。

引用块中还能嵌套引用块。我们之前介绍的单个>是一级引用。而>>是二级引用,表示引用中的引用。例如:

一天世界君又在睡觉了。

> 我是听酒石酸说的。
>
>> 酒石酸说他是听一天世界君自己说的。

虽然Markdown允许三级引用,四级引用这样复杂的引用,也允许在引用中嵌套大部分其他段落标记。但是我不建议故意写这么复杂的嵌套。一般的文章根本不需要这么复杂的排版格式来说明思路。弄得太复杂一方面给自己添麻烦,一方面让读者看着都头大。

Typora 技巧

当输入一个引用段落后。按Enetr的话,Typora会自动把新行也算到这个引用块里。你可以接着输入新的引用段落。

如果不想输入新的引用段落了,就在光标停留在这个引用块内的空行时,再次按Enter。这样就会退出引用块内的输入,回到普通段落模式。注意这种用法必须让光标停留在引用块内的“空行”(对应源码中只有引用标记>,而没有写其他任何内容的行)。

列表

无序列表

如果要表示若干并列的条目,可以使用列表标记。列表算是一种段落标记。同一张列表当中,不同项目之间不需要有空行。但是一张表格的首行之前和尾行之后最好要有空行(就是说把一整张列表当作一个段落)。另外,同一张列表中每一个项目行首都必须加列表标记。

先来看无序列表。其标记是-(标记后也要空一格再写内容)。

购物清单:

- 方便面两箱
- 可乐三桶
- 牙刷一个
- 5号电池2节 

无序列表的标记用+或者*也可以。但是不管用哪个,一定要统一。最好不要混用。

任务清单

在无序列表的标记和标记后的空格之后加上[ ]就表示任务清单项目(注意[]之间有一个空格,]和后续内容之间也需要插入空格)。这个项目在渲染后[ ]会被渲染为一个可以勾选的框。如果打勾就表示已完成。默认[ ]表示没有被勾选,[x]表示被勾选。

记得吃药

- [ ] 维生素C
- [x] 消食片

有序列表

如果列表中的项目有一定的顺序,那么就可以使用有序列表。有序列表在渲染的时候,从上到下会自动编上序号。有序列表的写法和无序列表类似,但是把*换成了1.(注意在后边要有空格)。

1. 打开编辑器
1. 写一些内容
1. 导出为PDF格式

有序列表标记中不一定要都写成1。你也可以用1,2,3,4等按顺序写下来。但是这样做很麻烦,列表长一点容易数错 。而且如果写了十几条突然想起来中间要加一条很麻烦。后边的都要改。所以不如直接都写成1.,让编译器编译的时候自动排号。

列表的嵌套

同一层级的列表中最好不要混用不同列表。但是可以把不同种类的列表嵌套起来。

嵌套方式就是在列表某一个条目下一行直接写子列表。为了表示层级关系,里层子列表要比外层列表在行首多几个空格。一般来说为了美观整齐,如果外层列表是无序列表(或者任务清单),里层列表条目的列表标记前加2个空格。如果外层是有序列表,则里层列表的列表标记前加3个空格。

1. 把大象装进冰箱
   1. 打开冰箱门
   1. 把大象装进去
   1. 把门关上
1. 把动物园埋了
   * 把猛兽埋了
     * 把老虎埋了
     * 把狮子埋了
   * 把食草动物埋了

虽然Markdown支持多层列表嵌套。但是仍然不建议把列表嵌套弄得太复杂。列表中的内容应当是比较简短的。如果你的一条用大段文字都说不清,而且里边还包含了若干层小结构。我建议你还是用一层标题加一段正文来表示比较好。

Typora快捷键

为了叙述方便,我把外层的列表称为高级的,里层列表称为低级的。

在Typora的所见即所得编辑模式下,光标停留在一个列表项目上时,按Tab会让本条目的嵌套等级降低一级(视觉上就是往右移动了),Shift+Tab会让列表条目升高一级(视觉上就是往左移动了)。

Enter在列表中的应用类似于引用段落中的。当完成一个列表项目的输入按回车,就会自动插入一个同级,同种类的列表条目。如果不想输入新条目了,就在出现这个空的新条目时再次按Enter。就会取消列表条目。不过是嵌套的条目。取消了内层列表条目,但是缩进还在。再次按Enter又会创建一个空的外层列表条目。再按Enter才能取消空的外部列表条目。所以如果嵌套比较深,需要多按几次Enter才能彻底退出列表输入。(也可以直接用鼠标点其他地方退出。)

另外Backspace可以删除列表标记。

强调和标记

本部分介绍的几种格式都是用于行内的。

  • 用一对*括起来的字用斜体显示。
  • 用一对**括起来的字用粗体显示。
  • 用一对~~括起来的字,会被加上删除线。

这几种强调之间可以嵌套。

这是*斜体*,这是**粗体**,这是~~删除线~~。

这是***粗斜体***。这是~~*删除线加斜体*~~。这是~~**删除线加粗体**~~。这~~***是删除线加粗斜体***~~。

有的编辑器可能对强调嵌套不太支持。比如VSCode中粗斜体必须在被标记的文字(连同标记)前后加空格才能识别。写成这样 ***粗斜体*** 。

也可以用一对下划线_表示斜体,用一对双下划线__表示粗体。但是不管用哪种,请尽量保持一致。

以下三种格式需要在Typora的设置中启用才能使用。

  • 用一对~表示把括住的字显示为下标。
  • 用一对^表示把括住的字显示为上标。
  • 用一对==表示把括住的字显示为高亮。
水分子化学式是H~2~O。钙离子写作Ca^2+^。

这是==高亮==。

个人认为,为了保持统一。在启用了内联公式后不需要再启用这种风格的上标和下标。而高亮的使用看个人喜好。

需要注意,有的编辑器并不支持删除线,高亮之类的语法。

Typora中有一些快捷键可以直接修改选中内容的行内格式。Ctrl+B是加粗,Ctrl+I是倾斜。Ctrl+\表示清除选中内容的格式。

代码排版

显示有语法意义的字符

如果你要在文章中显示的字符正好在Markdown中有语法意义(例如*#),可以在这些符号前加反斜杠\表示取消其语法意义(反斜杠本身是个标记,不会显示出来)。如果要显示反斜杠本身,就用反斜杠标记反斜杠。\\实际会显示1个反斜杠。

行内代码

如果一串字符中带语法意义的字符比较多时,一个一个用反斜杠标记就很麻烦。可以用一对反引号`把这段内容括起来。表示代码片段。代码片段中的符号都会原样显示(包括反斜杠,但除了反引号)。

在Emacs中写入代码`# include<stdio.h>`。

代码段

连续3个反引号```占1行就是代码段标记。一篇文章从头到尾,所有的代码段标记两两配对(不会发生嵌套)。一对配对的代码段之间的内容会被认为都是代码而原样输出(除了代码段标记本身)。

一个代码段的开头标记之前和结尾标记之后最好有空行。

在Typora中输入代码段时,如果按回车,新行仍然在代码段内。需要Ctrl+Enter来结束代码段的输入(或者把光标移动到其他地方)。

代码字体和语法高亮

行内代码和代码段中的代码都会使用专门的代码显示字体显示。一般是等宽字体。这点可以在CSS中修改。

对于代码段而言可以在开头标记的3个反引号之后紧跟着写上代码语言名称。这样在渲染的时候关键字,变量,函数等就会自动被语法高亮功能渲染上特殊的颜色,格式等。例如:

接下来的Python教学中会讲解以下代码。

​```python
def gen():
  clock=0
  def timer():
    nonlocal clock
    clock+=1
    return clock
  return timer
  
f1=gen()
f2=gen()
print(f1())
print(f1())
print(f1())
print(f2())
​```

因为行内代码和代码段内的文字会以专门字体(和专门样式)显示。即使你写的代码里不包含Markdown标记,只要写的内容是代码,就建议标记为代码或者代码段。

输入反引号的问题

如果一定要在代码片段中使用再写上反引号,可以使用HTML的code标签(不过不是很推荐,这样做必须检查同一段上下文有没有其他反引号)。如果多个反引号和code标签存在于同一个段落。谁先谁后,运算级如何很难说。

建议这种情况就把代码放到代码段里。代码段里除了一行只有3个反引号的代码段标记本身,不会误判其他代码。

那么如何在Markdown的代码段里写代码段本身呢?严格来说是不行的。因为代码段里转义字符反斜杠本身都失去了语法意义。所以就不能转义代码段标记。但是用Typora所见即所得模式会发现可以在代码段里写代码段标记。切换到源码模式就不难发现奥秘。原来Typora在代码段内的代码段标记前自动加了一个字符,这样整行就不再是代码段标记,所以就不会出现误判。这个字符在普通字体中不会显示所以看不出来。在Typora的源码模式下能看到是因为Typora源码模式用了特殊字体。

而插入的这个神秘字符叫做零宽度空格(ZERO WIDTH SPACE,缩写为ZWSP)Unicode编号200B,UTF-8编码E2 80 8B。在其他编辑器里也可以使用这个技巧。只不过输入这个字符不太方便。而Typora是自动输入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值