LaTeX入门学习与案例展示
本文最后更新于:2024年11月12日 晚上
Useful sites:
Create LaTeX tables online – TablesGenerator.com
Overleaf, 在线LaTeX编辑器
在线LaTeX公式编辑器-编辑器
前言
LaTeX是一种“非所见即所得”的排版系统,用户需要输入特定的代码,保存在后缀为.tex的文件中,通过编译得到所需的pdf文件。
例如以下代码:
1 |
|
最后输出的结果是一个pdf文件,内容是Hello, world!
。
如何理解“非所见即所得”呢?在这里举个“所见即所得”的例子:Word。Word的界面就是一张A4纸,输入的时候是什么样子,最后呈现出来就是什么样子。这给了我们极高的自由度,也非常容易上手,但是有如下问题:对于对细节不敏感的用户,Word的排版常常会在细节存在问题,比如两段话之间行间距不同、字体不同、标题样式不同等;对于撰写论文的用户,Word的标题、章节、图表、参考文献等无法自动标号,也很难在正文中引用;对于有公式输入需求的用户,Word自带的公式不稳定,而公式插件效果常常不好。
相比之下,使用LaTeX进行排版,就像是在铺好的轨道上驾驶火车一样。使用LaTeX没有办法像Word一样非常自由,但是可以保证规范性,这使得LaTeX非常适合用于论文的排版。在学习的过程中,也将会感受到这一点。
无论是LaTeX还是Word,其归根结底都只是排版工具,用Word也可以排出LaTeX的效果,用LaTeX也可以排出Word的效果。另外,笔者最建议的书写工具是Markdown,其书写的过程中可以不在意排版,也支持使用LaTeX语法输入公式,与LaTeX之间的转换非常方便。
准备工作:安装LaTeX与配置环境
安装Tex Live
官方的地址是http://mirror.ctan.org/systems/texlive/Images/texlive2021.iso,但是可能速度较慢,以下是一些国内的镜像地址:
清华大学:https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/
上海交通大学:https://mirrors.sjtug.sjtu.edu.cn/ctan/systems/texlive/Images/
其中的iso文件可以使用压缩软件解压,或者加载到光盘,接下来直接安装就行了。
安装教程:
一份简短的关于 LATEX 安装的介绍
选择TeX编辑器
对于新手,最推荐的编辑器是TeXworks,非常适合用来上手,也避免了配置环境带来的问题。如果想要提高效率的话,可以选用:
- TeXstudio,安装地址为TeXstudio - A LaTeX editor (sourceforge.net);
- 宇宙第一的Visual Studio Code,这是笔者最建议的TeX编辑器,不过需要手动配置LaTeX,较为麻烦;
- 另外,也有在线的编辑器,如Overleaf, 在线LaTeX编辑器。
简单语法介绍
文档类型
TeX有多种文档类型可选,笔者较常用的有如下几种类型:
对于英文,可以用book
、article
和beamer
;
对于中文,可以用ctexbook
、ctexart
和ctexbeamer
,这些类型自带了对中文的支持。
不同的文件类型,编写的过程中也会有一定的差异,如果直接修改文件类型的话,甚至会报错。以下统一选用ctexart。在编辑框第一行,输入如下内容来设置文件类型:
1 |
|
另外,一般也可以在\documentclass
处设置基本参数,笔者通常设置默认字体大小为12pt,纸张大小为A4,单面打印。需要将第一行的内容替换为:
1 |
|
文件的正文部分需要放入document环境中,在document环境外的部分不会出现在文件中。
1 |
|
宏包
为了完成一些功能(如定理环境),还需要在导言区,也即document环境之前加载宏包。加载宏包的代码是\usepackage{}
。本份教程中,与数学公式与定理环境相关的宏包为amsmath
、amsthm
、amssymb
,用于插入图片的宏包为graphicx
,代码如下:
1 |
|
标题
标题可以用\title{}
设置,作者可以用\author
设置,日期可以用\date{}
设置,这些都需要放在导言区。为了在文档中显示标题信息,需要使用\maketitle
。例如:
1 |
|
正文
正文可以直接在document环境中书写,没有必要加入空格来缩进,因为文档默认会进行首行缩进。相邻的两行在编译时仍然会视为同一段。在LaTeX中,另起一段的方式是使用一行相隔,例如:
1 |
|
这样编译出来就是两个段落。在正文部分,多余的空格、回车等等都会被自动忽略,这保证了全文排版不会突然多出一行或者多出一个空格。另外,另起一页的方式是:
1 |
|
笔者在编写文档时,为了保证美观,通常将中文标点符号替换为英文标点符号(需要注意的是英文标点符号后面还有一个空格),这比较适合数学类型的文档。
在正文中,还可以设置局部的特殊字体:
字体 | 命令 |
---|---|
直立 | \textup{} |
意大利 | \textit{} |
倾斜 | \textsl{} |
小型大写 | \textsc{} |
加宽加粗 | \textbf{} |
章节
对于ctexart
文件类型,章节可以用\section{}
和\subsection{}
命令来标记,例如:
1 |
|
目录
在有了章节的结构之后,使用\tableofcontents
命令就可以在指定位置生成目录。通常带有目录的文件需要编译两次,因为需要先在目录中生成.toc文件,再据此生成目录。
1 |
|
图片
插入图片需要使用graphicx
宏包,建议使用如下方式:
1 |
|
其中,[htbp]
的作用是自动选择插入图片的最优位置,\centering
设置让图片居中,[width=8cm]
设置了图片的宽度为8cm,\caption{}
用于设置图片的标题。
表格
LaTeX中表格的插入较为麻烦,可以直接使用Create LaTeX tables online – TablesGenerator.com来生成。建议使用如下方式:
1 |
|
列表
LaTeX中的列表环境包含无序列表itemize
、有序列表enumerate
和描述description
,以enumerate
为例,用法如下:
1 |
|
另外,也可以自定义\item的样式:
1 |
|
定理环境
定理环境需要使用amsthm
宏包,首先在导言区加入:
1 |
|
其中{theorem}
是环境的名称,{定理}
设置了该环境显示的名称是“定理”,[section]
的作用是让theorem环境
在每个section中单独编号。在正文中,用如下方式来加入一条定理:
1 |
|
其中[定理名称]不是必须的。另外,我们还可以建立新的环境,如果要让新的环境和theorem环境一起计数的话,可以用如下方式:
1 |
|
页面
最开始选择文件类型时,我们设置的页面大小是a4paper
,除此之外,我们也可以修改页面大小为b5paper
等等。
一般情况下,LaTeX默认的页边距很大,为了让每一页显示的内容更多一些,我们可以使用geometry
宏包,并在导言区加入以下代码:
1 |
|
另外,为了设置行间距,可以使用如下代码:
1 |
|
页码
默认的页码编码方式是阿拉伯数字,用户也可以自己设置为小写罗马数字:
1 |
|
另外,aiph
表示小写字母,Aiph
表示大写字母,Roman
表示大写罗马数字,arabic
表示默认的阿拉伯数字。如果要设置页码的话,可以用如下代码来设置页码从0开始:
1 |
|
以上部分转载自 【LaTeX】新手教程:从入门到日常使用
数学公式的输入方式
见 https://yiliu1412.github.io/2023/02/18/MarkdownLearn/
实际案例展示与分享
课程报告模板
代码展示
1 |
|
逐段分析
宏包
\documentclass[a4paper,12pt]{ctexart}
中文article模板,设定纸张为A4 默认字号为12pt(小四\usepackage{graphicx}
插入图片\usepackage{geometry}
设置纸张格式\usepackage{zhnumber}
中文数字支持,用于把默认数字编号修改为中文编号\usepackage{titlesec}
提供标题设置\usepackage{microtype}
改善断词和字距调整,避免出现英文单词过长超出行边缘\usepackage{hyperref}
加载hyperref宏包,插入超链接
宏包参数设置
\geometry{left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
修改为Word默认A4页边距修改默认数字序号为中文
1
2\titleformat{\section}{\normalfont\Large\bfseries}{\zhnum{section}、}{0em}{}
\titleformat{\subsection}{\normalfont\large\bfseries}{(\zhnum{subsection})}{0em}{}\raggedright % 左对齐文
\titleformat
参数
LaTeX中的\titleformat
命令用于自定义标题格式。它的一般语法如下:
1 |
|
下面是各个参数的详细解释:
command
:标题的命令,通常是\section
、\subsection
等,表示要修改的标题级别。shape
(可选):标题的形状,可以选择以下几种:hang
:标题文本悬挂在标签后面。block
:标签和文本都垂直对齐。display
:标签和文本单独占据一行。
format
:标题文本的格式,可以使用字体相关的命令,例如\normalfont
、\bfseries
等。label
:标签的格式,用于显示标题的序号或编号。sep
:标签和标题文本之间的距离。before-code
:标题前的代码,可以用于添加额外的格式设置。after-code
:标题后的代码,可以用于添加额外的格式设置。
这些参数可以根据需要进行组合和调整,以满足你对标题格式的要求。请注意,在使用\titleformat
命令之前,你需要引入使用该命令所需的相应宏包,例如titlesec
宏包。
正文
设置封面
1 |
|
插入新页面
这里采用\newpage
插入新页面.
\newpage
和\clearpage
都是用于在LaTeX文档中插入一个新的页面。它们之间的主要差别如下:
换页时处理浮动体的方式不同:
\newpage
命令会将未处理的浮动体(如图片或表格)推迟到下一页。这意味着在换页之前,未处理的浮动体可能会堆积在当前页面底部。\clearpage
命令会立即开始新的一页,并将未处理的浮动体清除并放置在新页上。
对双面排版的处理方式不同:
- 在单面排版(即默认情况下)下,
\newpage
和\clearpage
没有明显的区别,因为每个页面都是独立的。 - 在双面排版下,
\newpage
将创建一个新的奇数页或偶数页。而\clearpage
则会始终创建一个新的奇数页,以确保左右页面正确对齐。
- 在单面排版(即默认情况下)下,
因此,通常来说:
- 如果您只是想创建一个新的页面,并且希望未处理的浮动体稍后出现,可以使用
\newpage
。 - 如果您希望立即开始新的页面,并且需要清除未处理的浮动体,或者在双面排版中确保正确的页面对齐,可以使用
\clearpage
。
请注意,在使用\newpage
或\clearpage
时,如果在当前页面上没有任何未处理的浮动体,则它们之间没有明显的区别。
插入图片
\includegraphics
命令用于在LaTeX文档中插入图片。它的一般语法如下:
1 |
|
下面是常用的参数和选项的解释:
options
:可以选择以下一些参数:width=\textwidth
:设置图片的宽度为当前文本的宽度。height=\textheight
:设置图片的高度为当前文本的高度。scale=0.5
:按比例缩放图片,值为缩放比例。angle=90
:旋转图片,值为旋转角度。trim=left bottom right top
:裁剪图片,指定需要保留的左、下、右、上的距离。clip=true
:根据裁剪参数裁剪图片。
filename
:图片文件的名称(包括路径),可以是常见的格式,如PNG、JPEG、PDF等,如果文件和.tex
文件在同一目录下,则可以省略相同路径直接书写文件名。
下面是一个示例,展示如何使用\includegraphics
命令插入图片:
1 |
|
在上面的示例中,使用了\includegraphics
命令将名为example.jpg
的图片插入到一个浮动环境figure
中,并设置图片的宽度为当前文本宽度的一半。同时,使用了\caption
命令为该插图添加了标题,并使用\label
命令给它一个标签,以便在文档其他地方引用。
htbp
是在 LaTeX 中用于指定图片(或浮动对象)放置位置的一组选项。这些选项表示以下含义:
h
(here): 尽量将图片放置在代码的当前位置。t
(top): 尽量将图片放置在页面的顶部。b
(bottom): 尽量将图片放置在页面的底部。p
(page): 将图片放置在一个单独的页面上。
这些选项告诉 LaTeX 在尝试放置图片时应考虑的位置。然而,这只是建议性的,LaTeX 会根据文档的整体布局和其他浮动对象的位置进行决策。
可以使用这些选项的任意组合,例如 [ht]
、[bp]
或者 [htb]
等。默认情况下,如果没有指定任何选项,LaTeX 的默认行为是将图片放置在页面的顶部。
请注意,即使指定了这些选项,LaTeX 也可能会选择一个不同的位置来放置图片,以便更好地控制文档的版面。在某些情况下,您可能需要手动调整图片的位置,例如使用 \clearpage
命令强制将图片放置到下一页。
换行
\par
和\\
都是LaTeX中用于换行的命令,但它们在使用方式和效果上有一些区别。
\par
命令:\par
命令用于开始新的段落。它通常在两个段落之间插入一个空行,并且会自动缩进下一个段落的首行(除非在段落开头使用了\noindent
命令来取消缩进)。可以在任何地方使用该命令来创建新的段落。\\
命令:\\
命令用于在当前行内进行换行,而不会开始新的段落。它主要用于在表格、标题、行内数学公式等特殊环境中,或者在紧凑的文本中插入简短的换行。注意,使用\\
命令时,一般建议在其后面添加一个空格或者使用\newline
命令,以确保正确的间距。
以下是一个示例,演示了\par
和\\
的不同用法:
1 |
|
在上面的示例中,第一段文字和第二段文字之间通过\par
命令分隔为两个段落,而第三段文字与前两段在同一行。通过\\
命令,第四段文字和第五段文字在同一行内换行。
创建章节
在LaTeX中,可以使用以下命令来创建各种级别的章节标题:
\part{title}
:创建一个部分标题(Part)。\chapter{title}
:适用于文档类中支持章节一级标题的书籍类文件(如book
和report
),用于创建章标题。\section{title}
:适用于任何文档类,用于创建节标题。\subsection{title}
:适用于任何文档类,用于创建小节标题。\subsubsection{title}
:适用于任何文档类,用于创建子小节标题。\paragraph{title}
:适用于任何文档类,用于创建段落标题。\subparagraph{title}
:适用于任何文档类,用于创建子段落标题。
这些命令中的title
参数表示相应章节标题的文本。例如,使用\section{Introduction}
将创建一个名为”Introduction”的节标题。
请注意,某些文档类可能不支持所有级别的章节标题,或者可能对它们的呈现方式有所不同。此外,章节标题的样式可以通过相应的文档类或宏包进行自定义设置。
以下是一个示例,展示了如何使用不同级别的章节标题命令:
1 |
|
特殊的章节
\section
和\section*
是LaTeX中用于创建章节标题的命令,它们在使用方式和效果上有一些区别。
\section{title}
:\section
命令用于创建一个带编号的章节标题,并将其添加到文档的目录中。你需要在花括号中提供标题文本。该命令会自动给标题编号,并在标题前添加适当的间距。例如,使用\section{Introduction}
会创建一个被编号为”1 Introduction”的章节标题。\section*{title}
:\section*
命令用于创建一个不带编号的章节标题,也不会将其添加到文档的目录中。你同样需要在花括号中提供标题文本。与\section
不同,\section*
创建的标题不会自动获得编号,并且标题前的间距也可能不同。通常,你可以使用\section*{title}
来创建附录、参考文献或其他不需要编号的章节。
以下是一个示例,演示了\section
和\section*
的不同用法:
1 |
|
常见报错
I can’t write on file `@@@.pdf’. \maketitle
如果在使用 \maketitle
命令时遇到了无法写入文件 @@@NIMO2023.pdf
的问题,可能是由于以下原因导致的:
权限问题:请确保您有足够的权限来写入目标文件。尝试将输出文件保存到一个您拥有写入权限的位置,例如当前工作目录或其他合适的目录。
文件被其他程序占用:检查一下是否有其他程序正在使用
@@@.pdf
文件。关闭这些程序或者将输出文件更改为另一个名称。文件路径错误:确认指定的文件路径和文件名是否正确。确保文件不存在或者目录存在以避免任何冲突。
运行环境限制:某些运行环境(如只读文件系统)可能限制了对文件的写入操作。确保您在能够写入文件的环境中运行代码。
编译器问题:尝试使用不同的编译器或更新您正在使用的编译器版本,以解决潜在的编译器相关问题。
拓展阅读
如果你想更详细的学习LaTex,欢迎点击下面的链接.