記錄下我的使用過程
參考文件 : 蔡老師寫的易懂好用入門手冊 蔡老師寫的易懂好用安裝手冊
============================================================
第一步,安裝
原本想裝 Tex live 2008,但是因為用ISO安裝的話在建立功能表捷徑時會因為中文出錯,放棄。
最後是安裝MiKTex,下載MiKTeX 2.8 Net Installer,使用完整安裝,大約要1.5G,安裝時間很久...
============================================================
第二步,開新文章
建立整個文件的骨架
\documentclass[10pt, a4paper]{article} %字型 10pt,紙張A4
\begin{document}
\end{document
\documentclass 的設定參考 大家學Latex 、http://www.mackichan.com/index.html?techtalk/542.htm~mainFrame、http://www.nada.kth.se/~carsten/latex/class.html,都是搜尋就能找到的。
============================================================
第三步,測試中文
因為看到Xetex原生支援unicode就決定使用他了。看過入門參考後,知道要在設定區中設定想要使用的package。參考手冊中使用CJK-Latex,不過我使用的是xeCJK,這兩個package,只要是使用完整安裝都會自動安裝好,看個人需要使用。使用xeCJK的原因,它是基於CJK套件在xetex上開發,搜尋 "xeCJK 宏包 孙文昌"可以找到作者寫的簡中手冊,之後會常常用到。
Travels in TEX Land: A first attempt to use XETEX (with Windows XP),這篇的p. 3 有給幾個參考,再加上 the fontspec package 這一篇,就可以知道我們先需要引入的package
\usepackage{xunicode}
\usepackage{xltxtra}
不使用 fontspec 是因為他不支援中英文字型分開設定。接著就是引入
\usepackage{xeCJK}
參考xeCJK作者的使用手冊,就可以知道該怎麼設定字型。
%設定中文字型
\setCJKmainfont{PMingLiU} %新細明體
%設定英文字型
\setmainfont{Times New Roman}
接下來看著入門手冊打一些中文進去試試看,整個 test.tex 檔長這樣,
\documentclass[10pt, a4paper]{article} %字型 10pt,紙張A4
\usepackage{xunicode}% provides unicode character macros
\usepackage{xltxtra} % provides some fixes/extras
\usepackage{xeCJK}
%設定中文字型
\setCJKmainfont{PMingLiU} %新細明體
%設定英文字型
\setmainfont{Times New Roman}
\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz1234567890
龍龜許公蓋 fsafdsafd
\end{document}
使用 cmd 編譯,
xelatex test
就會產生 test.pdf,每次編譯之前要關掉pdf。
============================================================
第四步,輸入文章內容
參考入門手冊,輸入章節內容,\par 表示斷行,也可以用一個空白行代替
\section{噗噗噗}
噗噗噗噗噗噗噗噗噗噗噗噗噗噗噗
噗噗噗噗噗噗噗噗噗噗噗噗噗噗噗
噗噗噗噗噗噗噗噗噗噗噗噗噗噗噗
\subsection{哇嗚哇}
哇嗚哇哇嗚哇哇嗚哇哇嗚哇
\par
\subsection{跳替跳}
跳替跳跳替跳跳替跳跳替跳
\par
\subsubsection{跑跑跑}
跑跑跑
\par
============================================================
第五步, 使用 Bibtex自動產生參考文獻
依照入門手冊以及參考http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management,我使用 JabRef。
@INPROCEEDINGS{Guibas1978,
author = {Guibas, Leo J. and Sedgewick, Robert},
title = {A dichromatic framework for balanced trees},
booktitle = {SFCS '78: Proceedings of the 19th Annual Symposium on Foundations
of Computer Science},
year = {1978},
pages = {8--21},
address = {Washington, DC, USA},
publisher = {IEEE Computer Society},
doi = {http://dx.doi.org/10.1109/SFCS.1978.3}
}
使用 JabRef 建一個 Reference.bib,把上面這段輸入進去Reference.bib,並把Reference.bib 與 test.tex 放在同一個資料夾下,在 \end{document} 前輸入
\bibliographystyle{abbrv} %放最後,會自己產生引用的頁面
\bibliography{Reference}
\end{document}
style參考http://amath.colorado.edu/documentation/LaTeX/reference/faq/bibstyles.html ,之後在文章中加入
\cite{Guibas1978}
編譯第一次,顯示訊息 "LaTeX Warning: There were undefined references."為正常現象,之後不一定每次都會出現。
xelatex test
編譯第二次,不可以有副檔名 .tex
bibtex test
編譯第三次,產生 test.pdf。。
xelatex test
注:引用多個時 \cite{key1, key2, ...}。另外的工具 Natbib 。
注:引用的部分有問題的話,手動修改 .bbl 中有問題的地方,再重新編譯一次。
============================================================
結束
test.tex
test.pdf
2009/11/1
2009/10/27
Xetex初體驗
昨天灌好MiKTex 2.8後,看到XeTeX直接支援unicode相當的開心,以為不用再作複雜的設定就可以打中文,但是,在編輯器中打的中文轉到pdf檔時卻是亂碼...
到處找ㄚ找ㄉ,在(http://sites.google.com/site/mailboxpublic/texlive2007cjkchinesehowto)中說,一切就不過只是字型的問題。OK,那我又不知道Latex裝了啥字型,那只好又去到處翻資料。只見google出來的東西都是CJK相關的,讓我一直以為我必須自己去轉字型,還好看了MiKTeX中的packagemanager有找到很多他裝的字型,不必自己動手。那現在問題就剩下該去找出字型的名稱了。
XeTeX官網上,Documentation and example中,文件的P. 3&4說明了xetex對字型的處理方式,加上直接google "xetex chinese"中看到的例子,由此才解決了我的問題,其實字型名稱也能寫中文...= =
執行:xelatex test.tex
test.tex::
\documentclass{article}
\usepackage{fontspec}% provides font selecting commands
\usepackage{xunicode}% provides unicode character macros
\usepackage{xltxtra} % provides some fixes/extras\setmainfont[Mapping=tex-text]{新細明體}
\setmonofont{Courier}
\setsansfont{Helvetica}
\begin{document}
\def\line{ABCDEFGHIJKLMNOPQRSTUVWXYZ\\
abcdefghijklmnopqrstuvwxyz1234567890}
\line 龜龜許公蓋 fsafdsafd
\end{document}
----------------------------------------------------------------------------
The fontspec package 對於設定xetex中的字型有很清楚的說明
如果可以早點找到這個網站的話,我就不用打上面那一大段了...。另外裡面也提到為什麼寫英文會比較好,因為不能讓 serif 與 sans serif 使用同一個中文名稱,,英文就沒問題了。
到處找ㄚ找ㄉ,在(http://sites.google.com/site/mailboxpublic/texlive2007cjkchinesehowto)中說,一切就不過只是字型的問題。OK,那我又不知道Latex裝了啥字型,那只好又去到處翻資料。只見google出來的東西都是CJK相關的,讓我一直以為我必須自己去轉字型,還好看了MiKTeX中的packagemanager有找到很多他裝的字型,不必自己動手。那現在問題就剩下該去找出字型的名稱了。
XeTeX官網上,Documentation and example中,文件的P. 3&4說明了xetex對字型的處理方式,加上直接google "xetex chinese"中看到的例子,由此才解決了我的問題,其實字型名稱也能寫中文...= =
執行:xelatex test.tex
test.tex::
\documentclass{article}
\usepackage{fontspec}% provides font selecting commands
\usepackage{xunicode}% provides unicode character macros
\usepackage{xltxtra} % provides some fixes/extras\setmainfont[Mapping=tex-text]{新細明體}
\setmonofont{Courier}
\setsansfont{Helvetica}
\begin{document}
\def\line{ABCDEFGHIJKLMNOPQRSTUVWXYZ\\
abcdefghijklmnopqrstuvwxyz1234567890}
\line 龜龜許公蓋 fsafdsafd
\end{document}
----------------------------------------------------------------------------
The fontspec package 對於設定xetex中的字型有很清楚的說明
如果可以早點找到這個網站的話,我就不用打上面那一大段了...。另外裡面也提到為什麼寫英文會比較好,因為不能讓 serif 與 sans serif 使用同一個中文名稱,,英文就沒問題了。
2009/10/19
宿舍突然停水了
前天晚上宿舍的預室突然沒有冷水可以洗澡,只剩超燙的熱水能用,那個時候呢,在浴室等了好久都沒冷水就放棄了。
之後的一個小時裡,又去看了兩、三次浴室還是沒有冷水,心裡只想到"慘了沒冷水,根本不能洗澡。",原本還以為是停水,不過洗手檯還是有冷水,不過那時候只想到應該是管路的問題,但是我又不是水電工,根本不會修,只好在洗手台洗洗頭就完事。
在最後一次去浴室看有沒有冷水時,跟在曬衣服的室友講沒有冷水這件事,後來他就跑去試試看了,不過出乎意料的事發生了,我原本以為他會跟我一樣試了幾下就放棄,但是遲遲不見他回來。
結果當他回來時竟然是洗完澡的樣子!問他做了甚麼,他就拿了洗衣桶出來,一看,立刻就明白了,當時只覺得自己真是阿呆,這麼簡單的方法竟然沒想到。
之後回過頭來在想一想後發現,也許這個地方就是我思考的盲點;隔天早上,就聽到有人跟應該是宿舍管理員的講有甚麼地方壞掉;沒錯,在那個時候大家都可以發現到大概是哪裡出現問題,但是該怎麼解決呢?
有很多人跟我一樣,當發現沒有冷水時就是離開,如果這個問題當作一個研究上的問題時,就像是我們都知道某個問題很困難(沒有冷水),除了專家(水電工)以外沒人能解決,但是我卻忘了,其實在我手邊就有著雖然不完美,但是足以滿足即時需求的工具(水桶)可用。
只考慮問題就放棄思考替代方案的腦袋真是廢物,這點要好好改進。
之後的一個小時裡,又去看了兩、三次浴室還是沒有冷水,心裡只想到"慘了沒冷水,根本不能洗澡。",原本還以為是停水,不過洗手檯還是有冷水,不過那時候只想到應該是管路的問題,但是我又不是水電工,根本不會修,只好在洗手台洗洗頭就完事。
在最後一次去浴室看有沒有冷水時,跟在曬衣服的室友講沒有冷水這件事,後來他就跑去試試看了,不過出乎意料的事發生了,我原本以為他會跟我一樣試了幾下就放棄,但是遲遲不見他回來。
結果當他回來時竟然是洗完澡的樣子!問他做了甚麼,他就拿了洗衣桶出來,一看,立刻就明白了,當時只覺得自己真是阿呆,這麼簡單的方法竟然沒想到。
之後回過頭來在想一想後發現,也許這個地方就是我思考的盲點;隔天早上,就聽到有人跟應該是宿舍管理員的講有甚麼地方壞掉;沒錯,在那個時候大家都可以發現到大概是哪裡出現問題,但是該怎麼解決呢?
有很多人跟我一樣,當發現沒有冷水時就是離開,如果這個問題當作一個研究上的問題時,就像是我們都知道某個問題很困難(沒有冷水),除了專家(水電工)以外沒人能解決,但是我卻忘了,其實在我手邊就有著雖然不完美,但是足以滿足即時需求的工具(水桶)可用。
只考慮問題就放棄思考替代方案的腦袋真是廢物,這點要好好改進。
2009/9/3
2009/7/31
Databinding : Communication between Target and Source
A CodeProject Article
這兩天在網路上到處搜尋有關Databinding的文章,通常找到的東西講的都跟這篇codeproject上的內容一樣。都是講解怎麼樣顯示資料,都沒講到怎麼樣讓這些被顯示的資料可以被使用者變更後記錄起來。
<TextBox Name="Tbx" Text="{Binding Path=Test1}" MouseLeave="Tbx_MouseLeave"></TextBox>
上面這段code,照著文章中的範例可以成功的顯示出,Test1 property在一個class instance中的值。
那要怎麼讓使用者在Textbox中輸入文字後可以改變Test1的值ㄋ?為了找這個答案讓我找的手都長繭,
<TextBox Name="Tbx" Text="{Binding Path=Test1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" MouseLeave="Tbx_MouseLeave"></TextBox>
只要加上紅色的部分就可以讓使用者變更Test1的值,藍色的部分可以不加,因為預設就是這個值,要注意的是這只能接收使用者的修改不能反映程式內的修改,要顯式經由程式修改的值,必須實作 INotifyPropertyChanged才行,就像一開始的文章中所說的。至於如何判斷輸入的東西要如何過濾,我不知道,需要再找。
MSDN中UpdateSourceTrigger的說明,可以設定的值
這兩天在網路上到處搜尋有關Databinding的文章,通常找到的東西講的都跟這篇codeproject上的內容一樣。都是講解怎麼樣顯示資料,都沒講到怎麼樣讓這些被顯示的資料可以被使用者變更後記錄起來。
<TextBox Name="Tbx" Text="{Binding Path=Test1}" MouseLeave="Tbx_MouseLeave"></TextBox>
上面這段code,照著文章中的範例可以成功的顯示出,Test1 property在一個class instance中的值。
那要怎麼讓使用者在Textbox中輸入文字後可以改變Test1的值ㄋ?為了找這個答案讓我找的手都長繭,
<TextBox Name="Tbx" Text="{Binding Path=Test1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" MouseLeave="Tbx_MouseLeave"></TextBox>
只要加上紅色的部分就可以讓使用者變更Test1的值,藍色的部分可以不加,因為預設就是這個值,要注意的是這只能接收使用者的修改不能反映程式內的修改,要顯式經由程式修改的值,必須實作 INotifyPropertyChanged才行,就像一開始的文章中所說的。至於如何判斷輸入的東西要如何過濾,我不知道,需要再找。
MSDN中UpdateSourceTrigger的說明,可以設定的值
2009/7/28
Threadsafe events
http://www.codeproject.com/Articles/37474/Threadsafe-Events.aspx
想做一個功能,很多個thread在不同時間會發出一個event,這些event都由同一個event handler來處理。
因為擔心這樣做不是thread-safe,到處找了很久,在codeproject上找到的這篇是我看到整理最清楚剛好提供了我想知道的資訊。
讀完後的心得:不要在raise event後,讓event handlers有機會離開。
因此有機會出錯的情況是很多個event handler對一個raised event,而很多個raised event對一個event handler則沒有這個問題;另外很多個raised event在event handler內處理時會被block住,一次只處理一個raised event。
想做一個功能,很多個thread在不同時間會發出一個event,這些event都由同一個event handler來處理。
因為擔心這樣做不是thread-safe,到處找了很久,在codeproject上找到的這篇是我看到整理最清楚剛好提供了我想知道的資訊。
讀完後的心得:不要在raise event後,讓event handlers有機會離開。
因此有機會出錯的情況是很多個event handler對一個raised event,而很多個raised event對一個event handler則沒有這個問題;另外很多個raised event在event handler內處理時會被block住,一次只處理一個raised event。
訂閱:
文章 (Atom)