Sphinx+reStructuredText:調(diào)整PDF樣式 (上)

本文為快問快答形式枕稀,分享使用 Sphinx+reStructuredText 發(fā)布PDF過程中询刹,調(diào)整PDF樣式的方法和經(jīng)驗(yàn)。另外萎坷,實(shí)現(xiàn)方法可能有多種凹联,本文僅分享筆者工作中的經(jīng)驗(yàn),不代表是唯一的或者最優(yōu)的做法哆档。

使用 Sphinx+reStructuredText 生成PDF時(shí)蔽挠,默認(rèn)經(jīng)過的是 reStructuredText 文件 > tex 文件 > PDF 文件的過程,即使用的是 latex engine進(jìn)行PDF的輸出瓜浸。因此澳淑,在自定義輸出的PDF樣式時(shí),很多的調(diào)整都是基于 latex 語法插佛。在此杠巡,推薦一本latex的入門書籍,劉海洋的《Latex入門》雇寇。有需要的小伙伴可以聯(lián)系我氢拥,我可以分享本書的電子檔蚌铜。

劉海洋《Latex入門》.png

Q1: 如何修改文檔頁面尺寸為 A4?

使用 Sphinx+reStructuredText 生成PDF時(shí)兄一,默認(rèn)的頁面大小是 Letter 尺寸(Letter是美國(guó)比較普遍使用的一個(gè)紙張尺寸厘线,具體的尺寸為 8.5英寸 * 11英寸)。而國(guó)內(nèi)則普遍使用A4紙張尺寸出革,具體尺寸為 210mm297mm造壮,折合英制為 8.268英寸11.69英寸。因此骂束,會(huì)出現(xiàn)需要調(diào)整文檔頁面尺寸為A4的現(xiàn)象耳璧。

如何調(diào)整:

  1. 在默認(rèn)的 Sphinx 環(huán)境(默認(rèn)是 source 文件夾)中找到 conf.py 文件。
  2. latex_elements 中添加 papersize: a4paper 行展箱。如下示例:
image.png
  1. 此外旨枯,還可以進(jìn)一步設(shè)置頁面版心的尺寸,即頁面內(nèi)容顯示區(qū)域離上下左右邊距的大小混驰。
    以上下左右邊距設(shè)置為 2cm 為例攀隔,在 latex_elements 添加以下命令:
latex_elements{
   'geometry': r' \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}',

}

Q2: 如何調(diào)整PDF字體?

默認(rèn)情況下栖榨,Sphinx使用 latex engine 輸出PDF昆汹,默認(rèn)使用 Times,Helvetica婴栽,和 Courier 字體組合满粗。因此,如果需要調(diào)整字體愚争,可以使用 latex 中 font 包的用法映皆,引入心儀的目標(biāo)字體。

需要注意的是轰枝,font 宏包的使用僅適用于latex 發(fā)布引擎為 xelatexlualatex 的情況捅彻。而Sphinx默認(rèn)的latex engine為 pdflatex.

如需自定義發(fā)布出來的PDF的字體,可以參考下面的操作:

  1. 使用 fc-list 命令鞍陨,或者到 系統(tǒng) font 目錄下查看已有字體沟饥,確保系統(tǒng)中含有目標(biāo)字體。

  2. 在默認(rèn)的 Sphinx 環(huán)境(默認(rèn)是 source 文件夾)中找到 conf.py 文件湾戳。

  3. 使用 xelatex latex 發(fā)布引擎贤旷。

    使用 xelatex 發(fā)布引擎.png

  4. latex_elements 使用 fontpkg 行。如下示例:

引入 fontpkg 包.png

Q3: 如何自定義頁眉頁腳

使用latex fancyhdr 宏包進(jìn)行設(shè)置砾脑。

  1. conf.py 文件中幼驶,找到 latex_elements
  2. 根據(jù)需求設(shè)置頁眉頁腳韧衣。

fancyhdr 宏包的詳細(xì)命令和參數(shù)盅藻,可參考劉海洋《Latex入門》一書中 P145-149购桑。

Q4: 調(diào)整目錄樣式

使用 latex tocloft 宏包進(jìn)行設(shè)置。

  1. conf.py 文件中氏淑,找到 latex_elements勃蜘。
  2. 以調(diào)整目錄中制表位寬度為例,命令行示例如下:
latex_elements:{
   'premable': r'''
   usepackage{tocloft}
  \renewcommand\cftfignumwidth{4em} 
  \renewcommand\cfttabnumwidth{4em} 
  \renewcommand\cftsecnumwidth{4em} 
  \renewcommand\cftsubsecnumwidth{6em} 
  \renewcommand\cftparanumwidth{6em} 
'''
}

Latex tocloft 宏包中假残,對(duì)應(yīng)的命令和參數(shù)如下:

tocloft 宏包命令和參數(shù).png

詳細(xì)設(shè)置缭贡,可參考劉海洋《Latex入門》一書的 P162-165。

Q5: 如何讓每節(jié)(section)從新的頁面開始辉懒?

  1. conf.py 文件中阳惹,找到 latex_elements
  2. 增加以下命令行:
latex_elements:{
   'premable': r'''
   newcommand{\sectionbreak}{\clearpage}
'''
}

如何修改全文文本對(duì)齊方式為左對(duì)齊眶俩?

默認(rèn)輸出的PDF中莹汤,正文文本對(duì)齊方式默認(rèn)設(shè)置為“兩端對(duì)齊”,但在英文文檔中颠印,有時(shí)候不太友好纲岭。所以,一般需要將文本對(duì)齊修改為“左對(duì)齊”线罕。

  1. conf.py 文件中荒勇,找到 latex_elements
  2. 增加以下命令行:
latex_elements:{
   'premable': r'''
   \usepackage[document]{ragged2e}
'''
}

未完待續(xù)...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闻坚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兢孝,更是在濱河造成了極大的恐慌窿凤,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跨蟹,死亡現(xiàn)場(chǎng)離奇詭異雳殊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窗轩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門夯秃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痢艺,你說我怎么就攤上這事仓洼。” “怎么了堤舒?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵色建,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我舌缤,道長(zhǎng)箕戳,這世上最難降的妖魔是什么某残? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮陵吸,結(jié)果婚禮上玻墅,老公的妹妹穿的比我還像新娘。我一直安慰自己壮虫,他們只是感情好澳厢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旨指,像睡著了一般赏酥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆构,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天裸扶,我揣著相機(jī)與錄音,去河邊找鬼搬素。 笑死呵晨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬尺。 我是一名探鬼主播摸屠,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粱哼!你這毒婦竟也來了季二?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤揭措,失蹤者是張志新(化名)和其女友劉穎胯舷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绊含,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桑嘶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡托呕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出以政,到底是詐尸還是另有隱情,我是刑警寧澤伴找,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布妙蔗,位于F島的核電站,受9級(jí)特大地震影響疆瑰,放射性物質(zhì)發(fā)生泄漏眉反。R本人自食惡果不足惜昙啄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寸五。 院中可真熱鬧梳凛,春花似錦、人聲如沸梳杏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十性。三九已至叛溢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劲适,已是汗流浹背楷掉。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霞势,地道東北人烹植。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愕贡,于是被迫代替她去往敵國(guó)和親草雕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 這幾天準(zhǔn)備編排部分翻譯的書籍和文檔固以,找了好些工具墩虹,最終定格在 Sphinx 上,并基于 ReadTheDocs 提...
    qiwihui閱讀 9,024評(píng)論 1 10
  • 第五章 文檔 Python中 文檔格式的事實(shí)標(biāo)準(zhǔn)是reStructuredText 簡(jiǎn)稱 reST憨琳,是一種輕量級(jí)的...
    七天七念閱讀 377評(píng)論 0 0
  • ReadtheDocs Read the Docs非常適合寫軟件文檔以及編寫一些教程诫钓、電子書之類。對(duì)于一些一兩篇文...
    木語沉心閱讀 4,120評(píng)論 0 0
  • 詩歌不屬于寫作的人栽渴,應(yīng)該給那些最需要的人 現(xiàn)在的事實(shí)是:我們不需要詩 我喜歡耶魯達(dá)《我喜歡你是寂靜的》 我喜歡你是...
    思索人生_mind閱讀 187評(píng)論 0 1
  • 某多多的砍價(jià)活動(dòng)真的很考驗(yàn)友情 如果你覺得平時(shí)很親的人 都不愿意下載app幫你 那你需要仔細(xì)思考下你們之間的關(guān)系了
    熱鬧且寂寥閱讀 265評(píng)論 0 1