描述文章内容的格式与需求
适应各种展示场合的标记语言
建立主页可以使用基于静态主页的方案或者基于动态主页的方案。动态主页虽然提供的内容类型较为丰富,但是托管方式比较复杂,创作代价比较高,受运行时环境的影响较大,难以同时适应网页、打印等不同场景的需求。我们需要一种
- 内容与格式相分离的描述,以允许我们写作时仅需要关注标记内容。这种描述语言要具有强大的表现力,以适应丰富的表现需求(高亮、文本块、编号、代码高亮、表格、抄录、引用、参考文献等);同时又要足够简洁,尽可能自动地计算出渲染需求。
- 这种格式能够向HTML网页、LaTeX、PDF、Word以及维基等多种格式转换。在转换的时候需要人工处理的内容要尽量少。因为我们希望复用博客里面的文章到不同场合(不同网站、不同目的、不同输出)的时候尽可能不需要改动。
然而,这诸多需求之间存在显著的矛盾。在这些矛盾的折衷中,我们看到基于Pandoc的Markdown标记相对而言最接近于我们理想的情况。这是因为:
- 现在已有许多Markdown渲染器作为渲染内容的后端程序。许多人员在根据需求不断地改进Markdown;
- 虽然Markdown方言很多。但是Pandoc博采众家之长,兼容多种Markdown格式,同时还可以在自家的Markdown和其它Markdown格式之间互转;
- 采用Pandoc标准的Markdown格式,可以向HTML、PDF、演示文稿、Word地格式转换。在转换过程中,基本元素(标题、文字加粗倾斜、列表、图片等)均可以展示出来;在表格、插图、参考文献当中也有部分的支持;
- 可以使用过滤器手动改进Pandoc元素的渲染方式。
具有最好展示效果的标记语言
LaTeX目前是已知的一种在表现内容方面质量最高的文本标记形式。除了LaTeX本身在设计理念上的优势,丰富的宏包支持以及庞大用户群的持续贡献也是选择LaTeX的重要的因素。然而,LaTeX语法比较复杂,要生成PDF之外的其它格式,同时保持排版效果是比较困难的。在LaTeX世界当中可以找到处理浮动体、编号、文本块高亮以及图表处理的许多有价值的方案。比如
- 通过LaTeX的
subfig、wrapfigure、caption等宏包提供的环境与命令可以方便地调整图表的组合、编号以及出现位置。 - 通过LaTeX的
longtable、tabularx、tabu等宏包提供的环境可以指定表格的宽度、对齐、高亮样式等。Markdown对表格的支持没有LaTeX那样方便。 - LaTeX可以通过
amssymb和eulervm等宏包使用更多的数学符号,还可以自定义数学符号与排版还境,比如范畴论中用到的交换图。这些命令可以在LaTeX文档的导言区中进行配置。 - LaTeX有算法宏包
algorithmicx、语法高亮宏包listings与minted、化学公式宏包chemfig、UML类图宏包umlcd、乐谱排版宏包abc、lilypond、musixtex等,可以支持领域特定元素的展示。 - 总而言之,LaTeX在做到格式与内容分离的同时,还保持了强大的定制格式的能力。