本文為快問快答形式枕稀,分享使用 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)系我氢拥,我可以分享本書的電子檔蚌铜。
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)整:
- 在默認(rèn)的 Sphinx 環(huán)境(默認(rèn)是 source 文件夾)中找到
conf.py
文件。 - 在
latex_elements
中添加papersize: a4paper
行展箱。如下示例:
- 此外旨枯,還可以進(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ā)布引擎為
xelatex
和lualatex
的情況捅彻。而Sphinx默認(rèn)的latex engine為pdflatex
.
如需自定義發(fā)布出來的PDF的字體,可以參考下面的操作:
使用
fc-list
命令鞍陨,或者到 系統(tǒng) font 目錄下查看已有字體沟饥,確保系統(tǒng)中含有目標(biāo)字體。在默認(rèn)的 Sphinx 環(huán)境(默認(rèn)是 source 文件夾)中找到
conf.py
文件湾戳。-
使用
xelatex
latex 發(fā)布引擎贤旷。
在
latex_elements
使用fontpkg
行。如下示例:
Q3: 如何自定義頁眉頁腳
使用latex fancyhdr
宏包進(jìn)行設(shè)置砾脑。
- 在
conf.py
文件中幼驶,找到latex_elements
。 - 根據(jù)需求設(shè)置頁眉頁腳韧衣。
fancyhdr
宏包的詳細(xì)命令和參數(shù)盅藻,可參考劉海洋《Latex入門》一書中 P145-149购桑。
Q4: 調(diào)整目錄樣式
使用 latex tocloft
宏包進(jìn)行設(shè)置。
- 在
conf.py
文件中氏淑,找到latex_elements
勃蜘。 - 以調(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ù)如下:
詳細(xì)設(shè)置缭贡,可參考劉海洋《Latex入門》一書的 P162-165。
Q5: 如何讓每節(jié)(section)從新的頁面開始辉懒?
- 在
conf.py
文件中阳惹,找到latex_elements
。 - 增加以下命令行:
latex_elements:{
'premable': r'''
newcommand{\sectionbreak}{\clearpage}
'''
}
如何修改全文文本對(duì)齊方式為左對(duì)齊眶俩?
默認(rèn)輸出的PDF中莹汤,正文文本對(duì)齊方式默認(rèn)設(shè)置為“兩端對(duì)齊”,但在英文文檔中颠印,有時(shí)候不太友好纲岭。所以,一般需要將文本對(duì)齊修改為“左對(duì)齊”线罕。
- 在
conf.py
文件中荒勇,找到latex_elements
。 - 增加以下命令行:
latex_elements:{
'premable': r'''
\usepackage[document]{ragged2e}
'''
}
未完待續(xù)...