前言

这其实是一个很久之前就遇到的问题,不过最近找到了一个比较好的解决方案。

在学习Markdown的时候,了解到Markdown更适合不太注重格式排版的文章,并没有仔细研究过这方面的问题。

最近写笔记的时候,就遇到要写数学性质的解题过程,出于美观考虑必然要严格控制排版格式,正好前后用到了两种方式。

先简单说明一下问题吧:

\qquad 作为一个程序员,已经习惯了用Tab符号控制缩进,在Markdown中:

\qquad\qquad 使用Tab符号不能控制缩进,实在是有点不适应。
\qquad\qquad 直接打出多个空格,只会显示一个空格。
\qquad\qquad 用转义符号  打出多个空格之后,无意义的空格字符仍会明显地被选中。

\qquad 那么该如何在Markdown中控制缩进呢?


下面提供四种解决方案,只能说各有优缺点(本解决方案主要针对CSDN-Markdown编辑器)


Tips:

  • 在Typora编辑器中,非源代码模式下,使用Tab键可以直接控制缩进,并且导出的PDF可以被正常显示、选中和复制

  • 在Typora编辑器中,使用方案一、方案二导出的PDF可以被正常显示、选中和复制

  • 在Typora编辑器中,无法使用方案三中的自定义列表(CSDN-Markdown特有)

  • 方案一、方案二都不能控制块级元素(代码块、引用块等)的缩进

  • 考虑到CSDN-Markdown可能会做一些Markdown文档的页面渲染作出调整,以下方案至少适用于2021年3月19日及以前

方案一:利用LaTeX空格符缩进

方案一
  使用LaTeX的空格符\qquad\quad\;\,控制缩进


示例md代码如下:

小标题
$\qquad$① 条件1
$\qquad\qquad$ 1° 子条件1
$\qquad\qquad$ 2° 子条件2
$\qquad$② 条件2
$\qquad\qquad$ 1° 子条件1
$\qquad\qquad$ 2° 子条件2

示例效果如下:

小标题
\qquad ① 条件1
\qquad\qquad 1° 子条件1
\qquad\qquad 2° 子条件2
\qquad ② 条件2
\qquad\qquad 1° 子条件1
\qquad\qquad 2° 子条件2


缺点:
\qquad ① 在CSDN博客显示时,选中复制会把空格符代码给复制出来
\qquad ② 公式结束符$后紧跟数字将导致公式无法渲染(Typora编辑器不会,CSDN-Markdown可以将公式结束符后$紧跟的数字套上<font></font>

优点:
\qquad 选中时,不会明显看到空格符号被选中

适用场景:
\qquad 面向观赏的博文,可能会被多次选中,但不会被复制内容(更适合我这样希望选中无空格的强迫症)

方案二:利用html空格符缩进

方案二
  使用Html的空格符&nbsp;&emsp;控制缩进。


示例md代码如下:

小标题
&emsp;&emsp;① 条件1
&emsp;&emsp;&emsp;&emsp;1° 子条件1
&emsp;&emsp;&emsp;&emsp;2° 子条件2
&emsp;&emsp;② 条件2
&emsp;&emsp;&emsp;&emsp;1° 子条件1
&emsp;&emsp;&emsp;&emsp;2° 子条件2

示例效果如下:

小标题
  ① 条件1
    1° 子条件1
    2° 子条件2
  ② 条件2
    1° 子条件1
    2° 子条件2


缺点:
  选中时,可以明显看到空格符号被选中

优点:
  在CSDN博客显示时,选中复制不会像LaTeX一样把空格符代码给复制出来,而只会复制出简单的空格符号,粘贴后清除方便

适用场景:
  面向复制的博文,可能会被多次复制,不过粘贴后改起来不麻烦,选中起来明显发现空格

方案三:利用列表控制缩进

方案三

  • 使用Markdown的列表控制缩进。

示例md代码如下:

无序列表标题
- ① 条件1
	- 1° 子条件1
	- 2° 子条件2
- ② 条件2
	- 1° 子条件1
	- 2° 子条件2
	- > 可以缩进引用块

有序列表标题
1.  条件1
	1. 子条件1
	2. 子条件2
2. 条件2
	1. 子条件1
	2. 子条件2
	3. > 可以缩进引用块

**自定义列表标题**
: **① 条件1**
	: 1° 子条件1
	: 2° 子条件2
: **② 条件2**
	: 1° 子条件1
	: 2° 子条件2
	: > 可以缩进引用块
: > 可以缩进引用块

示例效果如下:

无序列表标题

  • ① 条件1
    • 1° 子条件1
    • 2° 子条件2
  • ② 条件2
    • 1° 子条件1
    • 2° 子条件2
    • 可以缩进引用块

有序列表标题

  1. 条件1
    1. 子条件1
    2. 子条件2
  2. 条件2
    1. 子条件1
    2. 子条件2
    3. 可以缩进引用块

自定义列表标题
① 条件1
1° 子条件1
2° 子条件2
② 条件2
1° 子条件1
2° 子条件2

可以缩进引用块

可以缩进引用块


缺点:

  • ① 无序列表和有序列表的表项缩进时会产生表项的标志
  • ② 无序列表和有序列表的表项的标志无法赋予颜色
  • ③ 无序列表嵌套有序列表时,两种列表的表项的标志缩进长度从视觉效果上看不同(Typora编辑器两种长度差不多)
  • ④ 有序列表嵌套无序列表时,会显示为有序列表嵌套有序列表(Typora编辑器不会)
  • ⑤ 自定义列表的标题也会被缩进,并且在使用CSDN-Markdown编辑器编辑时预览的显示中标题会被默认加粗,但在发布后文章的显示中标题并没有被加粗
  • ⑥ 不能控制一次缩进的长度,而且下一级缩进必须依靠嵌套列表来实现

优点:

  • ① 用有序列表和无序列表体现,表项的标志便于区分不同的表项
  • ② 真实的缩进,不会被选中,选中复制粘贴后也不会出现不相干的字符
  • ③ 可以缩进<blockquote>标签生成的引用块

适用场景:
  觉得列表缩进样式还行、不需要任意缩进长度的博文

方案四:利用<figure>标签控制缩进

方案四

使用<figure>标签控制缩进。

示例md代码如下:

小标题
<figure>
	① 条件1
	<figure>
		1° 子条件1
		<br/>
		2° 子条件2
	</figure>
	② 条件2
	<figure>
		1° 子条件1
		<br/>
		2° 子条件2
	</figure>
	<figure>
		<blockquote>可以缩进引用块</blockquote>
	</figure>
	<blockquote>可以缩进引用块</blockquote>
</figure>
<figure>
	<figure>
		可以不依赖上一级缩进,直接实现多级缩进
	</figure>
</figure>

示例效果如下:

小标题

① 条件1
1° 子条件1
2° 子条件2
② 条件2
1° 子条件1
2° 子条件2
可以缩进引用块
可以缩进引用块
可以不依赖上一级缩进,直接实现多级缩进

缺点:

① 段内换行必须使用<br/>标签
② 段内不能正常解析markdown语法,只能解析html语法
③ 开闭标签,层级嵌套,编写麻烦,略显冗长

优点:

① 可以缩进<blockquote>标签生成的引用块
② 可以不依赖上一级缩进(上一级缩进内容可以为空),直接实现多级缩进

适用场景:
\qquad 更在乎markdown文本展示效果、而不在乎markdown文本编辑麻烦的人

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐