
每次看到交叉学科的同学用 Word 排版论文或实验报告我都替他们着急。不是 Word 不好用而是它把“写内容”和“调格式”两件事强行绑在一起写一句话还得惦记字号、行距、标题缩进最后目录还要手动刷新。结果一下午过去一半时间都耗在排版上内容却没什么进展。Markdown 就是用来解决这个问题的。它是一种轻量级标记语言用纯文本的语法约定表示标题、列表、代码、表格这些文档结构让作者专注内容本身格式交给转换工具去处理。它特别适合计算机初学者以及生物、物理、经济这类交叉学科的研究生还有一切需要写笔记、写报告、写技术文档但不想被排版绑架的人。关于 Markdown我想先说明一个很多人忽略的事实语法和语义是两个层次的问题。语法是“怎么写”语义是“写出来的东西到底表达什么结构”。多数教程只教你语法规则不讲语义导致你学会了所有符号写出来的文档却结构混乱。这篇基础篇我会把两者放在一起讲因为一旦你理解了“语义优先”这件事后续写长文档、做幻灯片、发布成网页都会顺畅得多。1. Markdown 到底是什么写给还没入门的你1.1 一个纯文本文件能干什么Markdown 发明于 2004 年设计者是 John Gruber 和 Aaron Swartz目的是让作者用简单的文本标记写出“易读易写”的纯文本再通过工具转换成结构完整的 HTML。到今天它已经成了 GitHub、Stack Overflow、各种笔记软件、博客平台的事实标准格式。它的核心原理可以概括成一句话你用特殊符号标记内容工具负责渲染成漂亮的排版。比如你在行首写一个“#”工具就知道这一行是一级标题你在文本两侧各加两个星号工具就知道这中间的文字要加粗。源文件永远是一个不依赖任何软件的 .md 文件用记事本、VS Code、Typora、Obsidian 都能打开甚至放到 Git 里做版本管理也毫无压力。我经常给初学者打一个比方Word 像是你在一张白纸上边写边用刷子刷油漆Markdown 则是你用固定记号写乐谱演奏者按记号演奏出音乐。同一个 .md 文件可以在网页浏览器里当 HTML 看可以在 Typora 里当成品文档看可以在 VS Code 里当代码看还可以转成 PDF 或 Word 交付。源文件始终干干净净躺在你手里这点是二进制 .docx 格式很难做到的。1.2 语法和语义是两个层次的问题拿中文打比方语法是“主谓宾定状补”的组合规则语义是句子真正传达的意思。“我在树下看见他”和“他在树下看见我”语法都通顺语义截然不同。Markdown 也一样语法层什么符号表示标题什么符号表示列表markdown 的换行规则是什么表格怎么写。语义层这一行是章节标题还是段落内强调这个东西是并列列表还是递进步骤这段引用是别人的观点还是你自己的注释大多数教程只覆盖语法层这导致一个典型问题有人为了视觉上好看用手动缩进、加粗、空行来模拟层次结构渲染出来确实“像个标题”但工具不认识它导出的网页目录里没有它自动生成的文档大纲里也没有它。这就是典型的“语法对语义错”。因此我会在基础篇里明确一个观念每个符号都要对应一个真实的结构含义。你写#意味着“这是一个顶级章节”而不是“我想让它变红变大”你写列表意味着“这些条目是并列关系”而不是“这样显得整齐”。这个习惯越早建立后面学 HTML、学 Word 样式、学幻灯片结构时就越容易因为所有结构化文档的底层逻辑都是相通的。2. Markdown 基础语法半小时过一遍核心2.1 标题、列表、强调最常用的三组语法先看标题。在行首写井号“#”空格后跟标题文字就是一个标题。一个“#”是一级标题两个“##”是二级最多到六级。注意井号后面必须跟一个空格否则部分解释器会把它当成普通字符。# 一级标题 ## 二级标题 ### 三级标题为什么强调标题层级因为层级就是文档的骨架。如果你把一级标题和大号加粗混着用大纲功能就废了而且后续用工具自动生成目录、用脚本统计章节结构时都会出问题。我见过很多人写笔记从不分级全部是加粗文字阅读时勉强能看一旦内容超过两千字想找某一段就非常痛苦。列表分有序和无序两种。无序列表用短横线“-”或星号“*”加空格开头有序列表用数字加点加空格开头- 苹果 - 香蕉 - 橙子 1. 打开编辑器 2. 新建文件 3. 保存为 .md 后缀列表可以嵌套子列表缩进两个或四个空格。这里有一个经验如果你是在做操作步骤说明务必用有序列表如果你只是罗列若干平行的要素用无序列表。这也是语义问题——数字编号暗示顺序点号列表暗示平等。交替乱用会让读者产生错误的预期。强调分为斜体和粗体写法是一个星号夹起来是斜体两个星号夹起来是粗体三个星号是粗斜体。通常用来标注重点术语或警示信息但不要滥用。整段都是粗体等于没有重点我在审阅别人文档时最怕看到这种一眼望去全是黑体压根分不清优先级。2.2 链接、图片、行内代码与代码块写技术内容必备交叉学科的人写报告最常用的就是链接和图片。链接是方括号包文字、圆括号包地址[OpenAI 官方网站](https://openai.com)图片语法长得和链接几乎一样只是前面多一个感叹号这里必须重点说一个坑图片路径。很多人刚用 Markdown 时把图片放在桌面用“C:/Users/xxx/Desktop/图片.png”这样的绝对路径写进去结果在自己电脑上能显示一发到 GitHub、传给同学图片全裂。正确做法是把图片放在你的文档目录下的子文件夹比如images/然后用相对路径引用这样整个项目文件夹移动到哪里图片都跟着走迁移成本低很多。关于图片管理后文工具链章节我再详细展开。行内代码用单个反引号包裹适合在正文里提到函数名、变量名、命令等运行 git status 可以查看当前仓库状态。多行代码块用三个反引号包裹反引号后面可以标注语言类型很多编辑器会据此做语法高亮python def hello(): print(你好) 注意三个反引号必须独占一行起始行和结束行都不能有多余字符否则代码块可能无法正确闭合。这看起来是小事但我在教学里至少有一半以上的学生在这里翻过车尤其是从 Word 复制代码时引号会变成中文全角引号导致解析失败。2.3 表格、引用、任务清单让内容信息密度翻倍表格在基础语法里算“手写比较痛苦”的部分但很有用。Markdown 表格的写法很直观第一行是表头第二行是分隔线每列至少三个短横线后面每行是一条数据| 列名1 | 列名2 | | ----- | ----- | | 内容A | 内容B | | 内容C | 内容D |我自己的习惯是多用表格对比参数、总结结论、列出排查方案因为它能让读者在几秒钟内找到关键差异比大段文字高效得多。很多平台自带表格工具栏Typora 里也可以用快捷键直接插入手写困难的问题并不严重。引用用大于号“”开头适合引用论文原文、其他人的观点或给自己文档加注释 这里是被引用的内容。我对引用有一条规定它只用来表示“引用了外部来源”或“需要特别提醒的信息”不能用它做段落的视觉缩进。有人觉得引用块有底色、好看就把整段内容都塞进去这是很典型的“为了渲染效果牺牲语义”的用法后面转成网页或 PDF 时会造成混乱。任务清单是 GitHub 和多数编辑器的扩展语法在无序列表基础上加方括号- [ ] 阅读文献 - [x] 整理数据我个人做实验记录时很喜欢用它因为它能直观地反映进度而且很多 Markdown 工具支持点击勾选直接把笔记变成简易工单。2.4 换行、水平线与转义最容易忽视的细节换行是新手最先遇到的困惑。Markdown 的标准规则是同一段落内部换行在部分解释器里不会生效必须在前一行末尾敲两个空格再回车才会产生一个硬换行或者干脆隔一个空行让文字成为新段落。这个规则在不同工具上有差别Typora 按 Enter 就会把当前行变成新段落而 GitHub 会把连续行合并成同一段。我给的实用建议是日常写作不要纠结硬换行用“空行分段”这个最保险的做法。空一段再写任何平台都会识别为分段语义上更清晰。只有做诗句、地址等必须保留换行的内容时才需要行末两个空格或使用 HTML 的br标签。水平线用来分隔文档的明显区块三个及以上短横线或星号独立一行即可---注意“---”有歧义它可能是水平线也可能是 YAML 前置元数据的结束标记还可能被某些编辑器当成二级标题的下划线。最稳妥的办法是写成“---”前后各空一行用途明确不会误伤。转义则是在字符前加反斜杠让 Markdown 把特殊符号当普通字符输出。比如你想写一个星号不转义会被当成列表符号你想展示“#”但不让它变成标题就要写成\#。这一条在写 Markdown 教程、解释语法时尤其常用。3. 语义优先的写作思维把 Markdown 当结构语言用3.1 语法糖很多但别为了花哨牺牲可读性语法糖syntactic sugar指的是那些“写起来更爽、但不改变功能”的附加写法。Markdown 的扩展生态里语法糖非常丰富从 Emoji 快捷输入到自定义容器、脚注、高亮标记几乎每个工具都有自己的私货。这些功能确实方便但我要提醒初学者一件事你在某个平台用的语法糖换一个平台可能完全不渲染。最典型的例子是标注块。GitHub 支持在引用块内写[!NOTE]、[!WARNING]这样的特殊容器渲染成带颜色的提示框Typora 支持插入自定义容器某些笔记软件用的是自己的一套语法。你在 Typora 里写得津津有味的自定义容器传到 GitHub 上就是一段没人看得懂的引用文字甚至可能把原文结构搞乱。所以我给的建议是基础篇阶段只用通用语法把标题、列表、表格、引用、代码块、链接图片这六组练熟。等你真正理解了“结构表达”是怎么回事再按需引入平台特有的扩展并且清楚它们会在哪里失效。这不是限制你而是防止你刚开始就建立一套“只在某个软件里成立”的表达体系。3.2 一条内容一条语义标题层级、列表与段落的边界语义化写作说到底是理清边界。我总结了三句话标题管章节列表管并列段落管叙述。如果你发现一个内容既不像标题又不像段落那往往是你选错了表达方式。一个容易犯的错误是把并列的长句子全部用加粗代替标题。比如“实验目的”“实验方法”“实验结果”本来应该是三级标题有人偏写成三个加粗段落打印出来完全可行但无法生成大纲也无法在侧边栏快速跳转。工具层面的代价就是你失去了 Markdown 最大的红利之一从结构自动生成导航。另一个典型错误是滥用列表。有人把一段完整的叙述拆成一二三四条看似清晰实则割裂了逻辑。比如- 我们对样本进行了预处理 - 然后用 PCA 降维 - 最后用 SVM 分类这本来是一个流程叙述应该写成有序列表或者一个带自然连接的段落写成无序列表就丢失了步骤顺序读者不知道哪个在前哪个在后。正确做法是顺序重要的流程用有序列表平行独立的要点用无序列表带因果关系的论述用段落。这三个选择本身就是语义。标题层级的边界也要注意不要跳级。有了一级标题就直接写三级标题中间缺了二级标题这在语义上是不完整的在部分工具的目录渲染里会造成层级错乱。还有一点一份文档一般只需要一个一级标题也就是文档名本身下面直接展开二级章节。不要出现六个一级标题那等于你的文档有六个“皇帝”。3.3 从草稿到多格式输出语义化如何降低转换成本为什么我这么执着于语义因为 Markdown 的最大价值就是“一次编写到处转换”。同一个 .md 文件可以导出为网页、PDF、Word、幻灯片、微信公众号长文甚至 HTML 格式的课件。但转换质量完全取决于你的源文件结构是否干净。我用过一个真实的例子来说明。之前帮学生把一个手写的实验报告转成网页发布她原本用空格和缩进模拟表格还用手动数字序号“1.”“2.”来当编号结果我接手时根本没法自动提取表格数据和标题结构只好全部手工重排。后来她学会了用真正的表格语法和标题层级转换网页时只花了一分钟目录、表格、代码块全部自动生成连样式都不用调。理解这一点你就不难明白为什么计算机初学者应该早点学 Markdown它让你在无意识中训练结构化表达能力。这份能力迁移到 HTML、XML、JSON甚至写论文时用 Word 样式都是相通的——你会本能地思考“这个内容的语义是什么”而不是“它看起来应该长什么样”。知名计算机科学家 Leslie LamportLaTeX 的作者也强调过写作时应该关注逻辑结构而不是视觉表现Markdown 就是这条理念最轻量级的实践载体。4. 工具链与写作工作流边写边看写完即导出4.1 新手推荐Typora、VS Code、Obsidian 怎么选很多初学者问的第一个问题是“Markdown 文件怎么打开、用什么写”。我先把市面主流的编辑器做个对比后面再按场景给建议。工具适合人群核心特点注意事项Typora纯新手、文字工作者所见即所得写作沉浸感强早期免费后来收费但买断制价格不高VS Code程序员、需要写代码的人全功能代码编辑器插件丰富默认不是所见即所得需要装扩展Obsidian知识管理、双链笔记党本地 Markdown 笔记库支持关系图谱功能重对“只想写个文档”的人有负担在线平台多人协作、快速分享无需安装打开即写网络依赖数据在别人服务器上有道云/语雀国内用户、习惯云笔记自带图床、云同步导出方便私有语法较多迁移要小心我的建议是如果你是交叉学科的研究生只想写实验报告、做文献笔记、整理毕业论文Typora 最合适因为它的所见即所得模式最接近 Word 使用习惯学习曲线几乎为零。如果你同时还要写 Python、R、Shell 脚本愿意接受一点点配置成本VS Code 装一个 Markdown Preview Enhanced 插件是投入产出比很高的方案代码高亮和预览都强。如果你有长期积累个人知识库的需求比如把几年的实验记录和文献笔记串起来Obsidian的本地存储和双链能力值得投入但它对新手来说偏复杂建议学过基础篇再用。4.2 预览、导出与图片管理的一些经验写作过程中我强烈建议打开“实时预览”而不是盲写。Typora 本身就是实时渲染的VS Code 里预览快捷键是 CtrlShiftV或者用插件做成左右分栏。你可能会问写个纯文本为什么还要预览因为渲染结果常常和你想象的不一样尤其是表格、列表嵌套、代码块的边界预览能立刻发现问题及时修正避免写完一整篇才发现结构全都乱了。导出 PDF 是老生常谈的需求。Typora 导出 PDF 会自动生成目录和页码但有一个常见问题中文环境下默认字体可能不对导出后中文显示为豆腐块。解决方法是去主题设置里把字体改成系统里存在的中文字体比如“微软雅黑”“思源黑体”或“楷体”。VS Code 的话我推荐用 Markdown PDF 扩展或者先导出为 HTML 再用浏览器打印成 PDF后者对中文兼容性更稳定。图片管理我前面提过用项目内相对路径具体在实际写作里我会这样操作在文档根目录建一个images文件夹所有图片改名成简短英文比如fig1-setup.png在文档里用引用。这样做的收益是整个项目文件夹可以拷走、可以 Git 版本管理、以后放到博客上也不需要重新修路径。不建议的做法是把图片上传到某个图床拿 URL因为图床不在了图片就永久失效。自建图床或本地管理虽然麻烦一点但资料的安全性和长期可访问性远好过免费图床。4.3 用 Markdown 做笔记、写实验报告、做幻灯片的实测方案写实验报告时Markdown 的优势尤其明显。我通常的模板是一级标题是报告名称二级标题分成实验目的、实验环境、实验步骤、数据记录、结果分析、结论与讨论。数据和图表部分直接用表格和相对路径图片嵌入如果有代码就放进对应语言的代码块。最后导出 PDF 提交老师拿到手也不会觉得和 Word 有什么差距甚至比 Word 转 PDF 产生的奇怪分页干净得多。然后说说幻灯片。你可能想不到Markdown 还能做 PPT。常用的方案有两个Marp 和 reveal.js。Marp 是专门把 Markdown 做成幻灯片的工具用“---”分隔每一页幻灯片用语法控制主题和排版导出成 PPTX 或 PDF 也很方便。reveal.js 则是用浏览器做网页幻灯片适合技术分享能把代码块、图片、公式完美展示。对于组会汇报这种场景我实测下来的效率比 PowerPoint 高不少因为你的内容本来就是 Markdown 写的加几行分隔符就是一个新页面完全不需要重新复制粘贴。做学术笔记也是强项。我自己的习惯是一篇文献一个 .md 文件文件开头用标题写论文题目下面用几个二级标题分别记录“核心问题”“方法概要”“数据集与实验”“结论与局限性”。这种方法配合全文检索找资料比翻 PDF 笔记快得多。如果笔记多了还可以给每个文件开头加上 YAML 格式的元数据比如作者、年份、标签配合工具做筛选和分类这就非常接近一个轻量级的个人文献管理系统了。5. 常见问题与排查技巧实录5.1 换行不生效、表格错位最常见的两个“看起来是 Bug”我收到的 Markdown 求助里频率最高的是“我明明换行了为什么渲染出来还在同一行”。原因在前面讲过了标准 Markdown 里单次换行不会生成段落只有空行才能分段。解决办法也很简单两行之间敲一个空行或者行尾加两个空格再回车。如果你不希望空行带来过大的段间距可以用br标签硬换行。第二个高发问题是表格错位。Markdown 表格的解析逻辑比较死板表头、分隔线、内容必须严格按列对齐缺一列或多一个空格都可能被解释成普通文本更常见的是表格前后没有空行导致上一段文字和表格粘连解释器不认。我的检查顺序是确认表格前后各有一个空行确认分隔线的竖线“|”数量与表头一致确认单元格内没有没转义的竖线竖线要写成\|确认分隔线那一行至少有“---”而不是只写“--”。因为单元格里偶尔会用到竖线字符比如a|b不转义就会让表格多出一列导致整表错位。这里顺带回应一个热词Markdown 表格转换 Excel。如果你写好一个 Markdown 表格想变成 Excel最简单的办法是复制表格内容在 Excel 里用“数据→从文本/CSV”导入分隔符选竖线或者用 Pandoc 把 md 转成 xlsx。实测下来 Pandoc 对复杂表格的处理更干净但基础表格直接复制粘贴也基本够用。5.2 代码块与数学公式你真的设置对了吗代码块的问题集中在“三个反引号忘写结尾”“语言标识写错”“从 Word 粘贴来的引号是全角符号”这几点。我建议在写完代码块后养成一个习惯瞟一眼结尾反引号是否独立成行语言标识是否拼写正确。数学公式是很多科研人员关心的功能。Markdown 标准语法里并没有公式但它可以通过插件或扩展支持比如 Typora 的“Markdown 扩展语法”里可以开启行内公式和块级公式行内公式$E mc^2$ 块级公式 $$ \frac{1}{n}\sum_{i1}^{n}x_i $$底层的渲染引擎一般用 KaTeX 或 MathJax。这俩的区别是 KaTeX 渲染快但兼容的 LaTeX 命令少一些MathJax 更全但偏重。不同平台支持的公式语法不完全一样GitHub 上的数学公式渲染有时需要特定的分隔符知乎则几乎只支持自己的 LaTeX 体系。所以如果你的文档需要在多个平台间流转记得先在小范围测试公式是否能显示再大规模书写。5.3 兼容性差异与迁移同一份文件在不同平台显示不同我们前面反复提到扩展语法的兼容性问题这里集中总结一下遇到的典型差异。常见的有差异点标准/通用行为部分平台扩展行为删除线不支持或统一用~~GFM 支持~~文字~~任务列表部分平台不支持GitHub、Typora、Obsidian 支持标注块不支持GitHub 支持[!NOTE]数学公式不支持Typora、Obsidian 支持需开启图表不支持有道云、部分软件支持流程图语法应对思路只有一条核心内容用通用语法平台专属的高级功能当增量不当作必需品。如果你一开始就依赖某种图表语法转移到另一个平台就会发现原来画的图全变成了乱码文本。我在实际教学中见过有人用有道云笔记的流程图语法画了大半年的图后来迁移到 Obsidian 时痛苦地一张张重画这就是典型的“平台锁定”。迁移到不同平台前我通常先做一次“最小化验证”在新平台新建一个文档把源文件里所有特殊语法原样粘贴进去看哪些被识别、哪些变成纯文本、哪些直接破坏排版。验证通过后再批量迁移能省下很多事后修图的功夫。GitHub 上还有工具可以把 Markdown 转成 PDF、Word、HTML比如 Pandoc 是跨格式转换的瑞士军刀强烈建议有长期写作需求的读者学一下基本用法。最后再分享一个小技巧用 Markdown 写文档时养成“纯文本优先”的习惯。不要在编辑器里手动加颜色、改字号不要依赖某个平台才有的按钮。你只需要维护好标题层级、列表类型、表格结构、图片相对路径这四件事剩下的视觉样式交给不同的渲染主题去处理即可。我个人用了七八年 Markdown最大的体会是它真正改变的不是我的排版效率而是我的表达方式——从“这段要加粗居中”变成“这是一个一级标题下的结论段落”一旦你习惯了用结构思考内容无论将来写 HTML、写论文还是做幻灯片都会比别人少走很多弯路。这篇基础篇只带你把语法和语义的地基打牢后面我会再写进阶篇讲讲脚注、目录生成、元数据、借 Pandoc 批量转换以及如何搭建一个属于自己的 Markdown 写作工作流。