Featured image of post Elegant LaTeX

Elegant LaTeX

How to elegantly use LaTeX to create

# 使用 $\LaTeX$ 优雅地完成创作

$\LaTeX$ 是一个文档准备系统 (Document Preparing System),它非常适用于生成高印刷质量的科技类和数学类文档。它也能够生成所有其他种类的文档,小到简单的信件,大到完整的书籍。 $\LaTeX$ 使用 $\TeX$ 作为它的排版引擎,学习 $\LaTeX$ 是一个漫长而痛苦的过程,我们应该充分利用已知的资料,来尽量完成我们的需求。

# 从安装 $\TeX$ 引擎开始

$\TeX$ 引擎类似于 gcc/g++Python,用于编译 $\LaTeX$ 文档。

不同平台中 $\TeX$ 的安装方法不尽相同,本文提供:Windows11Linux(Ubuntu 22.04)MacOs(12.7)Windows11-wsl2(Ubuntu22.04)的安装方法。

如果你只是想简单体验 $\LaTeX$,可以使用 overleaf 在线编译平台。但出于环境稳定性和数据的安全性等因素,并不建议将其作为主力平台。

# Windows11

进入网站tug.org for windows,点击install-tl-windows.exe下载 $\TeX$ 安装器,然后运行安装即可。

img

不过,这种方法需要一直联网安装,网速不好的环境可以直接下载iso镜像进行本地安装。本文给出清华源镜像地址:mirrors.tuna,下载后缀为.iso的文件(只用下载一个)。

下载完成后双击文件挂载镜像,然后打开镜像文件夹,右键点击install-tl-windows.bat文件,使用管理员打开,然后按照指引安装即可。

最新版本的安装器会自动添加环境变量,安装完成后打开cmd然后输入:

1
tex --version

若能输出 $\TeX$ 版本信息则安装成功:

1
2
3
TeX 3.141592653 (TeX Live 2023/W32TeX)
kpathsea version 6.3.5
Copyright 2023 D.E. Knuth.

# Linux(Ubuntu22.04)

打开终端,然后执行安装命令:

1
2
3
sudo apt update
sudo apt upgrade
sudo apt install texlive-full

等待安装完成即可,安装完成后执行命令:

1
tex --version

若能输出 $\TeX$ 版本信息则安装成功:

1
2
3
TeX 3.141592653 (TeX Live 2023/Debian)
kpathsea version 6.3.5
Copyright 2023 D.E. Knuth.

# MacOs(12.7)

打开终端,然后执行安装命令(推荐安装无窗体版本):

1
brew install mactex-no-gui

等待安装完成即可,安装完成后执行命令:

1
tex --version

若能输出 $\TeX$ 版本信息则安装成功:

1
2
3
TeX 3.141592653 (TeX Live 2023)
kpathsea version 6.3.5
Copyright 2023 D.E. Knuth.

# Windows11-wsl2(Ubuntu22.04)

wsl2中安装方式与在Linux中一样。

# 找到属于你的编辑器

市面上有很多 $\LaTeX$ 编辑器,且与使用的系统有关,下面是一些主观评价:

  • 全平台通用:
    • Vs Code:作为地表最强编辑器,Vs Code拥有非常丰富的 $\LaTeX$ 插件和完备的配置方案,并且可以免费使用,但缺点是配置较为繁琐。
    • Jetbrains: 与Vs Code相对应的是Jetbrains系列, 其虽然也有 $\LaTeX$ 插件,但使用体验非常不好,且其文件管理方式并不适合每个人。
    • Neovim:如果说Vs Code是编辑器中的王后,那么nvim就是国王。nvim可以实现最大程度的自定义编辑方案,拥有海量插件生态,但缺点是学习路线非常陡峭,常人难以驾驭。
    • sublime textnvim固然强大,但其难以上手的特点使得很多人对其望而却步。sublime打破了这个束缚,其界面优雅程度不亚于nvim,也具有丰富的插件来实现你的理想配置,但配置同样较为繁琐,且需要付费。
    • TexStudiotexlive默认自带编辑器,简单好用容易上手,是很多教程的主推编辑器,但笔者认为界面过于丑陋,不建议用。
  • Windows独占:
    • Winedt 11:如果不考虑跨平台,那么Winedt 11就是Windows上的最佳编辑器。这是一款罕见的非所见即所得的编辑器,笔者认为这完美契合了 $\LaTeX$ 的风格,同时其优雅成熟的界面和高度可定制化的功能使其一骑绝尘。但需要付费(169元买断)。

综上所述,笔者最推荐Vs Code,但如果你只有Windows平台的使用需求并不介意一点费用的话,请果断购买Winedt 11。同样的,MacOs也拥有独占编辑器,但笔者没用过,在此不做评价。

关于这些编辑器如何配置,网上的教程有很多,读者可自行查阅。

# 一本教程入门 $\LaTeX$ 语法

对于所有初学者来说,Ishort-zh-cn都是最好的入门教程。在开始你的创作之前,请务必先行完整阅读一遍,并动手尝试书中的案例。

如果你已经完成了所有的案例,相信你已经对 $\LaTeX$ 语法有了简单了解,下面笔者给出一些新手可能遇到的常见问题。但请不要灰心,$\LaTeX$ 的学习是一件持久且困难的事,我们并不需要完全精通,只需要能够达到创作目的即可。

# 打印中文

$\LaTeX$ 默认只打印英文,如果没有合理的设置,.tex文件中的中文将无法正确打印。

从下图可以看出,目前支持全平台通用的方案只有XeLaTeXLuaTeX。因此,主流方案是一般使用xelatex+ctex编译方案,底层调用xeCJK字符集来实现中文打印。

img

使用时只需在导言区加入,编译器会使用默认字体进行编译:

1
2
\usepackage[UTF8]{ctex}
\usepackage{fontspec} % 设置字体

如果要指定字体,则需分别设置font-family

1
2
3
4
5
\usepackage[UTF8, fontset=none]{ctex}  % 清除默认字体
\usepackage{fontspec}  % 设置字体
\setCJKmainfont{SimSun}[AutoFakeBold=true, BoldFont={SimHei}, ItalicFont={KaiTi}]  % 正文字体(宋体,黑体,楷体)
\setCJKsansfont[AutoFakeBold=3]{KaiTi} % 无衬线字体
\setCJKmonofont[AutoFakeBold=3]{SimHei} % 等宽字体

同样的,英文也可以自定义字体:

1
\setmainfont{Times New Roman} % 设置英文字体为新罗马体

详细配置可以参考:LaTex 中文字体配置指南

# 打印数学公式

你是否好奇过数学教材或者论文中复杂的数学公式是如何编写的?答案就是 $\LaTeX$,这也是 $\LaTeX$ 为什么被奉为珍宝的原因之一。

但是笔者并不建议读者专门花时间来学习如何编写 $\LaTeX$ 数学公式,而是利用现成的工具来快速完成你的公式。

  • 在线数学公式生成平台:latexlive可以在线点击生成你所需要的数学公式,但前提是你已经了解了一些复杂数学环境。
  • MathType:如果你是Windows用户,那么强烈建议使用MathType来生成数学公式的 $\LaTeX$ 代码,好处是完全不需要代码基础并且功能十分强大,但是需要付费。
  • mathpix:这是一款专为 $\LaTeX$ 打造的数学公式 OCR 识别器,你可以截屏、拍照、甚至手写数学公式来得到你想要的代码。

# 绘制表格

你一定使用过Excel来绘制表格,但是在 $\LaTeX$ 中绘制表格并不是一件轻松的事情,其中有非常多的坑且几乎每个人都无法避免。

但不用担心,本文为你介绍开源项目 excel2latex。这是一款Excel插件,可以将你在Excel中绘制的表格自动转译为 $\LaTeX$ 代码。

但是这个插件并不是万能的,比如绘制三线表,即使是在Excel中也较为繁琐。因此,最好的处理方式是使用excel2latex插件生成表格主体,然后再自己添加分隔格式。

# 插入图片

绘制表格和插入图片并称为 $\LaTeX$ 中两大天坑,对于图片插入笔者尚未发现有效替代工具,在下文中会给出一些示例代码供读者参考。

# 学会使用代码片段

阅读到这里,相信你已经能够使用 $\LaTeX$ 创作出你自己的内容了。那么你应该不难发现,在创作的时候有很多代码都是可以重复使用的,只需要更改一些参数即可。但是 $\LaTeX$ 并不能像编程语言那样编写函数来实现代码的复用,当然有其他方法来实现(比如编写.sty.cls文件),但这对初学者来说太难了。

因此,有没有一种好的方法可以实现这个需求呢?答案是代码片段(code snippets)。

代码片段可以给你的编辑器添加些许魔力。它如同咒语一般。你只要说出指令(输入前缀),挥动魔杖(按下 Enter 或者 Tab 键),然后神奇的事情就发生在你眼前了。

# Vs Code配置代码片段

点击左下角的设置按钮,然后点击设置用户代码片段:

img

在弹出的窗口中输入latex然后选中即可跳转到latex.json文件,我们可以在这里设置我们的代码片段。

比如这段设置,保存文件后我们只需要在.tex后缀的文件中输入insertImg然后回车就会自动填充以下代码,并且使用tab来依次输入参数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
"insertImg": {
    "prefix": "insertImg",  // 代码片段别名
    "body": [  // 代码片段主体
        "\\begin{figure}[H]",
        "    \\centering",
        "    \\includegraphics[width=0.8\\textwidth]{$1}",  // 参数1:图片路径
        "    \\caption{$2}",  // 参数2:图片标题
        "    \\label{$3}",  // 参数3:图片索引
        "\\end{figure}$0",
    ],
    "description": "insert one img with 0.8 width"
},

# Winedt 设置代码片段

依次点击Option -> Options Interface -> Menus and Toolbar -> Main Menu,修改或添加配置:

1
2
3
4
5
6
ITEM="Figure"
  CAPTION="&Figure"
  IMAGE="Figure"
  MACRO="Exe('%b\Menus\Insert\Image.edt');"
  SHORTCUT="49222::Ctrl+Alt+F"
  REQ_DOCUMENT=1  

然后就可以使用快捷键Ctrl+Alt+F填充插入图片的代码片段。

# 使用模板来专注内容

使用 $\LaTeX$ 来完成创作时,不同的需求的格式要求通常也不同。一般而言,格式的设置复杂且繁琐,如果将大部分时间花在调整格式上面有违 $\LaTeX$ 的初衷。

因此,常见期刊都会提供对应的 $\LaTeX$ 风格模板和示例,其中主要文件通常为:

  • .sty:$\LaTeX$ 样式文件,包含一组宏包和命令,用于定制文档的样式、格式和功能。通常包括:宏包的引入、自定义命令、颜色与字体预设等。
  • .cls:$\LaTeX$ 文档文件,定义文档的整体结构和布局。通常包括:导言区设置、章节标题样式、页眉页脚与文档尺寸预设等。
  • .tex:示例文件,通常会包括论文中会用到的所有样式的示例代码。

阅读示例文件可以让我们快速创作出符合格式要求的作品,让我们不再为格式烦恼,只用专注于内容本身。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy