LaTex,Mardown和TeXmacs:如何选择写作的正确姿
首先,对三者的一些基本功能做一个基本的评价;
LaTex | Markdown | TeXmacs | |
---|---|---|---|
即时预览 | Y | Y | |
图片编辑 | Y | Y | |
数学支持 | Y | Y | Y |
代码插入 | Y | Y | Y |
网络模板 | Y | ||
扩展支持 | Y | Y | |
选择分页 | Y | Y | |
输出格式 | Y | ||
使用范围 | Y | Y |
它们是什么?
LaTex(音译“拉泰赫”)是一种基于TeX的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)(同时这位也是写出了号称分布式计算领域内最难懂的论文“Paxos Made Simple”的那位)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
TIM图片20180321113513.png TIM图片20180321113522.pngMardown是一种语言,一种可以被普通的文本编辑器编写的标志语言,通过一些简单的标志可以使得简单的文本内容具有一定的格式。Mardown本身的语法功能并不算强大,但是由于它强大的可扩展性,衍生出了极多的强大的版本和编辑器,它们在语法上基本兼容,只是在一些语法和渲染效果上有所改动。由于它的语法简洁明了,且功能比纯文本更强,因此有很多人使用它来写博客(最著名的例子应该是全球最大的同性交友平台GitHub)。它的强大之处一定程度上取决于你所使用的编辑器。这里使用Typora作为比较对象(本文同样使用该编辑器完成)
1443947-bf3776592815de57.pngTeXmacs是一个所见即所得的编辑器. 你也许想到了LyX, TeXworks之类的工具, 但是TeXmacs和它们不一样—它并不依赖LaTeX. 他吸收了LaTeX的优点, 即文章的排版非常美观. 同时它又不同于LaTeX, 比如, 在TeXmacs里是没有“源文件”这个概念的. 另外它还有一些非常实用的特性(尤其是对于数学公式的支持), 可以极大的提高编辑效率。可以这么简单的理解,TeXmacs既有LaTex的排版优点,同时又吸收了许多Markdown编辑器的功能,算是二者的一个综合体。
TIM图片20180321120357.png功能横向对比
就文中第一个表所提到的功能给它们做一个横向对比,由于可能对三者的使用并没有完全掌握,所以可能有些粗糙:
1、即时预览
-
LaTex:LaTex具有非常多优秀的编辑器,但在使用这些编辑器之前首先要在电脑上安装TexLive等编译系统才可以使用,专门的编辑器有TexStudio、TexWork等,一些常见的IDE如VScode,Atom通过安装插件也可以实现撰写LaTex文档的目的。
LaTex的编辑器均没有即时预览功能,这是由于本身其作为一个排版系统的特性所决定的。一般需要经过编译运行,产生PDF文件之后才能实现预览功能,一般编辑器会使用双栏排版,一栏LaTex书写源代码,另外一栏提供编译运行后的预览功能。
如下图,overleaf是一个在线的LaTex编辑器(额外说明:该网站提供了一个富文本模式下的LaTex实时预览,但是效果马马虎虎)
-
Markdown:因为其语法的简单便捷,Markdown可以说是拥有世界上最广泛支持的标志语言之一。绝大多数的Markdown编辑器都提供了即时预览功能(部分IDE可能没有),在写作的过程中可以即时得到反馈。同时一般的编辑器也支持SourceCode模式,给你足够复古的体验。
下图是Typora编辑器:
-
TeXmacs:与我而言,TeXmacs最让我惊艳到的一点就是它在书写数学公式的时候的实时预览功能,在使用LaTex的时候我就常常因为一个手抖打错数学公式中的一个符号,然后在那一长串的源码中玩起“一起来找茬”游戏,它的数学支持真的是非常棒,使用起来也相当方便,此外在Texmacs中存在着大量的快捷键,如果熟练掌握的话,写作效率会得到极大的提升,。
但是实话说Texmacs的界面是真的太简陋了,而且不知道是我的机器的原因还是其他,我在是使用Texmacs写东西时总感觉偶尔有点卡顿,不够流畅。
2、图片编辑
-
LaTex:LaTex的图片编辑支持在这三者之中毫无疑问是独占鳌头的,这不但得益于LaTex本身的系统设计,更加要感谢所有LaTex背后的开发小组的努力(TIKZ等宏包的出现无疑扩展了LaTex的图文功能)。在LaTex中支持图片的绝对路径插入,插入的图片可以选择尺寸,位置和模式,而利用tikz宏包,我们可以利用其自带的命令迅速地作出我们所需要用到的图片。
下面是利用tikz作图的一个代码实例
\begin{tikzpicture} % draw the axis \draw[eaxis] (-\num,0) -- (\num,0) node[below] {$x$}; \draw[eaxis] (0,-\num) -- (0,\num) node[above] {$f(x)$}; % draw the function (piecewise) \draw[elegant,domain=-\num:-1/\num] plot(\x,{1/\x}); \draw[elegant,domain=1/\num:\num] plot(\x,{1/\x}); \draw[elegant,orange,domain=-\num:\num] plot(\x,{sin(\x r)}); \end{tikzpicture}
-
Markdown:和LaTex相比,Markdown的图片编辑功能有些相形见绌。在Markdown里,插入图片较为简单,使用标记即可在所标志位置上插入图片,比较遗憾的问题就是在Markdown中并不能自主控制图片的大小,而是由markdown进行自动调整。
-
TeXmacs:Texmacs的图片编辑功能也较为强大,比较优秀的一点就是可以直接粘贴复制图片,无需使用路径即可。同时在Texmacs内也可使用其自带的功能进行直接画图,较LaTex来说,其可视化作图和LaTex不太一样的是,LaTex的
.tex
源文件中并不包含图片,因此需要单独存储图片。但是Texmacs中的图片是嵌入在.tm
文档中,移动起来相当方便。下图是一个利用TM作图的一个例子:
pasted_image037.png
3、数学支持
-
LaTex:LaTex的数学功能应当算是非常丰富的,其内置了许多的数学环境,并且通过配合宏包的使用可以对公式的间隔,字体,编号等进行非常多的调整。利用专用的LaTex编辑器中的快捷键可以避免输入和记忆太多的命令和数学符号。
另外在LaTex中也可以相当简便快捷地插入表格,矩阵。
-
Markdown的数学功能较为薄弱,可以做到插入数学公式,但是功能性仍然比较 薄弱,虽然兼容LaTex的部分语法,但是仍然不是很适合大量的公式输入,不太建议用Markdown书写带太多公式的文档。但是MD的表格插入做得十分便利,就像在Word中插入表格一样方便,虽然表格的大小不能自由确定,但是其自适应做得不错。
比如这条公式就是用MD键入的:$\sum_{i=1}^{n}\sqrt{i+\sin(i)}$
-
Texmacs:Texmacs的数学功能在这三者之中应该是最方便,最适用的。这也是为什么大多数人喜欢用它来代替LaTex的原因之一。
4、代码插入
-
LaTex:关于插入代码,LaTex依赖专门的宏包来完成。利用特定的宏包,LaTex可以更改代码配色,控制代码样式,给代码加入专门的代码框。设置阴影等等。并且也可以插入伪代码或者算法。
下图是一个LaTex的插入的代码的示例:
20160825100220467.png -
MD:MD的代码插入最方便的一点就是便利,只需要用到标志```(三个连续的逃逸符号)即可插入代码框,在代码框内可以选择语言类型便于着色。显示效果如下图(取决于编辑器)
import numpy as np import scipy as sp you = me = 1 love = (you and me) print("i love jiran!")
-
TM:TM同样可以做到插入代码,但是可供选择的插入类型并不算太多,但是也是囊括了主流的C++,R,Python等。并且可以快速插入伪代码,算法。
TIM图片20180321185251.png
5、网络模板
-
LaTex:LaTex的各种各样的模板相当之多,不但有各个学校自己的学位论文模板而且网络上还有许多开发者留下的比如简历模板,报告模板,论文模板,而各大期刊对于投稿也有自己的格式要求,并提供了相应的LaTex 模板,无需用户自己设定字体格式。
例如LaTex模板等,资源非常丰富。
-
MD:MD没有太多的模板,实际上也不需要太多的模板,因为语法简便所以用户可以自由地作出自己的模板。
-
TM:同样和LaTex类似,内置的就已经有许多模板了。
6、扩展支持
这个功能基本上是只有LaTex独有,就是因为LaTex极强的拓展性,具有各种各样的宏包,随着功能拓展的需要不断进行更新。一般的LaTex IDE就会自带着专门的宏包管理器,比较方便。
至于Texmacs,据我浅薄的认知,其IDE可以安装许多插件,但具体我没有怎么用过。
TIM图片20180321190038.png
7、选择分页
LaTex可以选择按照系统排版自动分页,也可以安装自己的想法选择独占一页或者自由安排版面,可用性较强。相比之下MD有些相形见绌。Texmacs的文档似乎没有提到分页这一点,如果有什么黑科技可以实现的话,请一定要告诉我。
8、输出格式
LaTex的默认输出格式是PDF,但是通过下载一些特定的工具如Tex2Word等可以将.tex
文件转变成word文件。
而Markdown的话则是依赖于编辑器,对于我现在所用的Typora编辑器,在安装了Pandoc之后,输出格式有了非常多的选择例如PDF,HTML,Word,EPUB,LaTex,图像等。
对于TeXmacs其不但支持导出PDF,也支持导出LaTex和HTML。
9、使用范围
这里主要提到Markdown,其作为一门轻量级标志语言得到了无数人的青睐,因此基本上很多网站都会提供相应的支持,许多程序或者库函数的说明文档一般都是用Markdown写的。
各自的特色和适用场景
综上所有的内容,做一个简单的总结吧。
- LaTex更加适合去写一些更为正式的论文或者比较复杂的文章和书籍。
- Markdown的功能比较简便好用适合用来写一些blog甚至是比较简单的实验报告等
- Texmacs如果你的文章需要进行大量的数学公式推导和书写,建议使用Texmacs,如果你可以忍受它非常简陋的界面的话。