开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開(kāi)APP
          userphoto
          未登錄

          開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

          開(kāi)通VIP
          圖靈社區(qū) : 閱讀 : 用Markdown來(lái)寫(xiě)自由書(shū)籍

          {{ page.title }}

          背景

          隨著互聯(lián)網(wǎng)的進(jìn)步和技術(shù)積累,國(guó)內(nèi)技術(shù)圈交流的氣氛越來(lái)越濃,微博博客上到處可見(jiàn)有質(zhì)量的技術(shù)貼,但是有時(shí)候想系統(tǒng)閱讀時(shí)卻不是很方便,如果能夠整理成冊(cè)自由分享該有多好。雖然少數(shù)人有幸通過(guò)出版社出書(shū)了,但代價(jià)太大,也不能普及大眾,現(xiàn)在技術(shù)那么發(fā)達(dá),有沒(méi)有辦法自己自助出版呢?

          看了圖靈社區(qū)的文章為什么寫(xiě)作自由書(shū)籍?,作為愛(ài)書(shū)之人,我為什么不能想個(gè)辦法來(lái)解決呢?

          技術(shù)無(wú)極限,辦法現(xiàn)在有好幾種,在本文中,我就介紹用現(xiàn)在流行的Markdown格式的方式來(lái)產(chǎn)生專業(yè)的書(shū)籍,而且還可以做到利用互聯(lián)網(wǎng),不需要本地機(jī)器參與的完美方案。如果你喜歡微軟的Word,覺(jué)得用它已經(jīng)足夠了,那我們不是同道,不用往下看了。

          markdown能做出什么效果呢?

          多說(shuō)無(wú)益,先來(lái)看看效果吧。下面是我去年寫(xiě)的一本小冊(cè)子:跟我學(xué)企業(yè)敏捷開(kāi)發(fā) 在PDF閱讀器中的效果。注意還有完整的目錄和頁(yè)眉。

          書(shū)的內(nèi)容就全是用markdown格式寫(xiě)的,上圖相對(duì)應(yīng)的文件內(nèi)容(6.2節(jié))片斷如下。

          ## Cucumber 簡(jiǎn)介 ##Cucumber(英文:黃瓜)(官方網(wǎng)站是<http://cukes.info/>)是一個(gè)實(shí)例化需求的極佳實(shí)現(xiàn)伴侶。它是基于Ruby的開(kāi)源測(cè)試工具,得益于Ruby便于創(chuàng)建和使用DSL的特性,它可以通過(guò)自然語(yǔ)言(文本文字)來(lái)描述需求(業(yè)務(wù)層),并通過(guò)關(guān)鍵字驅(qū)動(dòng)和正則表達(dá)式匹配告訴去做哪些事情(驅(qū)動(dòng)層),在運(yùn)行自動(dòng)化測(cè)試結(jié)束以后,還會(huì)給出詳細(xì)的報(bào)告。Insert 18333fig0601.png圖 6-1. Cucumber的架構(gòu)下面就是一個(gè)加法例子的需求描述,Cucumber文件以`.feature`結(jié)尾。  # 加法 adding.feature  Feature: Adding    In order to avoid silly mistakes    As a math idiot    I want to be told the sum of two numbers

          下面就是書(shū)的全部markdown文件,每一章一個(gè)文件。我把它們分成了序、前言、致謝、正文和附錄,蠻像回事吧。有興趣的朋友可以看看作譯者手冊(cè),來(lái)了解標(biāo)準(zhǔn)的書(shū)是怎么組成的。

          $ find zhzhzh/0prefacezh/0preface/00-chapter1-preface.markdownzh/0preface/00-chapter2-changes.markdownzh/0preface/00-chapter3-acknowledgement.markdownzh/1chapterszh/1chapters/01-chapter1-agile-scrum.markdownzh/1chapters/01-chapter2-git-gerrit.markdownzh/1chapters/01-chapter3-ci.markdownzh/1chapters/01-chapter4-java.markdownzh/1chapters/01-chapter5-sbe.markdownzh/1chapters/01-chapter6-cucumber.markdownzh/1chapters/01-chapter7-workshop.markdownzh/2appendixzh/2appendix/02-chapter1-sample.markdownzh/2appendix/02-chapter2-cc2git.markdown

          全書(shū)的內(nèi)容夠可以在github上找到https://github.com/larrycai/sdcamp/tree/master/zh

          樣式的產(chǎn)生全部有模板完成,一般不需要改動(dòng),這個(gè)稍后講。

          什么是markdown

          有興趣了,就可以聊聊markdown了,簡(jiǎn)單來(lái)說(shuō),markdown格式的文件看著像一般的文本文件,里面只是加了很少的格式標(biāo)記,因此看文本文件也不影響理解,這種格式也有很多工具幫你去轉(zhuǎn)化,而且很容易自動(dòng)化解決。并且這些技術(shù)大多數(shù)是開(kāi)源或免費(fèi)的。

          ## Cucumber 簡(jiǎn)介 ##就可以轉(zhuǎn)換成html的<h2>Cucumber 簡(jiǎn)介</h2>或者書(shū)中的小節(jié), 空四個(gè)就是表示代碼,是否很簡(jiǎn)單。具體可以看圖靈社區(qū)的文章 Markdown語(yǔ)法說(shuō)明(詳解版)

          為什么要用markdown

          原因也很簡(jiǎn)單,因?yàn)楹?jiǎn)潔和流行。markdown格式的普及要?dú)w功于Github和StackOverflow。因?yàn)樗鼈冊(cè)絹?lái)越流行,它們支持markdown格式也越來(lái)越流行。這里要贊一個(gè)的是,國(guó)內(nèi)的圖靈社區(qū)也支持markdown,用起來(lái)超級(jí)方便。

          我的體會(huì)是,它讓你關(guān)注內(nèi)容,格式怎么顯示不是要你在寫(xiě)得時(shí)候關(guān)注的。Word讓我討厭的原因就是老要關(guān)注格式。

          實(shí)際上核心是軟件思想中的分離,就像HTML關(guān)注內(nèi)容,CSS關(guān)注格式表現(xiàn)一樣。

          背后的魔法

          從Markdown源文件產(chǎn)生電子書(shū)一般有兩種方案:一種是產(chǎn)生HTML中間格式再轉(zhuǎn)換出電子書(shū),另一種是對(duì)應(yīng)地轉(zhuǎn)換產(chǎn)生出LaTeX文件格式,再和LaTeX模板合在一起,最后轉(zhuǎn)換產(chǎn)生PDF,達(dá)到標(biāo)準(zhǔn)書(shū)籍出版的質(zhì)量(完整的封面,目錄,頁(yè)眉等等),這里主要討論第二種。

          LaTeX(就是Donald E. Knuth(高德納)發(fā)明的)是一個(gè)出版界(至少是科技界)常用的格式,PDF也能很容易地產(chǎn)生出來(lái),它的好處是內(nèi)容和形式是很容易分開(kāi)的,感謝大師的設(shè)計(jì)。

          Markdown可以通過(guò)工具自動(dòng)轉(zhuǎn)換出LaTeX的標(biāo)準(zhǔn)內(nèi)容。

          \section{Cucumber 簡(jiǎn)介} % 

          就是上面由## Cucumber 簡(jiǎn)介 ##自動(dòng)生成的LaTeX內(nèi)容,表示小節(jié)。

          余下書(shū)的表現(xiàn)形式就有預(yù)先調(diào)好的LaTeX的模板來(lái)處理,像頁(yè)眉、目錄、字體之類的和內(nèi)容無(wú)關(guān)的就全部有LaTeX搞定了。不同的出版社或者圖書(shū)系列都會(huì)有特定的模板,這和作者的內(nèi)容無(wú)關(guān)。

          這有點(diǎn)像HTML和CSS的關(guān)系。下面這一段是調(diào)整小節(jié)標(biāo)題顯示:

          \definecolor{colorsection}{RGB}{95,158,160}    % CadetBlue\setromanfont[Mapping=tex-text,BoldFont="WenQuanYi Micro Hei"]\titleformat{\section}    {\color{colorsection}\normalfont\Large\bfseries}    {\color{colorsection}\thesection}{1em}{}

          \bfseries 是讓 LaTeX 使用粗體字排版,這兒選擇了文泉驛的微黑。

          下面這一段是調(diào)出頁(yè)眉左上角(LE=Left Head)的:顯示頁(yè)碼和內(nèi)容,顏色設(shè)定為鋼鐵藍(lán),

          \definecolor{colorheader}{RGB}{70,130,180} % SteelBlue\fancyhead[LE]{\color{colorheader}\quad\small\textbf\thepage\quad\quad\small\leftmark} %頁(yè)眉左上角

          初看有點(diǎn)復(fù)雜,學(xué)習(xí)曲線蠻陡的。不懂的話,知道里面含有樣式就可以了,反正你可以用現(xiàn)成的模板,這也是出版的專業(yè)所在,不用寫(xiě)書(shū)的負(fù)責(zé)。

          工具軟件pandoc能幫著從markdown轉(zhuǎn)換出LaTeX格式,然后通過(guò)TexLive軟件中的xelatex再轉(zhuǎn)成PDF格式。

          強(qiáng)烈建議你到Pandoc的在線實(shí)驗(yàn)環(huán)境試一下。

          這里主要討論P(yáng)DF的格式,實(shí)際上epub/mobi格式的用pandoc生成也很方便。

          其他常用格式的出版方案

          計(jì)算機(jī)類圖書(shū)對(duì)格式要求不是很多,圖文、章節(jié)、源代碼基本就夠了,就算有些復(fù)雜公式,也可用圖來(lái)顯示。這也從理論上說(shuō)明,它不需要復(fù)雜的格式?,F(xiàn)在對(duì)這類技術(shù)書(shū)出版我的理解主要有幾種:

          1. Microsoft的Word格式,雖然國(guó)內(nèi)出版界如日中天,缺省就認(rèn)它(對(duì)技術(shù)沒(méi)追求,鄙視)。簡(jiǎn)單好學(xué),但是不擅長(zhǎng)自動(dòng)化,是開(kāi)源的死敵。
          2. 直接用LaTeX格式,這是很棒的東西,特別適合學(xué)術(shù)類的各種復(fù)雜的公式等,不過(guò)學(xué)習(xí)曲線很高,國(guó)內(nèi)也只有幾家學(xué)術(shù)期刊使用。
          3. DocBook格式是最有名的(從SGML演化過(guò)來(lái)),O'Reilly和Pragmatic出版社缺省就用它,它能很方便地轉(zhuǎn)化出出版要的各種樣式。如Jenkins - the definition guide開(kāi)源書(shū)就是采用docbook。但由于是XML格式,很多人不習(xí)慣,而且多人網(wǎng)上協(xié)作不是很方便。
          4. 通過(guò)蔣鑫的Got Github開(kāi)源書(shū),我也了解reStructureText也是和markdown差不多純文本(plain text)的,也是蠻流行的,結(jié)合sphinx也所向無(wú)敵。

          自己動(dòng)手產(chǎn)生電子書(shū)

          講了那么多,作為碼農(nóng),該動(dòng)手實(shí)踐一下,其他讀者可以跳過(guò)這一章。

          你需要一臺(tái)Linux機(jī)器(虛擬機(jī)就可以了)和簡(jiǎn)單的Linux命令就可以試驗(yàn)了。有g(shù)it和ruby的知識(shí)那就更方便了。

          我用的試驗(yàn)環(huán)境是Ubuntu 12.04 (Precise) 版本。

          下載書(shū)的源代碼

          很簡(jiǎn)單,git clone一下就可以了,下載它的源文件包我覺(jué)得還是煩了點(diǎn)。

          $ git clone https://github.com/larrycai/sdcamp.git

          生成PDF是一個(gè)比較復(fù)雜的東西,用到了pandocTexLive軟件,用Ubuntu庫(kù)里就可以了。關(guān)于Pandoc,可以看圖靈社區(qū)翻譯的文章關(guān)于通用文檔轉(zhuǎn)換器Pandoc,TexLive就是LaTeX的工具集。

          $ sudo apt-get install pandoc $ sudo apt-get install texlive-xetex texlive-latex-recommended texlive-latex-extra # 安裝texlive 2011

          因?yàn)槭侵形腜DF,需要把字體嵌入在文件中,因此需要安裝字體文件(如果不是Ubuntu中文版),具體可看我在圖靈社區(qū)的文章開(kāi)源書(shū)和開(kāi)源技術(shù)-PDF中蛋疼的中文字體

          $ sudo apt-get install ttf-arphic-gbsn00lp ttf-arphic-ukai ttf-wqy-microhei ttf-wqy-zenhei

          現(xiàn)在你就可以生成pdf文件了。

          $ ./mkbok    

          mkbok 腳本

          pandoc本身也支持模板,但很多情況下,還需要調(diào)整,寫(xiě)個(gè)腳本就方便多了。我用的腳本mkbok是基于Pro Git里面的腳本makeebooksmakepdfs開(kāi)發(fā)的。原書(shū)作者Scott原來(lái)還用calibre產(chǎn)生epub文件,我統(tǒng)一用pandoc。并原有的基礎(chǔ)上進(jìn)行了擴(kuò)展,統(tǒng)一為mkbok腳本。

          $ ./mkbok --build pdf,html,epub --lang zh --template latex/template.tex

          這樣就可一次性完成電子書(shū)的活,而且還改造了LaTeX模板(加了前言、致謝和頁(yè)眉等,使它最后的結(jié)果更像一份標(biāo)準(zhǔn)的書(shū)。主要功能差不多,但是擴(kuò)展應(yīng)該會(huì)更好些,特別是有機(jī)會(huì)更方便地采用不同的專業(yè)模板。

          基于Github和Travis-ci的互聯(lián)網(wǎng)在線方案

          你可以建一套基于上述技術(shù)的方便的出版系統(tǒng)。不過(guò)也可以利用互聯(lián)網(wǎng)的服務(wù),混搭一下。Github和Travis-ci就是我要利用的混搭服務(wù)。

          Github和Travis CI這里就不介紹怎么使用了,具體可以先看曉斌的博客和蔣鑫的Got Github,強(qiáng)烈建議你先試一下。要不下期碼農(nóng)吧。

          簡(jiǎn)單道理就是當(dāng)你把代碼推送到Github時(shí),就可以觸發(fā)Travis-ci的構(gòu)建。Travis-ci會(huì)啟動(dòng)一個(gè)基于Virtualbox的Ubuntu的虛擬機(jī)(當(dāng)前是12.04版本),然后根據(jù)你的.travis-ci.yml中的配置來(lái)構(gòu)建你的產(chǎn)品,也就是執(zhí)行上面的步驟來(lái)產(chǎn)生PDF文件。

          構(gòu)建結(jié)束后,虛擬機(jī)會(huì)被刪除掉,雖然Travis-ci網(wǎng)站本身沒(méi)有提供歸檔功能,但是Github的API提供了極好的方法來(lái)上傳文件。所以我們可以用Github API和Travis-ci的保密環(huán)境變量的方式來(lái)把Travis-ci的結(jié)果上傳回Github。

          具體請(qǐng)看我的博客把Travis-ci的結(jié)果上傳回Github。

          李明老師的源碼開(kāi)放學(xué)ARM也是此方案的忠實(shí)用戶,基本上可以全用瀏覽器解決。

          結(jié)尾

          里面的技術(shù)細(xì)節(jié)還有蠻多的,不知是否你都明白,實(shí)際上照著試一遍,你會(huì)發(fā)現(xiàn)不是那么復(fù)雜。如果有問(wèn)題,盡管找我 (@larrycaiyu)。

          我一直設(shè)想中有一天上面提到的各個(gè)環(huán)節(jié)都能打磨得非常流暢,吸引更多的使用者。然后能夠有很多人有興趣用它來(lái)寫(xiě)書(shū),可能是自?shī)首詷?lè),也可以免費(fèi)出版。不管怎樣都是促進(jìn)圖書(shū)業(yè)。

          出版界或者LaTeX的高手可以提供設(shè)計(jì)些更好的LaTeX模板(可以收費(fèi))供大家使用。

          圖靈出版社也提供網(wǎng)上的編輯服務(wù)(當(dāng)然是可以收費(fèi)的),對(duì)一些想把書(shū)寫(xiě)得專業(yè)點(diǎn)的作者提供額外的幫助,這樣或許是一個(gè)很好的增值服務(wù)。至少像我這樣的文筆超爛的技術(shù)人員很想得到的。

          這些本是我2012想做到的事情:設(shè)想中的開(kāi)源書(shū)項(xiàng)目,而且域名都買好了,留個(gè)遺憾放到明年吧。

          技術(shù)無(wú)極限,只怕沒(méi)追求。 

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          Markdown寫(xiě)作進(jìn)階:Pandoc入門淺談 ← 陽(yáng)志平的個(gè)人網(wǎng)站::技術(shù)
          為什么Markdown R有較大概率成為科技寫(xiě)作主流? ← 陽(yáng)志平的個(gè)人網(wǎng)站::技術(shù)
          小徑分叉的編輯器:一部不斷變輕的進(jìn)化史
          Markdown數(shù)學(xué)公式簡(jiǎn)要
          pandoc
          文件一鍵排版使用軟件或工具來(lái)快速對(duì)文檔格式、字體、字號(hào)等進(jìn)行設(shè)置,以使頁(yè)面更加整潔、易于閱讀和美觀
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服