总体上感觉,这么多年对LaTeX的口口相传或者报道,可能让许多人对LaTeX的认识产生了一点偏差。(那么谁来负责呢?[笑])

事实上,以TeX的复杂度,这套东西理应归一些受过大量训练的专业排版工作者使用。Lamport的出发点是降低TeX的使用门槛,让大家都能够当调包侠,能把TXT一般的底稿生成一个初步的最终文档。不过就目前而言,LaTeX还未能真正放低其使用门槛。原因我想主要有二:

一、LaTeX的宏包依赖关系不好解决。有包管理器的各种语言如Ruby/Python/R等,在将代码制作成软体包时,需要加上丰富的元数据,包括包的版本、依赖等等。LaTeX的宏包机制还远未能够做到这一点。宏包之间的互相冲突也难以避免。

二、调试错误非常艰难。动态语言在执行过程中抛出异常时,通常会在错误信息中给出详细的函数调用栈,调试者能够从中查出究竟是哪一层出了问题,是底层的函数本身写错了,还是顶层的调用不正确,等等。TeX的宏展开和执行过程无法记录这种「调用栈」,抛出错误时代码往往已经被TeX展开到非常底层的程度(并且把底层的代码片段直接暴露在错误信息中),导致难以找到是哪一层宏定义和展开上出了问题,需要靠著一点模棱两可的出错信息在代码的汪洋大海中「人肉定位」。越是复杂的大包,越是容易让人不明所以,所以使用起来越要谨慎。

新人学著用LaTeX往往是通过学长学姐的「传帮带」来学的,一些过时的或者不合理的用法往往会随著这种「传帮带」传下去,把新人带到沟里。这也是我们这个圈子的人始终强调要找一本靠谱的参考书系统地学习LaTeX的原因。无论是出版物还是网上的开源文档,都强调要从简单的代码开始写,而不是找个模板吭哧吭哧填。再说了,在其它语言里当调包侠也不是说拿一套别人写的代码直接上手改,不都是写一点小的demo把API一点点用会么,怎么到了LaTeX就有勇气撸模板了[无奈]……

推荐阅读:

相关文章