LaTeX文章提纲

2022-03-17 15:19:04 浏览数 (1)

【注】笔记来自《LaTeX入门》——刘海洋。

1. 导言区

begin{document} 前面的部分称为导言区,导言区通常用来对文档的性质做一些设置,或者自定义一些命令。

1.1 声明文档类

代码语言:javascript复制
documentclass{article}         # 西文短文类
documentclass[UTF8]{ctexart}   # 中文短文类

1.2 引用宏包

代码语言:javascript复制
usepackage{}

1.3 设定标题、作者、日期等

代码语言:javascript复制
title{杂谈勾股定理}
author{张三}
date{today}

begin{document}
    maketitle
    ...
end{document}

【注】这些信息并不会马上出现在编译的结果中,而是要通过在 begin{document} ... end{document} 中添加 maketitle 进行排版才会显现出来。

1.4 声明参考文献格式

代码语言:javascript复制
bibliographystyle{plain}

2. 正文区

begin{document} ... end{document} 中包裹的便是正文区,即论文的正文部分,也即直接输出的部分。

2.1 输出标题、作者、日期等信息

在正文区使用 maketitle 命令来自动排版输出在导言区定义的文章标题、作者和日期等信息。

代码语言:javascript复制
begin{document}
    maketitle
    ...
end{document}

2.2 输出目录

在正文区使用 tableofcontents 命令来排版输出文章的目录,LaTeX 会自动收集章节命令所定义的各章节标题。

代码语言:javascript复制
begin{document}
    ...
    tableofcontents
    ...
end{document}
  • 在 article 中,目录标题的格式相当于由 section* 开始的一节。
  • 在 report 和 book 中,目录标题相当于由 chapter* 开始的一章。

同理,若要输出图片标题的目录,则在正文区插入 listoffigures 命令;若要输出表格标题的目录,则在正文区插入 listoftables 命令。

  • listoffigureslistoftables 命令主要收集图表环境中由 caption 定义的图表标题。

【注】要生成目录至少需要编译两次,让 LaTeX 有机会读完整个论文来计算目录结构。

2.3 摘要

在正文中添加摘要内容需要使用 abstract 环境:

代码语言:javascript复制
begin{abstract}
    ...
end{abstract}

2.4 段落

  • 空白行分段单个的换行就相当于一个空格,单个换行不会使文字另起一段,空白行会使文字另起一段。但空白行只起到分段作用,使用很多空白行并不能增大段间距。
  • 空格段前不用打空格,就算打了也会被忽略,LaTeX 会自动完成文字的缩进;通常汉字后面的空格会被忽略,其他符号后面的空格则会被保留。空格只起到分隔单词或符号的作用,使用很多空格并不能增大字词间距。

2.5 脚注

脚注命令为 footnote[n]{脚注内容}

  • 可以通过设定 n 对脚注进行手动编号,也可以省略 n 让 LaTeX 自动对同一页面的多个脚注按照出现的先后顺序进行编号。

2.6 引用

在正文中添加引用内容需使用 quote 环境:

代码语言:javascript复制
begin{quote}
    zihao{-5}  % 设定引用内容字号
    kaishu     % 设定引用内容字体
    ...
end{quote}

2.7 定理

在正文中添加定理内容需要使用定理环境,定理环境是一类环境,在使用前需要先在导言区做定义:

代码语言:javascript复制
newtheorem{thm}{定理}      % thm 为定义的环境名称,「定理」为定理指示语

如上便定义了一个 thm 的环境。这样定义的定理环境有一个可选参数,即定理的名字:

代码语言:javascript复制
begin{thm}[勾股定理]
    ...
end{thm}

定理环境会自动对正文中出现的定理按顺序编号,定理最终在正文中的显示格式为:

代码语言:javascript复制
定理指示语 定理编号(定理名字)定理内容

2.8 数学公式

  • 正文公式/行内公式:夹在行文中的公式,使用美元符号 或 ( ) 将公式括起来。
  • 显示公式/列表公式:单独居中写在一行的公式,为了方便引用,还可以给公式编号。使用 equation 环境就可以方便地输入这种公式,[ ] 和 $$ $$是对 equation 环境的简写。

在 equation 环境中也可以定义标签等信息,然后在正文中就可以通过 ref{公式标签} 进行引用。

$ $$$ $$是 Plain TeX 的语法,( ) 和 [ ] 是 LaTeX 的语法。在 Plain TeX 中只能使用第一中语法,LaTeX 中两者都可以使用,但推荐使用第二种。

2.9 插入图片

插图功能不是由 LaTeX 的内核直接提供的,而是由 graphicx 宏包提供的,因此要使用插图功能需要在导言区使用 usepackage 命令引入 graphicx 宏包:

代码语言:javascript复制
usepackage{graphicx}
  • 固定插图:如果想要直接插图夹到文字中,则可以在正文区的文字中直接使用 includegraphics[]{} 命令。这样插入的图片的位置是固定的,但这样会给 LaTeX 分页造成困难。
  • 浮动插图:通常都是把图形放在一个可变动相对位置的环境中,即 figure 环境,称为浮动体。浮动体还可以给图形加入说明性的标题、设定对齐方式、设定标签等。
代码语言:javascript复制
begin{figure}[ht]
    centering
    includegraphics[scale=0.6]{图片路径.pdf}
    caption{图片标题}
    label{fig:图片标签}
end{figure}
  1. 参数 ht 分别表示浮动体可以出现的位置为 here 和 top,即当前环境周围文本的所在处以及一页的顶部。
  2. centering 表示后面的内容居中对齐。
  3. includegraphics 插入图片,scale 为缩放因子。
  4. caption 插入图片标题,并给图片自动编号。
  5. label 给图片定义一个标签,使用这个标签就可以在文章其他地方引用 caption 产生的标号。

在正文中引用图片使用 ref{图片标签} 命令。

2.10 插入表格

在正文区插入表格需要使用 tabular 环境来完成。

代码语言:javascript复制
begin{tabular}{|rrr|}
    hline
    直角边 $a$ & 直角边 $b$ & 斜边 $c$ \
    hline
    3 & 4 & 5 \
    5 & 12 & 13 \
    hline
end{tabular}

上述例子中,tabular 环境有一个参数,其声明了表格中列的模式。|rrr| 表示表格有三列,都是右对齐的,在第一列前面和最后一列后面各有一条垂直的表格线。表格中相邻行间的横线是用命令 hline 产生的。行与行之间用换行命令 隔开,每行内部的列表项用 & 隔开。

  • 表格和 includegraphics 命令得到的插图一样,都是一个比较大的盒子,一般也需要放在浮动环境中,即 table 环境,参数与大体的使用格式和 figure 类似。
代码语言:javascript复制
usepackage{float}

begin{table}[H]
    begin{tabular}{|rrr|}
        hline
        直角边 $a$ & 直角边 $b$ & 斜边 $c$ \
        hline
        3 & 4 & 5 \
        5 & 12 & 13 \
        hline
    end{tabular}
    label{tab:xxx}
end{table}

其中,H 参数表示固定在 table 所在的上下文位置,使用此参数需要引入 float 宏包。

在正文中引用图片使用 ref{表格标签} 命令。

2.11 参考文献

  • 参考文献排版使用的是 BibTeX 工具。

首先需要在导言区声明参考文献的格式:

代码语言:javascript复制
bibliographystyle{plain}

然后需要定义「参考文献数据库」。BibTeX 使用的参考文献数据库其实就是一个后缀为 .bib 的文件,其内容为多条文献,每条文献包括类型、引用标签、标题、作者、出版年、出版社等信息。在现实中,BibTeX 数据库经常并不需要我们自己录入,而可以从相关学科网站直接下载或是从其他类型的文献数据库转换得到。若需要自己录入,还可以使用 JabRef 这种软件来管理。

代码语言:javascript复制
% Encoding: UTF-8

@Book{Kelaiyin,
  author  = {克莱因},
  title   = {古今数学思想},
  year    = {2002},
  journal = {上海科学技术出版社},
}

@Book{Shiyejiantailang,
  author  = {失野健太郎},
  title   = {几何的有名定理},
  year    = {1986},
  journal = {上海科学技术出版社},
}

@Article{Quanjing,
  author  = {曲安京},
  journal = {数学传播},
  title   = {商高、赵爽与刘徽关于勾股定理的证明},
  year    = {1998},
  number  = {3},
  volume  = {20},
}

@Comment{jabref-meta: databaseType:bibtex;}

接着就可以通过 cite{引用标签} 在文中引用参考文献。如果在列表中显示并不直接引用的文献,则可以使用 nocite{引用标签} 命令,一般把它放在 bibliography 命令之前。 最后在正文区最后使用 bibliography 命令打印出参考文献列表。

【注】使用 BibTeX 处理文献时,编译 xxx.tex 文件需要执行四次:

代码语言:javascript复制
xelatex xxx.tex
bibtex xxx.aux
xelatex xxx.tex
xelatex xxx.tex
  • 第一次运行 xelatex 为 BibTeX 准备好辅助文件,确定数据库中的哪些文献将被列出来。
  • 第二次运行 bibtex 处理辅助文件 xxx.aux,从文献数据库中选取文献,按指定格式生成文献列表的 LaTeX 代码。
  • 第三次和第四次运行 xelatex 再读入文献列表代码并生成正确的引用信息。使用 cite 命令显示文献在列表的编号在第三次编译后才能确定。

2.12 设计格式

  • 使用 geometry 宏包来设计页面尺寸。
代码语言:javascript复制
usepackage{geometry}
geometry{a6paper, centering, scale=0.8}
  • 使用 caption 宏包设定图表标题格式。
代码语言:javascript复制
usepackage[format=hang, font=small, texfont=it]{caption}   % 斜体 it 对汉字来说就是楷书
  • 增加目录的项目可以使用 tocbibing 宏包,该宏包默认会在目录中加入目录项本身、参考文献、索引等项目。
代码语言:javascript复制
usepackage[nottoc]{tocbibind}  % nottoc 选项表明取消在目录中显示目录本身

3. 实现

在 document 环境之内避免直接使用诸如字号、对齐缩进的格式控制命令,而代之以有意义的环境和命令,让文档变得清晰。

  • 定义新环境:newenvironment 有三个参数,第一个参数为环境名,第二、三个参数分别为在环境开始和结束处的代码。
代码语言:javascript复制
newenvironment{myquote}
    {begin{quote}kaishuzihao{-5}}
    {end{quote}}
  • 定义新命令:newcommand 有两个参数,第一个参数是新命令名,第二个参数是新命令的定义。
代码语言:javascript复制
newcommanddegree{^circ}

3.1 代码

代码语言:javascript复制
%-*- coding: UTF8 -*-
% 杂谈勾股定理

documentclass[UTF8]{ctexart}
usepackage{float}
usepackage{graphicx}
usepackage{geometry}
usepackage[format=hang, font=small, textfont=it]{caption}
usepackage[nottoc]{tocbibind}
newtheorem{thm}{定理}
newenvironment{myquote}
    {begin{quote}kaishuzihao{-5}}
    {end{quote}}
newcommanddegree{^circ}
geometry{a6paper, centering, scale=0.8}

title{heiti 杂谈勾股定理}
author{kaishu BlueHeart0621}
date{today}

bibliographystyle{plain}

begin{document}
    maketitle
    tableofcontents
    begin{abstract}
        这是一篇关于勾股定理的小短文。
    end{abstract}
    section{勾股定理在古代}label{sec:gudai}
        西方称勾股定理为毕达哥拉斯定理,将勾股定理的发现归功于公元前 6 世纪的毕达哥拉斯学派cite{Kelaiyin}。该学派得到了一个法则,可以求出可排成直角三角形三边的三元数组。毕达哥拉斯学派没有书面著作,该定理的严格表述和证明则见于欧几里得footnote{欧几里得,约公元前 330--275 年。}《几何原本》的命题 47:「直角三角形斜边上的正方形等于两直角边上的两个正方形之和。」证明是用面积做的。

        我国《周髀算经》载商高(约公元前 12 世纪)答周公问:
        begin{myquote}
            勾广三,股修四,径隅五。
        end{myquote}
        又载陈子(约公元前 7--6 世纪)答荣方问:
        begin{myquote}
            若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。  
        end{myquote}
        都较古希腊更早。后者已经明确道出勾股定理的一般形式。图 ref{fig:xiantu} 是我国古代对勾股定理的一种证明cite{Quanjing}。
        begin{figure}[ht]
            centering
            includegraphics[scale=0.6]{xiantu.pdf}
            caption{宋赵爽在《周髀算经》注中作的弦图(仿制),该图给出了勾股定理一个极具对称美的证明。}
            label{fig:xiantu}
        end{figure}

    section{勾股定理的近代形式}label{sec:jindai}
        勾股定理可以用现代语言表述如下:
        begin{thm}[勾股定理]
            直角三角形斜边的平方等于两腰的平方和。
        end{thm}
        
        可以用符号语言表述为:设直角三角形 $ABC$,其中 $angle C = 90degree$,则有 begin{equation}
            AB^2 = BC^2   AC^2
            label{eq:gougu}
        end{equation}
        满足式 ref{eq:gougu} 的整数称为 emph{勾股数}。第 ref{sec:gudai} 节所说的毕达哥拉斯学派得到的三元数组就是勾股数。下表列出一些较小的勾股数:
        begin{table}[H]
            centering
            begin{tabular}{|rrr|}
                hline 
                直角边 $a$ & 直角边 $b$ & 斜边 $c$ \
                hline 
                3 & 4 & 5 \
                5 & 12 & 13 \
                hline
            end{tabular}%
            qquad
            $
                (a^2   b^2 = c^2)  
            $
        end{table}

    nocite{Shiyejiantailang}
    bibliography{math}

end{document}

3.2 效果

0 人点赞