如何提高使用 LaTeX 的水平?
本人完全自學,現在的水基本上可以滿足日常的要求,但是有時候遇到某個效果沒用過就只能到論壇什麼的去搜…如果希望了解比較原理性的東西,像一些底層的命令啊,或者是編譯原理什麼的要到哪裡看呢?有那些參考資料?
要深入 LaTeX 不可避免地會需要了解一些 TeX 的知識。若不然,在看 LaTeX 的相關資料的時候,總會有「不知所以然」的感覺,使用起來總是「這樣不知道行不行呢」這樣心虛的感覺。話雖如此,一個 LaTeX 用戶為了學習 LaTeX 的一些編程,直接上手看 The TeXbook 可能也有點為難人(畢竟 The TeXbook 講解的都是普通 LaTeX 不會希望知道的東西,落差有點大)。而且 The TeXbook 介紹的內容有一些是與 LaTeX 風格相悖的,這些內容在 LaTeX 里可以勉強使用,但是會留下隱患。(比如 f 等字體命令)
另一方面,LaTeX 當前的版本是 2e (2 epsilon),下一個版本是 LaTeX 3。雖然 ltx3 看起來有些遙遙無期,但比前幾年還是有了不少進展。另一個現實情況是,現在有不少宏包已經開始使用 ltx3 風格的語法來撰寫;但同時也有不少宏包作者在觀望,依舊使用 ltx2e 的語法在維護宏包。
因此,給希望入門 ltx programming 的人提建議就必須要權衡 TeX 和 LaTeX 的知識,以及要權衡 ltx2e 和 ltx3 的內容。就我自己而言,我沒有辦法給出一個讓自己滿意的方案,所以我覺得這個問題其實我是沒什麼資格來回答的。中文 TeX/LaTeX 界有不少混知乎的前輩,比如 jjgod, LeoLiu, Qingkuan, m6n,他們來回答這個問題更合適些。
總之,這樣看起來, @李阿玲 所說的「掉坑裡」是完全沒錯就是了。
我只能給出一些我讀過的文檔供參考(大致是按照我讀過的順序)。因為我學習 ltx programming 的經歷,實際上就是讀文檔 - 寫代碼 - 編譯 - 測試 - 排錯的過程,遇到有不懂的,再上網搜索請教前輩而已。
- texdoc latex2e: 這個是面向 ltx 用戶的文檔,介紹了 ltx 使用的方方面面。
- texdoc clsguide: 這個是面向宏包和文檔類作者的,介紹了 ltx2e 的宏包和文檔類的寫作規範。
- texdoc doc, texdoc docstrip: 這個是「文學編程」的相關資料,看完它基本就能理解 .dtx 和 .ins 文件是怎麼一回事了。
- texdoc texbytopic: 這個是我看不下去 The TeXbook 讀的,二者結合起來讀,能夠相對輕鬆地了解 plainTeX 和 TeX primitive 的內容。(這兩本讀完之後,諸如 expandafter 之類的命令就不會覺得暈了)
- texdoc source2e: 這個是 ltx2e 的具體實現,以及相關講解。
- texdoc macros2e: 這個集中介紹了 ltx2e 里使用的一些內部宏,至此基本上就能寫出 ltx2e 的宏包和文檔類了。
- texdoc expl3: expl3 這個宏包是在 ltx2e 上實現 ltx3 的功能的一個介面,引入這個宏包就可以使用 ltx3 風格的語法。因此寫 ltx3 的宏包肯定是要讀它的。
- texdoc interface3: 這個是關於 ltx3 的介面的文檔,我覺得像一個字典一樣的東西,可以和 expl3 結合起來讀。
再者還有一些宏包提供了好的工具。比如給宏包和文檔類實現 key-value 的參數(比如 geometry 宏包可以這樣用:usepackage[margin = 1in]{geometry}),又比如 etoolbox 提供了對付 ltx2e 裡面命令、環境的一些補丁,並給數值的大小比較提供了 ltx 風格的介面。這些可以按需使用,需要的時候再翻相應的宏包文檔就可以了。
大致如此,肯定還有不少不合適的,僅供參考。
感謝邀請,以及,知乎的編輯器真是渣到不行。推薦閱讀:
※如何定義一個LaTeX行內代碼環境?
※XeLaTeX 編譯時間太長是什麼原因?
※LaTeX 與 TeX 有什麼本質區別?
※LaTeX 中用 listings 為什麼輸出結果和程序編譯器里的有差別(對齊格式)?
TAG:LaTeX | TeX | LaTeX排版與設計 |
