这里保存了我的 LaTeX 笔记。

LaTeX

LaTeX 是最流行的 TeX 宏包。

基本设置

我一般喜欢用 11pt 的字体,所以我的第一行是这样的:

\documentclass[a4paper,11pt]{article}

编译时加入的包:

\usepackage {graphicx}      %图片支持
\usepackage {CJK}           %中文支持
\usepackage {indentfirst}   %使第一段的第一行缩进
\usepackage {geometry}      %使我能精细调节页面布局
\usepackage {amsmath}       %美国数学协会的包

图片

调整图片与图片、图片与内容的间距:

\setlength{\floatsep} {10pt plus 3pt minus 2pt}
\setlength{\textfloatsep} {12pt plus 2pt minus 2pt}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{10pt}

要加入图片时,使用浮动图形环境:

\begin {figure}
  \centering                              %图片居中
  \includegraphics[scale=x]{file name}  % x 为缩放比例。e.g.: scale=0.5
  \caption{一张很鸟的图片}                  %图片的标题,默认标在图片下方
  \label{fig:bird}                        %交叉引用
\end{figure}

如果要产生并排的图片,可以使用 minipage 环境。

关于公式

这个基本没什么好说的,TeX 的公式太强了,强到每个人都会一点。不过这里还 是有一点小技巧。

split 环境的使用

很多人都不知道 split 是什么,lshort 里也没提到。说到产生对齐的公式,一般第一反应是用 align 环境,其实 split 比 align 更加灵活,因为它还可以嵌套在别的环境里。比如要产生两个对齐的不编号的公式,可以用

\[
\begin{split}
  \imath\hbar\,\spartial{\psi_1}{t} &= U_1\psi_1+K\psi_2\\
  \imath\hbar\,\spartial{\psi_2}{t} &= U_2\psi_2+K\psi_1
\end{split}
\]

把上面的 \[\] 换成 equation 环境,这两个公式就是编号的。

使用 \newcommand

使用 \newcommand 指令可以节省键盘。比如上面的那个 \spartial{}{} (simplified partial :-p) 指令就是我自己定义的,表示一个偏微分。

\newcommand{\spartial}[2]    % [2]表示这个指令接受两个参数
           {\frac{\partial#1}{\partial#2}}

通过这个定义,我在输入一个偏微分时节省了一半的键盘敲击次数。假如你要写 一篇关于偏微分方程的论文,这个会让你感觉倍儿爽 :-p

中文支持

CJK 宏包

曾几何时,我们一度把 TTF 的中文字体转成 Type1,然后在 CJK 包中使用…​

\begin{CJK*}{GBK}{song}   % 使用宋体作为缺省字体
  \CJKindent              % 首行缩进
  \begin{document}
    \CJKtilde             % 让~来表示一个可以换行的小空隙
    NB 的中文!!
  \end{document}
\end{CJK*}

我相信很多人都和我有一样的疑问,那就是怎么临时改变字体。总不能先 \end{CJK*}\begin 一个吧~\~\~

在 google 了无数次之后(真不知道怎么就没人说说这个事),我发现了改变字 体的真谛,那就是 \CJKfamily{} 指令,参数是字体的名字。比如你想变为黑 体打一行字再变回来,就要这么写:

\CJKfamily{hei}
真 tm 黑!

\CJKfamily{song}
不黑了。

Introducing XeTeX

…​但是在若干年前,诞生了一种叫做 XeTeX 的神器。配合 Fontspec,它可以 让 TeX 使用操作系统里安装的字体!!…​

\documentclass[a4paper]{article}
\usepackage{CJKutf8}
\usepackage{CJKulem}
\usepackage{xCJK}
\usepackage{fontspec}

\setmainfont[Mapping=tex-text]{Arno Pro}
\setCJKmainfont[BoldFont={STHeiti},ItalicFont={KaiTi}]{AR PL SungtiL GB}
\setCJKmonofont[Scale=0.9]{WenQuanYi Zen Hei}

\begin{document}
\begin{CJK*}{UTF8}{song}
...

注意如果使用 XeLaTeX,要使用 xCJK 来进行中英混排。这个宏包的数量稀少, 网上很难找到,这里提供一份。上面的代码设置英文字体为 Arno Pro (fontspec 提供的功能),中文字体为某种宋体,中文等宽字体为 WQY 正黑,同 时中文粗体为 STHeiti,中文意大利斜体为 KaiTi (xCJK + fontspec 提供的功 能)。

编译时使用 xelatex filename.tex 就行了。

  1. 不过遗憾的是,XeTeX 现在已经停止开发(← 此处误)。LuaTeX 提供了访问系统字体的 功能,正在发掘中…​

其他设置

有些字符串是文档类里定义的,需要把它改成中文。以下是我找到的一些要改的

\renewcommand{\contentsname}{目~录}
\renewcommand{\listfigurename}{图~目~录}
\renewcommand{\listtablename}{表~目~录}
\renewcommand{\appendixname}{附~录}
\renewcommand{\abstractname}{摘~要}
\renewcommand{\refname}{参考资料}       % 这个我没用过
\renewcommand{\bibname}{参~考~文~献}
\renewcommand{\figurename}{图}
\renewcommand{\tablename}{表}