歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux折騰記(十四):優秀的文本化編輯思想大碰撞(Markdown、LaTeX、MathJax)

Linux折騰記(十四):優秀的文本化編輯思想大碰撞(Markdown、LaTeX、MathJax)

日期:2017/3/1 17:48:29   编辑:Linux技術

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

引言

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

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

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

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

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

  這就是我標題中說的“文本化編輯思想”。這種思想在計算機領域由來已久,並逐漸形成一種哲學。比如互聯網上廣泛使用的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語法說明(簡體中文)。

  目前,我在博客園中發博客基本上就是使用博客園的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的幫助文檔。

  看看博客園中數學公式的效果:$$\int_0^{+\infty} x^n e^{-x} \,dx = n!$$

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

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

Copyright © Linux教程網 All Rights Reserved