Latex入门_第2章:用latex排版文字

本文详细介绍了LaTeX中文字体编码、扩展编码、UTF-8的使用,以及如何处理中文排版,包括xeCJK宏包、ctex宏包的使用,同时还涵盖了 LaTeX 中的字符处理、文字强调、断行断页等基本技巧,帮助读者掌握 LaTeX 的中文排版和文档编辑。
摘要由CSDN通过智能技术生成

思维导图版


文字版

• 第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}
• 效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值