首頁 > 軟體

Linux下優秀的文字編輯器(Markdown、LaTeX、MathJax)

2020-06-16 18:05:51

這樣一個標題可能不太準確,因為確實無法準確地解釋什麼叫“Linux下優秀的文字編輯器”。其實我這篇隨筆主要是想探討Markdown、LaTeX、MathJax,有興趣的朋友可以繼續往下看,同時別忘記了順手點個讚。

引言

大家寫文章用什麼工具?Windows的記事本嗎?肯定不會吧!一般人應該至少會用一個類似Word的“所見即所得”的視覺化編輯器。理由:因為文章不僅僅只是文字嘛,它還包含有各種各樣的格式,比如字型、字號、顏色、標題、列表等等。“所見即所得”編輯器提供的編輯方法確實是最樸素的編輯思想:當你想要改變某些文字的樣式時,你只需要選中它,然後在各種選單、對話方塊裡設定它的格式即可。這種排版很美觀、樣式很豐富的文章,可以稱之為“富文字”。

如果進行更深層次的思考,就會發現“富文字”存在很多缺點,特別是對於我們這些程式設計師、理工男來說更是這樣。下面略舉幾例:

  • “富文字”編輯起來太慢了,寫文章時,即要考慮文章內容,又要考慮文章格式,寫幾段字就要點半天滑鼠;
  • “富文字”需要專業的編輯器來編輯和閱讀,如果沒有編輯器,或者編輯器不相容,那只有欲哭無淚了;
  • “富文字”往往讓形式取代邏輯,文章可能從外觀上看各級標題的文字大小、縮排都很正確,但是邏輯上無法指定層級關係;
  • “富文字”中的格式資訊太冗餘了,淹沒了文章的內容;
  • “富文字”對計算機不友好,儲存格式不透明不說,也讓基於文字行比較的工具(如diff之類)無用武之地。

所以,優秀的思想應該是這樣的:

  • 文章就應該儲存為純文字的格式,用任何工具都可以閱讀和編輯;
  • 該純文字的內容即要適合人類閱讀,也要計算機容易理解;
  • 能正確指定文章各部分的邏輯結構;
  • 內容和顯示分離,作者只用考慮文章的內容和邏輯結構,而文章怎麼顯示得好看是專業的人和工具的事。

這就是我標題中說的“文字化編輯思想”。這種思想在計算機領域由來已久,並逐漸形成一種哲學。比如網際網路上廣泛使用的HTML、XML等,就是把資訊儲存為純文字,用任何工具都可以閱讀和編輯,並且能正確地指定內容的邏輯結構,而瀏覽器和CSS則控制文章如何顯示。但是,HTML標籤還是太多了,如果沒有瀏覽器,完全靠人工腦補閱讀起來還是太困難了。於是,就誕生了Markdown。

在文字編輯領域還有另外一個難題,那就是數學公式(或者其它類似數學公式的東西,比如樂譜),它們顯示起來是二維的,而且其中使用的很多符號標準鍵盤根本無法輸入,使用的字型和正文也不一樣。好在Unix/Linux世界中,它們有一個比較好的解決方法,那就是LaTeX。當然,也有很多視覺化的編輯器提供數學公式編輯的功能,比如Word的公式編輯器,比如TexMacs。但是正如前文所述,從優秀的“文字化編輯思想”來思考,最好的依然是LaTeX,因為使用LaTeX就是使用純文字的方式輸入數學公式,輸入速度快,人和計算機都容易理解。LaTeX的思想影響廣泛,很多編輯器都支援以LaTeX語法輸入數學公式。要在網頁上顯示數學公式,則非MathJax莫屬了,它是一個JavaScript庫,可以識別網頁中的LaTeX格式的數學公式並將其完美顯示出來。部落格園的數學公式支援用的就是這個。

Markdown的特點和工具

Markdown的宗旨就是“易讀易寫”,所以用Markdown語法寫的文件,以純文字的格式直接閱讀也是非常方便的。如果對外觀的要求非常高,就可以通過相應的工具將Markdown文件轉化成HTML或者PDF。Markdown的語法非常簡單,一般情況下一個多小時就學會了。參考地址在這裡:Markdown語法說明(簡體中文)  http://www.linuxidc.com/Linux/2014-12/110960.htm

目前,我在部落格園中發部落格基本上就是使用部落格園的Markdown編輯器了。部落格園的Markdown實現目前尚不完善,比如說沒有即時預覽功能、沒有續行為段功能、對 ``$` `的解釋不正確等等,但是用起來已經很舒服了,除了上傳圖片,基本上不用動滑鼠。

為什麼續行為段功能很重要?

續行為段,換一種說法就是忽略非空白行後面的換行符。這個功能很重要。如果沒有這個功能,則一段文字就是一個很長很長很長的行,這對基於文字行比較的自動化工具(比如diff)來說,無疑是一個致命的打擊。對於可以顯示行號的編輯器來講,行號也會很跳躍,讓人看著不舒服。不過最重要的,就是使用者永遠也不知道那個換行究竟是它自己加上去的,還是因為電腦螢幕不夠寬而自動換的行。

所以無論是Markdown還是LaTeX,都允許作者在原始碼中任意換行,只要多行文字中沒有空白行分割,就會把這些行合併成一個段落。在Markdown中如果要換行,則需在上一個行的末尾增加至少兩個空格,而LaTeX也允許使用者使用手動換行。那麼問題來了,部落格園為什麼要去掉這麼一個重要的功能呢?

在Linux桌面系統中,我使用ReText編輯Markdown文件。在Ubuntu中只需要sudo apt-get install retext即可以安裝該軟體,其效果如下:

設定ReText使用比較漂亮的CSS

剛安裝的ReText對於文件的預覽效果可能沒有我上圖中的那麼好,應該是這樣的:

上圖中的參照和程式碼和正文的區分並不明顯,而且整個文件的字型顯示也不好看。之所以會出現這種情況,是因為沒有給ReText指定相應的CSS檔案。唯一的遺憾是ReText的某些設定無法通過選單來完成,必須手動修改組態檔~/.config/ReText project/ReText.conf,我的組態檔如下圖:

至於到哪裡去找一個漂亮的CSS,那就仁者見仁、智者見智了。部落格園中就有許多不錯的可以借鑑。

開啟數學公式支援

在網頁中顯示數學公式全靠MathJax。部落格園開啟數學公式支援非常簡單,在後台管理頁面中打個勾就行了。由於MathJax使用$來界定數學公式,所以文章或評論中有很多$符號的同學們就要注意了。想想看,我的文章中用$多嗎?還真不少,介紹AT&T組合語法時用過,探討Bash指令碼程式設計的時候也用過,所以那兩篇文章的排版還真費了我不少勁。除了$,MathJax還使用()$$$$[]來界定數學公式。

由於MathJax是如此的出名和優秀,所以ReText也有相應的MathJax擴充套件,不過這次修改的組態檔是~/.config/markdown-extensions.txt。我的組態檔如下圖:

從圖中可以看出,組態檔的第1行就是開啟mathjax擴充套件。至於其它的擴充套件和功能,大家可以閱讀ReText的幫助文件。

看看文中的數學公式的效果: + 0 x n e x dx=n! 


下圖是ReText中使用數學公式的效果:

效果和效率都是不錯的哦!至此,我的文字工作正式被Markdown和MathJax全面接管。媽媽再也不用擔心我的語文作業和數學作業了。至於LaTeX編輯數學公式的語法,我這裡再為大家送上一份資料:一份不太短的LaTeX 2e介紹 PDF。下載見:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

使用者名稱與密碼都是www.linuxidc.com

具體下載目錄在 /2015年資料/3月/4日/Linux下優秀的文字編輯器(Markdown、LaTeX、MathJax)/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------


IT145.com E-mail:sddin#qq.com