• 本文重点讲 markdown; 会提及: html, typst, latex.

标记语言

标记语言是一种文本格式, 负责将各种内容(文字, 图片, 视频等)统一编码.

常见的标记语言分为三类:

  1. 描述性语言: HTML, XML -> 直接描述了一个页面布局.
  2. 可以被转换为 HTML 的, 简化后的标记语言: markdown, ebook 等.
  3. 用于保存程序所需的配置文件: json, toml, yaml 等.

为什么要有标记语言

  • 为了把你见到的内容更好的传递给别人

pdf 格式可以保证所有人在所有设备上看到的内容都是完全一样的, 这固然是好的, 但是有的时候, 我们希望自己编写的内容能适应各种设备: 在 pc 的 16:9 的横屏上 和 手机的竖屏上都能比较好的显示.

HTML 等标记语言不直接显示内容, 而是会通过着色器, 指导着色器如何显示内容. 这样在标记语言中, 我们就可以指定图片的相对屏幕宽度, 字体的大小也可以适配系统的大小(例如: 浏览器的字体设置和HTML的字体大小共同影响实际显示效果).

Markdown

html 有着众多优势, 但是直接编写 html 费时费力, 并且许多情况下, 我们并不需要 html 的高级功能. 例如: 文档编写, 博客, 笔记等 -> markdown 应运而生, 并迅速被计算机工作者广泛接受.

markdown 的特点是:

  1. 使用 markdown 编写文档时, 用户不需要关注排版问题, 可以专注与内容的编写
  2. 纯文本格式, 方便纳入 git 管理
  3. markdown 的具体显示效果取决于目标平台的模板, 一份 markdown 可以无需修改, 在多个平台上渲染. 一个平台下的多个 markdown 只需要修改模板即可实现更改排版.
  • 大部分排版语言都遵循 内容与排版 分离的设计模式, 文本分为多级标题, 正文内容, 列表, (各种)表格, 引用, 加粗, 斜体, 公式等, 对于这些类别具体如何显示(标题字号, 位置, 颜色等) 都不需要在编写内容的时候思考.
  • 但是一个叫 word 的软件, 并没有将这一设计模式放在关键位置. 并且非纯文本, 输入公式非常麻烦.

markdown 语法

blog 内查看.

  • 插入普通图片: ![替代文本](url "标题")
  • 插入base64图片:
    ![替代文本][base64标签]
    
    [base64标签]:data:image/png;base64,base64_code
    

什么地方会使用 markdown

得益于 markdown 极低的学习成本和顶级的实用性, 现在 markdown 已经几乎成为了程序员界的通用笔记语言

  1. 在线教程, 文档, 笔记, 非正式手册.
  2. 各类博客, 评论(b站笔记评论支持markdown), qq(需要插件)等聊天软件.
  3. markdown 元数据的特点也可以用来制作简单的 slides(演示文稿).

排版语言

用于出版物的发行, 要保证的是所有设备的一致性.

latex

老牌排版语言, 宏语言, 被广泛用于论文撰写, 专著发表等地方, latex 遵循内容与格式分离的特点, 想学精通 latex 难度较大, 但是, 不需要详细学习也可以在给定模板的情况下, 快速上手撰写内容.

latex 可以根据模板灵活配置, 因此也广泛用于学术 slides 制作(beamer包).

缺点: 宏语言, 语法过于抽象, 学习难度大, 编译速度慢(无法即时查看).

typst

rust 语言开发的一个现代排版系统. 非宏语言, 支持内嵌代码脚本. 兼容 latex 公式语法, 自动化包管理, 有完整构建系统(速度比 latex 快几十倍).

在逐步替代 latex 的使用场景, 有的大学的毕业论文模板已经切换到了 typst.