法律是必要的(最低限度)多樣性(複雜性)

法律是必要的(最低限度)多樣性(複雜性)

最近我越來越擔心 LaTeX 被(可能)超越打字機由於其簡單性。這個答案顯示了 Typst 相對於 LaTeX 的幾個優勢。

我一直在和我的一位同學爭論為什麼我仍然選擇 LaTeX 而不是 Typst:

  • LaTeX的排版品質更勝一籌(儘管 Typst 正在迅速趕上)
  • 我愛蒂kZ,而 Typst 中沒有對應的(其實現在有氧化鋯
  • Typst 對 CJK 的支援很差,而 XeLaTeX 和 LuaLaTeX 可以很好地處理 CJK 字體(我認為他們很快就會解決這個問題)
  • Typst 中的數學很糟糕,LaTeX 已經設定了標準
  • 實際上,由於我習慣了 LaTeX,所以我不想切換到 Typst:-(

然而,我卻被一些事實所震驚:

  • LaTeX中的巨集並不像實際編程那麼方便,儘管有 LaTeX3 可以緩解這個問題。
  • LaTeX 文檔的編譯可能會很慢,與使用 Rust 的 Typst 相比。
  • Typst 更簡單的語法將使人們更傾向於學習 Typst 而不是 LaTeX。 LaTeX 有很多包(有些甚至是衝突的),這會讓學習者感到非常困惑。

我看到了 LaTeX 社群中所做的一些更改,包括構造的使用 Rust 重寫 LaTeX。

那麼 TeX 社群有什麼計劃來保持 TeX/LaTeX 這種美麗的語言繼續蓬勃發展呢?我渴望了解更多並希望做出貢獻。

答案1

好吧,一開始我對「簡單」和「快速」的說法相當謹慎。 10 年前,我回答了一個關於 Word 與 LaTeX 有何不同的問題:

是的,您可以使用 Word 毫無問題地完成大多數正常的事情(有時甚至更快或更容易)。但稍微「不正常的事」又如何呢?

typest 是「現代」的意思,是年輕人的另一種說法。當它啟動時,它甚至無法執行一些正常的操作,例如腳註、浮動、書籤、雙頁佈局、表單欄位或 PDF 註釋。雖然其中一些現已實現,但它們仍然缺乏 LaTeX 或支援包中存在的許多配置選項。目前的一個例子是關於如何\pageref在打字機中獲得像 a 這樣基本的東西的討論:https://github.com/typst/typst/issues/2873

用易於學習的語法很容易做簡單的事情,我非常同意這# my chapter是創建標題的一種很好的、簡短的方法(但 LaTeX 語法\chapter{my chapter}也不長),但問題是如果你想要更多,會發生什麼複雜的事情。對於未編號的部分是否有直覺的語法?如何調整目錄或標題中的條目?這是內建的還是需要尋找並複製十行或更多行程式碼,例如上面引用的問題中的 pageref ?一旦打字機變得更加成熟並收到有關更複雜文件功能的功能請求後,它會保持易於使用嗎?

其次,我感到非常苦惱的是,像打字機這樣的「現代」系統從一開始就不支援 PDF 輔助功能。對於私人文件來說,可訪問性可能並不重要,但為某個組織撰寫文章的任何人都必須很快考慮這個主題。打字員作者知道這一點,他們知道他們需要標記 PDF 的結構數據,但仍然編寫了他們的編譯器,以便它可以丟失它們:“由於訊框目前僅包含定位器,而不包含到文件結構的完整反向映射,因此導出器無法寫入此結構資訊。「 他們宣稱他們是處於有利位置,因為有相當多的可用語義信息,但是 LaTeX 擁有 30 年來可用的語義訊息,這並不能讓產生可存取的、帶有標籤的 PDF 變得容易。

如果我考慮從頭開始編寫排版引擎(我不會這樣做,因為我相信大型系統應該透過進化來改變,而不是透過拆除和重建來改變——當你從頭開始重新設計),然後我會確保核心設計從一開始就考慮可訪問性,而不是事後添加它。他們錯過了這個機會,這使得打字機在我看來非常不現代。

答案2

作為一個也在編寫 LaTeX 替代品的人,我認為 LaTeX 在未來被某種東西取代將是一件好事。使用TeX 巨集語言進行程式設計是一團糟,並且對向後相容性的承諾意味著即使不是不可能,進展也很緩慢(我仍然認為將LaTeX3 折疊到不斷發展的LaTeX2e 中而不是利用主要版本號來打破是一個嚴重的錯誤向後相容性。

我的預測是,LaTeX 的繼任者,如果出現的話,將保留 LaTeX 的標記,但避開基於巨集的程式設計模型。作者需要能夠順利過渡。我認為沒有人會哀悼脆弱的 LaTeX 宏系統的消亡。僅僅因為 TeX 是圖靈完備的並不意味著它是做事的最好方法,甚至是一個好方法。

我希望看到的是套件和文檔類(或它們的等價物)的版本控制,這樣當 CTAN 更新包的三個依賴項深度並且它們的文檔不再編譯時,沒有人會感到驚訝。此外,在現代計算系統中,沒有理由需要多次運行來管理參考文獻和引文等內容。單一應用程式將能夠處理 LaTeX、BibTeX、makeindex 等的功能。

我也覺得與其寫,例如,

\documentclass{amsart}

更好的方法可能是做類似的事情

\DocumentStructure{article}
\DocumentFormat{ams}

或者更好的是:

\DocumentStructure{article:1.0}
\DocumentFormat{ams:ams:1.0}

我們不僅有版本號,還有命名空間,這樣就不用擔心彼此的檔名衝突。

最後,我建議,如果本機副本不存在,將自動下載文件的外部依賴項,以便核心發行版的大小不再那麼大。

答案3

typest 的最大缺點,我認為是一個嚴重的設計錯誤,是不相容LaTeX.人們如何處理大量現有文件、檔案等?拋開一切,從頭開始?我從 LaTeX 誕生以來就一直在使用它,到現在已經快 40 年了!改進的里程碑是使用雷射噴射(快速適應)pdfTeX、、、babel現在是圖層l3、、、、、。LuaTeXPGF/TikzBiblaTeXmicrotype

TeX/LaTeX 的標記語言將持續存在,可能比我們許多老一代仍在使用它的時間更長。任何讀過 Dragon 書的人都會告訴你,想出一個從周圍的大量字母中獲取命令和參數的編譯器並不容易。

能得到改善嗎?是的!我認為可以改進的地方:

  1. 自動替換字體中缺少的字形,類似於 Web 瀏覽器和 IDE 的操作。目前可以使用帶有後備字體的 LuaTeX/LuaLaTeX 來實現這一點,但它變得非常慢。
  2. 可程式輸出例程。預設值應該內建到 TeX 引擎本身。
  3. 很多包衝突的問題都來自於hyperef.應該設計一種新的機制,使作者能夠更輕鬆地使用鏈接,而不是依賴套件。可以修改基底類別以合併這一點,因此不需要 hyperref 重新定義所有分段和引用命令。將其合併到格式中。
  4. 印度和東亞文檔的處理可以透過為 haffbuz 和 LuaTeX 做出貢獻來改進。應該不需要載入套件來更改語言。
  5. 虛擬字體的創建可以改進。

對於所有嘗試和開發不同系統的人,謝謝你們,競爭是好的,祝你們好運。前幾天我查看了一些統計數據,注意到在 l3 和 LuaTeX 之間,大約 130,000 個 loc 添加到了運行中加載的內容中。最初的 TeX 有大約 20,000 個位置。也許改進引擎本身以處理某些有問題的領域的一些努力將比從頭開始重寫所有內容更容易、更有用。

答案4

在不了解 Latex 社區具體計劃的情況下,我們可以anticipate future developmentLatex某種程度上Typst重複使用兩項科學發現。

這使我們不再專注於具體的計劃或猜測,而轉向更健全的全球視野。

法律是必要的(最低限度)多樣性(複雜性)

這又回到了羅斯·阿什比,他是控制論的創始人之一。他部分用我的話說:

  • 處理複雜性
  • 調節器/控制器必須至少同樣複雜;
  • 監管機構不夠複雜,監管失敗
  • 特別是涉及噪音(幹擾)時。

阿什比的例子

在他的《控制論導論》,1956他使用溫度控制器來說明他的基本方程式和考慮因素。

基本上它指出:

  • 在正常的環境溫度變化範圍內控制器工作正常
  • 然而,在天氣條件非常惡劣的情況下,它會失敗,因為它根本無法再補償這種變化。

參見例如這裡(簡化的章節), 或者這裡(維基百科上的綜藝)或者這裡(在他的書中,上面引用過)

品種維基百科

我的插圖

讓我們想像一條簡單的鐵路。一條軌道,一列火車,沒問題。火車整天來來回回。

讓我們逐步增加複雜性 (C+),以應對不斷增加的干擾 (D+)。

D+:在同一條軌道上放置第二列火車。現在問題開始出現,因為它們相互阻礙。作為解決方案,我們需要增加系統的複雜性。

C+:讓我們介紹一個時刻表,它規定了哪一班火車去哪裡、什麼時候、頻率等等。

D+:搭乘兩班火車變得越來越流行,人們開始對必須一直換車才能從一端到另一端感到惱火。

C+:讓我們增加一個鐵路轉轍器,這樣兩列火車就可以互相通過。我們調整一下時間表吧。

等等。我們都知道當今鐵路系統的複雜程度,例如:

  • 通常每個方向至少有兩條軌道
  • 在某些車站或附近有許多軌道
  • 提供各種列車
  • 使用各種訊號
  • 提供多種不同類型的鐵路道口
  • 擁有「外面發生的事情」的數位雙胞胎
  • ETC。

簡化,就像經濟控制者傾向於做的那樣,有人付出代價。(死路)

發明,並同時獲得:更簡單和更複雜。(創新)

其中後者是發明人的工作總結(意圖)“創新作為一門科學”,Genrich Altshuller。 (TRIZ,俄語縮寫,我翻譯的意思是:解決創意問題的實用理論)

這對 Latex 和 Typst 意味著什麼?

我們都知道:Latex很複雜。或者在阿什比看來:它確實可以應對很多變化/幹擾。它成熟到了高水準的排版......並且仍然是,請參見這裡

就其發展而言,Typst仍是其所謂的infancy state。它始於一個特定的概念,提供數量仍然有限的排版結果,並且它將進一步發展,就像任何技術系統一樣,

  • 來自矛盾(roadblock, trade-off: this EXOR that)
  • 透過解決方案(system change, exact solution: this AND that)
  • 去矛盾(next roadblock)

正如許多人所說,Typst它更簡單,而且也有意如此。這確實翻譯成:

  • Typst沒有那麼複雜Latex
  • LatexTypst可以處理比現在更多的干擾/多樣性/要求,並且可能會持續很長一段時間
  • 為了趕上 提供的多樣性LatexTypst生態系統(語法、編譯器、套件、函式庫等)必須變得更加複雜,必須能夠吸收更多的需求/多樣性

因此,結果可能是:

  • 更容易找到Latex2Typst譯者(擺脫多樣性)
  • 很難或幾乎不可能找到Typst2Latex翻譯人員(增加多樣性/複雜性)(與僅以乳膠文件格式儲存相比)

我的結論和估計(未來已經實現)

在不久的將來,我預計Typst將繼續存在A其他中號阿卡普L語言,同時Latex將繼續支援排版...

兩者之間的一些聯繫(上面稱為翻譯者)會來來去去。

可能會出現 的一個有用的(相當大的)子集Typst,它可以被 吸收(提供)Latex

相反,至少保留排版的複雜性,可能永遠無法達到可用狀態。

相關內容