Latex入门_第2章:用latex排版文字
文章目錄
- 思維導圖版
- 文字版
思維導圖版
文字版
? 第2章:用latex排版文字
? 2.1 語言文字和編碼
? 2.1.1 ASCII 編碼
? ASCII(美國通用信息交換碼)使用0x00~0x7F對文字編碼,能夠表示鍵盤上能夠輸入的拉丁字母、數字和符號
? 由于TEX最初面向英語文檔的排版。ASCII編碼(7-bit)完全夠用,而早期版本的TEX也只支持ASCII。要排版西歐語言中帶重音的字符,就必須用到后文所敘述的重音命令
? 2.1.2 擴展編碼
? 在ASCII之后,各種語言文字都發展了自己的編碼,比如西歐語言的Latin-1,日本的Shift-JIS,中國大陸的GB2312-80和GBK等。它們之中的絕大對數都向下兼容ASCII,因此無論是在哪種編碼下,TEX以及LATEX的命令和符號都能夠使用。
? 現在的TEX程序支持8-bit,能夠識別源代碼里編碼處于0x800xFF范圍的字符西歐、俄語系等語言的編碼方案剛好能夠利用0x800xFF這個范圍latex命令及pdflatex命令下,這些編碼的處理由inputenc宏包支持
? 例:將源代碼保存為Latain-1編碼
\usepackage[latin1]{inputenc}
? GBK等編碼是多字節編碼,ASCII字符為一個字節,漢字等非ASCII字符為兩個字節,這就需要借助宏包進行較為復雜的判斷和處理。CJK宏包就是用于處理中、日、韓等多字節編碼的語言文字的宏包CJK宏包使用非常不方便,后一節將簡單介紹現在推薦的中文支持方案
? 2.1.3 UTF-8 編碼
? Unicode是一個多國字符的集合,覆蓋了幾乎全球范圍內的語言文字UTF-8是Unicode的一套編碼方案,一個字符可以由一個到四個字節編碼,其中單字節字符兼容ASCII編碼
? latex命令及pdflatex命令可以使用inputenc宏包支持UTF-8\usepackage[utf8]{inputenc}
? xelatex命令原生支持UTF-8編碼,而且不適用inputenc宏包將.tex源代碼保存為UTF-8編碼,并借助fontspec宏包調用適當的字體,就可以在源代碼中輸入任意語言的文字。單各個語言的特殊排版要求,需要更多的宏包支持,如babel、polyglossia等
? 2.2 排版中文
? 2.2.1 xeCJK宏包
? 用latex排版中文的一大難題是中文字體的處理。TEX使用的字體格式僅支持不超過256個字符,舊式的中文排版方案如CJK宏包往往需要復雜的預處理,將中文字體拆分成數百個小字體,非常麻煩
? xelatex命令支持直接使用系統安裝的TrueType(.ttf) / OpenType(.otf)等格式的字體,加上對UTF-8編碼的原生支持,免去了預處理字體的麻煩在此基礎上xeCJK宏包更進一步完善了排版中文的一些細節,比如中英文之間插入空襲、中文行尾的回車不引入空格、標點符號不出現在行首等等
? xeCJK宏包支持用簡單的命令配置中文字體
? 例:在windows下使用xeCJK的例子源碼保存為UTTF-8編碼,并使用xelatex命令編譯
\documentclass{article}\usepackage{xeCJK}\setCJKmainfont{SimSun}
\begin{document}中文latex排版\end{document}
? 2.2.2 ctex宏包和文檔類
? ctex宏包和文檔類是對CJK和xeCJK等宏包的進一步封裝。ctex文檔類包括ctexart/ctexrep/ctexbook,是對latex的三個標準文檔類的封裝,對latex的排版做了許多調整,以切合中文排版風格最新版本的ctex宏包/文檔類甚至支持自動配置字體
? 例:上述操作體現到代碼\documentclass{ctexart}\begin{document}中文latex排版\end{document}
? ctex宏包/文檔類支持源代碼保存為UTF-8和GBK編碼,用latex+dvipdfmx命令、pdflatex或者xelatex命令(僅支持UTF-8)都能編譯建議在使用ctex宏包和文檔類時將源代碼保存為UTF-8編碼,使用xelatex命令編譯
? 2.3 latex中的字符
? 2.3.1 空格和分段
? latex源代碼中,空格鍵和tab鍵輸入的空白字符視為"空格"連續的若干個空白字符視為一個空格一行開頭的空格忽略不計
? 行末的回車視為一個空格連續兩個回車視為空行也就是換行多個空行視為一個空行也可以在行末使用 \par 命令分段
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}Several spaces equal one. Front spaces are ignored.
An empty line starts a newparagraph. \parA \verb*|\par| command alsostarts a new line.\end{document}
? 效果
?
? 2.3.2 注釋
? latex用%字符作為注釋在這個字符之后知道行末,所有的字符都被忽略,行末的第一個回車也不引入空格
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}This is an % short comment% —% long and organized% —example:Comments do not bre%ak a word.\end{document}
? 效果
?
? 2.3.3 特殊字符
? 以下字符在latex里有特殊用途,如%表示注釋,$、^、_等用于排版數學公式,&用于排版表格,等等
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}
# $ % ^ & { } _^{} ~{}
\end{document}
? 效果
?
? ^ ~兩個命令是需要帶參數的,如果不加一對花括號(空參數),就會將后面的字符作為參數,形成重音效果\被定義為換行,輸入"\"只能用\textbackslach
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}
# $ % ^ & { } _^ A ~ B
\end{document}
? 效果
?
? 2.3.4 連字
? 西文排版中經常會出現連字(Ligatures),常見的有 ff / fi / ffi / ffl
? 例:去掉連字效果
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}
It’s difficult to find \dots .\parIt’s dif{}f{}icult to f{}ind \dots . \end{document}
? 效果
?
? 2.3.5 標點符號
? 中文的標點符號(都是全角的非ASCII字符)一般來講不用特別操心,只要使用中文輸入法即可。而在引文標點的輸入上,有許多需要注意的地方
? 引號
? 單引號
? ‘’
? 雙引號
? “”
? 連字號和破折號
? latex有三種長度的"橫線"可用:連字號、短破折號和長破折號連字號 -:用來組成復合詞短破折號 --:將數字連接表示范圍長破折號 —:作為破折號使用
? 省略號
? latex提供了命令\ldots來生成省略號,相對于三個點的方式更為合理\ldots和\dots是兩個等效的命令
? 波浪號
? ~命令可以用于輸入波浪號,但是其位置靠頂端可以使用數學公式里的 \sim 符號生成位置在中部的波浪號
? 2.3.6 特殊西文符號與重音
? latex支持用命令輸入各種西歐語言的特殊符號和重音
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}H^otel, na"\i ve,'el’eve,\parsm\o rrebr\o d, !'Se\ norita!,\parSch"onbrunner Schlo\ss{} \end{document}
? 效果
?
? 查表
?
? 2.3.7 其他符號
?
? latex預定義了其它一些文本模式的符號,部分符號可參考表4.4
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}
\P{} \S{} \dag{} \ddag{}\copyright{} \pounds{}\textasterisklefted\textperiodlefted\textbullet\textregistered{} \texttrademark \end{document}
? 效果
?
? 2.3.8 latex標志
? \TeX\LaTeX\LaTeXe
? 例
? 代碼
? \documentclass[UTF8]{ctexart}
\begin{document}
\TeX
\LaTeX
\LaTeXe \end{document}
? 效果
?
? 2.4 文字強調
? 強調文字的方法,要么是添加一些下劃線或者裝飾物,要么是改變文字的字體
? 下劃線
? \underline{contents…}
? \uline{contents…}需要ulem宏包支持
? 字體改變
? \emph{contents…}
? 其他字體請參考后文中的5.1.1小節
? 例
? 代碼
? \documentclass[UTF8]{ctexart}\usepackage{ulem}
\begin{document}
An \underline{underlined} text.
An \underline{underlinedtext.}
An \uline{underlinedtext.}
hello, \emph{world!!!}
\end{document}
? 效果
?
? 2.5 斷行和斷頁
? 2.5.1 單詞間距和斷行
? 通常情況下,斷行的位置盡可能選取在兩個單詞之間,也就是你輸入到源文件中的"空格"一般情況下,這個空格生成一個間距,它會根據行寬和文字自動調整,文字密一些的地方單詞間距就略窄,反之略寬
? 可以使用字符~在合適的位置插入一個不會斷行的空格,通常用在英文人名、圖標名稱等場景
? 例
? 代碼
? \documentclass[UTF8]{ctexart}\usepackage{ulem}
\begin{document}
Fig.~2a \parDonale~E. Knuth
\end{document}
? 效果
?
? 2.5.2 手動斷行和斷頁
? 斷行
? \
? 可用于文本、表格、公式的分行
? \newline
? 只用于文本段落
? 斷頁
? \newpage
? \clearpage
? 區別
? 在雙欄排版中\newpage只起到另起一欄的作用
? 涉及到浮動體的排版上行為不同
? 有時候latex默認的斷行和斷頁位置,需要進行微調,以上命令就不再適用
? 自定義斷行
? \linebreak[]
? \nolinebreak[]
? 自定義斷頁
? \pagebreak[]
? \nopagebreak[]
? 以上兩個命令都帶一個可選參數,n表示適合/不適合的程度取值范圍0~4,缺省值為4以上命令適合給出優先考慮斷行斷頁/禁止斷行斷頁的位置但不適合直接拿來斷行或斷頁
\newline 或 \newpage會在斷行/斷頁位置正確的添加空白但是上面四條指令不能,它們的強行斷行/斷頁會導致latex報Underfull \hbox等警告使用 \newline 或 \newpage 等是更好的選擇
? 例
? \linebreak[3] 意味著此處在斷行時優先考慮
? \nopagebreak 或\nopagebreak[4] 意味著禁止在此處斷頁
? 例
? 代碼
? \documentclass[UTF8]{ctexart}\usepackage{ulem}
\begin{document}
A \B \newlineC \linebreak[10]D \nolinebreak[10]E \newpageF \clearpageG \pagebreak[10]H \nopagebreak[10]
\end{document}
? 效果
? 第1頁
?
? 第2頁
?
? 第3頁
?
? 2.5.3 斷詞
? 如果遇到很長的英文單詞,僅在單詞之間的位置斷行無法生成寬度均勻的行時,就要考慮從單詞中間斷開對于絕大部分單詞,latex能夠找到合適的斷詞位置,在斷開的行尾加上連字符"-"
? 如果一些單詞沒能自動斷詞,我們可以在單詞內使用"-"命令指定斷詞位置
? 例
? 代碼
? \documentclass[UTF8]{ctexart}\usepackage{ulem}
\begin{document}
I think this is: supercalifragilisticexpialido-cious.
I think this is: su-per-cal-%i-frag-i-lis-tic-ex-pi-%al-i-do-cious.
\end{document}
? 效果
?
總結
以上是生活随笔為你收集整理的Latex入门_第2章:用latex排版文字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序入门学习Demo
- 下一篇: 陌陌和它的解药,聊聊出海社交产品的思路