马上用LaTeX写作

做数学建模时,用一个小时的时间教会了队友LaTeX,这是当时的讲义。

关于TeX的介绍

TeX是全世界最专业也是最好用的写作工具。

TeX是一个以排版文章及数学公式为目标的计算机程序,在1997年由Knuth发明。其版本号不断趋近于Pi, 现在为3.141592.

LaTeX是一个宏集,它使用一个预先定义好的专业版面,可以使作者们高质量的排版和打印他们的作品。

这个排版系统的优势在于可以着眼于文章的逻辑结构,而非对版面进行修修补补。所以一般不要自定义文档版面布局。

XeLaTeX为latex的一个扩展。CTeX在XeLaTeX下使用更方便。

下面主要以TeXStudio为编辑工具,自然也可以使用其他的软件。

TeXStudio、CTeX的安装

本文使用环境
CTeX_2.9.2.164_Full、texstudio-2.10.8-win-qt5.5.1、Windows 8

CTeX安装

  1. 双击文件CTeX_2.9.2.164_Full.exe。选择权限允许。
  2. 耐心等待安装完成

TexStudio安装

  1. 双击文件texstudio-2.10.8-win-qt5.5.1.exe,任意选择安装目录
  2. 安装完成后,在Options->Configuer TexStudio->General->language中选择utf-8,解决中文乱码。
  3. 在界面右下方编码处选择utf-8 ,使得其支持CTeX和XeLaTeX。
  4. 同上选项卡中取消检查拼写
  5. 在语法高亮中选择LaTex Syntax 中的粉色为白色

LaTeX源文件

Latex源文件事实上就是普通的文本文件,可以用任何支持文本编辑的软件编>辑。LaTex将文件翻译为排版的格式。

空白

空格和制表符等空白字符在LaTeX中被看做相同的空白距离(space)。多个连续的空白字符等同于一个空白字符。在句首的空白距离一般会被忽略,单个空行也被认为是一个“空白距离”。

两行文本间的空白行标志着上段的结束和下段的开始。多个空白行的作用
等同于一个空白行。

以下是一段示例

不管你输入了多少 空格,最后      渲染出的文本会吃掉多余空格。

新的一行开启新的一段

特殊字符

在LaTeX中一些字符被赋予了特殊的含义,无法直接打出来,包括

特殊字符 转义序列
# \#
$ \$
% \%
^ \^
& \&
_ \_
{ \{
} }
\ $\backslash$

LaTeX 命令

LaTeX的主要命令是大小写敏感的。

LaTeX忽略命令后的空白字符。

有些命令需一个参数,该参数用花括号{}括住并写在命令的后面。一些命令支持可选参数,用方括号[]括住并写在命令后面。

试试看\textsl{Slide}。\newline
还有新的\\一行。
     
     这里分段
     \newpage
     这里开始了新的一页

注释

当LaTeX处理一个源文件时,如果遇到一个百分号%,LATEX 将忽略% 后的该行内容,换行符以及下一行前的空白字符,最后他们不会出现在结果中。

较长的注释需要用到verbatim宏包提供的comment环境。

%在导言中加入下行代码
\usepackage{verbatim}

长注释的演示
\begin{comment}
这是长长的注释
可以随便换行
\end{comment}

源文件的结构

源文件以如下命令开始

\documentclass{...}

命令指明了你所写的源文档的类型。然后,你就可以加入控制整篇文档样式的命令,或者载入一些为LATEX 增加新特性的宏包(package)。可以用如下命令载入一个宏包

\usepackage{...}

完成设置工作后,可以用下面的命令开始文章的主体

\begin{document}

现在你就可以输入带有LATEX 命令的正文了。在文章末尾使用命令

\end{document}

来告诉LATEX 文档已经结束。LATEX 会忽略此命令后的所有内容。

下方是一个中文文档的示例

%这行字是指单面输出、A4纸张、11磅字重、ctexbook类型
\documentclass[oneside,a4paper,11pt]{ctexbook}

\begin{document}
    %文章标题
    \title{\LaTeX教学笔记}
    %文章作者
    \author{王尼玛}
    %生成标题页的命令
    \maketitle
    %居中
    \begin{center}
            这会是一本神奇的书
    \end{center}
    
\end{document}

文档布局

文档类

当LATEX 处理源文件时,首先需要知道的就是作者所要创建的文档类型。文档类型可由\documentclass 命令来指定。

\documentclass[options]{class}

宏包

排版文档时,你可能会发现某些时候基本的LATEX 并不能解决你的问题。如果想插入图形(graphics)、彩色文本(coloured text) 或源代码到你的文档中,你就需要使用宏包来增强LATEX 的功能。可使用如下命令调用宏包

\usepackage[options]{class}

页面样式

LATEX 支持三种预定义的页眉/页脚(header/footer) 样式,称为页面样式(page style)。如下命令

\pagestyle{style}

中的style 参数确定了使用哪一种页面样式。

可以通过如下命令改变当前页面的页面样式

\thispagestyle{style}

LaTeX文件

  • .tex 源文件
  • .sty 宏包文件
  • .eps 矢量图格式
  • .pdf Adobe公司创造的文件格式

文本排版

段落和分行

一般来说,一个空行意味着一段的结束。不加空行,则LaTeX会忽略空格,继续将字符添加到上一段末尾。

这是第一段
,这样会接上去。

只有这样会重新另起一段。

在特殊情形下,有必要命令LATEX 断行

\\或者\newline

另起一行而不另起一段。

\\*

在强制断行后,还禁止分页。

\newpage

另起一页。

特殊字符和符号

引号

印刷中有专门的左引号和右引号。LaTeX中,用两个`(重音)产生左引号,用两个'(直立引号)产生右引号。一个‘ 和一个’ 产生一个单引号。

``双引号不能再用中文`输入法'输入''

破折号和连字号

LATEX 中有四种短划(dash) 标点符号。连续用不同数目的短划,可以得到其中的三种。第四个实际不是标点符号,它是数学中的减号:

中文一般不用-连字号,除了电话号码.\\
以及短破折``12--13页''这种表述\\
长破折号用于---犹豫等语气\\
$-1$的长度和他们不同

波浪号

有两种波浪号,比较一下

\~和$\sim$,后面一种更常用。

前一种会在CJK中报错

省略号

不可以用三个英文句点表示省略号,一般用\ldots表示英文的省略号。

标题、章和节

为了便于理解,应该把文章分为章、节和子节。LaTeX用专门的命令支持这个工作,这些命令把标题作为参量。

%如下代码把book类分成章、节、子节
\chapter[王尼玛]{王尼玛在蓉城的故事}
\section[大一]{关于大一混吃混喝的一切}
\subsection{吃}
%之后的层次不会在目录中出现
\subsubsection{火锅}
\paragraph{大宅门}
\subparagraph{某个周五}

命令\appendix只把章的序号改为字母标记,在article 类中改变节的字号。

命令\tableofcontents在当前位置插入目录。

上述列出的分节命令中,带上*号,则生成的节标题既不出现于目录,也不带序号。

分节命令中可选参数为出现在目录中的节标题。

整篇文章的标题由命令\maketitle生成。

\title{一本教学笔记}
\author{王尼玛}
%可选的
\date{\today}

下面使一些用于book类的实用命令。

  • \frontmatter 接着命令\begin{document} 使用。它把页码更换为罗马数字,而且章节不计数。当你使用带星的分节命令(例如\chapter*{Preface})时,这些章节就不会出现在目录里。
  • \mainmatter 应出现在书的第一章前面。它启用阿拉伯数字的页码计数器,并对页码重新计数。
  • \appendix 标志书中附录材料的开始。该命令后的各章序号改用字母标记。
  • \backmatter 应该插入与书中最后一部分内容的前面,如参考文献和索引。在标准文档类型中,它对页面没有什么效果。

交叉引用

在书籍、报告和论文中,对图、表和文本的特殊段落进行交叉引用。

\label{marker 给节、子节、图、表、公式或定理起个别名marker

\ref {marker} 将把这行命令替换为marker相应的序号

\pageref{marker} 将把这行命令替换为marker相应的页码

\section{第一节}\label{s1}
王尼玛
\section{第二节}
王尼玛在\ref{s1}节中出现,具体在第\pageref{s1}页处。

脚注

命令\footnote{text} 把脚注内容排印与当前页的页脚位置,应该用逗号或句号结尾。

关于使用脚注\footnote{会引开注意力,而且你一定会看过来},为什么把这些不写在正文中呢。

强调

命令\emph{text}可以强调(emphasize)文本。

不同的上下文和字体会有不同的\emph{强调}效果

环境

为了排版某些专用的文本,LaTeX定义了不同格式的环境:

%\begin{environment}
%  text
%\end{environment}
\begin{displaymath}
    x^{n}+y^{n}=z^{n}
\end{displaymath}

环境可以嵌套。

下方出现的命令为环境名,替换上面代码中的environment。

列表环境

LaTeX可以方便的生成各种列表。

  • itemize适用于简单的列表,命令item[index] 可用index作为项目标记。

  • enumerate 适用于有排列序号的列表

    使用宏包enumerate可以定制列表的序号。

    %导言
    \usepackage{enumerate}
    
    %text可替换为任意字符串
    %i为罗马数字,a为希腊字母,1为数字
    \begin{enumerate} [{text} i]
        \item 一二三四五
        \item 上山打老虎
    \end{enumerate} 
    
  • description 适用于带描述的列表,命令item[label] 可用label作为标签。

\begin{enumerate}
    \item 带数字的列表
    \item 列表可以嵌套
    \begin{itemize}
        \item 简单列表默认
        \item[+] 可以修改项目标记
        \begin{description}
            \item[标签] 标签列表的标签显示取决于环境
        \end{description}
    \end{itemize}
\end{enumerate}

对齐

flushleft左对齐,flushright为右对齐,center 为居中。

引用

quote引文,quotation为长引文,verse 为诗歌。

摘要

一般摘要用于article 类文档。命令为abstract

原文打印

\begin{verbatim}\end{verbatim} 之间的文本将直接打印。

在段落中\verb+text+ 可将分隔符+之间的文本直接打印,其中+可以为除了*和空格的任意字符。

表格

tabular环境可用于排版带有水平和垂直表现的漂亮表格。LaTeX会自动设置单元格的长宽,也就意味着不会自动换行

命令\begin{tabular}[pos]{table spec} 的参量table spec定义了表格的样式。其中l 产生左对齐的列,r产生右对齐的列,c 产生居中的列。用p{width} 产生宽为width且自动断行的列;| 产生垂直表线。

参量Pos 设定相对于环绕文本基线的垂直位置。使用字母tbc 来设定表格靠上、靠下或者居中放置。

tabular环境中,用&跳入下一列,用\\ 开始新的一行,用\hline插入水平表线。用\cline{j-i}可添加部分表线,其中ji分别表示表线的起始列和终止列序号。

支持宏包diagbox后,可以在tabular环境中用命令\diagbox{leftBottom}{leftTop}{rightTop}生成对角线表格。

命令\multicolumn{cols}{spec}{text}可以生成一个较宽的列。参量cols表示所占列数,spec 标记了单元格样式,text为文本。

\usepackage{diagbox}

\begin{tabular}{|c|c|c|}
    \hline
    \multicolumn{3}{|c|}{如何追女孩的建议}\\
    \hline 
    \diagbox{财气}{建议}{颜值} & 帅& 挫\\
    \hline
    有钱花 & 没啥好说的 & 没啥好说的 \\
    \hline
    叮当响 & 没啥好说的 & 没啥好说的  \\
    \hline
\end{tabular}

浮动体

有时候,安排一张图片和表格的位置是一件令人抓狂的事。LaTeX提供了\figure\table环境,专门用于浮动图片和表格的位置。

LaTeX会按参数要求将浮动体放入先入先出队列中,知道满足条件的位置出现,否则一个浮动体将挡住之后所有的浮动体。一旦惨剧发生,你会发现所有的表格和图片都放在了文档最后。

当然可以用命令\clearpage强制放置等待队列中所有剩下的浮动体

命令格式为

\begin{figure}[placement specifier] 或 \begin{table}[...]

可选参数placement specifier是由浮动许可放置参数写成的字符串组成,具体见下表。他们告诉了LaTeX浮动提可以被移放的位置,一般可以有很多可防止参数一起构成字符串,标志了多个可用位置。

Spec 浮动体许可放置位置
h 在文本的确切位置
t 页面顶部
b 页面底部
p 只有一个浮动体的专门页面
! 忽略阻止浮动体放置的内部参数

命令\caption[short title]{title} 可以给图片或表格加个标签。

下面是个例子

懒得打字所以复制了很多遍。
    
%可以尝试换为其他的参数
\begin{table}[hb] 
    \caption[短标题]{装模做样的表格}
    \begin{center}
        \begin{tabular}{c}
            \hline
            这是一个表格\\
            \hline
        \end{tabular}
    \end{center}    
\end{table}
懒得打字所以复制了很多遍。

当然交叉引用的两个命令也可以使用。

保护脆弱命令

作为命令参量的文本,可能在文档中出现多次。当用于类似\section的参量时,一些命令会失效。这些命令就被称为脆弱命令。此时在命令前加\protect可以保护它们。

推荐阅读更多精彩内容

  • 为了解决自动化报告之类的问题,测试了几种不同的方案之后,我选了 LaTex。利用 LaTex 生成 PDF 文档可...
    wangpeng905阅读 20,801评论 6 62
  • 字母形式的LaTeX 命令忽略其后的所有空格。如果要人为引入空格,需要在命令后面加一对括号:\TeX{} 阻止其忽...
    ibunny阅读 3,782评论 0 2
  • Latex 学习 @(05.2 Latex)[latex][基础教程] 这篇文章是关于latex基础教程.pdf的...
    tengmoon阅读 1,865评论 1 21
  • TeX与LaTeX TeX是由著名的计算机科学家Donald E. Knuth(高德纳)发明的排版系统,利用TeX...
    JasonDing阅读 3,888评论 1 13
  • 你体验过残疾人的生活吗? 大二打球时不小心将脚踝扭伤,由于病情严重,我过了两个月拄拐的生活。那个阶段让我结结实实地...
    新生大学阅读 126评论 0 1