使用 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} 等命令。
在引用文献、公式、图表、使用缩写等情况下,通常在连接处添加硬空格符号,以避免断行时内容分离。示例如下:
| |