PageRank



轉移公告

計劃把 http://blog.hoamon.info/ 文章全部轉移至 http://www.hoamon.info/blog/ 這裡,而本 Blogger 站台的文章近 500 篇,我預計在 2014-12-31 前移轉完畢,完成後 http://blog.hoamon.info/ 將只作代轉服務,一律把舊連結如 http://blog.hoamon.info/index.html 轉成 http://www.hoamon.info/blog/index.html ,敬請舊雨新知互相走告。

新文章只發佈在 http://www.hoamon.info/blog/ 。

何岳峰 敬上
顯示具有 latex 標籤的文章。 顯示所有文章
顯示具有 latex 標籤的文章。 顯示所有文章

2012年9月18日 星期二

「黑天鵝效應」讀書心得

簡短摘錄書籍內容

書籍內容分成四部。
  • 第一部從知識論角度來說明人類思想的盲點。
  • 第二部舉證了「預測」本身的荒繆。
  • 第三部針對有數學、科學背景的讀者所準備,提供區分真正的不確定性方法。
  • 第四部簡短分享作者個人面對黑天鵝事件的態度。
閱讀更多…

2009年9月3日 星期四

Latex CJK on Windows

我都是使用 rst 格式作為日常書寫格式,因為很方便地讓我作版本控制。所以網頁程式開發的功能/技術規格書也是用 rst 來編輯的。

但有個問題,當我想作圖文合併時,我可以在 ubuntu 中,使用 rst2latex, latex, dvipdfmx 等工具來轉成 pdf 檔,如果是在 Windows 下呢? 我的那些學弟們多半還是在 Windows 下工作,為了他們著想,我寫了這篇文章。

首先,一樣使用 rst2latex 程式(這是 python-docutils 提供的),把 rst 檔轉成 .tex 檔 * ,然後再利用 latex.exe 生出 .dvi 文件,最後再利用 dvipdfmx.exe 把 dvi 轉成 pdf 檔。指令如下:

C:\> "C:\Program Files\MiKTeX 2.7\miktex\bin\latex.exe" xxx.tex
C:\> "C:\Program Files\MiKTeX 2.7\miktex\bin\dvipdfmx.exe" xxx

所以在 Windows 中,生成 pdf 檔也不是件難事。

那麼我們如何讓 Windows 可以有 latex.exe 及 dvipdfmx.exe 的指令呢! 很簡單,安裝 Basic MiKTex.exe 及相關字型檔即可。

Basic MiKTex.exe 的安裝方式就是下一步、下一步。待安裝好後,請開啟 MiKTeX > Settings ,並在 Roots 中新增「相關字型檔」的資料夾位置(看你將解壓縮後的資料夾放在那裡,我是放在 C:\texmf)。接下來在命令列中打入指令:

C:\> initexmf -u
C:\> initexmf --edit-config-file updmap
這時候會出現純文字編輯器,請把以下紫色內容複製貼上,再存檔關閉。
Map cwmu.map
Map cwku.map
Map cwfsu.map
Map cwhbu.map
Map cwyu.map

C:\> initexmf --mkmaps

這樣你就可以使用 latex.exe 及 dvipdfmx.exe 來生成 pdf 檔了 **。

詳細步驟可參考政大應數蔡炎龍老師的教學文件(本站備份)。

  • 註1 rst 及 tex 檔其實都只是純文字檔,只是它們的內文用不同的結構化標籤作格式排版。
  • 註2 Windows 下使用的字型檔,其字型名稱為 cwmu, cwku, cwfsu, cwhbu, cwyu ,所以原本我們在 tex 中,所寫的 \begin{CJK}{UTF8}{kai} 要改成 \begin{CJK}{UTF8}{cwku} 。

2009年6月2日 星期二

colorful source code in Latex(written in reStructed Text)

之前提到使用 Vim 的 plugin VST 來撰寫可自動轉換 latex 格式的簡單結構文章。VST 相當容易使用,不過在轉換程式碼到 pdf 格式時,它無法使用類似 2html 的技巧來讓程式碼變色。

所以我參考了 Listings Package 的語法,稍為修改了 VST 的程式碼(其實只是加上幾個宣告而已)。
 1 diff -r 56c0141f8add Configure/vim/plugin/vst-x.vim
 2 --- a/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:12:23 2009 +0800
 3 +++ b/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:14:07 2009 +0800
 4 @@ -4541,6 +4541,18 @@
 5                         \.'\usepackage{longtable}'."\n"
 6                         \.'\usepackage{tabularx}'."\n"
 7                         \.'\usepackage{amsmath}'."\n"
 8 +            \.'\usepackage{color}'."\n"
 9 +            \.'\usepackage{listings}'."\n"
10 +            \.'\definecolor{Brown}{cmyk}{0,0.81,1,0.60}'."\n"
11 +            \.'\definecolor{OliveGreen}{cmyk}{0.64,0,0.95,0.40}'."\n"
12 +            \.'\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}'."\n"
13 +            \.'\lstloadlanguages{Python,PHP,Ruby,Bash,Perl}'."\n"
14 +            \.'\lstset{language=Python,frame=ltrb,framesep=5pt,basicstyle=\normalsize,'."\n"
15 +            \.' keywordstyle=\ttfamily\color{OliveGreen},'."\n"
16 +            \.' identifierstyle=\ttfamily\color{CadetBlue}\bfseries,'."\n"
17 +            \.' commentstyle=\color{Brown},numbers=left,backgroundcolor=\color{white},'."\n"
18 +            \.' stringstyle=\ttfamily,escapeinside=``,identifierstyle=}'."\n"
19 +            \."\n"
20                         \.countrysettings."\n"
21                         \.'\renewcommand\CJKglue{\hskip -0.3pt plus 0.08\baselineskip}'."\n"
22                         \.'\linespread{1.382}'."\n"

這樣就可以在 vim 中撰寫如下語法,來讓程式碼在 pdf 中變色了:

.. raw:: latex

\begin{lstlisting}
import sys
print sys.getdefaultencoding()
sys.path.append(".")
sys.path.append("/home/hoamon/`桌面`")
from hashlib import md5
from random import random
for i in xrange(10): print md5(str(i+random())).hexdigest()
def whatever(x): print x + 3
whatever(10) # 13
#`中文要作跳脫,使用符號為[數字鍵1]左邊的那一個 \\``
\end{lstlisting}

.. raw:: latex

\lstinputlisting{xxx.py}


下圖就是成果啦:

沒有網頁格式的那樣多采多姿,但聊勝於無呀!

2009年5月16日 星期六

reStructured Text + CJK Latex: footnote 破壞文句階層問題

之前考博士班時,曾把自己的履歷用 Latex 寫出來。但是這太麻煩了。文章結構不難,但要多打很多我記不起來的標準語句,雖然可用 vim 樣版解決,但寫 latex 版的文章機會實在是太少了,除了履歷、期刊論文外,一些 blog 文章、計劃書、說明檔都是用類 wiki 的語法寫下來的。所以會少了很多時間記住 latex 語法。

最近開始寫報告及論文了,重新把 CJK Latex 安裝回我的 Ubuntu ,並回顧(複習)之前的 Latex 語法,覺得十分生疏。也就研究一下 Linux 上如何把 rST 格式轉 latex 的技術。還滿簡單的。我是結合 vim 來作轉換的動作。

但是在一個使用 footnote 的地方,無論我怎麼設定,它(rST)在轉 latex 時,就是會跑掉。

我的文句如下:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

轉成 pdf 後,發現「最後在第四部中…」這一句也會變成 footnote 中的文句。

而如果使用:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

則「最後在…」的文句其階層不同於「在歷史的不透…」。

最後,我終於找到解法了,就是把 footnote 解釋文句放置於該段落的最後段,如此一來,它就不會破壞文句階層了。其最後結果如下:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。


嗯~這個排版問題,我花了二個小時。可見我多麼要求排版品質。

2007年4月3日 星期二

第一個latex檔案:我的履歷

要考博班了,須要寫一篇履歷。花了不少時間,終於把網頁上的自傳履歷改成 latex 版。

範例: http://down.hoamon.info/resume070403.tex
成果: http://down.hoamon.info/resume070403.pdf

可惜有幾個地方,我作的還不夠好:
  1. 腳註不能放在最下面。第5頁的內容明顯不多,但腳註卻不能調整到最下面。
  2. 表格跨列處理的非常不好,以致於我略去 multirow 的指令。在生涯規劃的表格中,有幾個表格應該是跨列的,但不管我這麼調,它都不能依欄寬將一大段的文字斷行,所以我暫時放棄。

2007年4月2日 星期一

另一種Latex套件:TexLive2007

發現另一種似乎比 cjk-latex 好用的 tex 套件。它也可以處理 utf8
的文件,且據說它嵌入字形檔的方式是比較好的(原諒我,我還不太懂 tex),另外安裝也比較方便。

請 tex mirror 站下載 live-CD (
http://ctan.cdpa.nsysu.edu.tw/systems/texlive/Images/ )。

將 images 檔掛載到你想要的目錄如 /mnt/iso

$ sudo mount -t iso9660 -o loop /path/xxx.iso /mnt/iso
$ cd /mnt/iso
$ sh install-tl.sh
$ [按下d,以選擇安裝路徑]
$ [按下1,選擇 /usr/local/texlive,如果你沒有系統管理員的權限,就選擇你可以寫入的目錄]
$ [按兩次r離開]

這樣子,你就可以部份安裝好 texlive 了。為什麼是部份安裝呢!因為這樣的安裝方式,在你移除了 /path/xxx.iso
後,就無法使用了。但這種方式對我來說無所謂,因為我的 /path/xxx.iso
就放在硬碟裡,不會不見的。這樣只有一個缺點:比較浪費硬碟空間。

接下來我們要設定系統環境。下面是 texlive 可以運行的環境:

alpha-linux HP Alpha GNU/Linux
hppa-hpux HPPA HP-UX
i386-darwin x86 Mac OS X
i386-freebsd x86 FreeBSD
i386-linux x86 GNU/Linux
i386-openbsd x86 OpenBSD
i386-solaris x86 Solaris
mips-irix SGI IRIX
powerpc-aix IBM RS/6000 AIX
powerpc-darwin PowerPC Mac OS X
powerpc-linux PowerPC GNU/Linux
sparc-linux Sun Sparc GNU/Linux
sparc-solaris Sun Sparc Solaris
win32 Windows (32-bit)
x86_64-linux x86 64-bit GNU/Linux

我的是 i386-linux ,所以要在 ~/.bashrc 中設定:

PATH=/mnt/iso/bin/i386-linux:$PATH; export PATH
TEXMFSYSVAR=/usr/local/texlive/2007/texmf-var; export TEXMFSYSVAR

就這樣完成了。

下面是測試範例:


1 \documentclass[12pt]{book}
2 \usepackage{CJKutf8}
3 \begin{document}
4 \begin{CJK}{UTF8}{bsmi}
5 \tableofcontents
6 \chapter{here}
7 本常問問答集~(FAQ list)~是從一些經常被問到的問題及其適當的解答中,以
8 方便的形式摘要而出的。跟上一版不同的是,其編排結構已徹底改變。
9 \textbf{有關新結構的細節,可參考「如何閱讀本問答集及了解其編排結構」
10 該項中的說明。}
11 \chapter{CJK 巨集套件}
12 這是一個測試,關於CJK package 的測試。\LaTeX
13 \chapter{桃花源記節錄}
14 初狹,纔通人;復行數十步,豁然開朗。土地平曠,屋舍儼然。有良田、美池、%
15 桑、竹之屬,阡陌交通,雞犬相聞。其中往來種作,男女衣著,悉如外人;黃髮、%
16 垂髫, 並怡然自樂。見漁人,乃大驚,問所從來;具答之,便要還家,設酒、殺雞、%
17 作食。村中聞有此人,咸來問訊。自云:「先世避秦時亂,率妻子邑人來此絕境,%
18 不復出焉;遂與外人閒隔。」問今是何世;乃不知有漢,無論魏、晉。此人一一%
19 為具言所聞,皆歎惋。餘人各復延至其家,皆出酒食。停數日,辭去。此中人語%
20 云:「不足為外人道也。」
21 \end{CJK}
22 \end{document}
經 pdflatex 後的成果。如果你使用上面的範例來跑 pdflatex 時,你會發現編譯時有錯誤訊息。這是 pdflatex 還無法正確處理中文目錄(應該是 bug ),所以你只要手動修改 xxx.toc 檔,換上正確的中文即可編譯了。

2007年4月1日 星期日

終於裝了Latex

從我學 Linux 開始,看到許多教學文件不是用 Docbook 就是用 LaTeX 排版的,
一直很心動,想學好 LaTeX 語法,然後把我的文章、論文、報告…全部轉成 tex 格式的。

唸(想念)了很久,也買了 cwTex 的書,但一直沒有真正花時間來學。直到現在,要唸博班了,
一定得寫很多報告,還是早學早超生。

學之前,總要把 LaTeX 裝起來吧!要不然怎麼實作呢!這就是痛苦的開始…

一般來說,各家的 Linux 套件都會附 LaTeX 程式給你,只是這些程式不支援 utf8 中/日/韓文。
因為要讓 latex 支援中文,並不是直接 hack tex 及 LaTeX 的核心,都是以外掛套件的方式處理的。
所以你得要處理外掛套件及字形檔的問題。

參考很多網頁文件及 MyCJK.pdf ,事實上,還是沒搞清楚 cjk-latex 如何安裝。
所以我是用 debian 的 .deb 檔來作安裝的。請到 debian 的 testing 套件檔下載如下檔案:

cjk-latex_4.7.0+cvs20061019-2_all.deb
latex-cjk-chinese_4.7.0+cvs20061019-2_i386.deb
latex-cjk-chinese-arphic-bkai00mp_1.15_all.deb
latex-cjk-chinese-arphic-bsmi00lp_1.15_all.deb
latex-cjk-chinese-arphic-gbsn00lp_1.15_all.deb
latex-cjk-chinese-arphic-gkai00mp_1.15_all.deb
latex-cjk-common_4.7.0+cvs20061019-2_i386.deb
latex-cjk-japanese_4.7.0+cvs20061019-2_i386.deb
latex-cjk-japanese-wadalab_0.20050817-11_all.deb
latex-cjk-korean_4.7.0+cvs20061019-2_all.deb
latex-cjk-thai_4.7.0+cvs20061019-2_all.deb
tex-common_1.0.1_all.deb

然後在 ubuntu 中下:

$ sudo dpkg -i *deb

這樣就裝好了。測試範例如下:
 1  \documentclass[12pt]{report}
2 \usepackage[T1]{fontenc}
3 \usepackage{CJKutf8}
4 \usepackage[USenglish]{babel}
5 \usepackage{CJKulem}
6 \newenvironment{TChinese}{%
7 \CJKfamily{bkai}%
8 \CJKtilde
9 \CJKnospace}{}
10 \begin{document}
11 \begin{CJK}{UTF8}{}
12 \begin{TChinese}
13 \chapter{here}
14 本常問問答集~(FAQ list)~是從一些經常被問到的問題及其適當的解答中,以
15 方便的形式摘要而出的。\uline{跟上一版不同的是,其編排結構已徹底改變。}
16 \textbf{有關新結構的細節,可參考「如何閱讀本問答集及了解其編排結構」
17 該項中的說明。}
18 \chapter{CJK 巨集套件}
19 這是一個測試,關於CJK package 的測試。\LaTeX
20 \chapter{桃花源記節錄}
21 初狹,纔通人;復行數十步,豁然開朗。土地平曠,屋舍儼然。有良田、美池、%
22 桑、竹之屬,阡陌交通,雞犬相聞。其中往來種作,男女衣著,悉如外人;黃髮、%
23 垂髫, 並怡然自樂。見漁人,乃大驚,問所從來;具答之,便要 還家,設酒、殺雞、%
24 作食。村中聞有此人,咸來問訊。自云:「先世避秦時亂,率妻子邑人來此絕境,%
25 不復出焉;遂與外人閒隔。」問今是何世;乃不知有漢,無論魏、晉。此人一一%
26 為具言所聞,皆歎惋。餘人各復延至其家,皆出酒食。停數日,辭去。此中人語%
27 云:「不足為外人道也。」
28 \end{TChinese}
29 \end{CJK}
30 \end{document}

經 pdflatex 編譯後的 pdf 文件

嘿~開始認真學 Latex 了。
Related Posts Plugin for WordPress, Blogger...