为什么你需要学一门标记语言

为什么你需要学一门标记语言

MoGuQAQ Lv4

从一件烦人的小事说起

在 Word 里排了大半天的文档,导成 PDF,页眉的横线歪了,有一段还擅自跑到下一页去。挪两下再导一次,毛病换了个地方冒出来。来回几趟,人基本就麻了。

这事怪不到谁头上。Word 把内容和版式存在同一个文件里。你敲下去每一个字,它同时在记两件事:这句话是什么,以及它该长什么样。

两条信息缠在一起,只要换个尺寸、换个软件、换个字号,总有一处会松掉。

可以这么理解:内容是你写的字,版式是印字的模子。两样焊在一块儿,想换个模子,字就得跟着重刻。

标记语言要做的事,说白了就一句:让它只管”这是什么”,不管”长什么样”。标题、引用、公式,这些是你要交代清楚的;至于标题多大、用什么字体,交给另一道工序去算。

换成标记语言之后,那些反复折腾的事会少很多。文件是纯文本,扔进任何编辑器都打得开,丢进 Git 能看清改了哪几个字,二十年后还是那几 KB。同一份稿子,今天渲染成网页,明天导成 PDF,不用重敲。

再往深一层,因为结构写在明面上,脚本能读懂它,自动生成目录、检查引用、批量转换这些事才有得做。

对每天都要写点东西的人来说,上面这几条里,至少有一条是用得上的。

三个语言,三种脾气

能见到的标记语言不少,但值得花时间的主要是这三个:Markdown、HTML、LaTeX。它们经常被摆在一块儿比,各伺候各的活儿,差得挺远。

Markdown:图个快

用 Markdown 的理由很单纯,手别离开键盘就行。

# 打头就是标题,* 包起来是重点,- 开头是列表。全是你本来就顺手的符号,它只是给这些符号派了个活。

最舒服的一点是源文件本身就能读。一份没渲染的 .md 发给别人,对方照样看得懂,不用截图,不用转格式。

所以日常写字这块地盘基本上是它的:笔记、README、博客草稿、会议纪要。GitHub 上那一大堆文档也是它写的。没什么玄机,就是快,不打断思路。

当然它也做不了太多事。表格一复杂就开始难看,交叉引用、自动编号的公式更是别想,只能往外借,借 HTML 或者借 LaTeX。写得多了,这堵墙迟早会撞上。

真正让人头疼的是标准问题。Markdown 压根没有唯一的标准,CommonMark、GFM、各家平台自己加的那些料,同一份文件换个地方渲染,样子可能就不一样。

在 A 平台排得整整齐齐的表格,粘到 B 平台可能就歪了。用它,就得接受这份将就。

HTML:得看它底下是什么

网页的母语就是 HTML,别的语言写到最后也得编译成它,浏览器才肯看。

它管的事情跟 Markdown 不太一样。Markdown 关心的是”一段文字怎么排”,HTML 关心的是”一个页面由哪些部分组成”。哪块是导航,哪块是正文,哪张是插图,到哪儿收尾,都得用标签标出来。

麻烦在于标签是成对的,嵌套一深就分不清谁包着谁。随手写出来的页面往往是一坨 <div>,形式上包住了,语义全丢了。

今天绝大多数网页内容,人写的时候用的是 Markdown 或者 CMS,真正落到 HTML 那一步,是机器在干。

那还学不学?学。不过重点不该是练着手写标签,而是搞清楚浏览器把这些标签理解成了什么。你在页面上按个 F12,冒出来那一堆层层嵌套的框,就是浏览器读出来的结构。

样式为什么失效、无障碍为什么做不好、爬虫为什么抓不到内容,答案通常都在这堆框里。

LaTeX:先劝退,再说值不值

第一次装 LaTeX 的体验,基本就两个字:劝退。

编译器要下几百兆甚至几个 G,装完了写第一行中文发现是乱码,得再去补宏包。

写错一个括号,它给你吐三页报错,那些报错还经常指着一个你根本没写过的行。最折磨人的是全程看不见成品,改一个字想知道效果,就得重新编译一遍。

所以很多人装完,跑了个 hello world,就再也没打开过。

但它要解决的问题,确实没别的东西能替代。

一份文档里有几十个公式、上百条引用、十几张图表,编号还得互相对得上,怎么排得又快又准?这是它的主场。

公式是它的看家本事。积分号的上下限该落在哪,多行公式怎么对齐,Word 里要拿鼠标拖半天的事,它一行命令解决。

拿它写一篇两千字的随笔,确实是开高射炮打蚊子。可只要文档里有十个以上的公式,或者对分页、行距、参考文献格式有硬要求,它就从”麻烦”变成了”最省心的那个”。

三个放一块儿比

光看文字描述可能还是有点虚,列成表直观一些:

MarkdownHTMLLaTeX
定位快速书写网页结构印刷级排版
学习成本半天几天(不算 CSS)几天到几周
源文件可读性高低中
表现力上限低高极高(公式、交叉引用)
主要输出网页、PDF(经转换)网页PDF
典型用户写笔记和文档的人前端、爬虫、要把网页控到像素的人学术作者、出版

表格里”表现力上限”那一栏,大概是挑人最快的依据。你写的东西里有没有公式、要不要精细控制版面,答案基本就能决定你该往哪边走。

XML 那一场大型误会

这三个语言为什么各守各的地盘,死活合不到一块儿去?看看 XML 这三十年怎么走的,大概就能明白。

1998 年,XML 成了 W3C 的推荐标准,往上追是更老更臃肿的 SGML。它当时的目标开得极大:做一种能描述一切结构化数据的通用格式。

放在那个年代,没人觉得这想法离谱。XML 是纯文本,标签名自己起,跨平台,还能配一套 Schema 严格校验。

2000 年前后那几年,气氛是所有人都相信它要一统天下。传数据用它(SOAP),写网页用它(XHTML),写文档用它(DocBook),配置文件也用它,连单机软件的工程文件都跑不掉。

“XML 化”在当时近乎一种政治正确,你不用,好像就落伍了。括号里那些缩写不用记,你只要知道一件事:那几年,凡是能被结构化的东西,都有人想拿 XML 装一遍。

结果十几年过去,几乎是全行业一起往外撤。

问题出在一个特别不起眼的地方:这东西是人写的,而它写起来太啰嗦。

一个键值对,要写成 <key>value</key>。套上三层,满屏都是尖括号,本来不到一百行的配置能写到三百行。写的人手酸,读的人眼花,传出去还比别人胖一截。

工具链也跟着跑偏。XSLT 本来是想做通用转换,做着做着自己变成了一门没人愿意学的语言;XSD 能严格校验,可写一份校验规则,比写十份数据还费劲。

于是从 2005 年前后开始,替代品一个接一个冒头。传数据投奔 JSON,少一半字符,浏览器原生就能解析,学习成本接近于零;配置文件转向 YAML 和 TOML,多敲一个空格少打两个尖括号,这笔账谁都会算。

XHTML 2.0 被放弃、HTML5 笑到最后,是这场撤退里最有标志性的一幕:W3C 精心设计了好几年的”更纯粹”的网页格式,输给了一个向后兼容、允许你随便写的 HTML5。

XML 当然没死,只是退到了几个特定的地方。

而那些地方,恰好是被嫌弃的”啰嗦”翻了个面、变成优点的场景。

医疗的 HL7、财报的 XBRL、地理信息的 GML,这些领域靠 Schema 把字段卡死,标签写错一个就通不过。宽松的 JSON 在这儿派不上用场。

你天天打开的 .docx、.xlsx,本质是个 zip,里面全是 XML;SVG 是 XML,安卓的布局文件也是 XML。出版业那套 DocBook,到今天还在用。

绕完这一大圈,XML 留下的教训挺朴素:通用性扛不过书写成本。 一个格式理论上能表达一切,不等于人愿意用它表达一切。人的耐心是有配额的,工具得认这条线。

这也是那三个语言死活捏不到一起的原因。它们伺候的场景差得太远,硬凑成一个,谁用着都别扭。

到底怎么挑

真到要选的时候,不用列什么需求表。脑子里过几个问题,答案基本就浮出来了。

给谁看,这个问题最直接。写给人读的,从 Markdown 起步;要给浏览器看,HTML;要交给审稿人或者付印,LaTeX;要喂给机器解析,那先去考虑 JSON 和 YAML,标记语言多半不是你要找的东西。

内容本身有多复杂,也决定了你能走多远。有公式、有大量交叉引用、分页要精确控制,上 LaTeX。只有标题、列表、代码块、简单表格,Markdown 完全够。要表单、要交互、要播视频,HTML。

还有一件常被忽略的事:你写的频率和长度。每天几十条短笔记,Markdown 越轻越好;一年憋一篇长文,LaTeX 值得投入;偶尔发两篇博客,Markdown 配个静态站点生成器,收工。

工具链能背多重的包,也算进去。不想装东西、要边写边看效果,Markdown;已经在前端那条船上、浏览器就开着,HTML;能接受几百兆的编译环境、也愿意翻报错,LaTeX。

最后一个问题有点特别:这东西你想让它活多久。记几天就扔的,随便;要存十年以上的知识库,Markdown 这种纯文本最稳;要当正式出版物归档,LaTeX 或者结构化 XML,它们的规范是公开的,不会哪天突然不认。

一圈问下来,通常就剩一个答案了。

万一还并列,说说我自己的做法:日常记东西我基本全用 Markdown,但真要排论文,绝不会硬拿 Markdown 去扛,该上 LaTeX 就上。工具是有分工的,硬扛只会把自己搞累。

说成一句话:内容以文字为主,Markdown;要和人交互,HTML;文字本身就是精度问题,LaTeX。

学的时候,别背语法

这三种语言底下是同一个想法:你描述结构,渲染器负责表现。抓住这条,学哪个都是在学同一件事。

Markdown 一天够了。语法表一页纸,半小时能看完,剩下的工夫别花在语法上,花在习惯上。动笔前先想清楚标题分几级,先把骨架搭出来再填肉。

工具随手挑一个,Typora、Obsidian、VSCode 都行,重点是别把时间耗在配置上。这事上栽跟头的人不少,学 Markdown 的热情全烧在折腾主题和插件上了,正文没写几行。

HTML 两三天。只学两件事:语义标签怎么用,DOM 这棵树长什么样。<div> 能解决一切,但那不叫结构。CSS 和 JS,等真要动手做网页了再说。

LaTeX 一周起步。千万别从命令表学起,那是劝退最快的路径。找一个现成模板,期刊的、学位论文的、简历的,先把它跑通,再一点点改。

学会分辨文档类(\documentclass)、宏包(\usepackage)、环境(\begin{}...\end{})这三层,大部分模板你就读得懂了。这行真正的技能是查文档,符号表没人背。

剩下几句算是经验之谈。学的时候拿真东西练:学 Markdown 就写下周要交的周报,学 LaTeX 就排版手头正写着的那篇论文,为练而练的东西,练完就忘。

工具链丑一点就丑一点,LaTeX 报错、渲染结果不一致都是常态,价值在最后的产出上,中间过程笨拙些可以忍。

最后,别在选型上磨叽,三个都能把活干完,差别主要在体验的细枝末节,挑一个开始写,写够了你自然知道什么时候该换。

最后

很多人以为标记语言是程序员的专属工具,这误会挺深。它要解决的事情很普通:怎么让写下来的东西脱离某个软件,自己活下去。

语法本身给不了你太多,都简单,几天的事。真正能装进脑子里的是一种习惯:写东西的时候会自然分出两层来看,一层是内容和结构,一层是版式和外观。

这个分层一旦有了,以后不管你用 Word、用在线文档,还是用什么新冒出来的工具,都不太容易被它绑住。

挑一个,今天就用你最想写的那份东西开个头。挑哪个,前面那些问题过一遍,三分钟的事。

  • 标题: 为什么你需要学一门标记语言
  • 作者: MoGuQAQ
  • 创建于 : 2026-09-26 16:21:03
  • 更新于 : 2026-09-26 16:21:03
  • 链接: https://blog.moguq.top/posts/26092601/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论