Linux 下的 LaTex 写作工具链(1)

1,487 阅读6分钟

写在前面

LaTex和Word终究是个工具,在恰当的环境下只有谁比谁更合适。罗列再多的优缺点,缺少具体使用场景谈论谁更优秀,可以取代谁都是无稽之谈。

LaTex使用场景很明确,千言万语汇成一句话就是:如果你将要书写的文档提供了Latex模板,那么LaTex应该是比较适合的选择。具体情况包括 美国数学建模比赛、各种期刊论文。

目的

读研时候免不了写文章,写文章免不了写公式,写公式免不了用到LaTex。然而目前网上的LaTex教程很多的只是简单介绍安装,基础语法。我想开启这个系列,顺便记录一下自己写文章的工作流程。所谓的流程,除了介绍LaTex的环境安装和语法之外,还有

对于新手来讲,最好直接使用 Overleaf (www.overleaf.com/), 但是Overleaf对我而言存在下面问题:

  • 没办法很好得和文献管理工具进行整合
  • 免费版不提供版本控制
  • 总会有需要没有网络也能编写论文的时候

所以,还是有必要做一个本地的环境。

环境安装

这一部分与其他网上给出的教程不同,这里会提供中文字体解决思路。

环境:

OS: Manjaro Linux x86_64
Kernel: 5.4.23-1-MANJARO
DE: Plasma
WM: KWin

人生苦短,我用 Manjaro。

texlive 安装

请放弃使用 CJK,ctex等套件,这里首推 texlive。

最新版的 Manjaro 已经自带好用的图形化包管理器pamac, 在这个包管理器里面选择组,安装 texlive-most 组所有包, 以及 texlive-lang 组的 texlive-langchinese 包。


整个过程可能会失败几次,有可能是因为没有使用国内源。可以使用这个命令设置国内源: sudo pacman-mirrors -i -m rank -c China ,然后再试。
这样 texlive 环境就安装完了。

中文字体解决

虽然 Manjaro 包管理器有字体,但是有时候通过包管理器安装的字体有时候也会有问题。所以最稳妥的方法就是手动copy字体到linux的字体目录 /usr/share/fonts。

下面的行为涉嫌侵犯微软版权,请自行斟酌利弊,悬权而动。

windows字体目录(`C:\WINDOWS\Fonts`)复制一份放到 linux 字体目录 `/usr/share/fonts` 。再次提醒,这个行为是侵犯微软版权的行为,请自行斟酌利弊。

上面那一段是写给有需要的人。而我自己习惯上会使用 adobe 开源字体 (https://gitee.com/MaiLunjiye/adobeFonts)当把需要的字体放到linux字体文件夹后就可以执行下面命令添加字体缓存。

sudo fc-cache -fv

输出很多, 可以根据输出结果查看是否添加成功。

...................
/usr/share/fonts/attarch/adobeFont: 正在生成缓存,新增缓存内容:4 个字体,0 个目录

zotero 安装

zotero 是一个开源的文献管理器,除了管理文献之外,还能方便为我们生成需要的文献引用。当然其他文献管理器也是可以的。 zotero官网 www.zotero.org/ ,注册帐号可能需要科学上网。

zotero安装好之后记得安装浏览器插件



此外还需要安装一个zotero插件 Better BibTex for Zotero github.com/retorquere/…,以便配合后面的文本编辑器。

具体安装方法: 菜单栏 -> 工具 -> 插件, 然后把插件文件拖入窗口即可。之后重启zotero,就可以配置 better bibtex。

vscode 以及 LaTex 插件安装

如果是 Manjaro 软件仓库里面有,直接使用包管理器搜索安装就行了。此外还可以去官网 (code.visualstudio.com/Download) 下载对应的二进制包。我想这个应该不是什么大问题。

vscode 之所以流行,在于其拥有良好的插件生态,大量优秀的插件为这个文本编辑工具注入强大的生命力。对于LaTex写作而言,有一个插件是必须的 LaTex Workshop。具体安装就是点击vscode左侧导航栏的插件管理按钮,搜索 LaTex Workshop 点击安装。

安装成功后就是配置插件,按下快捷键 Ctrl+Shift+p 输入 Preference:Open Setting (json)

然后打开,添加以下配置信息:

"latex-workshop.view.pdf.viewer": "tab",  
"latex-workshop.latex.outDir":"build",  
"latex-workshop.latex.tools": [    
    {
    "name":"latexmk",      
    "command":"latexmk",
    "args":[
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "--xelatex",
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    }
  ],  
"latex-workshop.latex.recipes": [
    {
      "name":"Latexmk",
      "tools":["latexmk"]
    }
]

如果报错,注意是不是末尾逗号等格式问题。

这里我需要说一下这个配置信息。这个配置是我自己使用的配置,与目前网络上能找到的使用

“xelatex->bibtex->xelatex”这些长配置不同,并且我要吐槽网络上的配置基本都是直接摘抄LaTex Workshop 官方给的教程的,丝毫没有考虑汉字兼容问题(比如使用pdftex渲染)。 我这里直接使用texlive包自带的构建工具latexmk,并且指定xelate渲染,一条命令实现三条命令的效果,一般情况下安装texlive之后都会带有这个命令,彻底告别修改一次还要执行3次命令的问题,简直就是懒人福音。

同时我的配置文件还指定了所有文件都输出到指定目录,这样可以避免工作目录被一大堆编译中间文件占据,给版本控制造成困难。

这么配置完成后,vscode 就拥有了自动编译,自动预览的功能,简直不要太方便。

HelloWorld

大体环境已经可以了,来个hello world测试一下

首先需要创建一个目录,我个人习惯的目录结构是这样的(实际上会根据需要进行扩充)

.
├── build
├── fig
└── main.tex

build 就是我们指定的输出目录,fig用于放图片信息,main.tex 就是我们的主tex文件。

在main.tex 写入下面的测试代码:

\documentclass{article}
\usepackage[fontset=adobe]{ctex}
\begin{document}

你好,世界! \\

Hello,World! \\

\end{document}

如果vscode配置正确,在你保存 Ctrl+s 时候,就会自动编译,点击右上角有个预览pdf按钮,每一次更改都会重新载入预览,基本就和实时预览差不多了。


对于这个代码,有必要说一下 \usepackage[fontset=adobe]{ctex}这一行。 ctex 包是提供中文输入的支持,fontset 参数用于指定使用哪些字体。默认环境下ctex包在linux中使用的是Fandol 字体,windows环境下使用的是 微软的字体,为了一致性,我个人会指定使用adobe字体。


结果如下


可见,所有输出文件都放到build目录下,并没有污染主目录。

至此,Latex 书写环境基本完成。下一篇文章将会详细讲述工具链的使用。