笔记 13 简明TEX笔记
13.1 tex 基础
作者 Donald Knuth
tex
排版引擎 圆周率metafont
处理字体 自然对数的底数控制序列 钩子为
\
宏包 对控制序列打包 钩子为
\
Lamport
latex
宏包 分部分处理文档 打包了大量命令latex 2e
后基本停止Hans 对
latex
不满 认为可定制性不够 遂进行二次开发 有了context
引擎 处理控制序列 进行排版
pdftex
可解决文档直接输出为PDF的问题 避免产生dvi早期不支持unicode 对多国语言只能通过调用宏包来实现字符与图形对应
cjk
ctt
ctex
等都是此类宏包 需要安装字体xetex
可原生支持unicode的引擎并调用系统字体 支持plain tex xelatex 可支持latex宏包luatex
合并metapost
可直接绘图 可直接调用字体 可脱离宏包调用程序 现与context
结合紧密
tex
格式 Knuth为原始300个控制序列写的宏包 有600命令 这900个合称plain tex
将引擎 宏包 格式 辅助程序等打包即为发行版
miktex
texlive
mactex
context
minimals
只有自己的引擎与宏包
字体 最早是栅格 后来是矢量
type I 是最早的矢量
truetype 是type I 的竞争对手
opentype 是基于truetype的进化版
最早格式为DVI 为字体准备了字形盒子 可通过上面编码调用字库显示 之后出现了PS与PDF
原来要编译多次 现在只需要用
xetex
或luatex
引擎就可以了 他们内置了库来实现字形盒子与字体的联系 这个库有cache功能
字体分类
衬线体 起笔落笔有差异 横竖粗细各不同 易于识别 宋体
非衬线体 笔画粗细一致 无装饰 醒目 黑体
等宽体 每个字宽窄相同 汉字 编程
13.2 关于xetex
xeCJK
使用xelatex
引擎的中文宏包 纠正了xelatex
一些缩进等的不美观ctex
包含早期CTT
CJK
及xeCJK
可用\setCJKmainfont{SimSun}
来调用系统字体 下面是底层调用中英文混排
13.2.1 实例讲解
\documentclass[12pt,a4paper]{article}
\usepackage{xltxtra,fontspec,xunicode}
\usepackage[slantfont,boldfont]{xeCJK} % 允许斜体和粗体
\setCJKmainfont{FZJingLeiS-R-GB} % 设置缺省中文字体
\setCJKmonofont{SimSun} % 设置等宽字体
\setmainfont{TeX Gyre Pagella} % 英文衬线字体
\setmonofont{Monaco} % 英文等宽字体
\setsansfont{Trebuchet MS} % 英文无衬线字体
13.3 tex
常见问题
空白 tab与多个空白认为是一个空白 空行表示段落结束
保留字符
# $ % ^ & _ { } ~ \
可使用\#
\$
\%
\^{}
\&
\_
\{
\}
\~{}
来表示\\
表示断行$\backslash$
生成反斜杠latex
命令\tex{}
后面加空格防止命令延长{}
中为命令参数%
表示注释掉一行 也可使用\usepackage{verbatim}
中的comment
环境源文件结构
\documentclass[]{...}
声明文档类型[]
中为选项 包括字体 纸张 公式对齐 等文档格式\usepackage[]{...}
加入需要的宏包[]
中为触发功能的关键词以上为导言区
\begin{document}
开始正文\end{document}
结束文档
页面样式
\pagestyle{style}
不同页眉页脚样式\include{filename}
用来包含文档 多用于大型文档 在新页包含 连续可用\input{filename}
\includeonly{filename,filename,. . .}
导言区包含文档 在所有\include
文档中 只有\includeonly
中的会被处理语法检查
\usepackage{syntonly}
\syntaxonly
\hyphenation{word list}
给出断字列表 完整的不允许断 有-的表示允许的唯一断字点 在文档中-表示唯一允许断字的地方mbox
fbox
不允许断字的地方 后者给出一个方框mbox
可用来分割连字特殊字符
‘
输入两个表示双引号-
输入1个连字号 2个短破折 3个长破折 网址中波浪号用$\sim$
而不是\~
表示摄氏度用
$-30\,^{\circ}\mathrm{C}$
表示\ldots
表示省略号 bable宏包可处理多种非中文语言
~
用来强制取消大写字母后空格多出的一点\@
用来表示大写字母作为最后一个词后句号的处理 一般latex
不会处理大写字母后的句号(加入多一点空格)认为是缩写\frontmatter
应接着命令\begin{document}
使用 它把页码更换为罗马数字正文前的内容普遍使用带星的命令(例如,
\chapter*{Preface}
) 以阻止latex
对它们排序\mainmatter
应出现在书的第一章紧前面 它打开阿拉伯页码计数器并对页码从新计数\appendix
标志书中附录材料的开始 该命令后的各章序号改用字母标记\backmatter
应该插入与书中最后一部分内容的紧前面 如参考文献和索引 在标准文档类型中它对页面没有什么效果交叉引用
\label{marker}
引用点\ref{marker}
引用\pageref{marker}
引用点页码交叉引用产生脚注
\footnote{footnote text}
强调
\underline{text}
下划线\emph{text}
斜体 强调中强调会切换字体环境
itemize
环境用于简单的列表enumerate
环境用于带序号的列表description
环境用于带描述的列表flushleft
和flushright
环境分别产生靠左排列和靠右排列的段落center
环境产生居中的文本 如果你不输入命令\\
指定断行点latex
将自行决定quote
环境对重要断语和例子的引用很重要quotation
环境用于超过几段的较长引用,因为它对段落进行缩进verse
环境用于诗歌,在诗歌中断行很重要。在一行的末尾用\\
断行,在每一段后留一空行verbatim
环境直接输出其中内容 可用断字表示 可表示空格 较短的用\verb*|like this :-) |
\begin{tabular}{table spec}
用来生成表格\begin{figure}[placement specifier]
or\begin{table}[placement specifier]
表示浮动体\caption{caption text}
给浮动体加标签\listoffigures
与\listoftables
生成图表目录
数学公式
段落中放于
\(
和\)
$
和$
或者\begin{math}
和\end{math}
单独一行可放于
\[
和\]
或\begin{displaymath}
和\end{displaymath}
带编号可放于
equation
数学环境中空格和分行都将被忽略 所有的空格或是由数学表达式逻辑的衍生 或是由特殊的命令如
\
\quad
或\qquad
来得到不允许有空行 每个公式中只能有一个段落
每个字符都将被看作是一个变量名并以此来排版 如果你希望在公式中出现普通的文本(使用正体字并可以有空格),那么你必须使用命令
\textrm{...}
来输入这些文本
\newtheorem{name}[counter]{text}[section]
定理环境name
是短关键字,用于标识“定理”。text
定义“定理”的真实名称,会在最终文件中打印出来。建立新命令
\newcommand{name}[num]{definition}
第一个参数
name
是你想要建立的命令的名称第二个参数
definition
是命令的定义第三个参数
num
是可选的 用于指定命令所需的参数数目(命令最多可以有9个参数)如果不给出这个参数 那么新建的命令将不接受任何参数num
可用来传参,\renewcommand
可用来建立与原命令名称相同的命令
建立新环境
\newenvironment{name}[num]{before}{after}
建立新宏包
\ProvidesPackage{package name}
命令环境打包起名字保存为sty
可直接调用 其实就是打包导言区行距
\linespread{factor}
首行缩进与段落间距
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
水平距离
\hspace{length}
橡皮擦\stretch{n} x\hspace{\stretch{3}}x
垂直距离
\vspace{length}
\sum\limits_{k=1}^n k^2
使求和符号上下标真正出现在上下位