了解如何使用 [Markdown](https://daringfireball.net/projects/markdown/) 对笔记进行基本格式化。如需了解更高级的格式语法,请参阅[[高级格式语法]]。 ## 段落 在 Markdown 中创建段落,需使用**空行**来分隔文本块。每个由空行分隔的文本块都被视为独立的段落。 ```md 这是一个段落。 这是另一个段落。 ``` 这是一个段落。 这是另一个段落。 文本行之间的空行会创建独立的段落。这是 Markdown 的默认行为。 > [!tip]- 多个空格 > 段落内和段落之间的多个相邻空格在[[编辑与预览笔记#阅读视图|阅读视图]]或 [[发布服务简介|Obsidian Publish]] 网站上显示时会折叠为单个空格。 > > ```md > Multiple adjacent spaces > > > > and multiple newlines between paragraphs. > ``` > > > Multiple adjacent spaces > > > > > > > > and multiple newlines between paragraphs. > > 如果你想防止空格被折叠或添加多个空格,可以使用 `&nbsp;`(不间断空格)或 `<br>`(换行)HTML 标签。 ### 换行 在 Obsidian 中,默认情况下按一次 `Enter` 会在笔记中创建新行,但在渲染输出中,这被视为同一段落的*延续*,这遵循了典型的 Markdown 行为。要在段落*内*插入换行而不开始新段落,你可以: - 在按 `Enter` 之前在行末添加**两个空格**,或者 - 使用快捷键 `Shift+Enter` 直接插入换行。 > [!question]- 为什么多次按 `Enter` 不会在阅读视图中产生更多换行? > 在 Markdown 中,单个 `Enter` 会被忽略,多个连续的 `Enter` 只会产生一个新段落。这种行为符合 Markdown 的软换行规则,即额外的空行不会生成额外的换行或段落——它们会被折叠为单个段落分隔。这是 Markdown 处理文本的默认方式,确保段落自然流动而不会出现意外的断行。 Obsidian 包含一个**[[设置#严格换行|严格换行]]**设置,使 Obsidian 遵循标准 Markdown 规范处理换行。 要启用此功能: 1. 打开**[[设置]]**。 2. 转到**编辑器**选项卡。 3. 启用**严格换行**。 在 Obsidian 中启用**严格换行**后,换行会根据行的分隔方式产生三种不同的行为: **单次回车且无尾随空格**:单个 `Enter` 且没有尾随空格时,渲染后两行会合并为一行。 ```md line one line two ``` 渲染为: line one line two **单次回车且有两个或更多尾随空格**:如果在按 `Enter` 之前在第一行末尾添加两个或更多空格,两行仍属于同一段落,但会通过换行符(HTML `<br>` 元素)分隔。我们在此示例中用两个下划线代替空格。 ```md line three__ line four ``` 渲染为: line three<br> line four **双次回车(无论是否有尾随空格)**:按两次(或更多次)`Enter` 会将行分为两个独立的段落(HTML `<p>` 元素),无论你是否在第一行末尾添加了空格。 ```md line five line six ``` 渲染为: <p>line five</p> <p>line six</p> ## 标题 要创建标题,在标题文本前添加最多六个 `#` 符号。`#` 符号的数量决定标题的级别(如[[大纲]]中所示)。 ```md # 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 ``` %% These headings use HTML to avoid cluttering the Outline/Table of contents %% <h1>这是一级标题</h1> <h2>这是二级标题</h2> <h3>这是三级标题</h3> <h4>这是四级标题</h4> <h5>这是五级标题</h5> <h6>这是六级标题</h6> ## 加粗、斜体、高亮 文本格式也可以通过[[编辑相关的快捷键]]来应用。 | 样式 | 语法 | 示例 | 输出 | |-|-|-|-| | 加粗 | `** **` 或 `__ __` | `**加粗文本**` | **加粗文本** | | 斜体 | `* *` 或 `_ _` | `*斜体文本*` | *斜体文本* | | 删除线 | `~~ ~~` | `~~删除线文本~~` | ~~删除线文本~~ | | 高亮 | `== ==` | `==高亮文本==` | ==高亮文本== | | 加粗和嵌套斜体 | `** **` 和 `_ _` | `**加粗文本和_嵌套斜体_文本**` | **加粗文本和_嵌套斜体_文本** | | 加粗和斜体 | `*** ***` 或 `___ ___` | `***加粗和斜体文本***` | ***加粗和斜体文本*** | 可以通过在格式符号前添加反斜杠 `\` 来强制以纯文本显示。 \*\*这行不会被加粗\*\* ```markdown \*\*这行不会被加粗\*\* ``` \**这行会是斜体并显示星号*\* ```markdown \**这行会是斜体并显示星号*\* ``` ## 内部链接 Obsidian 支持两种笔记间[[内部链接]]的格式: - Wiki 链接:`[[牛顿运动三定律]]` - Markdown:`[牛顿运动三定律](牛顿运动三定律.md)` ## 外部链接 如果你想链接到外部 URL,可以用方括号(`[ ]`)包围链接文本,然后用圆括号(`( )`)包围 URL 来创建内联链接。 ```md [Obsidian 帮助](https://help.obsidian.md) ``` [Obsidian 帮助](https://help.obsidian.md) 你也可以通过链接到 [[Obsidian URI|Obsidian URI]] 来创建指向其他仓库中文件的外部链接。 ```md [笔记](obsidian://open?vault=MainVault&file=Note.md) ``` ### 转义链接中的空格 如果你的 URL 包含空格,必须将空格替换为 `%20` 来转义它们。 ```md [我的笔记](obsidian://open?vault=MainVault&file=My%20Note.md) ``` 你也可以用尖括号(`< >`)包裹 URL 来转义。 ```md [我的笔记](<obsidian://open?vault=MainVault&file=My Note.md>) ``` ## 外部图片 你可以通过在[[#外部链接|外部链接]]前添加 `!` 符号来添加外部 URL 的图片。 ```md ![Engelbart](https://history-computer.com/ModernComputer/Basis/images/Engelbart.jpg) ``` ![Engelbart](https://history-computer.com/ModernComputer/Basis/images/Engelbart.jpg) 你可以通过在链接目标中添加 `|640x480` 来更改图片尺寸,其中 640 是宽度,480 是高度。 ```md ![Engelbart|100x145](https://history-computer.com/ModernComputer/Basis/images/Engelbart.jpg) ``` 如果只指定宽度,图片会按原始宽高比缩放。例如: ```md ![Engelbart|100](https://history-computer.com/ModernComputer/Basis/images/Engelbart.jpg) ``` > [!tip]- 提示 > 如果你想添加仓库内的图片,也可以[[插入文件#在笔记中嵌入图片|在笔记中嵌入图片]]。 ## 引用 你可以在文本前添加 `>` 符号来引用文本。 ```md > Human beings face ever more complex and urgent problems, and their effectiveness in dealing with these problems is a matter that is critical to the stability and continued progress of society. \- Doug Engelbart, 1961 ``` > Human beings face ever more complex and urgent problems, and their effectiveness in dealing with these problems is a matter that is critical to the stability and continued progress of society. \- Doug Engelbart, 1961 > [!tip]- 提示 > 你可以通过在引用的第一行添加 `[!info]` 来将引用转换为[[标注|标注]]。 ## 列表 你可以在文本前添加 `-`、`*` 或 `+` 来创建无序列表。 ```md - 第一个列表项 - 第二个列表项 - 第三个列表项 ``` - 第一个列表项 - 第二个列表项 - 第三个列表项 要创建有序列表,每行以数字开头,后跟 `.` 或 `)` 符号。 ```md 1. 第一个列表项 2. 第二个列表项 3. 第三个列表项 ``` 1. 第一个列表项 2. 第二个列表项 3. 第三个列表项 ```md 1) 第一个列表项 2) 第二个列表项 3) 第三个列表项 ``` 1) 第一个列表项 2) 第二个列表项 3) 第三个列表项 你可以使用 `Shift+Enter` 在有序列表中插入[[#换行|换行]]而不改变编号。 ```md 1. 第一个列表项 2. 第二个列表项 3. 第三个列表项 4. 第四个列表项 5. 第五个列表项 6. 第六个列表项 ``` ### 任务列表 要创建任务列表,每个列表项以连字符和空格后跟 `[ ]` 开头。 ```md - [x] 这是一个已完成的任务。 - [ ] 这是一个未完成的任务。 ``` - [x] 这是一个已完成的任务。 - [ ] 这是一个未完成的任务。 你可以在阅读视图中通过选中复选框来切换任务状态。 > [!tip]- 提示 > 你可以在方括号内使用任意字符来标记任务为已完成。 > > ```md > - [x] 牛奶 > - [?] 鸡蛋 > - [-] 鸡蛋 > ``` > > - [x] 牛奶 > - [?] 鸡蛋 > - [-] 鸡蛋 ### 嵌套列表 你可以将任何类型的列表——有序、无序或任务列表——嵌套在任何其他类型的列表下。 要创建嵌套列表,请缩进一个或多个列表项。你可以在嵌套结构中混合使用不同类型的列表: ```md 1. 第一个列表项 1. 有序嵌套列表项 2. 第二个列表项 - 无序嵌套列表项 ``` 1. 第一个列表项 1. 有序嵌套列表项 2. 第二个列表项 - 无序嵌套列表项 同样,你可以通过缩进一个或多个列表项来创建嵌套任务列表: ```md - [ ] 任务项 1 - [ ] 子任务 1 - [ ] 任务项 2 - [ ] 子任务 1 ``` - [ ] 任务项 1 - [ ] 子任务 1 - [ ] 任务项 2 - [ ] 子任务 1 使用 `Tab` 或 `Shift+Tab` 来缩进或减少缩进选中的列表项,以便轻松组织它们。 ## 分隔线 你可以使用三个或更多的星号 `***`、连字符 `---` 或下划线 `___` 单独占一行来添加水平分隔线。你也可以用空格分隔这些符号。 ```md *** **** * * * --- ---- - - - ___ ____ _ _ _ ``` *** ## 你可以将代码格式化为行内代码或独立的代码块。 ### 行内代码 你可以使用单个反引号在句子中格式化行内代码。 ```md 行中 `反引号` 内的文本将被格式化为代码。 ``` 行中 `反引号` 内的文本将被格式化为代码。 如果你想在行内代码中放置反引号,可以用双反引号包围它,如:行内 ``包含反引号 ` 的代码``。 ### 代码块 要将代码格式化为代码块,请用三个或更多反引号或三个或更多波浪号包围它。 ~~~ ````` cd ~/Desktop ````` ~~~ ````` ~~~ cd ~/Desktop ~~~ ````` `````md cd ~/Desktop ````` 你也可以使用 `Tab` 或 4 个空格缩进文本来创建代码块。 `````md cd ~/Desktop ````` 你可以通过在第一组反引号后添加语言代码来为代码块添加语法高亮。 ~~~md `````js function fancyAlert(arg) { if(arg) { $.facebox({div:'#foo'}) } } ````` ~~~ `````js function fancyAlert(arg) { if(arg) { $.facebox({div:'#foo'}) } } ````` Obsidian 使用 Prism 进行语法高亮。更多信息请参阅 [支持的语言](https://prismjs.com/#supported-languages)。 > [!info]+ PrismJS 与编辑视图 > [[编辑与预览笔记#源码模式|源码模式]]和[[编辑与预览笔记#实时预览|实时预览]]不支持 PrismJS,可能会以不同方式渲染语法高亮。 #### 嵌套代码块 当你需要在一个代码块中包含另一个代码块时(例如,在文档中说明如何使用代码块),你可以为外层代码块使用三个以上的反引号或波浪号。 要嵌套代码块,外层块使用四个或更多反引号(或波浪号),而内层块使用三个: `````md ````md 以下是如何创建代码块: ```js console.log("Hello world") ``` ```` ````` 你也可以混合使用反引号和波浪号。这在处理生成其他代码块的代码时特别有用: `````md ````md ```dataviewjs dv.paragraph(` ~~~mermaid graph TD A --> B ~~~ `) ``` ```` ````` 关键原则是外层代码块必须使用**更多的**围栏字符(反引号或波浪号),或使用不同类型的围栏字符。 ## 脚注 你可以使用以下语法为笔记添加脚注[^footnote]: [^footnote]: 这是一个脚注。 ```md 这是一个简单的脚注[^1]。 [^1]: 这是引用的文本。 [^2]: 在每个新行的开头添加 2 个空格。 这样你就可以编写跨多行的脚注。 [^note]: 命名脚注仍然显示为数字,但可以更容易地识别和链接引用。 ``` 你也可以在句子中使用行内脚注。请注意,插入符号位于方括号外面。 ```md 你也可以使用行内脚注。^[这是一个行内脚注。] ``` > [!note] 注意 > 行内脚注仅在阅读视图中有效,在实时预览中无效。 ## 注释 你可以用 `%%` 包裹文本来添加注释。注释仅在编辑模式中可见。 ```md 这是一个 %%行内%% 注释。 %% 这是一个块注释。 块注释可以跨多行。 %% ``` ## 转义 Markdown 语法 在某些情况下,你可能需要在 Markdown 中显示特殊字符,如 `*`、`_` 或 `#`,而不触发它们的格式化效果。要按字面意思显示这些字符,请在它们前面放置反斜杠(`\`)。 > [!example] 常见需要转义的字符 > > - 星号:`\*` > - 下划线:`\_` > - 井号:`\#` > - 反引号:`` \` `` > - 管道符(用于表格):`\|` > - 波浪号:`\~` ```md \*这段文本不会被斜体化\*。 ``` \*这段文本不会被斜体化\*。 在使用有序列表时,你可能需要转义数字后面的句点以防止自动列表格式化。将反斜杠(`\`)放在句点前面,而**不是**数字前面。 ```md 1\. 这不会成为列表项。 ``` 1\. 这不会成为列表项。 ## 了解更多 要了解更多高级格式语法,如表格、图表和数学表达式,请参阅[[高级格式语法]]。 要了解 Obsidian 如何解析 Markdown,请参阅 [[Obsidian 风格的 Markdown 语法]]。