使用任何一種語言,latex都必須處理兩個基本問題:
- 將輸入位元組對映為所使用語言的字元
- 將字元對映為所使用字型的字形
使用xelatex可以幫助我們處理這些問題。對於xelatex,輸入檔案預設為utf-8格式,引擎自動將字元對映為truetype或opentype字型的字形。當然,我們必須保證所使用的字型支援所用語言。
當是使用latex或pdflatex時,必須告訴latex輸入檔案的編碼格式。一般來說,utf-8是最好的輸入編碼方式,可以使用下面的方式設定
\usepackage[utf8]
我們還要指定使用什麼樣的輸出編碼方式將字元對映為字型中的字形,對於大部分啦拉丁語系的語言,可使用t1輸出編碼。使用如下方式設定
\usepackage[t1]
但對於其他語言,必須指定特定的編碼方式。xecjk包提供了很好的中文支援,
\usepackage
當前有兩個可以提供國際化的語言支援,即polyglossia和babel。polyglossia主要和xetex一起使用,babel和pdftex、luatex一起使用。這兩個包完成下列任務:
當使用xelatex 和 lualatex時,polyglossia提供了國際化支援。使用這個包,可以指定使用的語言和語言特定的選項。例如,文件中包含了美國英語和法語,可以使用下面的設定
\usepackage
\setdefaultlanguage[variant=american]
\setotherlanguage
當使用latex或pdflatex時,babel包可提供國際化支援。這個包也可以用於lualatex和xelatex。可以在包引數中指定語言。
\usepackage[language]
這個包應該緊跟在\documentclass
,使後面載入的包能夠知道你所所以用的語言。載入babel包時可以指定多種語言
\usepackage[languagea, languageb]
引數列表中的最後一種語言是當前啟用的語言。可以使用命令改變當前啟用語言
\selectlanguage
當文件中包含多種語言時,可以使用babel提供的命令方便地在不同語言間切換。babel提供了定義語言名字的方式
\babeltags
文件可以寫為
text \textde text
\begin
german text
\end
xecjk主要功能包括:
- 分別設定cjk和英文本型
- 自動忽略中文文字間的空格而保留其他空格,允許在非標點漢字和英文本母間斷行
- 調整中英文間的空白
xecjk包提供了許多選項,可以在呼叫巨集包時直接設定,也可以使用\xecjksetup
設定這些選項。xecjk內部使用fontspec巨集包,在呼叫xecjk巨集包時,也可以使用fontspec巨集包中的選項。
載入xecjk包之後,只要設定cjk文字的字型,就可以使用中文了。例如,中文字型要使用simsun(宋體)。這裡,假設系統安裝了需要的字型。
\usepackage
\setcjkmainfont
字型族(font families)有很多,如times, courier, helvetica。它們一般可以分為三類:serif, sans serif 和 monospaced。在latex中,分別用簡寫rm, sf, tt表示。
字型族通常包含不同的風格,如斜體(italic)或加粗(bold)。
xecjk中提供了相似的三個命令設定對應的中文字型:
xecjk包僅提供的中文字型。中文文件的排版習慣和英文文件不同。為了排版中文文件,使用ctex工具集是最方便的方法。ctex的使用方法可以參考其文件。
[1]
[2]
怎樣在LaTeX中使用中文
因為疫情在家中上課,作業提交都必須使用pdf。反正時間充裕,不如趁機回顧一下latex的使用。之前一直用的是vimtex,但是感覺還是不太方便,於是改用了texpad。texpad的強大之處在於它支援光速的實時預覽。但是在配置texpad支援中文的時候卻踩了一萬個坑,而且到現在還沒有真正實現中文實時...
archlinux 安裝latex使用中文
latex的安裝其實感覺非常操蛋,不過還好我用的是archlinux.之前沒有利用好archlinux自己的東西,導致安裝浪費了很多時間還沒有成功,後來發現archlinux自己已經做好了很多任務作 sudo pacman s texlive core texlive langchinese tex...
latex顯示中文
摸索了很長時間.終於找到在latex和beamer下都能顯示中文的方法了.其實都是借助於神一般的xelatex底層對於各種字型的支援.在暗無天日的過去.我們只能頻繁的使用cjk的命令.即使有了中文字庫案.依然得通過複雜的流程才能使用.但xelatex的底層支援使技巧性的東西消失了.需要載入xecjk...