88
99## 格式
1010
11- ### 纯文本
11+ ### 文本文档
1212
13- 纯文本指文档将所有内容以文本形式进行存储 。这种方式有一些很明显的好处
13+ 文本文档指所有内容都以文本形式进行存储的文档 。这种方式有一些很明显的好处
1414
1515- 通用,可以在任何有文本编辑器的设备上对其进行修改和查看
1616- 版本控制友好,Git 的 diff/merge 等功能都可以正常使用
1717
18- 对于图片、视频、字体等资源,可以通过文件引用的方式将其包含在文档中
18+ 文本文档本身可以看作一种语言,它们有不同的类型,比如
19+
20+ - 标记语言。这种语言可以标记文档的结构、内容,以及基本的样式/格式,典型例子是 Markdown/HTML
21+ - 排版语言。这种语言不仅可以标记文档,还可以对其进行排版,甚至有函数、变量等编程特性,典型例子是 LaTeX/Typst
1922
2023#### Markdown
2124
@@ -32,9 +35,17 @@ Markdown 是一种标记语言,可理解为语法更简单的 **HTML**,因
3235 - 没有统一的标准。Github、Obsidian、Pandoc 等都有自己拓展的 Markdown 语法。如果过度依赖某个专有的特性,那么文档迁移会有点麻烦。
3336 - 排版和样式的功能欠缺。这导致 Markdown 转换为 PDF 会比较麻烦,通常要借助别的格式。
3437
38+ #### HTML
39+
40+ HTML 全称为 ` 超文本标记语言 ` 。HTML 相比 PDF 更注重内容和样式而不是排版,因此不适合对排版有严格要求的场合。
41+
42+ HTML 使用基于 XML 的语法,并且可以嵌入或引用 CSS/JavaScript。浏览器能够渲染 HTML、解析 CSS、运行 JavaScript。JavaScript 使得 HTML 可以交互,因此 HTML 不仅是一个文档,更是一个应用。
43+
44+ HTML 可以直接用文本编辑器编辑,也可以通过 Markdown 等格式转换而来。HTML 是 Web 应用的核心,有很多框架可以快速制作 Web 应用,可阅读 [ Web 开发] ( ../应用开发/Web.md ) 章节了解更多。
45+
3546#### LaTeX
3647
37- LaTeX 是一个强大的写作排版系统,和 Markdown 一样直接以文本形式存储,但相比 Markdown 有一些显著的区别
48+ LaTeX 是一个强大的写作排版系统,其相比 Markdown 有一些显著的区别
3849
3950- 语法更复杂。Markdown 使用直观简洁的符号,而 LaTeX 使用冗长的命令,学习曲线很陡峭
4051- 排版功能更好。Markdown 事实上并没有排版功能,而 LaTeX 则是排版领域的顶点
@@ -76,26 +87,18 @@ Typst 类似 LaTeX,不过针对 LaTeX 的许多问题进行了改进。个人
7687
7788当然,Typst 也有一些缺点,这些缺点主要是因为 Typst 太年轻。LaTeX 有丰富的模板,无数的宏包,到处都是教程和指南,出版社、期刊等接受度也更高。不过我还是希望 Typst 能够成功,让写作排版多一个选择。
7889
79- #### HTML
80-
81- HTML 全称为 ` 超文本标记语言 ` 。HTML 相比 PDF 更注重内容和样式而不是排版,因此不适合对排版有严格要求的场合。
82-
83- HTML 使用类似 XML 的标签嵌套语法。HTML 中可以嵌入或引用 CSS/JavaScript,浏览器能够渲染 HTML、解析 CSS、运行 JavaScript。因此 HTML 事实上不仅是文档,更是一个应用。
84-
85- HTML 可以直接用文本编辑器编辑,也可以通过 Markdown 等格式转换而来。HTML 是 Web 应用的核心,有很多框架可以快速制作 Web 应用,可阅读 [ Web 开发] ( ../应用开发/Web.md ) 章节了解更多。
86-
87- ### 非纯文本
88-
89- 非纯文本指文档不以纯文本形式存储所有内容。这有几种不同的实现方式
90-
91- - 压缩打包。文档本质上仍然以文本形式存储,只不过打包并改成了新的后缀格式。这通常被叫做容器文件
92- - 页面描述。文档使用了一些二进制指令来描述页面的布局、内容等。这种文档通常由一种编程语言演化而来
90+ ### 二进制文档
9391
94- 当然了,相对纯文本存储 ,这样做会有一些缺点
92+ 二进制文档指使用二进制格式进行存储的文档。相对于文本文档 ,这样做会有一些缺点
9593
9694- 不通用,文件必须使用特定的软件才能编辑和查看
9795- 版本控制不友好,Git 无法使用 diff/merge 等功能
9896
97+ 二进制文档也有不同的实现方式
98+
99+ - 容器格式。这种格式本质上也用文本存储所有内容,只不过进行了打包和压缩,典型例子是 DOCX/PPTX/EPUB
100+ - 平面格式。这种格式使用指令来描述页面如何绘制,并可能对文本、资源进行压缩,典型例子是 PDF
101+
99102#### DOCX
100103
101104DOCX 类似 LaTeX,是一个写作排版系统。DOCX 以 * 所见即所得* 的方式进行写作排版,因此经常被滥用:很多人将 DOCX 作为最终交付的文档格式,尽管它是为写作而非阅读设计的。
@@ -138,10 +141,42 @@ EPUB 通常要使用别的工具进行编辑,比如 **Sigil** 或 **calibre**
138141
139142PDF 全称为 ` 可携带文档格式 ` 。对排版有严格需求的场合(比如书籍出版、论文打印)通常都会使用 PDF 格式。
140143
141- PDF 内部使用文本和二进制混合的格式,文本部分使用类似 PostScript 的语言定义文档结构,二进制部分主要是压缩后的资源数据和内容 ,整个文档是自包含和扁平化的。
144+ PDF 内部使用类似 PostScript 的语言来定义页面的内容和样式,并对文本、资源等数据进行了压缩 ,整个文档是自包含和扁平化的。
142145
143146虽然有软件可以直接编辑 PDF 文件,但一般不这么做,而是将别的更易编辑的格式转为 PDF 格式。DOCX、LaTeX、Typst 直接就可以将文档转为 PDF 格式,而 Markdown、HTML 等借助工具也可以做到。
144147
148+ ### 矢量图
149+
150+ 矢量图本质是数学描述,渲染器会根据这些描述绘制出图片。这种设计使其具有以下特性
151+
152+ - 可以无限放大而不变模糊
153+ - 文件大小不因图形尺寸而改变
154+ - 可以编辑图形对象
155+
156+ #### SVG
157+
158+ SVG 是一种流行的矢量图格式,直接用文本进行存储。
159+
160+ SVG 使用基于 XML 的语法,支持编写 CSS 来控制外观,并且可以绘制动画。
161+
162+ SVG 非常适合 Web 应用,由于其直接以文本进行存储,因此可以通过代码控制图形,从而实现非常强大的交互。
163+
164+ ### 光栅图
165+
166+ 光栅图本质是像素阵列,渲染器会将每个像素放置在一个网格中。这种设计使其具有以下特性
167+
168+ - 放大后会变模糊
169+ - 图形尺寸越大,占用的空间就越大
170+ - 只能进行像素级的编辑
171+
172+ #### PNG
173+
174+ PNG 是一种流行的光栅图格式,存储为复杂的二进制格式。
175+
176+ PNG 可以无损压缩,支持多种颜色模式,支持透明通道。
177+
178+ PNG 适合需要无损压缩或者透明通道的场合,比如有透明背景的图片、需要无损保存细节的图像等。
179+
145180## 工具
146181
147182### 文档转换
0 commit comments