使用 VSCode 编写 LaTeX 项目的一些技巧
表格单元格多行内容
在 LaTeX 中,表格中的单元格内容默认是单行显示的,如果内容过长,会导致表格宽度过宽。此问题有两种解决方案:
- 使用
makecell
宏包中的\makecell
命令来实现多行内容。 - 使用
p{width}
来指定单元格宽度,其中width
为单元格宽度,如p{3cm}
。 - 使用
m{width}
来指定单元格垂直居中,其中width
为单元格宽度,如m{3cm}
。 - 结合
m{width}
的自定义命令
使用 makecell
makecell
宏包提供了 \makecell
命令,可以在表格中的单元格中插入多行内容。使用方法如下:
|
|
但 makecell
宏包的缺点是,如果表格中有多个单元格需要多行内容,需要在每个单元格中都使用 \makecell
命令,这样会使得代码变得冗长。同时,\makecell
命令需要手动在需要换行的地方插入 \\
,这样会使得表格内容发生变化时难以维护。
使用 p{width}
p{width}
是 LaTeX 中的一个列格式,可以指定单元格的宽度。使用方法如下:
|
|
使用 p{width}
后,单元格中的内容默认顶部对齐且两端对齐,如果需要垂直居中,需要手动添加 \centering
命令。
使用 m{width}
m{width}
是 LaTeX 中的一个列格式,可以指定单元格的宽度并且垂直居中。使用方法如下:
|
|
使用 m{width}
后,单元格中的内容默认垂直居中且两端对齐,如果需要左对齐,需要手动添加 \raggedright
命令。
结合 m{width}
的自定义命令
为了方便使用 m{width}
列格式,同时实现更好的代码复用,可以定义以下命令用于在表格中插入多行内容。使用方法如下:
|
|
上述命令中,L
里通过 \raggedright
指令让文字左对齐且右边不做对齐(即“ragged right”),而 p{width}
默认会进行左右对齐(两端对齐)或者受表格全局设置影响。C
里通过 \centering 指令让文字居中对齐,R
里通过 \raggedleft
指令让文字右对齐且左边不做对齐(即“ragged left”)。
使用方法如下:
|
|
通过定义 L{width}
、C{width}
、R{width}
三个命令,可以快速实现在表格中插入多行内容,并且与默认的 l
、c
、r
类似,可以显式指定内容的对齐方式。
正文及表格自动格式化
在 VSCode 编写 LaTeX 项目中的表格时,最常用到的功能即为自动格式化。LaTeX 文件自动格式化依赖 VSCode 中的 LaTeX Workshop 插件,在使用格式化前请先安装该插件。
在 Windows 平台中格式化的快捷键为 Alt
+ Shift
+ F
。格式化时,VSCode 会根据 &
与 \\
的位置自动调整表格的对齐方式。通常情况下,表格中的每一行内容末尾都会有 \\
符号用于标志换行,而每一列内容之间都会有 &
符号用于标志列的分隔。
但在某些情况下,我们可能使用 \makecell
命令手动插入 \\
符号用于单元格内容手动换行。而在格式化时,VSCode 会根据 &
与 \\
的位置自动调整表格的对齐方式,在使用 \makecell
的情况下,自动格式化功能可能会依据第一个 \\
作为表格行末,这时候我们可以通过改变 LaTeX Workshop 设置来调整格式化的方式。
通过在 LaTeX Workshop 设置中指定按照每行最后一个 \\
作为右边界格式化表格,即可解决上述问题。打开 VSCode 设置,搜索 latex-workshop.formatting.latexindent.args
,点击 Add Item
选项,添加以下内容:
|
|
MacOS 无法格式化
若格式化时 VSCode - Output - LaTeX Workshop 中出现以下错误内容,则说明缺少 File::HomeDir
perl 模块。
stderr: Can’t locate File/HomeDir.pm in @INC (you may need to install the File::HomeDir module) (@INC contains:…
可通过以下命令安装,安装完成后重启 VSCode 即可。
|
|
在安装上述 File::HomeDir
时,可能会因为未安装 xcode-command-line-tools
而报错,此时需要先安装 xcode-command-line-tools
。报错信息如下:
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
使用以下命令安装 xcode-command-line-tools
,执行命令后按照弹窗指示安装,然后重复上述安装步骤即可。
|
|
表格列分隔宽度
在 LaTeX 中,表格中的列默认是没有分隔线的,如果需要添加分隔线,可以使用 \hline
和 \cline{x-y}
命令添加水平分隔线,或者使用 |
符号添加垂直分隔线。但在某些情况下,我们可能需要调整列分隔线的宽度,这时我们可以手动指定列分隔线的宽度。
在 LaTeX 中,可以通过 \tabcolsep
命令来指定分隔线的宽度。使用方法如下:
|
|
在上述代码中,\setlength{\tabcolsep}{10pt}
命令用于设置分隔线的宽度为 10pt
。在表格中,每个单元格的左右两侧都会有 10pt
的空白,即分隔线的宽度为 10pt
。
自带类型引用 \cref
在 LaTeX 中,引用文献、公式、图表等内容时,通常使用 \ref
命令。但 \ref
命令只能引用编号,无法引用内容的类型(如“figure”、“section”、“table”等)。为了引用内容的类型,可以使用 cleveref
宏包中的 \cref
命令。使用方法如下:
|
|
在上述代码中,\cref{fig:example}
命令会输出 figure 1
,即引用了图表类型。但在某些情况下,我们可能需要引用内容的类型的缩写(如“fig”、“sec”、“tab”等),这时我们可以通过改变 \cref
命令的设置来实现。
通过在 LaTeX 文件中添加以下代码,即可实现引用内容类型的缩写:
|
|
在上述代码中,\crefname{figure}{fig.}{figs.}
命令用于设置引用图表类型的缩写为“fig.”、“figs.”,使用方式仍为 \cref{fig:example}
。\Crefname{figure}{Fig.}{Figs.}
命令用于设置引用图表类型的缩写为“Fig.”、“Figs.”,使用方式为 \Cref{fig:example}
。
若只需要大写的类型缩写,则可直接将 \crefname
中的 fig.
改为 Fig.
,figs.
改为 Figs.
。如下:
|
|
常用缩写定义
在 LaTeX 中,有一些常用的缩写,如“e.g.”、“i.e.”、“etc.”等,这些缩写在文档中经常使用,为了方便使用,可以在 LaTeX 文件中定义这些缩写。使用方法如下:
|
|
在上述代码中,分别定义了 \eg
、\ie
、\etc
、\etal
四个命令,用于输出“e.g.”、“i.e.”、“etc.”、“et al.”。在文档中使用时,只需要调用相应的命令即可。
空格的使用
在 LaTeX 中,空格的使用是非常重要的,不同的空格符号会产生不同的效果。在 LaTeX 中,空格符号有以下几种:
- 空格符号:
- 硬空格符号:
~
(波浪线键) - 空格命令:
\quad
其中,空格符号是最常用的空格符号,用于在单词之间添加可断行空格。硬空格符号用于在单词之间添加不可断行的空格,即在硬空格符号处断行时,硬空格符号不会断开。空格命令 \
用于在单词之间添加空格,效果与空格符号相同。空格命令 \quad
用于在单词之间添加一个较大的空格。若需要添加更大的空格,可以使用 \qquad
、\hspace{1cm}
等命令。
在引用文献、公式、图表、使用缩写等情况下,通常在连接处添加硬空格符号,以避免断行时内容分离。示例如下:
|
|