前言
最近需要写毕业论文,一直不满意word的排版,借此机会学习Latex的用法并应用于毕业论文的撰写。
本文基于LaTeX_工作室的2020年8月开始的直播内容,用图文的模式记录下其中的重要内容,方便后续的查阅与学习。
相关视频:
推荐阅读:
1. 安装与基础概念
采用vscode编辑 + tex live编译的方式
注: 在搬迁此文时(2024/04/27), 已经被vscode的bug劝退了,换成了tex studio
首先是$\textrm{Tex Live}$的安装,$\textrm{LaTeX}$官网的访问需要梯子,但$\textrm{LaTeX}$有镜像网站:https://ctan.org/mirrors,在其中随便选中一个离你所在地最近的源。因为在上海,所以选了一个上交的镜像。
点击之后,选择$\textrm{Images}$文件夹,随意选择一个大小约为$\textrm{3.7G}$的$\textrm{iso}$文件进行下载即可。
下载完之后双击进行磁盘挂载,然后右键$\textrm{install-tl-windows.bat}$文件,选择以管理员身份运行(方便自动添加$\textrm{PATH}$环境变量)。然后一直下一步即可。
在$\textrm{cmd}$中运行命令$\textrm{latex -v}$,出现以下字样即可。
至此,我们就可以像使用$\textrm{gcc}$一样来使用$\textrm{xelatex}$命令。 $\textrm{xelatex filename.tex}$将会在同一目录下生成$\textrm{filename.pdf}$文件。当然我们希望可以有可视化的窗口来进行$\textrm{tex}$文件的撰写,可视化的工具有很多,比较官方的有$\textrm{Tex Studio}$等,我采用了和视频一样的工具,也就是$\textrm{vscode}$。使用$\textrm{vscode}$配置的步骤也非常简单,首先安装拓展程序$\textrm{LaTex WorkShop}$
然后打开$\textrm{vscode}$的$\textrm{setting}$,在其中搜索$\textrm{latex:tool}$
在$\textrm{Tools}$的$\textrm{json}$文件中,修改如下部分:在$\textrm{pdflatex}$与$\textrm{bibtex}$中添加方框中的部分。
然后进入$\textrm{Recipes}$的$\textrm{json}$部分,在$\textrm{latexmk}$的上方添加$\textrm{xelatex}$的定义
将$\textrm{latexmk(lualatex)}$和$\textrm{Compile Rnw files}$中间的部分的$\textrm{pdflatex}$全部修改成$\textrm{xelatex}$。
至此,$\textrm{LaTeX}$的环境就全部配置完成了。通过一段简单的代码来演示其如何工作
\documentclass{article}
\begin{document}
Hello! \LaTeX
\end{document}
在$\textrm{vscode}$中按下保存$\textrm{(ctrl+s)}$便会自动进行编译。然后便会在同一文件夹下生成$\textrm{pdf}$文件
通过点击图示按钮可以直接预览$\textrm{PDF}$,首次点击还需要选择预览方式,推荐使用$\textrm{vscode}$的内部阅读器,这样每当你修改代码并保存时,可以立刻看到预览效果。此外,按住$\textrm{ctrl}$键后单击PDF中的文字可以跳转到$\textrm{tex}$源码中的代码段,非常的方便。
\documentclass[a4paper]{article}
%文档类型,如article,[]内时选项,a4paper表面使用了a4的纸张。
%这里开始是导言区
\usepackage{graphicx} %引用宏包graphicx
\graphicspath{{fig/}} %设置图片目录
%导言区结束
\begin{document}
这里开始是正文
\end{document}
然后再简单介绍一下文件结构:
$\textrm{\documentclass[option]{class-name}}$
文档类规定了$\textrm{LaTeX}$源代码所要生成的文档的性质——普通文章,书籍,演示文稿等等。包括:$\textrm{artilce(简单文章)}$,$\textrm{book(书籍)}$,$\textrm{report(报告)}$,$\textrm{beamer(幻灯片)}$等。可选参数$\textrm{options}$为文档类指定选项,以全局地规定一席排版的参数,如字号,纸张大小,单双面等等。比如调用article文档类排版文章,指定纸张为$\textrm{A4}$大小,基本字号为$\textrm{11pt}$,双面排版:$\textrm{\documentclass[11pt,twoside,a4paper]{article}}$
$\textrm{\usepackage[option]{package-name}}$
在使用$\textrm{LaTeX}$时,时常需要依赖一些扩展来增强或补充$\textrm{LaTeX}$的功能,比如排版复杂的表格、插入图片,增加颜色,添加数学符号,排版化学公式或者超链接等等。这些扩展称为宏包,以调用排版化学式的宏包$\textrm{mhchem}$为例,可选参数为$\textrm{mhchem}$的版本。
$\textrm{\usepackage[version=4]{mhchem}}$
往后便可以调用该宏包中的命令,例如$\textrm{\ce{2H2+O2->T[燃烧]2H2O}}$,显示效果如下:
$\ce{2H2+O2->T[燃烧]2H2O}$
常用简单命令:
- $\textrm{\chapter}$ 章
- $\textrm{\section}$ 节
- $\textrm{\subsection}$ 小节
- $\textrm{\paragraph}$ 带题头段落
- $\textrm{\centering}$ 居中对齐
- $\textrm{\emph}$ 强调
- $\textrm{\verb}$ 原样输出
- $\textrm{\url}$ 超链接
- $\textrm{\footnote}$ 脚注
- $\textrm{\item}$ 列表条目
- $\textrm{\caption}$ 标题
- $\textrm{\includegraphics}$ 插入图片
- $\textrm{\label}$ 标号
- $\textrm{\cite}$ 引用参考文献
- $\textrm{\ref}$ 引用图标公式
常用环境:
- $\textrm{table}$ 表格
- $\textrm{figure}$ 图片
- $\textrm{equation}$ 公式
- $\textrm{itemize}$ 无编号列表
- $\textrm{enumerate}$ 编号列表
2. 基础知识介绍
环境$\textrm{:}$类似于$\textrm{HTML}$中的$\textrm{div}$元素,通过如下方式调用。
\begin{environment-type} %修改一些布局设置
%居于之中的内容会被修改成指定样式,如居中等
\end{environment-type} %结束修改
宏包是一些$\textrm{.sty}$格式的文件,里面定义了一些宏,使用宏包时,编译器就会查找宏包名+$\textrm{.sty}$的文件并进去读取,以此来拓展功能,其中宏包$\textrm{usepackage{ctex}}$可以使得文件中的中文内容被编为$\textrm{UTF-8}$编码,也可以直接使用中文文档类$\textrm{\documentclass{ctexart}}$,但二者是有区别的,在进行中文文档撰写时,都应加上$\textrm{usepackage{ctex}}$。
$\textrm{xelatex -etex a.tex}$的编译命令可以打开$\textrm{e-tex}$拓展,最常用的是加上$\textrm{ -interaction=}$选项,可以 选择互动模式,比如选择了$\textrm{errorstopmode}$,遇到错误会停下来,而$\textrm{nonstopmode}$就会一直强行编译下去。
在文件的目录下,除了$\textrm{pdf}$文件以外,还有$\textrm{.synctex}$,$\textrm{.log}$,$\textrm{.aux}$等文件。
$\textrm{ -synctex=NUMBER}$选项可以生产$\textrm{SyncTEX}$数据。$\textrm{SyncTex}$是一个程序,用来提供正向$\textrm{/}$反向查找的支持。其原理就是,在输出$\textrm{PDF}$的时候会记录下源码,和这段源码对应的$\textrm{PDF}$的位置数据。这些位置信息会记录在$\textrm{.synctex}$文件中。有了它就可以进行快速查找,有 些时候$\textrm{.synctex}$文件会被压缩,变成$\textrm{.synctex.gz}$文件的格式。
$\textrm{.log}$文件会记录编译时的输出信息,错误内容等详细的编译信息。
$\textrm{.aux}$是重要的辅助文件。首选,$\textrm{TEX}$程序只能从前往后读代码,所以每条命令只能和它前面的命令互动,如果一 条命令想要读取它后面的命令,就要先把信息写入辅助文件$\textrm{.aux(auxiliary file)}$中,然后第二次编译时再从$\textrm{.aux}$中读入,这也是为什么很多时候$\textrm{tex}$文件需要进行多次编译。$\textrm{LaTeX}$也支持通过脚本文件进行批处理编译。
视频的作者主要在讲解一些$\textrm{LaTeX}$的历史,使用注意事项,查阅文献等等,与$\textrm{LaTeX}$的应用无关,便没有在此赘述,有兴趣的读者可以通过标题处的超链接观看视频~
3. 从基础文本到模板使用
本节主要包含以下内容:
3.1 基础文本
- 源文件结构
- 设置文档类别
- $\textrm{\documentclass{…}}$
- 有且只能有一个文档类
- 确定文档性质
- 调入宏集
- $\textrm{\usepackage{…}}$
- 可以调入任意多个宏集
- 扩展功能
- 撰写文档——正文区,有且只能有一个
- $\textrm{\begin{docunment} …… \end{document}}$
- 文本
- 公式——分为行内与行间公式
- 图表
- 文献
%引入文档类
\documentclass{article}
%导言区
\usepackage{ctex} %处理中文的宏包Chinese-tex
\usepackage{graphicx}
\newcommand{\ECNU}{华东师范大学} %自己定义的宏
%正文区
\begin{document}
Hello. \LaTeX.
\ECNU
\end{document}
- 源文件内容
- 普通文本
- 命令
- 大小写敏感
- 两种格式: $\textrm{\+command}$或者$\textrm{\+char+command}$
- 忽略命令后面的空格
- 命令的结束标志是空白,数字或非字母的字符(最好是$\textrm{ASCII}$字符)
- 特殊字符
- 输出$\textrm{%}$用$\textrm{\%}$
- $\textrm{\\\\}$表示手动换行,要输出$\textrm{\\}$使用$\textrm{\textbackslash}$
- 环境
- 环境开始:$\textrm{\begin{environment name}[optional arguments]{mandatory arguments}}$
- 环境结束:$\textrm{\end{environment name}}$
- 作用:局部生效,特殊元素
- 分组:用一对$\textrm{{}}$的形式来局部定义其内部的格式,如字体,大小等参数。
- 空白
- 标点符号
- 中文—直接输入
- 英文
- 引号
- 左:$\textrm{1}$左边,$\textrm{TAB}$上边的按键
- 右:$\textrm{L}$右边的按键
- 横线
- 连字号$\textrm{(hyphen): - ,}$表示复合词
- 短破折号$\textrm{(en-dash): -- ,}$表示数字范围
- 长破折号$\textrm{(em-dash): --- ,}$表示连接单词
- 省略号
- $\textrm{\ldots}$
- $\textrm{\dots}$
- 其他—直接输入
- 工作流程
- 编辑$\textrm{.tex}$文件
- 编译$\textrm{pdfLaTeX, XeLaTeX}$
- $\textrm{PDF}$生成
- 软件工具
- 编辑器
- 专用
- $\textrm{TeXStudio}$
- $\textrm{WinEdt}$
- 通用(插件)
- $\textrm{Vs Code}$
- $\textrm{Vim}$
- $\textrm{Emacs}$
- 记事本
- 主要功能
- 发行版
- 引擎
- $\textrm{pdfTeX}$
- $\textrm{XeTeX}$
- $\textrm{LuaTeX}$
- $\textrm{......}$
- 格式
- $\textrm{plain TeX}$
- $\textrm{LaTeX}$
- $\textrm{ConTeXt}$
- $\textrm{PDF}$查看
- $\textrm{Adobe Acrobat Reader DC}$
- 其他
- 文档类$\textrm{\documentclass[options]{class}}$
- $\textrm{class}$指明文档类型
- $\textrm{article/ctexart}$—排版科技期刊、短报告、程序文档、邀请函等
- $\textrm{report/ctexrep}$—排版多章节的长报告、短篇的书籍、博士论文等
- $\textrm{book/ctexbook}$—排版书籍
- $\textrm{beamer/ctexbeamer}$—排版演示问文稿
- $\textrm{options}$调节文档类属性
- 设置字体大小,缺省$\textrm{10pt}$
- 定义纸张大小,缺省$\textrm{letterpaper}$
- 设置数学公式左对齐,缺省中间对齐
- 设置数学公式编号位于左侧,缺省右侧
- 是否在文档标题后开始一新页,$\textrm{article}$缺省不开始,$\textrm{book}$缺省开始
- 指定排版方式,单栏或双栏
- 指定排版格式,单面或双面,$\textrm{article}$和$\textrm{report}$缺省单面,$\textrm{book}$缺省双面
- 指定新的一章开始在右边页(技术页)还是下一可用页,$\textrm{article}$中无效(没有章的概念),$\textrm{report}$缺省下一页 可用,$\textrm{book}$缺省右边页。
%引入文档类
\documentclass{beamer}
%导言区
\title{This is a Title}
\author{
Kuroko\thanks{E-mail:x.kuroko@qq.com}
\and Shirai\thanks{Corresponding author}
\and others}
\date{\today}
%正文区
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}
- 宏包$\textrm{\usepackage[options][package]}$
- $\textrm{package}$是宏包名称
- $\textrm{options}$是触发宏包中的特殊功能的关键词
- 调试
- 定位错误—注释法,推荐折半查找
- 注释一部分代码
- 若编译成功,则错误出现在注释部分
- 对注释部分再次进行二分,缩小查找范围
- 分析错误
- 解决错误
- 各类文件
- 对每个文档创建一个文件夹,便于管理。
- $\textrm{.sty }$宏包文件。宏包的名称与文件名一致。
- $\textrm{.cls }$文档类文件。文档类名称与文件名一致。
- $\textrm{.bib BIBTEX }$参考文献数据库文件。
- $\textrm{.bst BIBTEX }$用到的参考文献格式模板。详见$\textrm{ 6.1.4 }$小节。
- $\textrm{LATEX }$在编译过程中除了生成$\textrm{ .dvi }$或$\textrm{ .pdf }$格式的文档外$\textrm{7}$,还可能会生成相当多的辅助文件和日志。一些功能如交叉引用、参考文献、目录、索引等,需要先通过编译生成辅助文件,然后再次编译时读入辅助文件得到正确的结果,所以复杂的$\textrm{ LATEX }$源代码可能要编译多次:
- $\textrm{.log }$排版引擎生成的日志文件,供排查错误使用。
- $\textrm{.aux LATEX }$生成的主辅助文件,记录交叉引用、目录、参考文献的引用等。
- $\textrm{.toc LATEX }$生成的目录记录文件。
- $\textrm{.lof LATEX }$生成的图片目录记录文件。
- $\textrm{.lot LATEX }$生成的表格目录记录文件。
- $\textrm{.bbl BIBTEX }$生成的参考文献记录文件。
- $\textrm{.blg BIBTEX }$生成的日志文件。
- $\textrm{.idx LATEX }$生成的供$\textrm{ makeindex }$处理的索引记录文件。
- $\textrm{.ind makeindex }$处理$\textrm{ .idx }$生成的用于排版的格式化索引文件。
- $\textrm{.ilg makeindex }$生成的日志文件。
- $\textrm{.out hyperref }$宏包生成的$\textrm{ PDF }$书签记录文件。
3.2 文档要素
- 基本要素
- 断行与分页
- 间距
- 断行
- $\textrm{\\\\[length]}$换行,$\textrm{length}$表示垂直间距
- $\textrm{\\\\*[length]}$为禁止分页,$\textrm{length}$表示垂直间距
- $\textrm{\newline}$
- $\textrm{\linebreak[n]}$,$\textrm{n}$为建议程度,取值为$\textrm{0}$到$\textrm{4}$,默认为$\textrm{4}$,下同
- $\textrm{\nolinebreak[n]}$
- $\textrm{\sloppy}$,执行断行标准,增加间隔,防止出现过长行(不建议使用)
- 分页
- $\textrm{\newpage}$
- $\textrm{\clearpage}$
- $\textrm{\pagebreak[n]}$
- $\textrm{\nopagebreak[n]}$
- 断字
- $\textrm{\-}$
- 在单词中插入一个自主的断字点
- 对于含特殊字符的单词特别有用
- $\textrm{\mbox{text}}$,保证把几个单词排在同一行上
- $\textrm{\fbox}$,和$\textrm{\mbox}$类似,还能围绕内容画一个框
- 标题,章与节
- $\textrm{\maketitle}$
- 整篇文档的标题
- 需要定义
- $\textrm{\title{...}}$
- $\textrm{\author{...}}$
- $\textrm{\date{...}}$
- 样式修改
- 重定义$\textrm{\maketitle}$
- $\textrm{titling}$宏包
- $\textrm{authblk}$宏包
- 分节命令
- $\textrm{article,report}$和$\textrm{book}$风格文档
- $\textrm{part{...}}$
- $\textrm{section{...}}$
- $\textrm{subsection{...}}$
- $\textrm{subsubsection{...}}$
- $\textrm{paragraph{...}}$
- $\textrm{subparagraph{...}}$
- 样式修改
- $\textrm{titilesec}$宏包
- $\textrm{\ctexset}$命令
- $\textrm{report}$和$\textrm{book}$风格文档
- 节的序号和标题的字号由$\textrm{LaTeX}$自动设置
- 带星号的分节命令—节标题不出现于目录,不带序号
- 标题前的可选参量
- 代替真正的标题出现在目录中
- 通常是比较长不适合出现在目录中
- $\textrm{\tableofcontents}$
- $\textrm{LaTeX2e}$用于$\textrm{book}$风格的文档
- $\textrm{\frontmatter}$
- $\textrm{\mainmatter}$
- $\textrm{\appendix}$
- $\textrm{\backmatter}$
- 图
- 插图
- 使用$\textrm{graphicx}$宏包
- 图片格式(见下图)
- $\textrm{\includegraphics[optipons]{filename}}$
- $\textrm{filename}$
- $\textrm{options}$
- $\textrm{width=(width)}$将图片缩放到宽度为$\textrm{(width)}$
- $\textrm{height=(height)}$将图片缩放到高度为$\textrm{(height)}$
- $\textrm{scale=(scale)}$将图片相对于原尺寸缩放$\textrm{(scale)}$倍
- $\textrm{angle=(angle)}$令图片逆时针旋转$\textrm{angle)}$度
- 绘图
- $\textrm{TikZ&pgf}$
- $\textrm{PSTricks}$
- $\textrm{METAPOST&Asymptote}$
- 表
- $\textrm{tabular}$环境
- $\textrm{align}$对齐方式
- $\textrm{colunm-spec}$定义表格样式
- 环境中
- $\textrm{\multicolumn{n}{column-spec}{item}}$—合并单元格
- 特殊表格—宏包支持
- $\textrm{CSV}$文件
- 浮动体
- 环境
- $\textrm{\begin{figure}[placement] … \end{figure}}$
- $\textrm{\begin{table}[placement] … \end{table}}$
- 相当于一个盒子,可以放置文字,公式,图片,表格等
- $\textrm{placement}$位置参数
- 跨栏浮动体
- $\textrm{\caption[option text]{caption text}}$
- 图标目录
- 交叉引用
- 创建标签 $\textrm{\label{label-name}}$
- 章节标题
- 行间公式
- 有序列表
- 图标标题
- 定理环境
- 带星号的不记编号的命令不正确
- 引用标签
- $\textrm{\\ref{label-name}}$
- $\textrm{\pageref{label-name}}$
- 多次编译
- $\textrm{\ref}$会被替换成相应的序号
- $\textrm{\pageref}$会被替换成相应的页码
- 使用的序号由前面编译所产生
- 并排和子图标
- 建议
- 脚注$\textrm{\footnote{<footnote>}}$
- $\textrm{footnote}$为脚注内容
- 表格、盒子中使用
- 使用$\textrm{\footnotemark}$来标记
- 使用$\textrm{\footnotetext}$来写内容
- 强调
- $\textrm{\underline{text}}$下划线强调
- $\textrm{\emph{text}}$
- 斜体排印强调单词
- 中文没有$\textrm{Italics}$字体,用楷体代替
- 具体效果依赖上下文
- 特殊环境
- $\textrm{\begin{environment} text \end{environment}}$
- 列表环境
- $\textrm{itemize}$环境用于简单的列表
- $\textrm{enumerate}$环境用于带序号的列表
- $\textrm{description}$环境用于带描述的列表
- 对其环境
- $\textrm{flushleft}$环境产生靠左排列的段落
- $\textrm{flushright}$环境产生靠右排列的段落
- $\textrm{center}$环境产生居中的文本
- 如果不输入$\textrm{\\\\}$指定断行点,程序将自行决定
- 引用环境
- $\textrm{quote}$:较短文字,首行不缩进
- $\textrm{quotation}$:若干行文字,对段落进行缩进
- $\textrm{verse}$:诗歌,首行悬挂缩进
- 一般有额外左右缩进
- 数学公式
- 基本知识
- 数学模式与文本模式的不同
- 行内公式—与文字混排
- $\textrm{\\(}$和$\textrm{\)}$
- $\textrm{\$}$和$\textrm{\$}$
- $\textrm{\begin{math}}$和$\textrm{\end{math}}$
- 行间公式—独立成行
- 不编号
- $\textrm{\\[}$和$\textrm{\]}$
- $\textrm{display math}$环境
- $\textrm{equation*}$环境
- 编号—$\textrm{equation}$环境
- 交叉引用
- 数学公式模块
- 常用的所有符号—通过$\textrm{texdoc symbols-a4}$命令获取
3.3 模板使用
- 获取
- $\textrm{bing}$
- $\textrm{google}$
- $\textrm{ctan}$
- $\textrm{github/gitee}$
- $\textrm{git clone}$
- $\textrm{download zip}$
- $\textrm{LaTeX}$工作室
- 使用
- 发行版发布—直接使用
- 独立发布
- $\textrm{tlmgr}$安装
- 手动复制到发行版目录树
- 复制到当前工作目录
- 载入
- $\textrm{\documentclass}$
- $\textrm{\usepackage}$
- 阅读说明
- 手册
- $\textrm{README.md}$
- 依赖关系
- 样例
- $\textrm{demo.tex}$
- $\textrm{main.tex}$
- 案例
- $\textrm{MCMThesis,}$通过$\textrm{texdoc mcmthesis}$命令获取
- $\textrm{github}$
- $\textrm{gitee}$
- 视频教程
- 从$\textrm{0}$开始的美赛$\textrm{LaTeX}$模板
- $\textrm{CUMCMThesis}$
- 学位论文
- $\textrm{github}$
- $\textrm{ctan}$
- $\textrm{textdoc thuthesis}$
- $\textrm{ElegantBook,}$通过$\textrm{texdoc elegantbook}$命令获取
- $\textrm{nwafuprojrep}$
3.4 大型文档
- $\textrm{\input{filename}}$
- 不在新页排版引入文本
- 只是简单的引入文件,无其他限制
- $\textrm{\include{filename}}$
- 在文档的正文中使用
- 引入文件名为$\textrm{filename.tex}$的内容
- 在开始处理$\textrm{filename.tex}$的内容之前将会开始一新页
- $\textrm{\includeonly{filename,filename,...}}$
- 可用在文档的导言区
- 知道$\textrm{LaTeX}$仅仅读入某些$\textrm{\included}$文件
- 在导言区执行后,所有$\textrm{\include}$命令只有$\textrm{\includeonly}$命令参数中列出的文件才会被执行
- 在参数中,文件名和逗号之间不能有空格
4. 参考文献自动化处理
本节的内容包括:
- $\textrm{thebibliography}$环境使用
- $\textrm{bib}$文件简介
- $\textrm{BIBTEX}$简介
- $\textrm{biber}$简介
- 三者的对比与选择
4.1 thebibliography简介
首先给出一段包含注释的$\textrm{LaTeX}$的代码来说明$\textrm{thebibliography}$环境的基本用法
%注:因为需要文献在引用下方,因此需要编译两次
\documentclass{ctexart} %ctexart = article+ctex
\begin{document}
%正文区
%调用了参考文献部分的名为"liuhaiyang2013latex"的文献
\LaTeX{}的入门书籍可以看《\LaTeX{}入门》\cite{liuhaiyang2013latex}。
%参考文献
\begin{thebibliography}{9} %thebibliography环境,宽度为9
%\bibitem[item number]{citation}
%item number:该条目的序号
%citation: \cite命令使用的标签
\bibitem[1]{liuhaiyang2013latex}
刘海洋.
\newblock \LaTeX {}入门\allowbreak[J].
\newblock 电子工业出版社,北京,2013.
\bibitem[2]{citation}
LaTeX Part4参考文献自动化处理。
\end{thebibliography}
\end{document}
4.2 bib文件
- 由一条条参考文献组成
- 可有$\textrm{BIBTEX}$和$\textrm{biber}$分别编译生成$\textrm{.bbl}$文件
- 每个条目包含
@article{
liuhaiyang2013LaTeX,
title={LaTeX},
author={Kuroko,Shirai},
journal={Kuroko.info},
volume={98},number={13},pages={130404},
year={2021}
}
- $\textrm{article}$:参考文献资料的类型,还有$\textrm{book,incollection}$等
- $\textrm{liuhaiyang2013LaTeX}$,$\textrm{bibkey}$,相当于上文中$\textrm{\cite{label}}$中的$\textrm{label}$
- $\textrm{title}$:参考文献的标题
- $\textrm{author}$:参考文献的作者
- $\textrm{year}$:参考文献的发表年份
- ...
参考文献条目获取
- 必应学术
- 谷歌学术
- ...
必应学术获取步骤
- 进入必应学术网站
- 在搜索框中搜索需要的文章
- 文章的左下角会有一个$\textrm{Cite}$按钮
- 点击之后选择ImportLinks中的BibTex
- 打开页面,复制其中的内容
- 新建一个.bib文件,粘贴刚刚复制的内容
- 重复步骤,收集所有的文献
必应学术有批量引用功能,使用更为方便
注意:导出的bib条目可能会有错误,使用者需要进行检查
4.3 BIBTEX
$\textrm{BIBTEX}$是目前处理参考文献最方便的工具之一,其仅需要维护以$\textrm{.bib}$为后缀的文件,而且可以生成不同风格的参考文献。
还是使用一个例子来说明用法,假设在文件夹中有文件$\textrm{test.tex}$和$\textrm{Kuroko.bib}$两个文件
%test.tex
\documentclass{ctexart} %ctexart = article+ctex
%导言区
\bibliographystyle{plain} %指定样式为plain
%正文区
\begin{document}
%表明了引用的名为"wilczek2012quantum"的对象
一个引用\cite{wilczek2012quantum}。
\bibliography{Kuroko} %使用Kuroko.bib的文件,不需要添加.bib后缀
\end{document}
@article{
wilczek2012quantum,
title={Quantum time crystals.},
author={Wilczek, Frank},
journal={Physical Review Letters},
volume={109},
number={16},
pages={160401},
year={2012}
}
编译方法有两种
- 普通的编译
- $\textrm{xelatex test}$
- $\textrm{bibtex test}$
- $\textrm{xelatex test}$
- $\textrm{xelatex test}$
- 或者使用$\textrm{latexmk}$一个指令完成
- $\textrm{latexmk -pdfxe test}$
编译完成的效果如下:
4.4 biber
- $\textrm{biber}$的使用和$\textrm{BIBTEX}$大同小异
- 同:一样需要维护$\textrm{.bib}$文件
- 异:编译步骤
- 二者的简单对比
- $\textrm{biber}$速度上一般比$\textrm{BIBTEX}$慢
- 对于开发者而言,$\textrm{biber}$更易于编写样式文件
- 由$\textrm{.cbx}$文件和$\textrm{.bbx}$文件共同决定样式,$\textrm{biber}$对参考文献条目进行排序并提供所有相关信息给$\textrm{biblatex}$宏包
首先介绍一下编译步骤,同样有两种方式
- 普通的编译
- $\textrm{xelatex test}$
- $\textrm{biber test}$
- $\textrm{xelatex test}$
- $\textrm{xelatex test}$
- 使用$\textrm{latexmk}$编译
- $\textrm{latexmk -xelatex main}$
然后将上文中$\textrm{BIBTEX}$的样例该用$\textrm{biber}$方式重写
\documentclass{ctexart} %ctexart = article+ctex
%导言区
\usepackage[backend=biber,style=gb7714-2015]{biblatex} %导入biblatex宏包
\addbibresource[location=local]{Kuroko.bib} %需要bib后缀
%对于未被发行版收录的样式,可以把MyStyle.cbx和MyStyle.bbx添加到当前目录中,然后使用\usepackage[backend=biber,style=MyStyle]{biblatex}来进行样式修改
%正文区
\begin{document}
%表明了引用的名为"wilczek2012quantum"的对象
一个引用\cite{wilczek2012quantum}
\printbibliography[title=参考文献]
\end{document}
4.5 对比
| 处理方式 | 编译难度 | 代码可维护性 | 编译速度 | 是否需要维护$\textrm{.bib}$文件 |
---|
$\textrm{thebibligraphy}$ | 手动处理 | 低 | 极差 | 最快 | 否 |
$\textrm{BIBTEX}$ | 自动处理 | 稍高 | 高 | 慢 | 是 |
$\textrm{biber}$ | 自动处理 | 稍高 | 高 | 最慢 | 是 |
5. 实用插图指南
本节内容包括:
- 认识$\textrm{figure}$环境
- 插入图片
- 交叉引用
- 多图排版
5.1 figure环境基本结构
\begin{document}
\begin{figure}[位置选项]
%图片内容
\end{figure}
\end{document}
5.2 graphicx宏包
$\textrm{\includegraphics}$[选项]{文件路径}
支持的常用图片格式:$\textrm{jpg,png,pdf,eps}$。选项:宽度$\textrm{(width)}$或高度$\textrm{(height)}$,与$\textrm{LaTeX}$中的长度定义紧密相关,或者使用绝对长度来定义。
- 单独使用$\textrm{width}$或$\textrm{height}$:对图片进行等比例缩放
- 同时使用$\textrm{width}$和$\textrm{height}$:对图片进行自定义拉伸(不推荐)
命令 | 含义 |
---|
$\textrm{textwidth}$ | 整个页面版芯的宽度 |
$\textrm{textheight}$ | 整个页面版芯的高度 |
$\textrm{paperwidth}$ | 整个页面纸张的宽度 |
$\textrm{paperheight}$ | 整个页面纸张的高度 |
$\textrm{linewidth}$ | 当前行的宽度,受所在$\textrm{environment}$影响例如当前进行了分栏,那么宽度就是单位栏的宽度 |
例如 $\textrm{\includegraphics[width=0.7\linewidth]{elements/photo}}$命令就是放置一张宽度为$\textrm{0.7}$倍的当前行宽,路径为当前目录下$\textrm{elements}$文件夹中名为$\textrm{photo}$的图片,路径同样可以使用绝对路径来描述。
图片控制—图注,位置控制等
浮动体$\textrm{float}$
- 是一个容器,包含某些不可分页的大块内容
- 有一个简短的描述,比如图题或者表题。
- 有一个编号,用于引述。
位置选项
- $\textrm{h}$:当前位置。将图形放置在正文文本中给出该图形环境的地方。如果本页所剩的页面不够,那么这一参考将不起作用。
- $\textrm{p}$:浮动页。将图放置在一只允许有浮动对象的页面上。
- $\textrm{b}$:底部。将图片放置在页面的底部。
- $\textrm{t}$:顶部。将图片放置在页面的顶部。
- $\textrm{!}$:覆盖内置布局方式。
- $\textrm{H}$:强制在当前位置放置图片。需要$\textrm{float}$宏包。
- $\textrm{!}$可以与其他样式组合使用,例如$\textrm{t!}。
\begin{document}
\begin{figure}[位置选项]
\centering%居中,效果到figure环境结束为止
\includegraphics[选项]{文件路径}
\caption{题注}
\end{figure}
\end{document}
给出一段实例代码
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\begin{document}
这是一段文本
\begin{figure}[h]
\centering%居中,效果到figure环境结束为止
\includegraphics[width=\textwidth]{1.png}
\caption{这是一段图注}
\end{figure}
文本结束
\end{document}
5.3 交叉引用
LaTeX中的交叉引用需要使用$\textrm{\label}$与$\textrm{\ref}$
$\textrm{\label{<label-name>}}$来创建一个便签,$\textrm{\ref{<label-name>}}$来对便签进行引用,请注意一定要将$\textrm{\label}$命令放在$\textrm{\caption}$命令之后
给出一段实例代码,这段代码同样需要编译两次
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\begin{document}
\begin{figure}[h]
\centering%居中,效果到figure环境结束为止
\includegraphics[width=\linewidth]{1.png}
\caption{这是一段图注}
\label{这是一个交叉引用} %创建一个名为“这是一个交叉引用”的标签
\end{figure}
这里将通过ref对上图进行交叉引用 \ref{这是一个交叉引用}。
\end{document}
上图中的$\textrm{"1"}$即是对图$\textrm{1}$的引用。
我们当然希望图片能有更丰富的引用方式,例如自定义的名称而不是$\textrm{1}$,并且应该像$\textrm{word}$一样具有超链接功能。 首先介绍另两种引用方式:$\textrm{\Cref}$和$\textrm{\cref}$,在默认情况下,$\textrm{\Cref}$会根据引用对象是图还是表来在引用时添加上$\textrm{Figure}$和$\textrm{Table}$字样,$\textrm{\cref}$则是改用$\textrm{fig}$的缩写形式。这两种引用需要导入宏包$\textrm{cleveref}$。
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\usepackage{cleveref} %添加cleveref宏包
\begin{document}
\begin{table}
\caption{这是一个表注}
\label{表引用}
\end{table}
\begin{figure}[h]
\centering%居中,效果到figure环境结束为止
\includegraphics[width=\linewidth]{1.png}
\caption{这是一段图注}
\label{图引用}
\end{figure}
\ref{图引用}
\ref{表引用}
\Cref{图引用}
\Cref{表引用}
\cref{图引用}
\cref{表引用}
\end{document}
编译结果如下
紧接着是超链接的添加,需要使用宏包$\textrm{hyperref}$,请务必注意:$\textrm{hyperref}$一定要在$\textrm{cleveref}$之前加载。导入之后其余部分不需要做任何修改,引用会自动附带超链接功能。
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\usepackage{hyperref} %一定要在cleveref之前导入
\usepackage{cleveref} %添加cleveref宏包
\begin{document}
\begin{table}
\caption{这是一个表注}
\label{表引用}
\end{table}
\begin{figure}[h]
\centering%居中,效果到figure环境结束为止
\includegraphics[width=\linewidth]{1.png}
\caption{这是一段图注}
\label{图引用}
\end{figure}
\ref{图引用}
\ref{表引用}
\Cref{图引用}
\Cref{表引用}
\cref{图引用}
\cref{表引用}
\end{document}
编译出来的六种引用都附带了超链接功能。
注意到上述超链接在预览时有一个红色方框来显式的告知这是一个超链接,如果想隐藏红色方框,那么在导入宏包时采用如下格式:
$\textrm{\usepackage[hidelinks]\{hyperref\}}$,那么红色方框便会隐藏。
5.4 多图排版
我们假设有如下代码
\begin{figure}
\centering
\includegraphics[width=m\linewidth]{example-image-a}
\includegraphics[width=n\linewidth]{example-image-b}
\caption{公用的题注}
\end{figure}
两种图片$\textrm{a}$和$\textrm{b}$在一个$\textrm{figure}$环境下放置,宽度分别是$\textrm{m}$和$\textrm{n}$被的$\textrm{linewidth}$,那么当$\textrm{m+n >= 1}$时,两种图片会上下放置;而若$\textrm{m+n < 1}$,两张图片则会并排放置。
而如果想显式的对图片进行分行,那么只需加入分行命令$\textrm{\\\\}$即可,或者在两张图片之间添加一个空行。
\begin{figure}
\centering
\includegraphics[width=m\linewidth]{example-image-a} \\\\
\includegraphics[width=n\linewidth]{example-image-b}
\caption{公用的题注}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=m\linewidth]{example-image-a}
\includegraphics[width=n\linewidth]{example-image-b}
\caption{公用的题注}
\end{figure}
使用$\textrm{minipage}$环境
$\textrm{\begin{minipage}{width}}$
内容....
$\textrm{\end{minipage}}$
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\begin{document}
\begin{figure}
\centering
\begin{minipage}{0.49\linewidth} %所有minipage的宽度之和小于linewidth
\centering
\includegraphics[width=\linewidth]{example-image-a} %此处的linewidth已经变成了minipgae的宽度
\caption{题注B}
\end{minipage} %此处不要换行!
\begin{minipage}{0.49\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image-b}
\caption{题注B}
\end{minipage}
\end{figure}
\end{document}
导入$\textrm{subfig}$宏包并使用$\textrm{\subfloat}$命令: $\textrm{\subfloat[子图题注]{图片本体}}$
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\usepackage{subfig}
\begin{document}
\begin{figure}
\subfloat[题注a]{\includegraphics[width=0.5\linewidth]{example-image-a}}
\subfloat[题注b]{\includegraphics[width=0.5\linewidth]{example-image-b}}
\caption{共同的题注}
\end{figure}
\end{document}
如果希望子图按上下排列,那么同样添加 $\textrm{\\\\}$换行命令来分隔即可。
实际排版时我们会遇到图片是奇数张、题注非常长,各种图片大小不一致的情况,而为了保持排版的美观,我们时常需要将图片和题注混排在一起,因此这里介绍一种使用$\textrm{minipage}$和$\textrm{subfloat}$实现混排的用法。
\documentclass{article}
%导言区
\usepackage{graphicx}
\usepackage{ctex}
\usepackage{subfig}
\begin{document}
\begin{figure}
\centering
\subfloat[题注a]{\includegraphics[width=0.5\linewidth]{example-image-a}}
\subfloat[题注b]{\includegraphics[width=0.5\linewidth]{example-image-b}}\\
\begin{minipage}{0.49\linewidth}
\subfloat[题注c]{\includegraphics[width=\linewidth]{example-image-c}}
\end{minipage}
\begin{minipage}{0.49\linewidth}
\caption{这是一段很长很长很长很长很长很长很长很长很长
很长很长很长很长很长很长很长很长很长很长很长很长很长
很长很长很长很长很长很长很长很长很长很长很长很长很长
的题注}
\end{minipage}
\end{figure}
\end{document}
对于图片的排版问题解决方法不唯一,随着对$\textrm{LaTeX}$环境和语法的学习,可以逐渐开发出自己的排版风格与方法。
6. TiKZ绘图入门基础
[留坑] 因为暂时没有使用需求,所以没有观看视频内容,将来有需要时会填坑,相关视频见开头索引处
7. 数学公式基础入门
本节内容包括:
- 公式环境
- 公式的基本输入
- 常用符号
- 矩阵
- 方程组
- 公式优化
7.1 公式环境
无论使用哪种公式,都要在导言区加上$\textrm{amsmath}$宏包,即$\textrm{usepackage{amsmath}}$。
- 行间公式
- 使用$\textrm{\\[}$和$\textrm{\]}$
- 使用$\textrm{\$\$ \$\$}$
- 使用$\textrm{equation}$环境
$$ x^2+2x+1=0 $$
\[ x^2+2x+1=0 \]
\begin{equation}
x^2+2x+1=0
\end{equation}
\begin{equation*}
x^2+2x+1=0
\end{equation*}
会被显示为
可以注意到$\textrm{equation}$环境还会对公式进行编号,如果不需要编号,那么在$\textrm{equation}$后面添加星号即可。
对于$\textrm{equation}$环境还可以对公式进行标签和引用
\documentclass{article}
%导言区
\usepackage{ctex}
\usepackage{amsmath}
%正文区
\begin{document}
\begin{equation} \label{eq1}
x^2+2x+1=0
\end{equation}
此处使用带括号的引用 \eqref{eq1}
此处使用不带括号的引用 \ref{eq1}
\end{document}
公式的引用需要在$\textrm{equation}$环境中预先标签$\textrm{\label{}}$,后面引用的时候用$\textrm{\eqref{}}$或$\textrm{\ref{}}$,前者会额外附带括号,后者常用于定理环境的引用,后者常用于公式环境。
对于使用$\textrm{\$\$ \$\$}$和$\textrm{\\[}$ $\textrm{\]}$,在$\textrm{LaTeX}$中我们较为推荐后者,因为它对间隔的控制更为友好,后者在定义上基本与$\textrm{equation*}$环境等价。
- 行内公式
- 公式与文字混排在一起时使用,此时使用$\textrm{\$ \$}$即可。
例如$\textrm{\$E=\frac{1}{2}mv^2\$}$会被显示为$E=\frac{1}{2}mv^2$,可以发现$\frac{1}{2}$变小了,这是因为LaTeX在排版时为了让公式美观,贴合文字的大小,所以调小了它的大小。如果希望行内公式与行间公式有一样的大小,则在公式的最前面添加$\textrm{\displaystyle}$即可。
$\textrm{\$\displaystyle E=\frac{1}{2}mv^2\$}$显示为$\displaystyle E=\frac{1}{2}mv^2$
7.2 公式的基本输入
- 上下标
- $\textrm{_}$表示下标
- 如果上下标的内容多于一个字符,需要用{}将这些内容括成一个整体。上下标可以嵌套,也可以同时使用。例如
$$ x^{y^z}=(1+{\rm e}^x)^{-2xy^w} $$
其编译结果为$$ x^{y^z}=(1+{\rm e}^x)^{-2xy^w} $$
如果要在左右两边都有上下标,可以用$\textrm{\sideset}$命令。例如
$$ \Delta S=S_2-S_1=\sideset{_R}{_{1}^{2}}{\int}\frac{\rm{d} Q}{T} $$
编译结果为:
$$ \Delta S=S_2-S_1=\sideset{_R}{_{1}^{2}}{\int}\frac{\rm{d} Q}{T} $$
$\textrm{\sideset}$的用法为$\textrm{\sideset}${左边的上下标}{右边的上下标}{被标号的部分}
$\textrm{(),[]}$和$\textrm{|}$表示符号本身,使用$\textrm{\\{\\}(}$转义字符$\textrm{)}$来表示$\textrm{{}}$,当要显示大号的括号或分隔符时,要用$\textrm{\left}$和$\textrm{\right}$命令使得括号的大小与公式高度匹配。一些特殊的括号如下:
例如
$$ f(x,y,z)=3y^2z \left (3+\frac{7x+5}{1+y^2} \right) $$
显示为:
$$ f(x,y,z)=3y^2z \left (3+\frac{7x+5}{1+y^2} \right) $$
注意:$\textrm{\left}$和$\textrm{\right}$要同时使用,所以当使用单边括号的时候要用$\textrm{\left. }$或$\textrm{\right.}$ 作为不显示括号的一侧。
例如
$$ \left. \frac{{\rm d}u}{{\rm d}x} \right | _{x=0} $$
%使用了\left.表示左侧没有与|相对的符号
$$ \left [ 1,\frac 12 \right) $$
%left和right可以是不同的符号
编译结果为
$$ \left. \frac{{\rm d}u}{{\rm d}x} \right | _{x=0} $$
$$ \left [ 1,\frac 12 \right) $$
如果你需要将行内显示的分隔符也根据高度自动调整,可以使用$\textrm{\middle}$命令
例如
%不加\middle的版本
$$
\left\langle
q
\|
\frac{\frac{x}{y}}{\frac{u}{v}}
|
p
\right\rangle
$$
%加上\middle的版本
$$
\left\langle
q
\middle\|
\frac{\frac{x}{y}}{\frac{u}{v}}
\middle|
p
\right\rangle
$$
不加$\textrm{\middle}$和加上$\textrm{\middle}$的显示效果分别如下
$$
\left\langle
q
|
\frac{\frac{x}{y}}{\frac{u}{v}}
|
p
\right\rangle
$$
$$
\left\langle
q
\middle|
\frac{\frac{x}{y}}{\frac{u}{v}}
\middle|
p
\right\rangle
$$
通常使用 $\textrm{\frac{分子}{分母}}$命令产生一个分数,分数可以嵌套。便捷情况(当分子和分母都仅有一个字符的时候)可直接输入$\textrm{\frac ab}$来快速生成一个 (这种方法不仅适用于$\textrm{\frac}$),如果分式很复杂,亦可使用$\textrm{{分子 \over 分母}}$命令(不建议),此时分数仅有一层。
例如
$$
\frac {a-1}{b-1} \quad and \quad {a+1\over b+1}
$$
编译结果为
$$
\frac {a-1}{b-1} \quad and \quad {a+1\over b+1}
$$
对于行内公式环境中的分数,我们不仅可以使用$\textrm{\displaystyle}$以产生跨行的分数,还可以使用$\textrm{\dfrac}$,例如
小的$\textrm{\$ \frac 12 \$}$和大的 $\textrm{\$ \dfrac 12 \$}$
显示效果为
小的$ \frac 12 $和大的 $ \dfrac 12 $
注意在行间公式环境种,第一层分数将会以$\textrm{\displaystyle}$显示,第二层将以$\textrm{\textstyle}$,字体大小逐级递减, 故若需要创建大小一致的分数形式,请使用不会改变字体显示样式的$\textrm{\fact}$
使用$\textrm{\sqrt[}$根指数$\textrm{,default=2]\{}$被开方数$\textrm{\}}$命令输入开方。同时$\textrm{\sqrt}$命令亦可以使用简略的书写方法,但根指数依然要使用中括号。
例如
$$
\sqrt{2} \quad and \quad \sqrt[n]{3}
$$
$$
\sqrt[n]m
$$
编译结果为
$$
\sqrt{2} \quad and \quad \sqrt[n]{3}
$$
$$
\sqrt[n]m
$$
省略号常用于矩阵环境和列举环境。
例如
$$
f(x_1,x_2,\underbrace{\ldots}_{\rm ldots} ,x_n)
=x_1^2+x_2^2+ \underbrace{\cdots}_{\rm cdots} + x_n^2
$$
编译结果为:
使用$\textrm{\vec{<vector-name>}}$来自动产生一个矢量。也可以使用$\textrm{ \overrightarrow}$生成自动根据内容调节长度的向量箭头
例如
$$
\vec{a} \cdot \vec{b}=0
$$
$$
\overrightarrow{ABCD},\vec{ABCD}
$$
$$
\overleftarrow{xy}
\quad and \quad
\overleftrightarrow{xy} \quad and \quad \overrightarrow{xy}
$$
编译结果为:
$$
\vec{a} \cdot \vec{b}=0
$$
$$
\overrightarrow{ABCD},\vec{ABCD}
$$
$$
\overleftarrow{xy}
\quad and \quad
\overleftrightarrow{xy} \quad and \quad \overrightarrow{xy}
$$
使用$\textrm{\int_{积分下限}^{积分上限}{被积表达式}}$来输入一个积分。多重积分使用$\textrm{\\\\int}$或其他
例如
$$
\int_0^1 {x^2} \, {\rm d}x
$$
编译结果为
$$
\int_0^1 {x^2} \, {\rm d}x
$$
其中$\textrm{ {\rm }}$表示对括号部分的公式取消斜体(使用罗马字体),$\textrm{ \, }$表示一个小空格,根据$\textrm{IEEE}$出版物规定,建议使用正体微分符号,被积变量与被积函数之间以空格分隔。
使用 $\textrm{\lim_{变量 \to 表达式} 表达式}$ 来输入一个极限,如有需求,可以更改$\textrm{ \to}$符号至任意符号。
例如
$$
\lim_{n \to +\infty} \frac{1}{n(n+1)}
\quad and \quad
\lim_{x\leftarrow{sample}} \frac{1}{n(n+1)}
$$
其编译结果为:
$$
\lim_{n \to +\infty} \frac{1}{n(n+1)}
\quad and \quad
\lim_{x\leftarrow{sample}} \frac{1}{n(n+1)}
$$
有时候我们可能会用到多重极限或者具有层叠结构的数学表达式,这时候我们可以使用$\textrm{\atop}$命令来构造层叠结构
例如
$$
\lim_{z\to 0 \atop z\in D}f(x,y)
$$
其编译结果为:
$$
\lim_{z\to 0 \atop z\in D}f(x,y)
$$
对于积分符号也同样适用,例如
$$
\iint\limits_{-1<x<1 \atop -1<y<1}f(x,y) \, {\rm d} x
$$
其编译结果为:
$$
\iint\limits_{-1<x<1 \atop -1<y<1}f(x,y) \, {\rm d} x
$$
$\textrm{\limits}$命令可以实现将下标放在符号正下方的功能。
使用$\textrm{\sum_{下标表达式}^{上标表达式}{累加表达式}}$来输入一个累加。与之类似,使用$\textrm{ \prod \bigcup \bigcap}$来分别输入累乘、并集和交集。此类符号在行内显示时上下表达式将会移至右上角和右下角。
$$
\sum_{i=1}^n \frac {1}{i^2}
\quad and \quad
\prod_{i=1}^n \frac {1}{i^2}
\quad and \quad
\bigcup_{i=1}^{2} R
$$
其编译结果为:
$$
\sum_{i=1}^n \frac {1}{i^2}
\quad and \quad
\prod_{i=1}^n \frac {1}{i^2}
\quad and \quad
\bigcup_{i=1}^{2} R
$$
输入 $\textrm{\小写希腊字母英文全称}$ 和 $\textrm{\首字母大写希腊字母英文全称}$ 来分别输入小写和大写希腊字母、对于大写希腊字母于现有字母相同的,直接输入大写字母即可。
部分字母有变量专用形式,以$\textrm{\var- }$开头
若需要显示更大或更小的字符,在符号前插入$\textrm{\large }$或$\textrm{ \small}$命令
若找不到需要的符号,使用$\textrm{Detexify}$来画出想要的符号,也可以在$\textrm{LaTeX}$自带的宏包说明中找到相应的符号。
7.3 常用符号
集合运算符
对数运算符
三角运算符
微积分运算符
逻辑运算符
带帽运算符
连线运算符
箭头运算符
7.4 矩阵
首先看一个矩阵的例子
$$
\left[
\begin{array}{cccc}
a_{11} & a_{12} & a_{13} & a_{14} \\\\
a_{21} & a_{22} & a_{23} & a_{24} \\\\
a_{31} & a_{32} & a_{33} & a_{34} \\\\
a_{41} & a_{42} & a_{43} & a_{44}
\end{array}
\right]
$$
%解析上述代码
%\left[ 和 \right]表示大括号
%array是表格环境
%[cccc]表示一行有4列,c代表矩阵,还有l(左对齐)和r(右对齐)
其编译结果为:
$$
\left[
\begin{array}{cccc}
a_{11} & a_{12} & a_{13} & a_{14} \\
a_{21} & a_{22} & a_{23} & a_{24} \\
a_{31} & a_{32} & a_{33} & a_{34} \\
a_{41} & a_{42} & a_{43} & a_{44}
\end{array}
\right]
$$
可以借助省略号构造一个一般矩阵
$$
\left[
\begin{array}{cccc}
a_{11} & a_{12} & \cdots & a_{1n} \\\\
a_{21} & a_{22} & \cdots & a_{2n} \\\\
\vdots & \vdots & \ddots & \vdots \\\\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{array}
\right]
$$
其编译结果为:
$$
\left[
\begin{array}{cccc}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{array}
\right]
$$
$\textrm{amsmath}$宏包还直接提供了多种排版矩阵的环境,包括不带定界符的$\textrm{matrix}$,以及带各种定界符的矩阵$\textrm{pmatrix(、bmatrix[、Bmatrix\{、vmatrix|、Vmatrix||}$。使用这些环境时,无需给定列格式。
$$
\begin{matrix}
1 &2 \\\\ 3&4
\end{matrix} \qquad
\begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1n} \\\\
x_{21} & x_{22} & \cdots & x_{2n} \\\\
\vdots & \vdots & \ddots & \vdots \\\\
x_{n1} & x_{n2} & \cdots & x_{nn} \\\\
\end{bmatrix}
$$
其编译结果为:
\begin{matrix}
1 &2 \\ 3&4
\end{matrix}
\begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1n} \\
x_{21} & x_{22} & \cdots & x_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
x_{n1} & x_{n2} & \cdots & x_{nn} \\
\end{bmatrix}
在矩阵中的元素里排版分式时,一来要用到\dfrac等命令,二来行与行之间有可能紧贴着,这时也要调节间距
$$
\mathbf{H}=
\begin{bmatrix}
\dfrac{\partial^2 f}{\partial x^2} &
\dfrac{\partial^2 f}{\partial x \partial y} \\\\
\dfrac{\partial^2 f}{\partial x \partial y} &
\dfrac{\partial^2 f}{\partial y^2}
\end{bmatrix}
$$
其编译结果为:
$$\mathbf{H}=
\begin{bmatrix}
\dfrac{\partial^2 f}{\partial x^2} &
\dfrac{\partial^2 f}{\partial x \partial y} \\
\dfrac{\partial^2 f}{\partial x \partial y} &
\dfrac{\partial^2 f}{\partial y^2}
\end{bmatrix}$$
7.5 方程组
方程组可以用$\textrm{cases$}环境直接打出,例如
$$
\begin{cases}
x+y=1 \\\\
x-y=1
\end{cases}
$$
其编译结果为
$$
\begin{cases}
x+y=1 \\
x-y=1
\end{cases}
$$
7.6 公式优化
若要对公式的某一部分字符进行字体转换,可以用 $\textrm{\字体 {需转换的部分字符}}$命令,其中字体部分可以参照下标选择合适字体,一般情况下,公式默认为意大利体 $italic$。
转换字体十分常用,例如在积分中
$$
\begin{array}{cc}
\mathrm{Bad} & \mathrm{Better} \\\\
\hline \\\\
\int_0^1 x^2 dx & \int_0^1 x^2 \, {\rm d}x
\end{array}
$$
其编译结果为:
$$
\begin{array}{cc}
\mathrm{Bad} & \mathrm{Better} \\
\hline \\
\int_0^1 x^2 dx & \int_0^1 x^2 \, {\rm d}x
\end{array}
$$
在第二个公式中,字母$\textrm{d}$被修改成了罗马体,排本更美观了,使用$\textrm{\operatorname}$命令也可以达到相同的效果。
手动编号仅需在打完的公式后面加上$\textrm{\tag{number}}$进行编号,例如
$$
f(x) = x^2
\tag{编号}
$$
其编译结果为:
$$
f(x) = x^2
\tag{编号}
$$
对于自动编号,在$\textrm{equation}$环境中会自动编号,有时我们希望将公式编号与章节相关联,可以在导言区导入$\textrm{amsmath}$宏包之后再添加命令$\textrm{\numberwithin{equation}{section}}$,这样我们的公式编号就可以变为形如$\textrm{(1.1)(2.5)}$的形式
公式有的时候太长或是连等式需要手动断行,这个时候可以用split环境(需要和equation环节同时使用),例如
$$
\begin{split}
1+2+3+4+5+6+7+\\\\
+8+9+10+11+12+13=91
\end{split}
$$
其编译结果为:
$$
\begin{split}
1+2+3+4+5+6+7+\\
+8+9+10+11+12+13=91
\end{split}
$$
当式子为连等式的时候需要对齐,这个时候我们会用上&来匹配每行的位置以达到对齐的效果。
例如
$$
\begin{split}
1+2+3+4+5+6+7
&=3+3+4+5+6+7 \\\\
&=6+4+5+6+7 \\\\
&=10+5+6+7 \\\\
&=15+6+7 \\\\
&=21+7 \\\\
&=28 \\\\
\end{split}
$$
其编译结果为:
$$
\begin{split}
1+2+3+4+5+6+7
&=3+3+4+5+6+7 \\
&=6+4+5+6+7 \\
&=10+5+6+7 \\
&=15+6+7 \\
&=21+7 \\
&=28 \\
\end{split}
$$
也可以通过 $\textrm{\,}$增加空格来排版,例如
$$
\begin{split}
&\,\,\,\,\,\,\,1+2+3+4+5+6+7 \\\\
&=3+3+4+5+6+7 \\\\
&=6+4+5+6+7 \\\\
&=10+5+6+7 \\\\
&=15+6+7 \\\\
&=21+7 \\\\
&=28 \\\\
\end{split}
$$
其编译结果为:
$$
\begin{split}
&\,\,\,\,\,\,\,1+2+3+4+5+6+7 \\
&=3+3+4+5+6+7 \\
&=6+4+5+6+7 \\
&=10+5+6+7 \\
&=15+6+7 \\
&=21+7 \\
&=28 \\
\end{split}
$$
以上稍微引入了多行公式的概念,对于多行公式,最常用的是$\textrm{align}$多行公式环境,他不需要外套$\textrm{equation}$环境,并且可以实现自动编号。
$$
\begin{align}
a = {} & b + c \\\\
= {} & d + e + f + g + h + i
+ j + k + l \notag \\\\
& + m + n + o \\\\
={} & p + q + r + s
\end{align}
$$
其编译结果为:
若只需要居中对齐公式则可以选择$\textrm{gather}$环境
\begin{gather}
a=b+c \\\\
d = e+f+g \\\\
h + i = j + k \\\\
l+m = n
\end{gather}
其编译结果为:
若需要对同一个$\textrm{align}$环境使用一个编号而不是多个编号,可以使用$\textrm{aligned}$和$\textrm{gathered}$环境,此时需要和$\textrm{equation}$环境同时使用。例如
\begin{equation}
\begin{aligned}
a &= b + c \\\\
d &= e + f + g \\\\
h + i &= j + k \\\\
l + m &= n
\end{aligned}
\end{equation}
其编译结果为:
输入分式时使用$\textrm{ \frac}$,而$\textrm{\cfrac}$可以用来创建一个连分数
$$
x = a_0 + \cfrac{1^2}{a_1+ \cfrac{2^2}{a_2+\cfrac{3^2}{a_3+\cfrac{4^4}{a_4 + \cdots}}}}
$$
其编译结果为:
$$
x = a_0 + \cfrac{1^2}{a_1+ \cfrac{2^2}{a_2+\cfrac{3^2}{a_3+\cfrac{4^4}{a_4 + \cdots}}}}
$$
如果使用普通的$\textrm{\frac}$或$\textrm{\over}$来创建,大小会越来越小
$$
x = a_0 + \frac{1^2}{a_1+ \frac{2^2}{a_2+\frac{3^2}{a_3+\frac{4^4}{a_4 + \cdots}}}}
$$
其编译结果为:
$$
x = a_0 + \frac{1^2}{a_1+ \frac{2^2}{a_2+\frac{3^2}{a_3+\frac{4^4}{a_4 + \cdots}}}}
$$
不过$\textrm{\frac}$可以用来表达连分数的紧缩记法
$$
x = a_0 + \frac{1^2}{a_1+}
\frac{2^2}{a_2+}
\frac{3^2}{a_3+}
\frac{4^2}{a_4+} \cdots
$$
其编译结果为
$$
x = a_0 + \frac{1^2}{a_1+}
\frac{2^2}{a_2+}
\frac{3^2}{a_3+}
\frac{4^2}{a_4+} \cdots
$$
通常连分数太大而不易于排版,因此建议描述为行间公式或者使用紧缩记法。
使用$\textrm{\mbox{中文}}$来输入中文
$$
\sqrt{4} \mbox{或} 2
$$
其编译结果为
$$
\sqrt{4} \mbox{或} 2
$$
使用$\textrm{\bf}$可以给公式加粗体,但是粗体会取消公式的斜体,如果想要使用粗斜体,则在导言区导入$\textrm{amsmath}$宏包的时候需要再导入自带的$\textrm{bm}$宏包,即$\textrm{\usepackage{amsmath,bm}}$,然后再使用$\textrm{\bm}$命令
$$
\bm{xyz}
$$
其编译结果为:
8. amsthm宏包使用与LaTeX代码规范
本节的内容包括:
- $\textrm{amsthm}$宏包的使用
- $\textrm{amsthm}$基础
- $\textrm{amsthm}$进阶
- $\textrm{amsthm}$高级应用
- $\textrm{LaTeX}$代码的规范性
- 不规范的$\textrm{LaTeX}$代码
- 内容与样式分离
8.1 宏包的使用
$\textrm{amsthm}$用于定理和证明类环境的配置
加载$\textrm{amsthm}$宏包: $\textrm{\usepackage{amsthm}}$
新定义一个定理类环境: $\textrm{\newtheorem{name}[counter]{text}[section]}$
- $\textrm{name}$:标识这个环境的关键字(用于编程)
- $\textrm{text}$:真正在文档中打印出来的定理环境的名字
- $\textrm{counter}$:计数器;一般新定义的定理环境会自己用一个新的计数器,但是可以在 $\textrm{counter}$中传入其他的定理环境,表示和这个环境共用计数器。
- $\textrm{section}$:定理编号依赖于某个章节层次(比如:定理$\textrm{1.1}$)
使用方法:$\textrm{\begin{环境名} ... \end{环境名}}$
例如:
\documentclass{article}
%导言区
\usepackage{amsthm}
\usepackage{ctex}
\newtheorem{lem}{Lemma} %定义了名为lem的环境,调用时显示Lemma文本
\begin{document}
\begin{lem} This is a sentence. \end{lem} %调用lem,可以看到在pdf界面会自动编号
\end{document}
如果不需要编号,那么加上星号:$\textrm{\newtheorem*{lem}{Lemma}}$
可以发现上述编译的定理环境有两个特点
这是因为使用$\textrm{amsthm}$宏包的时候,如果没有指定定理类环境的风格命令:$\textrm{\theoremstyle}$,那么显示的样式即为$\textrm{plain}$
- $\textrm{plain}$:斜体文字,上面和下面留有额外的空间,常用的结构类型有
$\textrm{Theorem,Lemma,Corollary,Proposition,Conjecture,Criterion,Assertion}$
- $\textrm{definition}$:直立文字,上面和下面留有额外的空间,常用的结构类型有$\textrm{Definition,Condition,Problem,Example,Exercise,Algorithm,Question,Axiom,Property,Assumption,Hypothesis}$
- $\textrm{remark}$:直立文字,上面或下面没有额外的空间,常用的结构类型有$\textrm{Remark,Note,Notation,Claim,Summary,Acknowledgement,Case,Conclusion}$
\documentclass{article}
%导言区
\usepackage{amsthm}
\usepackage{ctex}
\newtheorem{lem}{Lemma}
\theoremstyle{definition}
\newtheorem{defn}{Definition}
\theoremstyle{remark}
\newtheorem{rem}{Remark}
\begin{document}
\begin{lem} This is a sentence. \end{lem}
\begin{defn} This is a sentence. \end{defn}
\begin{rem} This is a sentence. \end{rem}
\end{document}
可以使用$\textrm{\newtheoremstyle}$来定义自己的风格
\newtheoremstyle
{note} %名字
{3pt}{3pt} %上面的空间、下面的空间
{} %主体的字体
{} %缩进量
{\itshape} %定理头字体
{:} %定理头后标点符号
{.5em} %定理头后的空间
{} %定理头规范,可以为空,表示normal
%示例
\newtheoremstyle
{mystyle} %名称为mystyle
{0pt}{0pt} %环境前后的纵向距离为0pt
{\kaishu} %设置字体为楷书
{2\ccwd} %缩进量为2\ccwd
{\bfseries} %定理头字体为bfseries
{.} %定理头后标点符号为.
{0pt} %定理头后的空间为0pt
{} %定理头规范为normal
8.2 代码的规范使用
不规范的代码有:
- 宏包相互冲突,例如$\textrm{\usepackage{indentfirst}}$和$\textrm{\setlength{\parindent}{2em}}$
- 宏包加载顺序不佳,例如$\textrm{hyperref}$一般是最后几个加载的
- 宏包重复加载,如$\textrm{color}$和$\textrm{xcolor}$
- 使用无效代码,例如$\textrm{\contentsname}$
- 手写章节编号,图标编号
- 手动调节样式
我们需要做到:内容与样式分离
一篇文档的实际内容和逻辑结构与这篇文档呈现给读者看到的样式是相互独立的,要将排版的内容分隔,赋予其不用的意义,从而保留样式的可变性,自由度。
9. Overleaf 使用基础入门
[留坑] Overleaf在撰写毕业论文的期间,其实使用的很频繁,只是彼时无心更新博客,且也就是在网页上写LaTex,网页上编译,后续有机会会填坑的,相关视频同样见索引
10. 后记
以上1-9节内容写于2021年01月24日,彼时正因为参加美赛的原因学习LaTex,同时也想为简陋的博客新增一些内容,当时写了九篇文章,终于让kuroko.info的主页看起来不再匮乏。现在3年过去,虽然仅在美赛和毕业论文中正式用LaTex写过文章,但LaTex在其他文本编辑中可作为插件编写插入,让这些年写过的内容规整了许多。
Author@Kuroko
GitHub@SuperKuroko
LeetCode@kuroko177
Last Modified: 2021-01-24 16:26