原文地址:https://www.cnblogs.com/youxia/p/LinuxDesktop012.html
閱讀目錄
特別說明:要在我的隨筆后寫評(píng)論的小伙伴們請(qǐng)注意了砰诵,我的博客開啟了 MathJax 數(shù)學(xué)公式支持征唬,MathJax 使用
$
標(biāo)記數(shù)學(xué)公式的開始和結(jié)束。如果某條評(píng)論中出現(xiàn)了兩個(gè)$
茁彭,MathJax 會(huì)將兩個(gè)$
之間的內(nèi)容按照數(shù)學(xué)公式進(jìn)行排版总寒,從而導(dǎo)致評(píng)論區(qū)格式混亂。如果大家的評(píng)論中用到了$
理肺,但是又不是為了使用數(shù)學(xué)公式摄闸,就請(qǐng)使用\$
轉(zhuǎn)義一下善镰,謝謝。
想從頭閱讀該系列嗎年枕?下面是傳送門:
- Linux 桌面玩家指南:01. 玩轉(zhuǎn) Linux 系統(tǒng)的方法論 【約 1.1 萬字媳禁,22 張圖片】
- Linux 桌面玩家指南:02. 以最簡(jiǎn)潔的方式打造實(shí)用的 Vim 環(huán)境 【約 0.97 萬字,7 張圖片】
- Linux 桌面玩家指南:03. 針對(duì) Gnome 3 的 Linux 桌面進(jìn)行美化 【約 0.58 萬字画切,32 張圖片】
- Linux 桌面玩家指南:04. Linux 桌面系統(tǒng)字體配置要略 【約 1.2 萬字竣稽,34 張圖片】
- Linux 桌面玩家指南:05. 發(fā)博客必備的圖片處理和視頻錄制神器 【約 0.25 萬字,14 張圖片】
- Linux 桌面玩家指南:06. 優(yōu)雅地使用命令行及 Bash 腳本編程語言中的美學(xué)與哲學(xué) 【約 1.4 萬字霍弹,16 張圖片】
- Linux 桌面玩家指南:07. Linux 中的 Qemu毫别、KVM、VirtualBox典格、Xen 虛擬機(jī)體驗(yàn) 【約 0.95 萬字岛宦,31 張圖片】
- Linux 桌面玩家指南:08. 使用 GCC 和 GNU Binutils 編寫能在 x86 實(shí)模式運(yùn)行的 16 位代碼 【約 0.6 萬字,17 張圖片】
- Linux 桌面玩家指南:09. X Window 的奧秘 【約 0.5 萬字耍缴,14 張圖片】
- Linux 桌面玩家指南:10. 沒有 GUI 的時(shí)候應(yīng)該怎么玩 【約 0.5 萬字砾肺,32 張圖片】
- Linux 桌面玩家指南:11. 在同一個(gè)硬盤上安裝多個(gè) Linux 發(fā)行版以及為 Linux 安裝 Nvidia 顯卡驅(qū)動(dòng) 【約 0.4 萬字,22 張圖片】
前言
這樣一個(gè)標(biāo)題可能不太準(zhǔn)確防嗡,因?yàn)榇_實(shí)無法準(zhǔn)確地解釋什么叫“文本化編輯思想”变汪。其實(shí)我這篇隨筆主要是想探討 Markdown、LaTeX蚁趁、MathJax裙盾,有興趣的朋友可以繼續(xù)往下看,同時(shí)別忘記了順手點(diǎn)個(gè)贊他嫡。
先回憶一下我們平時(shí)用什么工具記筆記番官,最簡(jiǎn)單的可能直接上記事本,但是稍微需要點(diǎn)格式支持的钢属,記事本的功能就不夠用了徘熔,這時(shí)應(yīng)該至少會(huì)用一個(gè)類似 Word 的“所見即所得”的可視化編輯器。很多時(shí)候我們要記錄和分享的不僅僅只是文字淆党,它還包含有各種各樣的格式酷师,比如字體、字號(hào)宁否、顏色窒升、標(biāo)題缀遍、列表等等慕匠。這個(gè)格式可以讓我們很容易地分辨筆記中的大綱和細(xì)節(jié),也很容易突出顯示需要強(qiáng)調(diào)的內(nèi)容域醇,便于我們閱讀和理解台谊,必要的時(shí)候蓉媳,還可以在筆記中插入圖片」Γ“所見即所得”編輯器提供的編輯方法確實(shí)是最樸素的編輯思想:當(dāng)你想要改變某些文字的樣式時(shí)酪呻,你只需要選中它,然后在各種菜單盐须、對(duì)話框里設(shè)置它的格式即可玩荠。這種排版很美觀、樣式很豐富的文章贼邓,可以稱之為“富文本”阶冈。
如果進(jìn)行更深層次的思考,就會(huì)發(fā)現(xiàn)“富文本”存在很多缺點(diǎn)塑径,特別是對(duì)于我們這些程序員女坑、理工男來說更是這樣。下面略舉幾例:
- “富文本”編輯起來太慢了统舀,寫文章時(shí)匆骗,即要考慮文章內(nèi)容,又要考慮文章格式誉简,寫幾段字就要點(diǎn)半天鼠標(biāo)碉就;
- “富文本”需要專業(yè)的編輯器來編輯和閱讀,如果沒有編輯器闷串,或者編輯器不兼容铝噩,那只有欲哭無淚了;
- “富文本”往往讓形式取代邏輯窿克,文章可能從外觀上看各級(jí)標(biāo)題的文字大小骏庸、縮進(jìn)都很正確,但是邏輯上無法指定層級(jí)關(guān)系年叮;
- “富文本”中的格式信息太冗余了具被,淹沒了文章的內(nèi)容;
- “富文本”對(duì)計(jì)算機(jī)不友好只损,存儲(chǔ)格式不透明不說一姿,也讓基于文本行比較的工具(如 diff 之類)無用武之地。
所以跃惫,優(yōu)秀的思想應(yīng)該是這樣的:
- 文章就應(yīng)該存儲(chǔ)為純文本的格式叮叹,用任何工具都可以閱讀和編輯;
- 該純文本的內(nèi)容即要適合人類閱讀爆存,也要計(jì)算機(jī)容易理解蛉顽;
- 能正確指定文章各部分的邏輯結(jié)構(gòu);
- 內(nèi)容和顯示分離先较,作者只用考慮文章的內(nèi)容和邏輯結(jié)構(gòu)携冤,而文章怎么顯示得好看是專業(yè)的人和工具的事悼粮。
這就是我標(biāo)題中說的“文本化編輯思想”。這種思想在計(jì)算機(jī)領(lǐng)域由來已久曾棕,并逐漸形成一種哲學(xué)扣猫。比如互聯(lián)網(wǎng)上廣泛使用的 HTML、XML 等翘地,就是把信息儲(chǔ)存為純文本申尤,用任何工具都可以閱讀和編輯,并且能正確地指定內(nèi)容的邏輯結(jié)構(gòu)衙耕,而瀏覽器和 CSS 則控制文章如何顯示瀑凝。但是,HTML 標(biāo)簽還是太多了臭杰,如果沒有瀏覽器粤咪,完全靠人工腦補(bǔ)閱讀起來還是太困難了。于是渴杆,就誕生了 Markdown寥枝。
在文本編輯領(lǐng)域還有另外一個(gè)難題,那就是數(shù)學(xué)公式(或者其它類似數(shù)學(xué)公式的東西磁奖,比如樂譜)囊拜,它們顯示起來是二維的,而且其中使用的很多符號(hào)標(biāo)準(zhǔn)鍵盤根本無法輸入比搭,使用的字體和正文也不一樣冠跷。好在 Unix/Linux 世界中,它們有一個(gè)比較好的解決方法身诺,那就是 LaTeX蜜托。當(dāng)然,也有很多可視化的編輯器提供數(shù)學(xué)公式編輯的功能霉赡,比如 Word 的公式編輯器橄务,比如 TexMacs。但是正如前文所述穴亏,從優(yōu)秀的“文本化編輯思想”來思考蜂挪,最好的依然是 LaTeX,因?yàn)槭褂?LaTeX 就是使用純文本的方式輸入數(shù)學(xué)公式嗓化,輸入速度快棠涮,人和計(jì)算機(jī)都容易理解。LaTeX 的思想影響廣泛刺覆,很多編輯器都支持以 LaTeX 語法輸入數(shù)學(xué)公式严肪。要在網(wǎng)頁上顯示數(shù)學(xué)公式,則非 MathJax 莫屬了,它是一個(gè) JavaScript 庫诬垂,可以識(shí)別網(wǎng)頁中的 LaTeX 格式的數(shù)學(xué)公式并將其完美顯示出來。博客園的數(shù)學(xué)公式支持用的就是這個(gè)伦仍。
Markdown 的特點(diǎn)和工具
Markdown 的宗旨就是“易讀易寫”结窘,所以用 Markdown 語法寫的文檔,以純文本的格式直接閱讀也是非常方便的充蓝。如果對(duì)外觀的要求非常高隧枫,就可以通過相應(yīng)的工具將 Markdown 文檔轉(zhuǎn)化成 HTML 或者 PDF。Markdown 的語法非常簡(jiǎn)單谓苟,一般情況下一個(gè)多小時(shí)就學(xué)會(huì)了官脓。目前,我在博客園中發(fā)博客基本上就是使用博客園的 Markdown 編輯器了涝焙。博客園使用和 Github 完全一樣的 Markdown 語法卑笨,在這里可以閱讀它的完整介紹:GitHub Flavored Markdown Spec。Markdown 用起來很舒服仑撞,除了上傳圖片赤兴,基本上不用動(dòng)鼠標(biāo),而且近期已經(jīng)有好幾個(gè)人表揚(yáng)我的博客排版比較舒服了隧哮。
在 Linux 桌面系統(tǒng)中桶良,我使用 ReText 編輯 Markdown 文檔。在 Ubuntu 中只需要sudo apt-get install retext
即可以安裝該軟件沮翔。另外還有一些比較出名的 Markdown 編輯器陨帆,比如 reMarkable 或者 Typora,但是這兩款編輯器 Ubuntu 的官方軟件倉庫中沒有采蚀,需要自己去下載安裝疲牵,所以我就不用了。另外就是 Atom 編輯器也支持 Markdown榆鼠,但是我試用以后覺得它的界面不好看瑰步,所以也不用。我覺得 ReText 就不錯(cuò)了璧眠,其界面如下:
很顯然缩焦,這個(gè)預(yù)覽的結(jié)果并不漂亮,也和我博客園中的樣式完全不一樣责静。這是因?yàn)槲也]有為我的預(yù)覽功能指定 CSS 樣式表袁滥。前面說過,文本化編輯思想就是內(nèi)容和顯示分離灾螃,寫作的時(shí)候题翻,只需要考慮內(nèi)容就可以了,而顯示效果,可以由 CSS 樣式表控制嵌赠。如果我想讓預(yù)覽的效果和我的博客中一樣塑荒,只需要把我博客中的 CSS 扒下來就可以了。同理姜挺,如果看到有哪個(gè)網(wǎng)站的文章顯示效果比較好看齿税,把它的 CSS 樣式扒下來即可。另外炊豪,從上圖的預(yù)覽功能可以看到凌箕,現(xiàn)在最新版的 ReText 可以顯示一定的數(shù)學(xué)公式,但是對(duì)行內(nèi)的數(shù)學(xué)公式?jīng)]有顯示词渤,那是因?yàn)槲覀儧]有為 ReText 指定 MathJax 數(shù)學(xué)公式擴(kuò)展牵舱。點(diǎn)擊 ReText 的 "編輯"->"個(gè)人偏好" 菜單,在彈出的對(duì)話框里面可以設(shè)置我們使用的 CSS 樣式表和 MathJax 擴(kuò)展缺虐,如下圖:
再重新啟動(dòng) ReText芜壁,其預(yù)覽效果就是這樣的了:
MathJax 支持 LaTeX 語法,至于 LaTeX 編輯數(shù)學(xué)公式的語法高氮,我這里再為大家送上一份資料:《一份不太短的LaTeX 2e介紹》沿盅。
數(shù)學(xué)公式和 LaTex
在我上一節(jié)中,我提到了 MathJax纫溃,我的博客中和 ReText 中的數(shù)學(xué)公式支持就靠它了腰涧。MathJax 支持 LaTex 的語法,所以平時(shí)寫筆記紊浩,使用 Markdown 和 Mathjax 就夠了窖铡。但是真正需要寫科技論文的時(shí)候,就不得不上 LaTex 了坊谁。在這一節(jié)里费彼,我再來談?wù)?LaTeX。
在很多人心中口芍,LaTeX 是一個(gè)很專業(yè)的排版系統(tǒng)箍铲,同時(shí)也是一個(gè)很復(fù)雜的系統(tǒng)。說到專業(yè)鬓椭,確實(shí)很多科技論文都是用 LaTeX 寫作颠猴,而且很多知名的雜志社只接受 LaTeX 格式的投稿。使用 LaTeX 排版得到的效果那是超級(jí)贊小染,特別是對(duì)科技論文中充斥的數(shù)學(xué)公式而言翘瓮。說到復(fù)雜,不僅是因?yàn)?LaTeX 排版語言命令繁多裤翩,更因?yàn)樗鼣?shù)之不盡的宏包资盅,學(xué)習(xí)成本真的是相當(dāng)相當(dāng)相當(dāng)?shù)母摺?/p>
對(duì)于一套 LaTeX 排版系統(tǒng),它究竟包含哪些東西呢?我認(rèn)為它主要可以分成這樣幾個(gè)部分:
- 一個(gè)排版引擎呵扛,TeX 或 pdfTeX 或 XeTeX每庆;
- 一系列的字體;
- 一系列的宏包今穿;
- 一些工具缤灵,比如用來查看各種排版引擎輸出的排版結(jié)果,或者在 dvi荣赶、ps凤价、pdf 等格式之間的轉(zhuǎn)換鸽斟。
而對(duì)于 LaTeX 排版系統(tǒng)的復(fù)雜性拔创,我認(rèn)為主要是由于歷史原因引起的,理由如下:
- 最早的由 Knuth 教授寫的 TeX 引擎不支持 UTF-8 編碼的輸入文件富蓄,所以要讓它支持中文實(shí)在是太難了剩燥;
- 最早的 TeX 系統(tǒng)自帶一套字體,要擴(kuò)展它就得擴(kuò)展相應(yīng)領(lǐng)域的字體立倍,比如 LaTeX 自帶豐富的數(shù)學(xué)字體灭红,要把字體安裝到 TeX 系統(tǒng)中是一件非常復(fù)雜的事情;
- 大量的第三方宏包口注,安裝和學(xué)習(xí)都非常困難变擒;
- 都什么年代了,誰還用 dvi 格式和 ps 格式啊寝志,用 pdf 多方便啊。
對(duì)于這些歷史原因引起的復(fù)雜性材部,現(xiàn)在早就解決了,只是很多書籍沒有寫清楚而已苦丁。我認(rèn)為現(xiàn)在用 LaTeX 其實(shí)很方便的,理由如下:
- Knuth 教授的 Tex 引擎用來瞻仰即可物臂,實(shí)際工作中使用 XeTeX 引擎旺拉,完美支持 Unicode 字符集和 UTF-8 編碼棵磷,中文再也不是問題;
- 字體神馬的泽本,Knuth 教授的 METAFONT 早過時(shí)了淘太,現(xiàn)在誰還不用 TrueType 啊?好的字體當(dāng)然少不了像 Microsoft蒲牧、Adobe、Apple 這些既有錢又有品味的公司出品了松嘶;
- XeTeX 引擎可以直接使用操作系統(tǒng)中安裝的字體挎扰,再也不用考慮把字體安裝到 TeX 系統(tǒng)中了;
- XeTeX 引擎直接輸出 pdf 格式的文件尽超;
- 排版也可以有 IDE 工具,比如 TeXWorks 或 TexStudio似谁;
- 至于宏包太多這個(gè)問題掠哥,我們可以用現(xiàn)成的發(fā)行版嘛,比如 texlive 套裝塞琼。
下面開始實(shí)戰(zhàn)禁舷。我是在 Ubuntu 系統(tǒng)下使用 texlive,使用sudo aptitude search texlive
命令在讶,可以看到大量和 texlive 有關(guān)的包霜大。考慮到我們需要使用中文曙强,所以需要同時(shí)安裝 texlive-lang-cjk 和 texlive-xetex途茫。前面分析過,XeTeX 引擎和 XeLaTeX 引擎是支持Unicode 字符集和 UTF-8 編碼的基礎(chǔ)娜扇,而 texlive-lang-cjk 提供中文字體和中文排版的支持。和四年前相比雀瓢,texlive 更加成熟,以上三個(gè)包安裝完之后刃麸,不需要借用 Windows 的字體,也不需要修改任何配置文件把沼,真正做到了開箱即用吁伺。這樣安裝 texlive:
sudo aptitude install texlive texlive-lang-cjk texlive-xetex
以前我使用 TeXWorks,現(xiàn)在在朋友的推薦下使用 TexStudio续捂。使用以下命令安裝 TexStudio:
sudo aptitude install texstudio
在使用 TexStudio 的時(shí)候宦搬,先進(jìn)入它的設(shè)置界面劫拗,將引擎更改為 XeLaTeX页慷,如下圖:
然后寫一段測(cè)試文字,Build 一下滓彰,然后預(yù)覽州袒,就可以看到排版效果了:
對(duì)于寫寫中文文檔,使用 ctex 宏包就足夠了他匪,并不是很復(fù)雜夸研。LaTeX 還有一些更加復(fù)雜的功能,比如制作幻燈片啊悼沈、繪圖啊什么的,都有相應(yīng)的宏包可以使用絮供,而且安裝 texlive 的時(shí)候杯缺,都安裝了非常詳細(xì)的幫助文檔,只需要打開/usr/share/texlive/doc.html
這個(gè)文件萍肆,就可以看到所有宏包和幫助文檔的列表塘揣,我前面分享的《一份不太短的LaTeX介紹》里面有,經(jīng)典的《Tex by Topic》里面也有亲铡,如下圖:
看到這個(gè)一公里長(zhǎng)的幫助文檔列表奖蔓,你有什么感想呢?