LaTeX 技巧 964:高效使用 LaTeX

在不久前,我在微信公众号上看到一篇关于 使用 Vim 和 LaTeX 做笔记的文章 :

在这篇文章中,作者介绍了使用 Vim 作为 LaTeX 的编辑器,并配合 Snippets 来实现高效输入 LaTeX 代码的方式。但 Vim 作为一个无法使用鼠标,完全靠键盘来进行输入的编辑器,学习路线非常陡峭,很多人都是听过 Vim 的大名但从来不能够对它的使用融会贯通。

但对于一般人而言,你不需要通过学习 Vim 来达到高效编辑 LaTeX 的方式。而是通过一些比较容易实现的方式,使得你能够在原来的基础上更加高效得使用 LaTeX,并达到以思考的速度输入 LaTeX 的方式。

在第一部分,我会首先介绍高效编辑 LaTeX 文档的几种方式,这能够让你在短时间内迅速提高你的 LaTeX 输入速度。

而第二部分,则是将输入 LaTeX 中遇到的常见问题进行一个总结,例如输入数学字母、自定义定理类环境、参考文献的设置等等。尽管网络上已经有各种各样的教程教你如何使用这些特殊的环境,但搜索时依然能搜索到很多没有用的方案。这是因为你用的 TeX 版本可能跟作者不同,或者是作者所说的方案已经过时但网站没有及时更新等等。我在这里给出我对这些基本环境的一个使用,并会经常进行更新。

我用的 TeX 编译器主要是 TeXPadTeX,这是一款支持实时编译的 TeX 编译器,而不需要手动进行编译。而在 TeXPadTeX 无法处理的文档时,我会选择使用 TeX Live。TeXPadTeX 基本兼容 TeX Live,在使用上没有太大的区别。而对于 CTeX,我由于没有安装 CTeX,所以无法测试。


目录

  1. 高效编辑 LaTeX 文档的几种方式

  2. 数学字母

  3. 自定义定理类环境

  4. 插入图片

  5. 参考文献


1 高效编辑 LaTeX 文档的几种方式

1.1 实时预览

用 LaTeX 写文档很好,但它也有一个很明显的缺点,那就是用 LaTeX 写出来的文档,并不是所见即所得。不论是正文还是数学公式或者是参考文献,都需要将其写入 TeX 文件,并进行编译以后才能生成 PDF。而在预览 PDF 文件时,如果你发现有些地方存在书写错误,你就需要更改相应的 TeX 文件,并再次进行编译才能够生成新的 PDF 进行预览。

非所见即所得的 LaTeX 造成了很多困扰,这表示你必须编译以后才能看到内容上的错误,而修改内容又需要重新编译,这是一个重复性操作。另一方面,你只有在编译时,才能够发现 TeX 代码中的错误,这在后期调试时十分不方便。

尽管现在已经有越来越多的编辑器支持「实时预览」,也就是所见即所得。但不论是在功能上,还是体验上,都比不上 TeXPad 这款软件。TeXPad 的一个特色就是左侧编辑右侧预览,几乎无任何延时,并且在报错上也是十分灵敏,方便你在编写的过程中找到错误。

实时预览与实时报错演示
实时预览与实时报错演示

TeXPad 对新手十分友好,通过实时预览和实时报错,能够在入门 LaTeX 时节省很多的时间在调整细节和纠错上。有许多 LaTeX 老手并不喜欢这样的模式,认为再复杂的式子他也可以快速输入。我曾一度也如此认为,直至有一次要输入以下公式:

输入复杂的公式
输入复杂的公式

这个公式的复杂,让我深切体会到 TeXPad 实时编译实时预览的好处。向量需要加粗,括号需要变大,上标需要加上小括号等等。如果没有实时预览,只要有一处没有考虑到就需要重新修改重新编译重新预览,反复如此。而有了实时预览之后,就可以一次性将这个公式打出来。

1.2 文本扩展

在 LaTeX 中插入一张图片或者一个表格并不容易。对于插入图片而言,要定义 figure 环境,设置图片位置、图片的文件名,图片标题等等。对于插入表格而言,需要定义 table 环境,设置表头、对齐方式、表格具体内容等等。插入图片和表格的代码相对比较复杂,不容易记忆。

好在插入图片或者插入表格都有固定的规律可循。比如,插入图片时,我们通常使用类似这样的代码:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{x2}
   \\[0mm]
   \caption{$y=x^2$}
   \label{fig:x2}
\end{figure}

这样,对于每一张图片,只需这三个大括号中依次填入: 图片名称、图片标题、标签即可。通过 Keyboard Maestro 或 Text Expander 等等软件能够十分方便得通过这三条信息来生成一段插入图片的 LaTeX 代码。例如我设置通过输入 ffig 来插入一张图片,此时会弹出一个对话框,这个对话框就要求我输入这三条信息,输入完成后点击 OK,即可在当前应用程序中生成一段插入指定图片的 LaTeX 代码。

快速插入一张图片
快速插入一张图片

这样的场景在 LaTeX 中十分常见,例如 align 环境、itemize 环境、array 环境、section 环境等等都可以通过这样的方式来自动插入 LaTeX 代码。

使用文本扩展不仅仅意味着你可以少输入很多字母,它更深刻的用处是在你不需要去记忆任何环境的代码规则。在一台新的电脑上,我无法在不查找资料的情况下在 LaTeX 中插入一张图片,但在我自己的电脑上,我很轻松的通过 Keyboard Maestro 来插入一张图片。

1.3 设置缩写

在 LaTeX 中,可以给常用的命令设置缩写。例如在公式中需要对向量 x 进行加粗,但每次都采用 \bm{x} 来进行加粗会比较麻烦。这时我们可以通过 \def 来指定缩写,例如 \def\bx{\bm{x}},此时 \bx\bm{x} 完全等价。

设置缩写
设置缩写

通过设置缩写,可以将 LaTeX 中较长的代码直接通过一个小命令来使用,这在编写 TeX 文档时可以节省不少时间。

1.4 文本扩展与缩写的比较

文本扩展是通过设置短语,来实现快速输入,在内容上与原来完全一致。而缩写则是通过在导言区定义新的命令,在正文中可以通过这个命令来达到指定的功能。他们的优缺点分别有:

  • 文本扩展的优点

  • 可以设置模板 (例如插入图片、表格等等)

  • 简化了打字方式,但在内容呈现上与原来一样

  • 文本扩展与当前软件无关,无论是在不同的文件中,甚至在不同的软件中,文本扩展永远可以使用

  • 缩写的优点

  • 复杂公式中,更加容易看清公式的结构

  • 文本扩展的缺点

  • 所有内容都是按照原样来写,这样复杂的公式的代码会超级长

  • 缩写的缺点

  • 在每一个文件中,都需要设置缩写才可以使用

  • 不同的人对于缩写的设置习惯不同,不利于协作

以上就是文本扩展和缩写的比较,在实际使用中,我们需要结合起来使用。

1.5 使用 MathPix 识别公式

Mathpix Snip 是一个能够将图片中的公式转成 LaTeX 代码的工具,它能够通过截取你想要识别的公式,并输出 LaTeX 代码。

图片转 LaTeX 的工具很多,但大部分软件做得不是太好,识别准确率也不高。很多软件虽然可以识别,但后期的修正 bug 会浪费很多的时间。而 MathPix 在识别准确率上做得很好,可以让你在截图以后直接可以放心使用识别出来的 LaTeX 代码,这非常快速并且节省时间。

通过 MathPix 截图并转换成 LaTeX 代码
通过 MathPix 截图并转换成 LaTeX 代码

下面是转换完成的 LaTeX 代码,整体来说还是转换的很不错的。

$$
\frac{\partial}{\partial \theta} \int \psi_{\theta}(x) d \nu=\int \frac{\partial}{\partial \theta} \psi_{\theta}(x) d \nu
$$

总结

工欲善其事,必先利其器。在学习上我们不应该偷懒,但在写 LaTeX 代码上,我们应该用最高效地方式来进行编写,以达到节省时间节省精力的目的。通过一款支持实时预览的编辑器,使用文本扩展和缩写相结合,再配合 MathPix 之类的图片转 LaTeX 工具,这将让你编写 LaTeX 代码足够地高效。


2 数学字母

在数学公式中,你可能需要为公式中的字母设置字体,例如向量或矩阵的加粗、线性变换的花体、数集的字体等等。

几种常用字体
几种常用字体

2.1 清除公式中的字母格式

在数学公式中,直接输入的字母都会变为斜体。例如输入 sin(x) 会得到一个全是斜体的 sin(x),通过 \sin(x) 进行输入则其中的 sin 为正体。

左: sin(x),右: \sin(x)
左: sin(x),右: \sin(x)

但公式中,并不是所有的数学符号都在 LaTeX 中有对应的命令。例如矩阵的迹: tr 或者 trace,在 LaTeX 中并没有特定的命令来输入。这时,可以通过 \mathrm{} 来进行输入。

左: tr(A),右: \mathrm{tr}(A)
左: tr(A),右: \mathrm{tr}(A)

通过 \mbox{} 来进行输入时,也可以达到一样的效果,但这两种方法在字体和字母间距上有细微差别。

2.2 字母加粗

对于公式中的向量或者矩阵,常常需要对字母进行加粗。对字母进行加粗有两种情况,一种是字母为正体并加粗,一种是字母为斜体并加粗。这两种分别可以通过 \mathbf{}\bm{} 来实现。其中 bm 需要引入一个包: bm

\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})
\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})

2.3 使用花体字母

在有些情况下,你可以需要使用到花体字母,例如描述线性空间的线性变换等等。花体字母常用的有两种,\mathcal{}\mathscr{} ,其中 mathscr 需要引入包: mathrsfs

\mathcal{A}\in \mathrm{End}(V)
\mathcal{A}\in \mathrm{End}(V)

2.4 使用空心字母

在描述数集时,常采用空心字母来表示。通过 \mathbb{} 能够输入空心字母,需要引入包: amsfonts

a, b, c\in\mathbb{R}
a, b, c\in\mathbb{R}

2.5 其他数学字母

其他数学字母
其他数学字母

图片来源: Texdoc Symbols


3 自定义定理类环境

定理类环境是指,文档中关于定理、引理、命题、推论等等的环境。LaTeX 可以实现自定义定理类环境,包括设置排序单位、设置字体、分隔符等等。在 LaTeX 中,自定义定理类环境不需要另外的包 (网络上大多的资料都提示需要 amsmath 这个包,但我不用这个包的时候也能够正常运行),但在调整定理类环境的样式时需要使用 ntheorem 这个包。

3.1 基本语法

通过在导言区添加 \newtheorem{环境名}{标题}[排序单位] 即可自定义定理环境。其中:

  • 环境名: 必选参数,在你的 TeX 文件中,\begin{}\end{} 中大括号内的内容。

  • 标题: 必选参数,在你的 PDF 文件中,该环境显示出来的内容。

  • 排序单位: 可选参数,设置你的自定义环境自动标号的内容。

未设置排序单位
未设置排序单位
  • 定理名字: 可选参数,在 \begin{}[]\end{} 中中括号内的内容即为定理的名字,会通过小括号显示在定理中。

设置定理名字
设置定理名字

3.2 排序单位

  • 取消排序: 若需要取消定理类环境的编号,你只需在定义定理类环境时,加上星号。

取消排序
取消排序
  • 按照 sectionsubsection 等排序: 只需在排序单位中设置即可。

按照 section 排序
按照 section 排序
  • theoremlemma 等统一编号排序: 此时要将 theorem 用中括号的形式放入环境名和标题之间,不可放至末尾。

theorem, lemma 统一编号
theorem, lemma 统一编号

3.3 设置字体

  • 定理类环境默认的字体为斜体,可以通过 \theorembodyfont 来设置字体,其中 \upshape 为正体,\itshape 为斜体。\theorembodyfont 必须放在 newthorem上方

将定理类环境中的内容设置为正体
将定理类环境中的内容设置为正体
  • 需要注意的是,这个设置会对接下来所有定义的 newtheorem 都会产生影响。在仍然需要设置斜体时,可以通过 \theorembodyfont{\itshape} 将字体变为斜体。

设置正体和斜体
设置正体和斜体

3.4 设置换行

  • 可以通过设置 \theoremstyle{break} 来使定理和正文中进行换行。\theoremstyle 必须放在 newthorem上方

设置换行
设置换行
  • 这个命令会对接下来所有定义的 newtheorem 都会产生影响,可以通过 \theoremstyle{plain} 使其恢复为原来的样式。

3.5 设置分隔符

可以通过 \theoremseparator{} 设置定理和正文的分隔符。

设置分隔符
设置分隔符

4 插入图片

4.1 插入单张图片

插入图片需要引入包: graphicx,通过 \includegraphics 即可插入一张图片。但一般情况下,你需要将图片放入到一个 figure 环境中。默认情况下,在一个空白页中,图片会插入到页面中间,但在一个非空白页中,图片会插入到页面顶部。若想要图片按照你指定的位置来进行插入,那就需要设定 figure 环境的参数。

没有设置任何参数时,图片显示在顶部
没有设置任何参数时,图片显示在顶部

figure 环境包括 4 个参数:

  • h: here,此处

  • t: top,页顶

  • b: bottom,页底

  • p: page,独立一页

在设置参数时,通常使用 ht。这表示 LaTeX 试图将图片放在此位置,如果不行 (此处没有足够的空白能够插入该图片) 则会将图片放在新页面的顶部 (如果页面为空时,放入页面中央)。

在设置好图片放置的位置以后,还需要设置图片居中,使用 \centering 即可设置图片居中。

接下来可以插入图片了,插入图片的命令是 \includegraphics{},大括号中输入图片的文件名即可,在不引起混淆的情况下,可以不输入文件的扩展名。可选项为设置图片的大小,一般情况下,设置图片宽度占文字宽度的多少即可,例如: width=0.8\textwidth

之后则是设置图片与标题的距离、标题、标签等等。这就得到插入一张图片时需要的代码:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{}
   \\[0mm]
   \caption{}
   \label{}
\end{figure}

4.2 插入两张图片并水平排列

与插入一张图片的方式基本相同,只不过需要使用 minipage 包将图片进行包裹,并分别设置宽度即可。

插入两张图片并水平排列
插入两张图片并水平排列

代码如下:

\begin{figure}[ht]
   \centering
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x2}
       \caption{$y=x^2$}
   \end{minipage}
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x3}
       \caption{$y=x^3$}
   \end{minipage}
\end{figure}

4.3 设置图片存放路径

在图片较多的情况下,将图片都存放在根目录会导致根目录文件较多。但如果将图片保存在子目录,那插入图片时会比较麻烦,每次都需要写上子目录的名称。你可以通过设置图片存放路径的方式,使得图片存放指定的目录,并在插入图片时直接使用图片名称即可。

通过 \graphicspath{{figures/}} 可以设置图片的路径为 figures/,此时即可将图片存入该文件夹,而在代码中,可以直接通过文件名进行调用。


5 参考文献

在写文章的过程中,参考文献的引用是一个很重要的部分,但同时这也是一个很复杂的事情,这体现在以下几个方面

  • 参考文献对大小写,正体斜体等的要求极其严格,并且有不同的规范。

  • 正文中引用参考文献时有很多不同的格式,例如通过 [1][2] 等等的数字进行引用,或者通过 Erhan et al. (2010) 这样的作者年份来引用等等。

  • 在文章的参考文献页,各参考文献的排序方式有很多规范,例如通过引用顺序进行排序或者通过作者名字进行排序等等。

在 LaTeX 中,自动生成参考文献也有诸多不同的方式。这里以 natbib 这个包来做示例,正文中显示的引用为作者加上年份,参考文献按照作者名字进行排序。对于别的参考文献样式,只需进行少许更改,即可达到指定的要求。

5.1 基本结构

首先你要引入包 natbib 并设置参数 authoryearround。这里的 authoryear 表示要显示的内容,而 round 表示年份用小括号进行包裹 (默认用中括号进行包裹)。

然后你需要在 TeX 文档的末尾添加参考文献的文件,即在 \end{document} 之前加上以下两行:

\bibliographystyle{plainnat}
\bibliography{reference}

这两行的顺序不能够调换,第一行表示参考文献的样式是 plainnat,而第二行表示参考文献的文件是 reference 这个文件。这时,TexPad 会自动问我们是否需要新建该文件。

创建 reference.bib 文件
创建 reference.bib 文件

此时的 TeX 文件结构如下,并在目录中多出了一个 reference.bib 文件。

基本结构
基本结构

5.2 bib 文件结构

这个 bib 文件其实是一个文献数据库,你可以将你所有阅读过的文献都放到这个文件中进行管理。需要注意的是,只有你在正文中引用到的文献,才会出现在参考文献的列表中。

bib 文件存放所有需要使用到的参考文献,对每一个文献,都有一个固定的格式,例如下述内容就代表一个文献。

@article{erhan2010does,
 title={Why does unsupervised pre-training help deep learning?},
 author={Erhan, Dumitru and Bengio, Yoshua and Courville, Aaron and Manzagol, Pierre-Antoine and Vincent, Pascal and Bengio, Samy},
 journal={Journal of Machine Learning Research},
 volume={11},
 number={Feb},
 pages={625--660},
 year={2010}
}

这并不需要你手动进行输入,你可以通过任何文献管理软件如 Papers、EndNote 等等将文章引用为 BibTeX 格式,或者在 Google 学术上点击引用并选择 BibTeX。

从 Google 学术中获取 BibTeX 格式的参考文献
从 Google 学术中获取 BibTeX 格式的参考文献

5.3 引用参考文献

在正文中引用参考文献的方式非常简单,只需输入 \cite{} 即可,此时 TexPad 会自动弹出一个框用于选择需要引入的参考文献。

引用参考文献
引用参考文献

从上图中你也可以看到,References 下面的参考文献列表,会随着正文中引用的参考文献的变化而变化。而关于 Reference 与正文在同一页的问题,这只需在参考文献前添加 \newpage 即可。


选自:https://www.notion.so/LaTeX-6be09d441a594bed84d59dba2b254034

分享到:
未经允许不得转载:LaTeX 技巧 964:高效使用 LaTeX
已有 条意见

    最新文章

    加载中...
      本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


      全国首个精品的LaTeX视频教程,大牛带着你入门,让LaTeX学习不再纠结,请点击下图咨询详情

      热门评论

        联系我们

        交流QQ群:91940767
        本站QQ号:343083553
        邮箱联系latexstudio@qq.com
        淘宝店铺https://shop240512713.taobao.com/ 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

        关注我们微信公众号

        如果您投稿或者希望加入我们团队,请发送您的简历到latexstudio@qq.com。