MDUtil

Markdown 斜体

在文字两侧各加一个星号就是斜体:*斜体*。本文介绍星号和下划线两种写法、粗斜体、中文里下划线斜体不生效的原因,以及各平台的差异。

简短回答

Markdown 怎么写斜体?

在文字两侧各加一个星号:*斜体文字*。用一个下划线 _斜体文字_ 效果相同,两种写法都会生成 HTML 的 <em> 元素。中文正文推荐用星号:下划线写法要求两侧有空格或标点,紧挨汉字时不生效。

Markdown
*这段文字是斜体*

_这段文字也是斜体_

显示效果

这段文字是斜体

这段文字也是斜体

斜体的写法和示例

两种符号生成的 HTML 相同,区别在于能否紧挨文字使用。聊天软件的规则不同:Slack 把单个星号当作加粗。

单星号

兼容性最好的写法,CommonMark、GitHub、GitLab、Discord、Obsidian、Notion 以及 Hugo、Jekyll 等静态网站生成器都支持。

Markdown
这个截止时间*不能*再改。

显示效果

这个截止时间不能再改。

单下划线

效果与单星号相同,但两侧需要空格或标点,紧挨汉字时不会生效。

Markdown
我上周读完了 _了不起的盖茨比_。

我上周读完了_了不起的盖茨比_。

显示效果

我上周读完了 了不起的盖茨比。

我上周读完了_了不起的盖茨比_。

标点旁的斜体失效

和加粗一样,* 的内侧是标点、外侧紧挨文字时,不能作为斜体的开始或结束。把标点移到星号外面即可。

Markdown
这是*“重点”*内容。

这是“*重点*”内容。

显示效果

这是*“重点”*内容。

这是“重点”内容。

单词内部斜体

英文单词中间只能用星号,file_name_v2 这类名称里的下划线会原样保留。

Markdown
re*structure*d

re_structure_d

显示效果

restructured

re_structure_d

粗斜体

三个星号同时加粗和倾斜,也可以把两种符号嵌套使用,看清哪一对符号在哪里结束。

Markdown
***又粗又斜***

*斜体中有一段 **粗体** 文字*

显示效果

又粗又斜

斜体中有一段 粗体 文字

显示星号本身

在符号前加反斜杠就会原样显示。代码和文件名放进反引号更省事,反引号里的内容不会被格式化。

Markdown
\*这里不是斜体\*

`snake_case_name`

显示效果

*这里不是斜体*

snake_case_name

各平台的斜体支持

两种符号几乎处处可用,Slack 是明显的例外。

应用支持情况说明
GitHub / GitLab支持*文字* 和 _文字_ 都能用,单词内部的斜体要用星号。
Discord支持两种符号都是斜体,***文字*** 是粗斜体。
Slack有差异Slack 用下划线表示斜体:_文字_,单个星号表示加粗。
Obsidian支持两种符号都支持,星号可以在单词内部使用。
Notion支持输入 *文字* 或 _文字_ 会立即变成斜体。
Typora支持两种符号都支持,输入后直接显示为斜体。

常见问题

* 和 _ 写斜体有什么区别?

对完整的英文单词没有区别,都会生成 <em>。区别在于能否紧挨文字:只有星号可以,所以 这是_斜体_文字 不会生效,re_structure_d 也会原样显示。Slack 里两者含义不同,*文字* 是加粗,_文字_ 是斜体。

怎样同时加粗和倾斜?

两侧各写三个星号:***文字***,或者嵌套两种写法:**_文字_**。

为什么斜体不生效?

常见原因有:符号和文字之间有空格(* 文字 *);缺少结尾的符号;用了下划线且紧挨汉字;* 的内侧是标点、外侧紧挨文字;文字在代码块或反引号里。另外,行首的 * 后面跟空格会变成列表项。

中文适合用斜体吗?

中文字体大多没有斜体字形,浏览器只能把字形倾斜显示,阅读效果较差。中文里强调通常用加粗,书名用书名号。

Slack 里怎么写斜体?

用下划线:_文字_。Slack 把单个星号当作加粗,与标准 Markdown 相反。

Discord 里怎么写斜体?

*文字* 和 _文字_ 都可以,三个星号 ***文字*** 是粗斜体。

Markdown 斜体生成 <em> 还是 <i>?

生成表示强调的 <em>。需要 <i> 时直接写 HTML 标签,大多数 Markdown 渲染器允许内嵌 HTML。

怎样显示星号或下划线本身?

在符号前加反斜杠:\*文字\* 显示为 *文字*。代码和文件名放进反引号更简单,反引号里的内容不会被格式化。