简介
LaTeX是一种基于TeX的排版系统,由美国电脑学 家莱斯利 兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TEX所提供的强大功能,能在几天,甚 至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个 系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
安装
- 安装 texlive latex $sudo emerge texlive-latex
- 安装 cjk $sudo emerge cjk-latex
- 安装中文字体
- 到此,安装完毕。我们需要编写简单的tex文件来测试一下:
\documentclass{article}
\begin{document}
Hello,\LaTeX
\end{document}
将这个文件存为 test.tex, 然后使用latex命令进行编译
$latex test.tex
如果没有错误,会生成一个 test.dvi 文件,可以使用xdvi或者其他软件打开查看。 当然也可以使用下面的命令生成pdf:
$dvipdf test.dvi
或者直接使用 pdflatex test.tex 生成pdf文件。
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
你好,\LaTeX
\end{CJK*}
\end{document}
同样地,我们运行latex命令查看生成的文件中是否能正常显示中文。
开始
Hello LaTeX
首先让我们来编写一个简单的 TeX 文件:
%hello_latex.tex
\documentclass[12pt,a4paper]{article}
\begin{document}
Hello, \LaTeX !
\end{document}
接下来,我们需要将这个源文件编译成dvi或者pdf文件。
latex hello_latex.tex
这将生成 hello_latex.dvi 文件。 我们可以使用xdvi或者其他程序查看这个文件。
hello_latex.dvi
%%%一种方法是先生成dvi文件:
latex hello_latex.tex
dvipdf hello_latex.dvi
%%%另一种则直接生成pdf文件:
pdflatex hello_latex.tex
文档类
下面,我们来看一下上面的 hello_latex.tex 文件。
\documentclass[12pt,a4paper]{article}
这里定义的是
文档类 。下面是LaTeX的文档类型:
article | 期刊文章,由节 section 组成 |
proc | 会议论文集,基于多篇 article |
minimal | 最少设置的一种。只有基本字体和纸张大小设置。通常用于调试 |
report | 报告,有章 chapter,节 section 等 |
book | 书,有章 chapter,节 section 等 |
slides | 幻灯片,使用较大的无衬线字体 |
memoir | 一种非常灵活,可以基于此快速创建所需要的类型 参考手册 |
letter | 信件 |
上面我们使用的是 article 。
[12pt,a4per]是文档类选项。常用的文档类选项如下:
10pt, 11pt, 12pt | 设定文档使用的字号。默认是 10pt。 |
a4paper, letterpaper,... | 定义纸张大小,缺省是letter。此外,还有 a5paper, b5paper, executivepaper, legalpaper |
fleqn | 独行公式向左对齐 |
leqno | 公式编号列于左边 |
titlepage, notitlepage | 指示文档标题之后的内容是否新开一页。article 类型无此选项 |
onecolumn, twocolumn | 单栏,双栏 |
twoside, oneside | 双边,单边。article 和 report 默认使用 oneside,book 默认为 twoside |
landscape | 页面横放 |
openright, openany | 与单双边设定和 \chapter 命令有关。report 默认 openany,book 默认 openright |
draft | 以一个小黑块表明断行错误处,用于调试 |
上面我们定义的是article类型,正文字体是12pt,纸张大小为a4per,也就是我们平时说的A4纸。
标题、摘要、章节
通常我们写文档,开头都会写上 标题、作者、摘要等信息。
\title{标题}
\author{作者}
\date{时间} %\date{\today}则是今天的日期
之后,我们用 \maketitle 将这些内容插入我们的文档中。 \maketitle 应该在 \begin{document}之后:
...
\begin{document}
\maketitle % 在这里插入
\end{document}
\begin{abstract}
...
\end{abstract}
\chapter{...} %article 中没有 chapter
\section{...}
\subsection{...}
\subsubsection{...}
目录
我们可以用 \tableofcontents 命令来生成文档的目录,LaTeX 会自动设定目录的章节层次,可以使用 \setcounter 命令来指定目录层次深度。
\tableofcontents
\setcounter{tocdepth}{2}
如果不想让某个章节标题出现在我们的目录中,可以使用带 * 的命令来声明。
\chapter*{...}
\section*{...}
\subsection*{...}
将 Contents 变成 “目录”
有时,我们生成的目录内容是中文的,但却是 Contents 字样表示目录。当我们想将"Contents"变成“目录”时,可以使用下面的命令。注意这条命令的位置,应该在 \tableofcontents 前面。
\renewcommand{\contentsname}{目录}
\tableofcontent
当然,你也可以将“目录“换成别的。
- 另外值得说明的是,有时候 LaTeX 会无法生成我们需要的中文目录,比如,什么内容都没有。那么,我们可以在 \end{CJK*}前面加上一行: \newpage 。
书签
书签就是通常我们看pdf文档时,左侧边栏的那个“索引”。书签令我们阅读文档提供了很大的方便,通过书签我们可以方便地定位自己的阅读对象。
LaTeX中生成书签的宏包是 hyperref 。中文书签乱码一直是网上搜索的的热门问题,其实解决中文书签乱码一个很简单的方法就是在 hyperref 宏包的选项里添加 unicode=true 选项。下面给处一个简单的例子:
\documentclass[CJKutf8]{article}
\usepackage{CJKutf8}
\usepackage[unicode=true,colorlinks=no,pdfborder=no]{hyperref} %这里给出的colorlinks=no和pdfborder=no是为了让生成的目录没有“红色”的边框,其实这里不必使用,因为没有生成目录。
\begin{document}
\begin{CJK}{UTF8}{gbsn}
\section{中文 English}
Hello, 你好!
\end{CJK}
\end{document}
记得用两次 pdflatex 编译tex文件。
本页例子
下面给出本页使用的例子:
% hello_latex.tex
\documentclass[12pt,a4paper]{article} %定义文档类型
\usepackage{CJKutf8} %使用宏包
\usepackage[unicode=true,colorlinks=no,pdfborder=no]{hyperref} %这里给出的colorlinks=no和pdfborder=no是为了让生成的目录没有“红色”的边框
\title{\LaTeX 入门} %标题
\author{闭美春} %作者
\date{2011年3月} %日期
\begin{document} %文档开始
\begin{CJK*}{UTF8}{gbsn} %定义CJK中文环境
\maketitle %输出标题、作者及日期
\renewcommand{\contentsname}{目录} %将Contents换成 ”目录“
\tableofcontents %生成目录
\section{Hello LaTeX} %章节
Hello, \LaTeX !
\section{文档结构} %章节
这一节中将介绍 \LaTeX 的文档结构。
\subsection{文档类} %二级章节
这里是文档类介绍。
\subsection{标题、摘要、章节}
这里是标题等的介绍。
\subsection{目录}
目录介绍
\subsubsection{将Contents变成”目录“} %三级章节
技巧。
\newpage %开始新一页,正在的目的是使中文目录生成
\end{CJK*} %闭合中文环境
\end{document} %结束文档
文字排版
字符输入
LaTeX中有些字符被用作特殊的控制符(比如 # $ % ^ & ~ _ { } \ 等),所以他们不能直接输入。大多数情况下,我们想要输入这些特殊字符时,需要在他们前面加上 \ 。而 \ 本身要用 \textbackslash 命令输入,因为 \\ 被用作执行换行的指令了。
字样 和 字号
LaTeX 会自动调整正文、标题、章节、脚注等的字样和字号。当然,我们也可以使用命令来设置字样。比如:
命令 | 字样 | 命令 | 字样 |
---|
\textrm{...} | roman | \textbf{...} | bold face |
\textsf{...} | sans serif | \textit{...} | italic |
\texttt{...} | typewriter | \textsl{...} | slanted |
我们同样可以设置的字号,比如:
命令 | 字号 |
---|
\tiny | 5pt 6pt 6pt |
\scriptsize | 7pt 8pt 8pt |
\footnotesize | 8pt 9pt 10pt |
\small | 9pt 10pt 11pt |
\normalsize | 10pt 11pt 12pt |
\large | 12pt 12pt 14pt |
\Large | 14pt 14pt 17pt |
\LARGE | 17pt 17pt 20pt |
\huge | 20pt 20pt 25pt |
\Huge | 25pt 25pt 25pt |
LaTeX 有一个特殊的命令: \emph , 它在不同环境装饰下有不同的效果。当周围文字是正体时它是斜体,当周围字体是斜体时它是正体。
命令环境
列表
latex 中有三种列表环境:description、enumerate、itemize,用法如下:
\begin{description}
\item LaTeX 入门
\item LaTeX 文档结构
\item LaTeX 文字排版
\end{description}
\begin{enumerate}
\item LaTeX 入门
\item LaTeX 文档结构
\item LaTeX 文字排版
\end{enumerate}
\begin{itemize}
\item LaTeX 入门
\item LaTeX 文档结构
\item LaTeX 文字排版
\end{itemize}
对齐
latex 中段落缺省为两端对齐(fully justified),可以通过以下命令实现左对齐、右对齐和居中对齐:
\begin{flushleft} %居左
居左对齐\\
居左
\end{flushleft}
\begin{flushright} %居右
居右对齐\\
居右
\end{flushright}
\begin{center} %居中
居中对齐\\
居中
\end{center}
原文照排
文档中的命令和源代码一般使用等宽字体来表示。在 latex 中我们可以使用 \verb 命令和 verbatim 环境。当后者带*号时可以标明空格。
你好,\verb|\LaTeX|
\begin{verbatim}
你好, \LaTeX
\end{verbatim}
\begin{verbatim*}
你好, \LaTeX
\end{verbatim*}
摘录
LaTeX 有三种摘录环境:quote、quotation、verse。其中,quote两端都缩进,quotation在quote的基础上增加首行缩进,verse比quote多第二行起的缩进。
交叉引用
我们经常需要引文文中section、figure、table等对象的编号,这就叫做交叉引用(cross referencing)。 可以用\label{marker}命令来定义一个标记,标记名任意,但是必须在全文中保持唯一。之后用\ref{marker}来引用标记处章节或图标编号,用\pageref{marker}来引用标记处的页码。
脚注
脚注可以用\footnote命令来实现:
我后面的数字表示我的脚注号。\footnote{我就是脚注。}