總體上感覺,這麼多年對LaTeX的口口相傳或者報道,可能讓許多人對LaTeX的認識產生了一點偏差。(那麼誰來負責呢?[笑])

事實上,以TeX的複雜度,這套東西理應歸一些受過大量訓練的專業排版工作者使用。Lamport的出發點是降低TeX的使用門檻,讓大家都能夠當調包俠,能把TXT一般的底稿生成一個初步的最終文檔。不過就目前而言,LaTeX還未能真正放低其使用門檻。原因我想主要有二:

一、LaTeX的宏包依賴關係不好解決。有包管理器的各種語言如Ruby/Python/R等,在將代碼製作成軟體包時,需要加上豐富的元數據,包括包的版本、依賴等等。LaTeX的宏包機制還遠未能夠做到這一點。宏包之間的互相衝突也難以避免。

二、調試錯誤非常艱難。動態語言在執行過程中拋出異常時,通常會在錯誤信息中給出詳細的函數調用棧,調試者能夠從中查出究竟是哪一層出了問題,是底層的函數本身寫錯了,還是頂層的調用不正確,等等。TeX的宏展開和執行過程無法記錄這種「調用棧」,拋出錯誤時代碼往往已經被TeX展開到非常底層的程度(並且把底層的代碼片段直接暴露在錯誤信息中),導致難以找到是哪一層宏定義和展開上出了問題,需要靠著一點模稜兩可的出錯信息在代碼的汪洋大海中「人肉定位」。越是複雜的大包,越是容易讓人不明所以,所以使用起來越要謹慎。

新人學著用LaTeX往往是通過學長學姐的「傳幫帶」來學的,一些過時的或者不合理的用法往往會隨著這種「傳幫帶」傳下去,把新人帶到溝里。這也是我們這個圈子的人始終強調要找一本靠譜的參考書系統地學習LaTeX的原因。無論是出版物還是網上的開源文檔,都強調要從簡單的代碼開始寫,而不是找個模板吭哧吭哧填。再說了,在其它語言里當調包俠也不是說拿一套別人寫的代碼直接上手改,不都是寫一點小的demo把API一點點用會么,怎麼到了LaTeX就有勇氣擼模板了[無奈]……

推薦閱讀:

相关文章