1 文档结构

文档类、序言、正文

LATEX源文件的结构分三大部分,依次为:文档类声明序言(可 选)正文
文档类声明用来指定文档的类型;序言(preamble)用来完成一些特 殊任务,比如引入宏包,定义命令,设置环境等;文档的实际内容则放在 正文部分。这里的正文指得是\begin{document}\end {document}之间 的部分,和通常人们心目中的“正文”概念有所出入。

这三部分的基本语法如下:

\documentclass[options]{class} %文档类声明 \usepackage[options]{package} %引入宏包 ...
\begin{document} %正文
...
\end{document}

常用的文档类(documentclass)有三种:article、report、book, 它们的常用选项见表

文档类常用选项

LATEX 的核心只提供基本的功能,系统以宏包(package)的形式提供 附加功能或增强原有功能。其它一些编程语言也有类似的模块化机制,比 如 C/C++ 的 #include,Java 的 import。

标题、摘要、章节

一份文档正文部分的开头通常有标题、作者、摘要等信息,之后是章 节等层次结构,内容则散布于层次结构之间。
标题、作者、日期等命令如下,注意\maketitle 命令要放在最后。

\title{标题}
\author{作者}
\today
\maketitle

摘要环境用法如下:

\begin{abstract}
...
\end{abstract}

常用的层次结构命令如下

\chapter{...}
\section{...}
\subsection{...}
\subsubsection{...}

每个高级层次可以包含若干低级层次。article 中没有 chapter,而 report 和 book 则支持上面所有层次。

目录

我们可以用 \tableofcontents 命令来生成整个文档的目录,LATEX 会 自动设定目录包含的章节层次,也可以用 \setcounter 命令来指定目录层 次深度。

\tableofcontents
\setcounter{tocdepth}{2}

如果不想让某个章节标题出现在目录中,可以使用以下带 * 的命令来 声明章节。

\chapter*{...}
\section*{...}
\subsection*{...}

类似地,我们也可以用以下命令生成插图和表格的目录,插图和表格
功能将在后面章节中介绍。

\listoffigures
\listoftables

当章节或图表等结构发生变化时,我们需要执行两遍编译命令以获得 正确结果。LATEX 之所以设计成这样可能是因为当时的电脑内存容量有限。

2 文字排版

字符输入

文档中可以输入的内容大致可以分为:普通字符、控制符、特殊符 号、注音符号、预定义字符串等。而这些内容有两种输入模式:文本模式 (缺省)和数学模式,普通的行间(inline)数学模式用\$...\$来表示。

LATEX中有些字符(例如# $ % ^ & _ { } ~ \等)被用作特殊的 控制符,所以不能直接输入,多数需要在前面加个 \。而 \ 本身则要用 \textbackslash 命令来输入,因为 \ 被用作了换行指令。很奇怪为什么 不用 C 语言的 \n,也许是因为 TEX 的编程语言是 Pascal。
表 2.2 提供了一些符号的输入方法示例,完整的符号列表见 Scott Pakin的《The Comprehensive LATEX Symbol List》[1]。

换行、换页、断字

通常 LATEX 会自动换行、换页。用户也可以用 \ 或 \newline 来强制 换行;用 \newpage 来强制换页。

一般情况下 LATEX 会尽量均匀地断字(Hyphenate),使得每一行的 字间距分布整齐。但有时我们也需要显式指明断字位置,比如下例就指明 BASIC 这个词不能断开,而 blar-blar-blar 可以在-处断开。

 \hyphenation{BASIC blar-blar-blar}

字样、字号

LATEX会自动调整正文、标题、章节、上下标、脚注等的字样3、字 号。我们也可以用表 2.3中的命令来设置字样;用表 2.4中的命令来设置 相对字号,比如正文字号是 10pt、11pt、12pt 时,tiny的字号就分别是 5pt、6pt、6pt。

LATEX 有一个特别的字样强调命令:\emph,它在不同字样和装饰环境 下有不同效果。比如周围文字是正体,它就是斜体;反之它就是正体。

3 常用命令环境

列表

LATEX 中有三种列表环境:itemize、enumerate、description,它 们的一般用法如下:



对齐

LATEX中的段落缺省两端对齐(fully justified),我们也可以让段落居左、居右或居中对齐。

摘录

LATEX 中有三种摘录环境:quote、quotation、verse。

  • quote 两端都缩进
  • quotation 在 quote 的基础上增加了首行缩进
  • verse 比 quote 多了第二行起的缩进。

原文照排

一般文档中,命令和源代码通常使用等宽字样来表示,也就是原文照 排。对此 LATEX 提供了 \verb 命令(一般用于在正文中插入较短的命令) 和 verbatim 环境。后者有带 * 的版本用来标明空格。

交叉引用

我们常常需要引用文档中 section、subsection、figure、table 等 对象的编号,这种功能叫作交叉引用(cross referencing)。

LATEX 中可以用 \label{marker} 命令来定义一个标记,标记名可以是 任意字符串,但是在全文中须保持唯一。之后可以用 \ref{marker} 命令来 引用标记处章节或图表的编号,用 \pageref{marker} 来引用标记处的页 码。

文档中新增交叉引用后,第一次执行 latex 或 pdflatex 编译命令时 会得到类似下面的警告信息。因为第一次编译只会扫描出有交叉引用的地 方,第二次编译才能得到正确结果。

脚注

脚注(footnote)的一般用法如下:

4 长度单位

LATEX 中的常用长度单位如表 2.5 所示。point 是个传统印刷业采用的 单位,而big point是Adobe推出PS时新定义的单位。em是个相对单位, 比如当前字体是 11pt 时,1em 就是 11pt。

5 盒子

LATEX在排版时把每个对象(小到一个字母, 大到一个段落)都视为一个矩形盒子(box),我们在 HTML 和 CSS 中也可以见到类似的模型。

mbox 和 fbox

LATEX 中最简单的盒子是 \mbox 和 \fbox。前者把一组对象组合起来, 后者在此基础上加了个边框。

makebox 和 framebox

稍复杂的 \makebox 和 \framebox 提供了宽度和对齐方式控制选项。这
里用 l、r、s 分别代表居左、居右和分散对齐。

parbox 和 minipage

大一些的对象比如整个段落可以用 \parbox 命令和 \minipage 环境, 两者语法类似,也提供了对齐方式和宽度的选项。但是这里的对齐方式是 指与周围内容的纵向关系,用 t、c、b 分别代表居顶、居中和居底对齐。

细心的读者会发现 \parbox 和 \minipage 的选项排列顺序和 \makebox 和 \framebox|的不一致,可能出自不同的作者。

latex学习--基础知识的更多相关文章

  1. Matrix学习——基础知识

    以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明. 首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部 ...

  2. JAVA学习基础知识总结(原创)

    (未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...

  3. ansible学习基础知识和模块(一)

    基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...

  4. Python学习-基础知识-2

    目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...

  5. IOS科研IOS开发笔记学习基础知识

    这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollVi ...

  6. MySQL学习基础知识1

    什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...

  7. android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器

    一.基础知识点学习  1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...

  8. Java学习---基础知识学习

    2016-07-23  周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4]  ;  只有4个数字BufferedRead ...

  9. java学习基础知识入门

    基础入门知识(一) 一.java技术的分类 java按照技术标准和应用场景的不同分为三类,分别是JAVASE.JAVAEE.JAVAME JAVASE : 平台标准版,用于开发部署桌面,服务器以及嵌入 ...

随机推荐

  1. highcharts去掉右下角highchart.com和右上角的图标(三个小横杆)

    去除右下角highchart.com credits: {                enabled:false            } 去除右上角图标 exporting: {         ...

  2. Dimmer: 通过移动鼠标来改变 LED 的亮度

    原文地址 - https://www.arduino.cc/en/Tutorial/Dimmer 调光器 本例展示了如何通过个人电脑发送数据到 Arduino / Genuino 开发板来控制一个LE ...

  3. Python 之 装饰器的写法

    普通装饰器 1. 不带参数的普通装饰器 from functools import wraps def use_logging(func): @wraps(func) # 使得装饰器函数和原函数有一样 ...

  4. 【原创翻译】初识Unity中的Compute Shader

    一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位 ...

  5. SOLID rule in JAVA design.

    Classes are the building blocks of your java application. If these blocks are not strong, your build ...

  6. 解决window2012 IIS8 配置的网站无法下载exe文件的问题

    window2012 IIS8 配置网站下载exe文件.解决window2012 IIS8 配置的网站无法下载exe文件的问题 配置好网站后,无法下载网站上的exe文件,zip文件确可以下载的.右键点 ...

  7. autoit使用WMIC获取硬件信息

    效果图: 直接上源码了 #cs ---------------------------------------------------------------------------- AutoIt ...

  8. tomcat出现的PermGen Space问题

    java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出现这个错误的原因,总结一下: PermGen Space指的是内存的永久保存区,该 ...

  9. Junit3断言

    在Robotium自动化测试的过程中,发现没有断言的脚本是没有意义的,现整理Junit3和Junit4的断言,供日后查阅. http://junit.org/ Junit3断言API: http:// ...

  10. PS1应用之——修改linux终端命令行各字体颜色

    最近在学习linux操作系统(CentOS 6 & CentOS 7).觉得linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨.于是上网找到修改linux终端命令行颜色的方法,发 ...