既然 TeX 語法這麼爛,為什麼不用 Python 把 TeX 重寫一遍?

問一問。你們覺得如何。

我的意思是,正如SONG Kevin 說的,「用(語法特別好的)python來把Tex封裝起來,可以用python寫Tex」。

當然據說他的底層也就那麼複雜,既然開源,又可以看懂,何不用更現代的語言重新實現一次呢?這不是複製輪子嗎(雖然有人就職業做這個),因為你可以把tex那些過時的語法給改一改,看起來正常一點


用 python 把 TeX 重寫一遍出來的還不依然是 TeX,你的問題沒解決唉……

題主說的應該是設計一個新的排版系統吧………………………………………


item TeX 語法不爛

item 不過當初我也覺得 TeX 語法爛來著, 意識到 TeX 語法不爛是之後的事情了

item 要是覺得 Tex 語法爛的話寫一個簡單的封裝也不難

item 然後問題來了, 你統計一下你再導言區 use 了多少 package

item 在添加了( shi )大( ji )量( ge )包的支持以後我覺得這個......

item 用縮進代替了大括弧後噩夢才剛剛開始, 真的

item 有個故事是這麼說的

item 勇者戰勝了惡龍

item 然後趴在寶藏上

item 長出鱗片和利爪

item 好不容易整了一個差不多能用的, 但是沒有自動補全, 還不如直接寫TeX

item 我是用 Python 寫一個 IDE 呢? 還是寫一個 VimScript 呢?

item 所以我感覺 TeX 語法不爛


如果你覺得是 TeX 語法爛,那麼需要的就是重新設計一種排版語法,而不是拿什麼東西把 TeX 重寫。這方面 @李阿玲 老師的 有個TeX就足夠了 - All about TeXnique - 知乎專欄 裡面有提到一些其他的 Markup 文檔語言,其他的有把 XML 作為中間語言的,像 O"Reilly 好像就是這麼乾的,當然你也可以手寫 XML。還有一些其他的像 Sphinx(Overview — Sphinx 1.2.3 documentation)之類的東西。另外如果算上 pandoc 把 markdown 解釋成 LaTeX 文件的話也可以把 TeX 作為中間語言。如果你只是覺得語法爛怎麼不看看這些奇奇怪怪的東西。

這些語言最重要的就是對於文檔輸出操控精確,好看不好看另說,因為上層抽象可以把這事情做好比如 markdown,當然會對精確性有損失。

至於如果你覺得底層爛,那倒是重寫的問題了。 @李阿玲 老師在寫的 pTeX-ng 就在做這個事情。不過呢,自然是不適合用 Python 這些解釋型語言,因為它太慢了,還得用 C/C++ 之類的。


  1. TeX語法和實現它的語言的語法沒有半毛錢關係.

1.1 Python的語法雖然好,實現TeX時,仍然要按照TeX的語法標準來實現.就如同兩個工人做出來的鞋子是一摸一樣的,如果不一樣,那肯定是有個人做錯了.

2. Python不能用作排版.

總結:TeX就是TeX,用什麼重寫它還是TeX.語法稍有改變,就變成了xxxTeX 或 TeX12345


"為什麼不用 Python 把 TeX 重寫一遍?"

感覺這話少了點主語吧,題主是說「你們為什麼不」,還是「作者為什麼不」,還是「我為什麼不」。。。你整的我好糾結!


原來題主是兩年前就被我拉黑的拎不清……

TeX 的語法跟 TeX 解釋器的實現,有個毛關係啊……

C 不支持動態類型,難道用 Lisp 重寫個 C 編譯器就能讓 C 支持動態類型了嗎?


隨便造吧 反正現在不用TEX了

別造Makefile 就行


Python 是 C 寫的

既然 C 的語法那麼爛,為什麼不用 Python 把 Python 重寫一遍?


你說這個?

http://www.pytex.org/


其實樓主提了一個很好的問題。

像TEX、MAKEFILE、SHELL、BAT、CSS這些,說是語言吧,但表達能力又很孱弱;說不是語言吧,但它們又可以做一些似是而非的編程。

它們的學習曲線是陡得不能再陡了。

我也覺得學習這種東西非常困難,所以都是盡量避免學習和使用它們。


剛了解到這個庫,覺得還是比較優雅的:

使用Python語法產生LaTex文檔的函數庫:PyLaTeX_【貝爾利信息技術】


何以見得python語法特別好?


推薦閱讀:

如何評價 C++11 的右值引用(Rvalue reference)特性?
零基礎(轉行)能學unity3d嗎?
什麼是"Core Dumps",為什麼"Haskell"可以沒有?
虎書ML版裡面關於garbage collector的問題?
如何評價 RAII 特性在 C++ 中的大範圍運用?

TAG:編程語言 | Python | TeX |