latex学习--基础知识
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学习--基础知识的更多相关文章
- Matrix学习——基础知识
以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明. 首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部 ...
- JAVA学习基础知识总结(原创)
(未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
- ansible学习基础知识和模块(一)
基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...
- Python学习-基础知识-2
目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...
- IOS科研IOS开发笔记学习基础知识
这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollVi ...
- MySQL学习基础知识1
什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...
- android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器
一.基础知识点学习 1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...
- Java学习---基础知识学习
2016-07-23 周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4] ; 只有4个数字BufferedRead ...
- java学习基础知识入门
基础入门知识(一) 一.java技术的分类 java按照技术标准和应用场景的不同分为三类,分别是JAVASE.JAVAEE.JAVAME JAVASE : 平台标准版,用于开发部署桌面,服务器以及嵌入 ...
随机推荐
- 同时闪烁多个要素代码(ArcEngine)
/// <summary> /// 根据查询条件构造/// </summary> /// <param name="where">查询条件< ...
- 回溯 DFS 深度优先搜索[待更新]
首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权! 1.概念 回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...
- linux svn 提交文件时强制填写备注
很多程序员不爱写注释,特别是svn提交的时候,文件做了什么修改都没有一个简单的备注,往往都是直接提交,这样是非常不利于团队开发的.所以就有了svn提交的时候,强制修改文件的备注. 步骤如下: 1.先找 ...
- 开发android App干坏事(一)
最近都是在搞java,android的知识,前两天生日朋友和我聊到,有一个认识的人通过反编译android程序往里面插入广告积分墙赚了很大一笔钱,很短时间内赚了几十万,(为毛感觉这已经是扯淡篇了,转入 ...
- 小小收获for python
包导入问题: 包之外导入:还是按照sys.path的搜索路径进行模块的导入 包内的导入:python3.0+ 完全区分绝对导入和相对导入 from . import string #在 ...
- 许小年:宁可踏空,不可断粮<转>
http://www.daonong.com/g/25/xsqy/2014/0716/51074.html 文│许小年 中欧国际工商学院教授 为什么我们企业的创新能力长期处于低水平呢? 深入观察,内心 ...
- android platform下载地址
大陆直接访问Android的光放网站一般情况下比较困难,特此列出了Android各个SDK版本的直接下载地址. ADT 23.0.4:https://dl.google.com/android/ADT ...
- vs2010 sql server 2008数据库管理界面安装
http://jingyan.baidu.com/article/1e5468f928e106484961b7b0.html
- 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...
- cakephp 打印出SQL语句
最近一直在使用cakephp这个框架学习,最近发现了一些问题,就是怎样将SQL语句打印出来进行调试,方法如下: $db=ConnectionManager::getDataSource('defaul ...