使用Latex编写论文(pkuthss模板)

这段时间在写毕业论文,使用的是Latex编写,这里记录一下期间遇到的各种问题的解决方法。

Latex 和 Word 的对比

Latex 的优势在于参考文献的管理比较简单。毕业论文要求所有参考文献按照出现顺序进行编号,但是我们在改论文的过程中不可避免会出现添加、删除、调整位置的情况。Word 下面每次手动改参考文献顺序是很痛苦的。虽然有一些第三方工具比如 EndNote 可以帮助解决这个问题,但是……我没用过。
Latex的劣势在于格式管理麻烦,尤其是文中频繁出现公式或转义字符的情况,总是会被打断思路。

编译环境

在线环境可以直接使用 Overleaf。Overleaf的优点在于这是一个在线网站,全平台可用,并且支持多人协作。但是缺点在于其编译速度慢,并且亮色背景我不喜欢。Overleaf可以直接导入网站中的 pkuthss 模板开始写作。

本地环境的优势在于编译速度快,尤其是几十页篇幅的文档。另外编辑环境的背景颜色可以自己定制,可以使用喜欢的Dark主题。
本地环境的配置如下:texlive + vscode + Latex Workshop。

  • texlive 可以到 tug.org 下载对应平台的安装包进行安装,我使用的是 Windows 平台的 Easy Install。安装时间太长,抽空去吃了个午饭。(我其实试过使用 choco 来安装 texlive,不过安装之后感觉缺了一些东西??)
  • 写作环境使用的是 VS Code,程序员都懂。
  • 编译配置的话 VS Code 安装 Latex Workshop即可。

本地项目搭建

首先下载 pkuthss 模板,这里从 GitHub下载
然后是编译命令,Overleaf 里使用的 XeLatex,本地我们也保持一致。
涉及到参考文献 ref.bib 的编译,我们按照 pkuthss 中 main.tex 的提示使用 biber。
最终,项目配置 [.vscode/settings.json] 内容编写如下:

{
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOCFILE%"
            ]
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "xe->bib->xe->xe",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        }
    ]
}

模板修改

版本管理

写一次论文中间可能经过多次修改,如果不做版本管理,得到的可能就是“初稿、修改1、修改2、...、终稿”这样一堆文件。这显然很不程序员。
我们直接初始化一个Git项目来管理版本。
由于Git只适合管理文本文件,这里我们需要将不合适的内容排除。
我们直接使用Github提供的 Tex.gitignore模板 来填写 .gitnore 文件。
可以看到,左侧文件栏里 *.aux 等一系列编译中间文件都变成了灰色,不会进入版本历史。

插入图表目录

有时候图表比较多,老师会建议插入图表目录。
直接使用 \listoffigures 插入图片目录的话,显示出来的图片是 1.1 xxxx 这种格式,我们希望改为 图 1.1 xxxx 这种格式。
操作方法是在 main.tex 中 \tableofcontents(正文目录) 后面加入这样一段:

	{%
	\let\oldnumberline\numberline%
	\renewcommand{\numberline}{\figurename~\oldnumberline}%
	\renewcommand{\listfigurename}{图目录}
	\listoffigures%
	}

表目录同=同理,fugure 改成 table 就可以:

	{%
	\let\oldnumberline\numberline%
	\renewcommand{\numberline}{\tablename~\oldnumberline}%
	\renewcommand{\listtablename}{表目录}
	\listoftables%
	}

插入矢量图

按照规范,写论文时一般应该使用矢量图。
在Word中,我们可以直接画图,或者从 Visio、PowerPoint 中直接粘贴图表,而 Latex 只是一个排版工具,需要从别处导入图片。
我们这里介绍三种导出矢量图的办法:

Excel 导出矢量图

Excel 本身就是矢量的,可以直接把表格导出PDF,也可以把生成的图表导出PDF。

Powerpoint 导出矢量图

需要多张图片拼接,并且图层比较复杂的时候,可以先复制到Powerpoint进行编辑,然后导出 PDF。

draw.io 导出矢量图

更复杂的图像可以使用 draw.io 画图,然后导出矢量图。
draw.io 是一个跨平台工具,可以在浏览器中直接使用,支持 Windows、Linux、MacOS、ChromeOS客户端,同时还有 VSCode 插件,并且是一个开源免费产品,绝对的良心产品!!!
draw.io 支持 【另存为】【svg格式矢量图】、【导出】【pdf】两种创建矢量图的方式。
其中,pdf可以直接在Latex中作为一般图片来插入,是最合适的方案。
到处PDF时,去掉默认的【包含绘图副本】,选择【导出单页】,此时导出的pdf就是只包含绘图区域的尺寸了,可以作为图片插入,不必再次裁剪。

表格缩放

当我们使用 table套tabular插入一个表格时,默认表格宽度是自动收紧到表格内单列最大宽度。
当我们的表格列数比较少的时候,表格会挤在中间的一小块位置,不够美观。
我们希望能够让表格自动扩展到页面宽度,可以使用定宽表格 tabularx 替换 tabular 达到目的。
tabularx 相比于 tabularx 多出一个参数,用于指定表格固定宽度。内容不够时自动填充空格,内容过多时自动表格内换行。
例子如下:

\usepackage{tabularx} % 定宽表格相关
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[!htb]
    \centering
    \caption{示例表格}
    \label{tab:example}
    % \begin{tabular}{ccc}
    \begin{tabularx}{0.9\linewidth}{YYY}
        \toprule
        col1 & col2 & col3 \\
        \midrule
        val11 & val12 & val13\\
        val21 & val22 & val23 \\ 
        \bottomrule
    \end{tabularx}
    % \end{tabular}
\end{table}

X是tabularx提供的一种用于自动扩展表格内容的格式控制。
tabularx依赖array宏包,如果需要定制更多格式,可以参考array的格式控制方式。

持续更新……

posted @ 2022-04-14 17:25  与MPI做斗争  阅读(590)  评论(0编辑  收藏  举报