LaTeX编辑器的选择——TeXstudio - 知乎

体坛导报 04-06 阅读:133 评论:0
LaTeX编辑器的选择——TeXstudio - 知乎

  用什么软件编辑LaTeX文档?历史原因,可选方案过多,于是选择困难症出现。特别是有些软件的入门难度还很高。

  无论是什么选择,都应明白选择的原则:明确需求。确认代价。

  在满足需求的前提下,选择代价最小的,就是这么简单。所谓代价,包括学习成本、硬件需求、问题解决难度、通用性障碍等。

  最常见的误区是:在不清楚自己的需求前盲目选择。在网上看一些假大神的评论。我甚至见到知乎上有人说LyX不能导出LaTeX的文档格式、不能输入LaTeX代码。旦凡正经用过LyX的人都不会说出这种话。硬件需求不能过高,运行速度轻快。可定制性高。代码配色可自定义。输入快捷,支持自动补全或代码块(snippet)。快捷输入方面可参考How I'm able to take notes in mathematics lectures using LaTeX and Vim。知乎上也有不少相关文章(搬运)机器之心:世界上最好的编辑器Vim:1700多页数学笔记是如何实时完成的infinity1900:【LaTeX 编辑环境搭建】TeX Live+VS code+HyperSnips(for math)插件预览方便。该需求应该说是最重要的一个。LaTeX内容和格式分离的优点在写东西时是最大的问题。毕竟我们是内容输出者,不是打字员。写材料时最耗时间的不是输入本身,而是思考。比如输入一个公式,在输入完成前你自己也不知道它最后是什么样子,你需要看着已经写出的部分继续推导。你看着下面公式的时候还能推导下去吗?Z_{\rm eq} & = \frac {\frac{{\rm j} \omega L}{{\rm j} \omega C_{1}}} {{\rm j} \omega L + \frac{1}{{\rm j}\omega C_{1}}} + \frac{\frac{{\rm j} \omega L}{{\rm j} \omega C_{2}}}{{\rm j} \omega L + \frac{1}{{\rm j}\omega C_{2}}} = \frac{\frac{{\rm j} \omega L}{{\rm j} \omega C_{1}}}{{\rm j} \omega L + \frac{1}{{\rm j}\omega C_{1}}} + \frac{\frac{C_2}{C_1}}{\frac{C_2}{C_1}}\cdot\frac{\frac{{\rm j} \omega L}{{\rm j} \omega C_{2}}}{{\rm j} \omega L + \frac{1}{{\rm j}\omega C_{2}}}\\图1:这个公式你还能推导下去吗?

  所以说,需要看着公式最终输出后的样子才方便。如此,预览就是必需的功能了。

  根据预览的范围,我把预览分成了:片段预览、全文预览。

  按预览的方式,还可把预览分为:编辑器内预览、编辑器外预览。

  有人把全文预览称为实时预览,这是实现了编译的自动化而已。所谓“实时”,我觉得还有差距,特别是对大文档,编译时间较长,实时也就成了笑话。解决方法只能是使用小文档、使用增量编译(不太了解)。上边公式推导的情况中,我希望1秒内就看到公式的最终形态,超过2秒那是完全不能接受的。工具绝对不能成为思考的阻碍!

  所以,全文预览除非实现了快速编译,否则都不能满足要求。自动编译也不行,因为自动编译并没有解决编译速度慢的问题。速度上能满足要求的就只有片段预览了,编译量小,速度才可能满足需求。

  需求中的前3点实现都不难,只要不是过于简陋的编辑器都可胜任。

  VScode:功能强大,但臃肿,需要配置。预览需求不满足。淘汰!

  片段预览是用鼠标悬停方式实现的,鼠标移动后还要等一下才能看,且继续输入就又看不到了。

  全文预览速度也不快。

  Emacs:强大,上手慢。预览需求半满足,不兼容rime并击。淘汰。

  预览通过AUCTeX整合的preview-latex实现,可见最终形式,但只能是在光标离开预览区域时才行。应该说这种预览方式也还凑合,只是编辑状态和最终形态不是实时同步可见,还没达到满意的程度。

  不兼容rime的并击是我无法接受的,小众需求,没有找到解决方法。

  LyX:半所见即所得,公式推导方面有碾压性的优势。预览需求满足使八成。输入快捷性差,但快捷键也不少,用熟了也还行。可用。图2:在LyX中输入公式

  片段预览同样用AUCTeX整合的preview-latex,效果很好。不仅支持公式预览,图片(Tikz等)也可以。存在的问题也和Emacs一样,编辑状态和最终形态不是实时同步可见。

  用LyX自己的样式在编辑器内对内容进行渲染,多少会影响代码的纯洁性,可接受。

  可以输出LaTeX格式(.tex)文档,可以直接输入LaTeX代码。

  我曾用其编辑过超过300页的大文档,可堪重任!

  TeXworks:轻快,无需配置。预览需求不满足。打开大文档是死穴!淘汰。

  输入方面其实也较强,可以自定义代码片段。

  Vim:强大,需配置。预览需求不满足。小文档可替代TeXworks。

  非常轻快,很满意。

  特别喜欢Ultisnip插件,非常强大。

  中文显示要占两个英文字符位置(难看死,不知道怎么改),不符习惯,但也不是不能接受。

  VimTeX插件有片段预览功能,但使用太不方便,每次都要重新选定,还不够折腾的。

  LaTeX编辑器还有很多,上边列出的几个其实已经看出问题的关键了:预览。

  下边通过TeXstudio来说明。

  TeXstudio:不算轻快,也不算臃肿(比VScode强),无需配置,支持各种预览,支持自定义“宏”(类似Vim的Ultisnip插件)。直接看图吧。图3:行内预览(输入速度很慢,方便查看效果)图4:Tikz画图时的行内预览

  图3、图4显示了TeXstudio的行内实时预览和代码块使用。只有在这样的显示方式下才能边思考边输入。在显示Tikz图形的时候,元件库是预读取的,所以速度比较快。虽然没有TikzEdt快,但也还算是满意,毕竟是集成在编辑界面中的。再说也真没慢太多。

  图3、图4的预览方式需要进行一点儿设置,菜单:Options-->Configure TeXstudio...,在弹出的窗口左边找到Preview,点击它,按图5设置即可。图5: 预览设置

  编辑文字时需要预览,选定要预览的部分,ALT+P即可(或者用图6所示的右键菜单)。我图3、图4中的操作是先选定了一个空行,ALT+P,再进入选定的行内输入公式或编辑Tikz图形的。图6:预览右键菜单

  我为什么需要这种预览?因为在图还没画之前,我也不知道这图画出来是什么样子,我需要在画图的过程中根据画出的图形去实时调整图形的画法。就算画得非常熟练之后,一样需要调整。如果通过全文编辑器外预览的方式,那速度要慢不少的,即便你用了自动编译也是如此。只编译一个图和编译全文比,那速度能一样么?

  用其他编辑器的时候,如果用TikzEdt作为辅助,那不是也很好吗?确实可以,只是你要付出两个软件间切换的代价。在使用LyX时,虽然也有编辑器内预览(上边有说明),我还是一直使用TikzEdt画图的,就是因为在LyX中无法看着预览图画图。

  要是在编辑LaTeX文档时你要切换到MathType之类的软件去输入公式,真的会被人鄙视的。

  再来说说图3、4中代码块的使用。先下结论:TeXstudio中此功能没有Ultisnip插件强大,但够用。图7:TeXstudio中的宏

  一个宏就相当于Ultisnip的一个snippet片段,用一个文件存储,最多可以定义5000个宏。

  宏的触发方式有两种:输入触发、快捷键触发。

  所谓输入触发就是当你输入了“特定字符串”时,对应的宏就会执行。特定字符串,支持正则表达式。这一点和Ultisnip没有不同。(Ultisnip没看到可以用快捷键触发)

  宏命令的种类有三种:Normal、Environment、Script。

  图8是Tikz绘图环境的定义,在图4中有展示使用过程。

  使用方法为:输入“ti”(不含引号)后按Tab(用\t表示),TeXstudio会将刚输入的“ti\t”删掉,插入tikz环境,再将光标定位在“%|”处。图6:Tikz绘图环境的宏定义

  用%<和%>包围的内容是占位符(placeholder),按Tab可在占位符间跳转。

  %: 后边跟的是占位符属性。persistent表示,永久存在。id:123表示该占位符的名字。mirror表示该占位符是另一个占位符的镜像(按id名去找)。两占位符互为镜像的意思就是其内容始终保持一致,即:你修改其中一个的文字,另一个自动跟着变。

  TeXstudio的宏支持Script语言,可编程实现想要的功能。听着很强大,但TeXstudio对这一块的支持有限,只给出了一个长长的可用函数列表,并不是完整的支持Script语言。这就是我说它不如Ultisnip强大的原因。不过这已经足够一般人使用了。Ultisnip依赖Python,且对Python的版本很敏感,使用稍有不便。配置好后,还是非常强悍的。

  图4中我自己定义了数学环境,但这本不应该定义在宏内部的,而应该是在触发环节进行判断。定义在宏内部会对判断稍有影响。在TeXstudio的2.x版本中是可以在触发环节判断的(通过语法高亮判断),进入3.x版本后程序改写,原有的判断方法失效了,直到现在的4.x版都没有修正。不知是何原因。

  TeXstudio的优点:集成环境,配置上手简单。对硬件要求不高。预览功能十分贴心。这一点尚未找到与之相比者。有人说WinEdt可以,这是一个Windows专用的软件,我不是很喜欢,没有去试。依赖宏功能,快速输入能力也很强大。对引用的管理能力也很强(对比LyX)。这一点上文没有提到。这块功能,我只在LyX上较为深入的使用过,其他软件的情况不清楚,所以没有进行评价。

  对于软件的选择,很多人选来选去,其实多数人连软件的基本能力都没有用出来。可以这样说:人们普遍看不上眼的TeXLive自带的TeXworks,好好配置一下都能横扫一大票人的需求!

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

网友评论

相关推荐