
考慮一個包裹(或者班級) 它為巨集提供了兩個可選參數。一個可以
(我用twoopt
。該文件中的程式碼.sty
易於閱讀,因此也易於理解。
(ii) 手動編碼宏。該程式碼看起來很糟糕,但沒有將用戶綁定到附加套件。
另外,有時有多個包可以實現相同的目的:ifthen
、xifthen
和ifthenx
。
我如何選擇使用哪個套件?在什麼情況下我需要手工編碼?有最佳實務嗎?請注意,這些範例只是說明一般性問題。
答案1
如有疑問,請選擇標準。
儘管尚未根深蒂固(原樣ifthen
),即將推出的 LaTeX3 核心的編程層expl3
仍然強大且非常穩定。即使在texlive-core
Arch Linux 的軟體包儲存庫的軟體包(認為是極簡主義中的極簡主義),包括整個 L3 核心。您的用戶將始終可以使用它。
根據相關問題的經驗,不要除非迫不得已,否則請手動編寫程式碼——這幾乎不可能維護,而且正如您所說,從表面上看也無法理解。
這裡可能缺乏約定,但無論如何最好的約定是使用官方的東西。
從這裡:使用以下命令找到以下內容texdoc
:
expl3
解釋背後的原因經驗值實驗性的L特克斯3語法並引入組件“包”(實際上,您只需\usepackage{expl3}
interface3
用作整個expl3
庫和介面的參考xparse
使用更複雜的語法定義指令的寶貴資源
答案2
如果該twoopt
包滿足您的需求,那麼使用它沒有什麼問題...
總的來說,LaTeX 是一個不斷發展的系統。包是這個過程的引擎。透過忽略它們的普遍使用或選擇硬編碼(如果有合適的套件),您將拒絕 LaTeX 系統的一個重要屬性。
雖然最後一句話聽起來有點戲劇性,但它是有道理的。除此之外,通常它仍然是一個選擇和習慣的問題(我們都是人類!)。但是,如果您有機會透過套件使用獲得更具可讀性的程式碼,前進。順便說一句,這個標準是 LaTeX3 專案的一個主要問題。
綁定到.sty
或.cls
文件中的包不會以任何方式限制您。即使您在自己的套件程式碼中使用的套件將來會因為更新的套件更好或其他原因而被棄用,但這並不意味著您使用的功能不再可行。此外,作為包編寫者,您可以根據遊戲狀態維護/更新您的包。除此之外,我想回顧一下 LaTeX2e 目前非常穩定的事實。因此,從這個角度來看,「[使用]官方的東西」(@Sean Allred,見上文)是完全合理的。
最後,如果三個軟體包對於特定問題執行完全相同的工作,我參考上面的陳述「我們都是人類!」:使用您最喜歡的或您習慣的。