跳到主要内容

A short note of LaTeX

Lenor

前言

本文适合已经有基本的LaTeX基础,但不是LaTeX的熟练用户、或者偶尔使用LaTeX以致生疏的用户阅读。

建议使用的编写环境为VS Code + Tex Live。

在写作时,一切基于 xelatex 编译环境,但即便使用的是同样的编译环境,具体的版本不同也可能导致最终结果的差异。

如果你对LaTeX一无所知,建议先搭建一个编写环境,然后随便找一篇论文一边对照教材一边对其排版以练练手即可说自己“学会”LaTeX了(因为LaTeX是学不完的)。学习LaTeX完全无需刻意背诵任何语法,但是你需要熟悉LaTeX的工作流,并能够熟练地翻阅手册或使用搜索引擎来应对自己没学过的内容。推荐的教材和手册为:一份(不太)简短的LATEX 2ε 介绍|英文作者: Tobias Oetiker。此书能解决你的绝大部分需求,且非常简洁。阅读它的前五章并进行基本的练习有很大的帮助。

关于编写环境

目前主流的环境为 overleaf(在线)或者 VS Code(本地环境)。在没有团队编辑的需求时,极其推荐使用 VS Code(当然,即便在团队协作时,也可以采用 git 等工具较为方便的进行团队编辑),因为运行在本地的 VS Code 有着更快的渲染速度。而 Overleaf 在中国大陆境内时有出现网络连接的问题,并且对于中文在某些方面支持并不完善。此外,在编辑图片时,VS Code 与 Overleaf 相比也存在诸多优势。

对于 VS Code 环境的配置,可以自行在网上搜索资料,网上的教程非常多。

关于数学公式编写

笔者最为推荐的是使用 MathType 来编写 LaTeX 公式。它支持直接通过粘贴板导出 LaTeX 完全兼容的公式,且使用方便轻盈、启动迅速(初次启动除外,因为要启动 MathType 插件服务),完全不存在乱七八糟的功能。它支持直接在内部输入 LaTeX 公式,也可以通过顶部面板选择想要的公式。这样可以极大地提升熟练公式与不熟练公式混排的速度。

使用 MathType 导出 LaTeX 公式时,在预置-剪切和复制预置中选择 LaTeX 2.09 and later或其他更喜欢的选项(如 AMSLaTeX )。

如果使用AMS(美国数学学会)提供的宏集,需要添加到导言区:

\usepackage{amsmath}

MathType 导出的数学公式默认是普通行间公式模式,即

\[formula\]

如果需要对公式进行编号,则应当把\[\]替换为\begin{equation}\end{equation}环境。

关于表格的插入

LaTeX 提供了各种花里胡哨的表格语法,幸运的是,通常你不需要完全掌握它们。有许多的在线表格编辑网站可以帮你快速生成你想要的表格——只要它不过分复杂。推荐使用的网站是https://tableconvert.com/。它没有任何特殊的优点,只是笔者随意选取并使用至今的一个网站,不保证是最好用的。

表格的使用方法较为复杂,请具有创造性地使用它。

如果表格列宽排版不理想,你可以选择使用 tabularx 宏集,需要需要添加到导言区:(略)。使用方法略。

需要在外部使用一个table浮动体来进行嵌套,方法同图片。你可能需要在table环境中加入

\centering
\caption{CAPTION}
\label{LABEL}

关于图片的插入

通常插入图片可以使用 graphicx 宏集,需要添加到导言区:(略)。

值得注意的是,xelatex 仅支持.pdf .eps .jpg .png .bmp格式的图片。

同样需要使用浮动体嵌套,推荐的写法是(居中,宽度比例缩放,标题在下,带标签)。

\begin{figure}[?]
\centering
\includegraphics[width=?\textwidth]{img/?}
\caption{?}
\label{?}
\end{figure}

浮动体(表格、图片)排版技巧

LaTeX 支持自动对表格、图片生成引用编号。在定义表格或图片时使用\label{xx}为其命名,即可在正文中使用\ref{xxx}为其生成引用编号。例如“图\ref{a.png}所示"在正文中可能会被替换为”图1所示“。如需修改1为汉字,方法待补充。实际上是在对浮动体编号,因此不要混用浮动体,更不能不用浮动体

在表格或图片浮动体中,可以使用<placement>参数来设定浮动体位置。在设定时,遵从以下规则:

参数含义
h当前位置(上下文位置)
t顶部
b底部
p单独成页
!忽视限制
  • 其默认参数是 tbp
  • 单行排版时:由于 LaTeX 机制,如果有特殊需求让图片插入在特定上下文位置,则推荐使用 htbp!,如果没有特殊需求,则使用 tbp! 即可。通常不需要让图片在特定上下文位置。
  • 多栏排版时:见多栏排版。

如果需要其强制固定在当前位置,则使用参数“H"。(需要引用float宏集)。

多栏排版

推荐的方法是引用宏集 multicol 并在需要分栏时使用 \begin{multicols}{栏数} 环境。

在多栏排版中,浮动体(图片、表格)的使用较为复杂。

如果浮动体的长宽比超过的屏幕的长宽比(过宽),建议将浮动体跨栏排版。即使用table*figure*代替原本的tablefigure。或者在浮动体中结束molticols环境也是另一种解决方法。

否则,建议在<placement>参数中使用H,将其强制固定在上下文位置。(需要引用float宏集)。

标题页/页码/页眉页脚

尽管 LaTeX 本身提供了这些功能,但是更加推荐的方法是,在最终完成论文后再使用其他软件后期添加。

推荐的在线网站是 www.ilovepdf.com。

当然,各种pdf编辑软件都可以达到这样的要求。

推荐使用后期软件的原因是,许多情境下都需要插入特定的几个页面(例如现成的版权页或信息页),因此导致与LaTeX联动非常复杂。

页边距与页面大小

对于调整页边距而言,LaTeX 原版的设置较为繁琐。但是可以调用geometry宏集。此外,geometry本身也提供了调整页面大小的方法。

通常一份文档的页边距或页面大小不会变化,因此可以在调用宏集时直接设定好页边距或页面大小。例如:

\usepackage[a4paper,hmargin=2.5cm,vmargin=2.5cm]{geometry}
\usepackage[a5paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}

如果需要在页面中改变页边距或页面大小,则可使用~,例如

\geometry{a4paper,left=2cm,right=2cm,top=1cm,bottom=1cm}

具体的使用方法可以参考geometry宏集的文档,通常不会用到更高级的设置。