如何在Markdown标记中缩进几行?

623

我想写几行文本,它们应该以正常格式排版,除了每行应该从第6列开始。也就是说,我不想让代码块格式规则将此文本块视为代码,因为我将使用其他格式,例如粗体等。在Markdown中如何实现这一点?


12
这句话需要上下文才能进行准确的翻译,因为“what about : ?”本身并没有具体意义。请提供更多上下文信息。 - Frode Akselsen
9
在Markdown实现中,使用“:”来定义列表并不是普遍适用的,但如果你使用的Markdown变种支持它,这种方法是完美的。你应该将这作为真正的答案呈现出来。 - Alex Dupuy
23个回答

595

Markdown本身没有提供这样的功能。但是Markdown允许嵌入HTML,因此可以这样写:

      This will appear with six space characters in front of it

将产生:

      这将在其前面加上六个空格字符

如果您可以控制页面上的CSS,您也可以使用标签并对其进行样式设置,无论是内联还是使用CSS规则。

无论哪种方式,Markdown 都不是用于布局的工具,它的作用是简化编写网络内容的过程,因此,如果您发现自己需要使用 Markdown 的特性来实现所需功能,您可以考虑是否正在使用正确的工具。请查看 Gruber 的文档:

http://daringfireball.net/projects/markdown/syntax#html


30
在Markdown文件中可以插入 (Unicode:\2002),它们不会显示为源代码中的 ,只有在呈现文件时才会显示。只需在操作系统上找到插入该字符的快捷键即可。 - vaughan
2
块引用是实现这一点的好方法(请参见@ChrisV的答案) - drevicko
2
在 macOS 上,可以使用 <kbd>option</kbd>-<kbd>spacebar</kbd> 轻松输入 &nbsp;(Unicode U+00A0)字面字符。而具有良好不可见字符支持的代码编辑器(如 TextMate)将显示普通空格为淡色子弹,非断空格为更粗的子弹(但仍比文本颜色淡)。← 我认为具有良好不可见字符支持的编辑器对于 Markdown 特别重要,特别是因为 MD 的两个空格结尾= <br/> 语法。 - Slipp D. Thompson
9
&ensp;非常适合简单而直接的缩进。不会改变样式/字体,仅仅产生缩进效果。 - Green
23
长文本中换行不会缩进,这可能不符合你的布局要求。调整渲染视图大小进行测试。此外,&emsp; 更接近于制表符。 - dimmech
显示剩余8条评论

137

其中一种方法是使用项目符号,这可以让你指定多个缩进级别。通过使用两个空格、星号和另一个空格来插入项目符号,例如:

this is a normal line of text
  * this is the first level of bullet points, made up of <space><space>*<space>
    * this is more indented, composed of <space><space><space><space>*<space>

这种方法的优点在于在查看原始文本时也很有意义。

如果您不想看到项目符号本身,则可以(取决于您使用 markdown 的位置)将 li {list-style-type: none;} 添加到整个 markdown 区域的 css 中。


13
不错的技巧,但我只想禁用Markdown(以及其生成的HTML)部分可见的项目符号,而不是全部。有没有一种干净的方法来实现这个目标? - Meng Lu
1
@MengLu 我有同样的需求。你解决了这个问题吗? - lifebalance
4
请记住,Markdown可以接受HTML - 这是规范的一部分。 因此,对于特定的列表,没有任何阻止你使用HTML来解决这个问题。 只需记住在Markdown中可以使用HTML,但不能在HTML片段中使用Markdown。<ul> <li style="list-style-type: none;">您需要缩进的全部内容必须都是HTML</li> </ul> - Hamish Willee
3
对我来说,这比被接受的答案好多了。它可以让你更精细地控制缩进文本,而且更易读和维护。 - Arepo
2
点赞。但请注意,如果在 GitHub 上使用您的 Markdown,例如在 README 中,GitHub 将阻止所有自定义 CSS,正如我和其他人在各个地方记录的那样,包括我在这里的回答中:GitHub README.md center image - Gabriel Staples

72

看看这个“>”是否有帮助:

Line 1
> line 2 
>> line 3

1
在Jupyter笔记本中使用LaTeX标记,这是一个很好的选择。 - vwvan
23
以上评论有误。引用块(>)是用于创建引用的,而不是用于普通缩进。在样式上完全不同。 - ReinstateMonica3167040
2
这将文本设置为“引用”,目的是使文本缩进。 - Scarl
> >(中间有空格) 可以在 pandoc (v2.11.0.4) 中用于缩进文本块,尽管它最初是为引用而设计的。 - arash
简单但在某种程度上有效。 - gia huy

47

这是一个旧的讨论串,但我认为Markdown的块引用符('> ')最适合此情况:


24
如果您不需要缩进指定数量,并且不关心是否会出现与块引用相关的不同背景颜色或其他样式,那么这是一个不错的解决方案。 最终,块引用具有语义目的,如果您确实想将某些内容设置为引用,则最好使用它们。 - alegscogs
38
错误。块引用符(>)是用于创建引用的,而不是普通的缩进。在样式上完全不同。 - Green

46

请使用硬空格(不间断空格)

为什么要使用另一种标记语言?(我同意上面@c z的观点)。
Markdown的一个目标是使文档即使在纯文本编辑器中也易读。

两种方法,同样的结果

代码

Sample code
&nbsp;&nbsp;&nbsp;&nbsp;5th position in an really ugly code  
    5th position in a clear an readable code  
    Again using non-breaking spaces :)

结果

示例代码
极丑的代码中的第五个位置
清晰易读的代码中的第五个位置
再次使用不间断空格 :)

不间断空格(或硬空格)的可视化表示通常是普通空格 " ",但其 Unicode 表示是 U+00A0。
普通空格的 Unicode 表示为 U+0020(在 ASCII 表中为 32)。
因此,虽然可视化表示相同,但文本处理器可能会有所不同。

插入一个硬空格

| OS        | Input method                      |
|-----------| ----------------------------------|
| macOS     | OPTION+SPACE (ALT+SPACE)          |
| Linux     | Compose Space Space or AltGr+Space|
| Windows   | Alt+0+1+6+0                       |

Some text editor use Ctrl+Shift+Space.

问题

一些文本编辑器在复制粘贴操作中可以将硬空格转换为普通空格,因此要小心。


选项+空格激活聚光灯搜索。 - wander95
1
只有在更改了默认快捷键的情况下才能实现,否则不可能。 Spotlight搜索栏会通过COMMAND-SPACE(COMMAND键类似于Windows键)触发。 非间断空格是通过OPTION-SPACE(Option键类似于ALT键)引入的。 - ePi272314
1
在我的 Mac 上,我自己设置了一个 Option + Space 的快捷键,但是 Shift + Option + Space 更好用。 - Dag Høidahl
5
长句子换行后看起来很丑。 - Mike Kormendy
1
就个人而言,我同意“为什么要使用另一种标记语言?”的概念。大多数人认为他们的Markdown将被呈现为HTML。虽然在许多情况下确实如此,但这并非普遍适用。越来越多的非HTML应用程序现在能够呈现Markdown(至少其中的一些)。一个人越不依赖于HTML技巧,越依赖于标记语言本身,你的页面就越有可能被普遍呈现。想象一下,带有数字墨水的电子书(没有网络浏览器)可能在不久的将来呈现Markdown;更容易解析和显示... - Gwyneth Llewelyn
显示剩余3条评论

28

在进行内容输入时,需先键入Tab键,然后添加加号符号和空格,最后加入您要显示的内容。

例如:

* 一级标题 + 二级标题缩进


5
GitHub/Bitbucket的Markdown支持一种类似的缩进规则,不需要使用 + 符号:[tab键][空格]你要输入的文本内容 - roblogic

25

以非断行空格开头的一行存在的问题之一是,如果您的行足够长以至于需要换行,那么当它溢出到第二行时,溢出行的第一个字符将从左侧开始而不是在上面的第一个字符下方开始。

如果您的系统允许您在Markdown中混合使用HTML,则可以通过以下方式轻松获得缩进:

<ul>
My indented text goes here, and it can be long and wrap if you like.
And you can have multiple lines if you want.
</ul>

在你的HTML中,从语义上讲,这是没有意义的(一个没有任何LI项的UL部分),但是我使用过的所有浏览器都会愉快地缩进这些标签之间的内容。


2
这与引用符号 > 完全相同,但没有成为引用(在Github上测试过)。 这正是我要找的。谢谢! - Emilio
我喜欢这个技巧,因为它比放置一堆   更加简洁。但是有没有办法在第一个缩进的行上不显示项目符号? - tzg
我喜欢这个技巧,因为它比输入一堆 更整洁。但是有没有办法让首行缩进的内容不显示项目符号呢? - tzg
取决于您的Markdown解释器,我猜。在我使用过的所有解释器中(包括Azure DevOps和Github),只有以您的“这是无序列表项”标记开头的行才会获得一个符号,例如在Github维基中,如果您的行以-*+开头 - 没有列表起始标记,就没有符号。您的情况可能会有所不同。 - Jinlye
我正在使用VSCode,并将我的README.md文件放在Bitbucket上。由于Bitbucket的限制,我在使用HTML和CSS标签方面受到了一定的限制。 - tzg
这个方法很棒。用&nbsp进行硬编码只是一个问题多多的选择,我真不敢相信有人会建议这样做。 - eric

24

我认为在这种情况下使用 &emsp; 更加简洁。


20

如果你想在段落开头设置一个确定的空格,可以使用数学环境,例如:

$\qquad$ 我的文本行...

这个方法对我很有效,希望对你也有帮助。


这是迄今为止最清洁、最简洁的方法。 - FedFranz

18

正如@AlexDupuy在评论中指出的那样,可以使用定义列表来实现此目的。

虽然不是所有的markdown处理器都支持,但是这种方法已经被广泛采用:Markdown指南-定义列表

Term 1
: definition 1
: definition 2

Term 2
: definition 1
: definition 2

渲染为(html):

<dl>
    <dt>Term 1</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
    <dt>Term 2</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
</dl>

通常DT以标题格式呈现,每个DD则以缩进文本的形式呈现在其下方。

如果您不想要标题/术语,请使用不间断空格代替定义术语:

&nbsp;
: This is the text that I want indented.  All text on the same line as the preceding colon will be included in this definition.
: If you include a second definition you'll get a new line; potentially separated by a space. <br />Some inline HTML may be supported within this too, allowing you to create new lines without spaces.
: Support for other markdown syntax varies; e.g. we can add a bullet list, but each one's wrapped in a separate definition term, so the spacing may be out.
: - item 1
: - item 2
: - item 3
你可以通过将上面的示例复制粘贴到此网站上来查看其效果:Stack Edit Markdown编辑器 在 Stack Edit 中呈现 DL 的截图

在Github的markdown中无法工作。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接