LaTeX教学2.2 源文件的结构

2.2 源文件结构

重新来看一下我们最开始写的文档

\documentclass{article}
\begin{document}
    This is my \emph{first} document prepared in \LaTeX. 
\end{document}

在这个文档中可以体现出源文件的结构, 所有的LaTeX文档都是以\documentclass{文类}作为开始, 从\documentclass{}\begin{document}之前的所有命令语句统称为导言, 在\begin{document}\end{document}之间的命令语句和文本统称为正文. 命令\end{document}之后的所有字符LaTeX均将其忽略.

2.2.1 文类

标准文类

导言的第一句话, 通常也是LaTeX元文件的第一条命令, 就是文类命令:
\documentclass[参数1, 参数2,……]{文类}[日期]
每个LaTeX源文件都必须从这条命令开始, 它通知LaTeX将该论文源文件按照指定文类规定的文档格式进行排版, 这个文类命令必须用在导言的首句, 其中的必要参数用于指定所用文类的名称, 最后一个可选参数日期是选择宏包对应日期的版本, 一般情况下省略. 在英文文档中, 常用的文类有4种

文类名 用途 特点
article 短文, 评论, 学术论文 无左右页区分处理, 无chapter结构
book 专业著作, 学位论文 默认有左右页区分处理, 章起右页
report 科技,实验报告 默认无左右页区分处理, 章起新页
beamer 论文陈述幻灯片 提供多种主题样式, 可方便地更换幻灯片整体风格

在表格中前三种由于广泛应用于论文写作, 因此被称为标准文类.

可以试一下, 在第一个示例的文类下是无法正常编译中文的, 如果要编译中文, 有两种方式可以选择,

  1. 选择是更换对应文类为ctexart,ctexbook,ctexrep, 但是这种方式会根据中文论文的排版习惯改变文档内的显示形式, 在正文结构里会提到, 而且在使用这四种文类的时候, 如果使用的是XeLaTeX或者是LuaLaTeX编译方式, 可以直接使用\documentclass{ctex……}, 这两种编译方式可以自动将文档中的中文识别为UTF8的编码进行编译, 如果使用的是(Pdf)LaTeX, 因为由于历史原因, 这两种编译方式默认编码是GBK, 而CTeX宏集是以默认的编码格式是UTF8, 所以要使用可选参数[UTF8]来将(PDF)LaTeX的编码格式设置为UTF8, 则需要使用\documentclass[UTF8]{ctex……}来设置文类. 因为LaTeX并不会自动识别用户文档所用的编码格式, 所以建议使用者总是加上可选参数[UTF8], 即总是使用\documentclass[UTF8]{ctex……}
  2. 另一种是添加中文支持宏包\usepackage[UTF8]{ctex}, 因为这种方式没有改变文类, 只是增添了适应文字类型, 所以文档内的显示形式不会改变, 而对于可选参数[UTF8]我们同样遵循第一点里说的, 建议总是使用[UTF8]

关于LaTeX中中文的输出更多内容, 可以在C:\CTEX\MiKTeX\doc\latex\ctex\ctex.pdf(使用MiKTeX)或C:\texlive\2018\texmf-dist\doc\latex\ctex\ctex.pdf(使用TeX Live)查看ctex.pdf文件

标准文类的选项
选项 是否默认 说明
10pt 常规字体尺寸10pt
11pt 常规字体尺寸10.95pt
12pt 常规字体尺寸12pt
a4paper 是(取决于安装TeX系统时设置) 纸张幅面,宽210mm×高297mm
letterpaper 是(取决于安装TeX系统时设置) 纸张幅面, 宽216mm×高279mm
a5paper 纸张幅面, 宽148mm×高210mm
b5paper 纸张幅面, 宽176mm×高250mm

以上是在设置文类时的可选参数, 上表中提及的选项均可以在所有标准文类中使用.即我们可以使用文类\documentclass[b5paper,11pt]{article}来设置一个用b5纸, 文档正文字体大小为11pt的论文文类.

2.2.2 宏包

每个功能强大的命令或环境都是由多个TeX基本命令和LaTeX命令组合而成的, 这种组合命令称为, 存储这些宏的命令文件称为宏包, 其扩展名为.sty.

宏包的作用是扩展或新增某些排版功能, 相当与C++中的#include<>, 在导言区使用命令
\usepackage[参数1,参数2,……]{宏包名称}[日期]
来调用宏包, 调用宏包命令只能在导言区使用, 宏包名称不区分大小写, 通常均为小写, 最后一项可选参数日期与文类命令中的日期作用相同, 通常情况下省略. 虽然LaTeX中的宏包数量上千个, 但是撰写论文常用的只有20多个, 下表列出了他们的名称和用途, 具体如何使用可以在帮助->宏包帮助中输入宏包名称来查看其对应的帮助文档.

宏包名 用途 宏包名 用途
amsmath 多种公式环境和数学命令 graphicx 插图处理
amssymb 数学符号生成命令 hyperref 创建超文本链接和PDF书签
array 数组和表格制作 ifthen 条件判断
caption 插图和表格标题格式设置 ctex 中文字体
ctexcap 中文字体和标题 fancyhdr 页眉页脚设置
titlesec 章节标题格式设置 titletoc 目录格式设置
fontspec 字体选择 geometry 版面尺寸设置
fancyvrb 抄录环境设置

2.2.3 正文结构

层次

对于一篇论文或一本书, 它的结构层次是很重要的, LaTeX为不同的文类提供了不同的章节划分标准.

\documentclass{book}
\begin{document}
    \chapter{chapter 1}
    \section{section 1}
    \subsection{subsection 1}
    \subsubsection{subsubsection 1}
    \paragraph{paragraph 1}
    \subparagraph{subparagraph 1}
    This is the full structure of a book.
    \section{section 2}
\end{document}

book文类

这是book文类的结构层次, 其章节的编号不需要我们自己去添加, LaTeX会自动按顺序将编号生成好, 如果没有前一层则会把前一层的编号自动判断为0, report文类也是如此.而对于article文类, 它没有chapter结构, 其余的完全相同, 而对ctexbook, ctexrepctexart文类, chapter和section结构会居中, 如图
ctexbookmd.png

段落与行

试着在正文中编译以下文字

This is the first line
This is also the first line
!
.

又发现问题了, 这里和Word里有着明显区别, 编译出来的文件并没有按着想象中的换行, 而是排到了一行, 并且会发现在第一个line后面有一个空格, 即可以理解为一个换行相当于一个空格, 英语中单词和单词之间会有空格, 所以在这个地方用换行当成空格也无可厚非; 但在中文中, 我们汉字和汉字之间并不需要空格, 那换行产生的空格怎么消除呢?别担心, 在为中文准备的ctex系列文类和ctex.sty宏包中, 将这个问题已经处理过了, 看下面的例子

\documentclass[UTF8]{ctexart}
\begin{document}
    这个
    好
    very
    好
    !
    .
    good
 \end{document}

ctex换行.png

可以看出来, ctex……文类在处理换行的时候, 执行以下判定:如果是汉字+汉字, 汉字+标点则取消空格, 如果是英文+英文, 英文+汉字, 英文+标点, 标点+标点则依旧保留空格. 将使用文类改成使用\usepackage[UTF8]{ctex}是一样的效果. 但是如果想取消换行产生的英文空格怎么办呢, 很简单, 在前一行的结尾加一个注释符%, 就像这样

Hello%
world

因为注释符%的作用是忽略该注释符和其后的所有文字, 即换行产生的空格也被忽略了, 同时可以知道换行产生的空格是在前一行

但是问题又出现了, 我们发现在上述条件下, 换行产生的空格是没有了, 同一行中汉字和汉字之间的空格也没有了, 要解决这个问题的话, 调用的宏包或文类中有一个可选参数space中含有三个选项可以让用户选择:

可选参数 作用
true 总不省略汉字换行后的空格, 此时用户需要%来取消掉不需要的空格
false 总省略汉字后的换行空格(使用(PDF)LaTeX编译时); 等同于auto(使用XeLaTeX编译时), 不建议使用此选项
auto 默认值, 如果汉字后是汉字, 则省略空格, 否则保留

即如果想让汉字后面的空格一直保留的话, 使用\usepackage[space=true]{ctex}\documentclass[space=true]{ctexart}或者在正文部分使用命令\ctexset{space=true}来使命令后的正文使用对应格式,

:在正文中使用\ctexset{space=true}时, 这条命令后紧接的汉字与这条命令前的汉字间的空格依旧由这条命令之前的格式来控制, 可以用以下代码实验:

\documentclass{article}
\usepackage{ctex}
\begin{document}
    自动
    控制
    \ctexset{space=true}
    强制
    空格
\end{document}

LaTeX对空格的控制说完了, 可是要是想换行怎么办呢?LaTeX给我们提供了一些方法, 先看下面的例子:

\documentclass{article}
\begin{document}
    This is the first line.\\
    This is the second line without indent.
\end{document}

上面的代码输出了:

\\换行

可以看出来, \\这个符号会输出一个不带缩进的换行, 如果使用\newline也可以实现这个效果. 如果想输出带缩进的换行, 即新起一段, 可以怎么做呢?当然可以在新的一行前面加上缩进命令\indent, 或者也可以通过一些新的方式, 看下面的例子

\documentclass{article}
\begin{document}
    This is the first line.

    This is the second line with indent.
\end{document}

上面代码会输出:
带缩进换行

同样可以使用段落命令, 例

\documentclass{article}
\begin{document}
    This is the first line.\par
    This is the second line with indent.
\end{document}

上述代码输出效果和两个换行符产生的效果相同.

:还可以使用\\来生成自定义行距的一行, 命令为\\[<长度>], 例\\[4mm]

综上所述, 在LaTeX中的一个换行相当于一个空格, 两个反斜杠\\表示新起一行, 与\newline作用相同, 两个换行则新起一段, 与\par产生的效果相同.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • LaTeX教学 [TOC] 1. LaTeX简介 1.1 LaTeX的历史 1978年, 斯坦福大学的Donald...
    无锤乙醇阅读 1,211评论 0 4
  • 解读上一篇文章(2)LaTeX论文排版——总体框架[https://www.jianshu.com/p/0aaee...
    5john家安阅读 5,754评论 0 11
  • 1)翻译下面的句子: 东京将在 2020 年举办奥运会,这将为当地经济注入亟需的活力。 The 2020 Olym...
    荆棘海_Ph阅读 140评论 0 0
  • 这些是我平时看到的人、事、社会现象、百态生活后,有感而发,也有一、两条名人名言,对于自身如何做好自我很有意义,...
    秋苹果之秋荷阅读 1,121评论 2 1
  • 很多时候,我不太能理解你的爱, 我们本是一体的,是相依的生命, 为何会有这么多的分别。 小时候, 你错过了我的星星...
    璞城阅读 311评论 2 5