一直糾結(jié):用什么工具來記錄學(xué)習(xí)中的點(diǎn)滴,用什么寫軟件的文檔
...
然后覺得 git + sphinx 應(yīng)該是個(gè)不錯(cuò)的選擇,恩,生成網(wǎng)頁、qthelp、chm文件等都還不錯(cuò),可是,當(dāng)想生成包含中文的pdf時(shí),又回到了讓人倍感頭痛的 LaTeX中文問題上面來了...
windows下似乎沒什么好說的,本文稍偏重ubuntu,總體來說latex中文比前幾年好用太多了。本文最初目標(biāo),學(xué)習(xí)最基本的sphinx+latex的中文處理。
相關(guān)(類似)的名詞太多了,想分清真不容易
引擎 | (Knuth)TeX | 真正的(原始的)TeX |
ε-TeX | 相對于原始的TeX它提供了一種擴(kuò)展模式 | |
pdfTeX | 它從tex文件不通過dvi文件直接生成pdf文件(開發(fā)者已經(jīng)轉(zhuǎn)向LuaTeX) | |
XeTeX | 相對于原始的TeX,主要增加了Unicode和 OpenType 的支持 | |
LuaTeX | 它使用Lua作為擴(kuò)展語言,對于LaTeX支持尚不完善? | |
... | ||
宏集 | plain TeX | 最古老的TeX宏集,提供了一些最基本的命令 |
AMSTeX | 是美國數(shù)學(xué)會(huì)提供的一個(gè)TeX宏集,它添加了許多數(shù)學(xué)符號和數(shù)學(xué)字體 | |
LaTeX | 相對于PlainTeX,它使得科技文檔的排版更加直觀和方便 | |
ConTeXt | 和LaTeX 相比,它更加靈活和自由 | |
... | ||
發(fā)行版 | TeX Live | 國際TeX用戶組織TUG開發(fā),支持不同的操作系統(tǒng) |
MiKTeX | Windows 下廣泛使用的一個(gè)TeX發(fā)行版 | |
ConTeXt Minimals | 它包含了最新版本的 ConTeXt | |
teTeX | 一個(gè)Unix下的TeX發(fā)行版,現(xiàn)在已經(jīng)停止更新且并入TeXLive | |
fpTeX | 一個(gè)Windows的TeX發(fā)行版,已不再更新 | |
... |
真夠亂的,還好,我們只關(guān)注一部分:
原始的TeX已經(jīng)有了一組宏集,也就是Knuth所寫的著名的Plain TeX(原始的TeX和Plain Tex都是《The TeXbook 》一書中介紹的內(nèi)容)。
但是這些命令仍然很底層,不夠方便、直觀,于是Leslie Lamport寫了另一組宏,稱為LaTeX,主要是它版本配置和文中內(nèi)容適度分開處理。
LaTeX 2ε是自1993年以來LaTeX的一個(gè)穩(wěn)定版本,是目前大部分LaTeX書籍的主體內(nèi)容。
ctex宏包提供了一個(gè)統(tǒng)一的中文LaTeX文檔框架,底層支持CCT、CJK和xeCJK三種中文LaTeX系統(tǒng)。
ctex宏包提供了編寫中文LaTeX文檔常用的一些宏定義和命令。
主要文件包括ctexart.cls、ctexrep.cls、ctexbook.cls 和 ctex.sty、ctexcap.sty。
*.tex | ==> | *.dvi | ==> | *.ps | ==> | |
latex | divps | ps2pdf |
*.tex | ==> | *.dvi | ==> | |
latex | dvipdfm |
*.tex | ==> | |
pdflatex |
種種跡象表明,ubuntu軟件倉庫中的TeX Live非常非常不好用。于是,只能從官方下載ISO鏡像,或者直接網(wǎng)絡(luò)安裝了。
sudo mkdir /mnt/texlivesudo mount -o loop texlive2011-20110705.iso /mnt/texlive
cd /mnt/texlivesudo ./install-tl
很不錯(cuò)的一個(gè)Tex(LaTeX、ConTeXt等)文檔的創(chuàng)作環(huán)境,一個(gè)基于Unicode的可感知TeX的編輯器,集成了PDF瀏覽功能,干凈、簡潔的操作界面。
恩,更主要的是Qt4編寫的開源軟件,跨Windows、Linux、Mac OS環(huán)境。
當(dāng)前的推薦配置(?)
不使用這兩個(gè)宏包(需要設(shè)置所用字體,命令fc-list :lang=zh-cn用來查看系統(tǒng)字體)
\documentclass[11pt,a4paper]{article}\usepackage{fontspec}\setmainfont{WenQuanYi Micro Hei}\begin{document}TeX Live 2011,XeLaTeX,Texworks,你們好!!\end{document}
直接使用xeCJK宏包。(屬于底層的方案)
\documentclass{article}\usepackage{xeCJK}\setCJKmainfont{WenQuanYi Micro Hei}\begin{document}TeX Live 2011,XeLaTeX,Texworks,你們好?。?span id="line-6-1" class="anchor">\end{document}
使用ctex宏包。高層的方案。(默認(rèn)的字體是為windows準(zhǔn)備的,在linux下,可以直接設(shè)置字體,但更建議采用后面的方法,修改ctex的字體文件)
\documentclass{ctexart}\setCJKmainfont{WenQuanYi Micro Hei}\begin{document}TeX Live 2011,XeLaTeX,Texworks,你們好?。?span id="line-5-2" class="anchor">\end{document}
解決字體問題后,看起來還是很簡單的:
\documentclass{ctexart}\begin{document}TeX Live 2011,XeLaTeX,Texworks,你們好??!\end{document}
如果不想用linux下的字體,還可以把 Windows 下的一些字體直接拷貝到 ~/.fonts 目錄中
cp sim* ~/.fonts
\setCJKmainfont[BoldFont=Droid Sans Fallback, ItalicFont=AR PL UKai CN]{AR PL UMing CN}\setCJKmonofont[Scale=0.9]{AR PL UKai CN}\setCJKfamilyfont{song}[BoldFont=Droid Sans Fallback]{AR PL UMing CN}\setCJKfamilyfont{sf}[BoldFont=Droid Sans Fallback]{Droid Sans Fallback}
/usr/local/texlive/2011/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
其內(nèi)容大致如下:
% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字體設(shè)置,默認(rèn)為六種中易字體% vim:ft=tex\setCJKmainfont[BoldFont={SimHei},ItalicFont={[SIMKAI.TTF]}]{SimSun}\setCJKsansfont{SimHei}\setCJKmonofont{[SIMFANG.TTF]}\setCJKfamilyfont{zhsong}{SimSun}\setCJKfamilyfont{zhhei}{SimHei}\setCJKfamilyfont{zhkai}{[SIMKAI.TTF]}\setCJKfamilyfont{zhfs}{[SIMFANG.TTF]}\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋體\newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑體\newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷書\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋\endinput
將其中的 [SIMKAI.TTF] 和 [SIMFANG.TTF] 用 KaiTi 和 FangSong 替代。(好奇怪,Windows下怎么會(huì)這個(gè)奇怪的名字,字體直接拷過來,就不需要這么奇怪的名字)
有了前面一堆東西,終于可以回到Pyhton sphinx了
當(dāng)我們運(yùn)行 sphinx-build -b latex src target時(shí),它生成
等文件
但是,
這樣以來,需要簡單修改一下的sphinx的latex生成器了,找到目標(biāo)(這個(gè)位置不定,在python中import sphinx,然后查看sphinx.file 比較容易定位)
/usr/lib/pymodules/python2.7/sphinx/writers/latex.py
* 搜索article和report,改為ctexart和ctexrep
Makefile 是通過哪個(gè)文件生成的呢?好隱蔽
/usr/share/sphinx/texinputs/Makefile
恩,一個(gè)靜態(tài)文件,直接按照自己需要改就行了。不過我們直接將里面所有的pdflatex直接改成xelatex就夠了
http://www.newsmth.net/bbscon.php?bid=460&id=282515&ftype=11
http://tug.ctan.org/tex-archive/language/chinese/ctex/doc/ctex.pdf