本文章还在施工中

前言

之前一直有用 LaTeX\LaTeX 去生成 Word 的数学公式(谁让 Word 太僵硬了呢),用 manim Animation engine for explanatory math videos 的时候也经常接触 LaTeX\LaTeX 的数学公式,再加上某个小可爱的不懈安利,我也索性就试试配置吧。

配置

MikTex 以前装过,而最近写博客用 VSCode 觉得也是非常好看实用,所以这次配置我选择了 VSCode + MikTex 方案。

  • MikTex

    对于 MikTex ,在下载完成后,可以通过图形界面 MikTeX Console 进行更新。安装完成后,一定要添加环境变量。使用 TeX Live 应该是差不多的,同样要注意环境变量的问题。

  • VSCode

    VSCode 的下载就没什么好说的了。下载完成后,安装 LaTeX Workshop 拓展,默认情况下,该拓展会预定义几种编译方案,但是对于一些复杂的文件,往往需要几次,其编译链不一定符合要求,因此需要在 VSCodesettings.json 文件中进行配置。以下是我的一点简单的配置:

    {
    "[latex]": {
    "editor.wordWrap": "on"
    },
    "latex-workshop.latex.autoBuild.run": "never", //禁止保存文件时自动build
    "latex-workshop.intellisense.package.enabled": true, //自动补全

    //定义编译命令
    "latex-workshop.latex.tools": [
    {
    "name": "XeLaTeXmk",
    "command": "latexmk",
    "args": [
    "-xelatex",
    "-synctex=1",
    "-shell-escape",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOCFILE%.tex"
    ]
    },
    {
    "name": "LuaLaTeXmk",
    "command": "latexmk",
    "args": [
    "-lualatex",
    "-synctex=1",
    "-shell-escape",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOCFILE%.tex"
    ]
    },
    {
    "name": "xelatex",
    "command": "xelatex",
    "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "-shell-escape",
    "%DOC%"
    ]
    },
    {
    "name": "lualatex",
    "command": "lualatex",
    "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "-shell-escape",
    "%DOC%"
    ]
    },
    {
    "name": "bibtex",
    "command": "bibtex",
    "args": [
    "%DOCFILE%"
    ]
    }
    ],
    //定义编译链
    "latex-workshop.latex.recipes": [
    {
    "name": "xelatexmk",
    "tools": [
    "XeLaTeXmk"
    ]
    },
    {
    "name": "lualatexmk",
    "tools": [
    "LuaLaTeXmk"
    ]
    },
    {
    "name": "xelatex ➞ bibtex ➞ xelatex × 2",
    "tools": [
    "xelatex",
    "bibtex",
    "xelatex",
    "xelatex"
    ]
    },
    {
    "name": "lualatex ➞ bibtex ➞ lualatex × 2",
    "tools": [
    "lualatex",
    "bibtex",
    "lualatex",
    "lualatex"
    ]
    }
    ],
    //设定清理文件的类型(ctrl+alt+c:清除辅助文件)
    "latex-workshop.latex.clean.fileTypes": [
    "*.aux",
    "*.bbl",
    "*.blg",
    "*.idx",
    "*.ind",
    "*.lof",
    "*.lot",
    "*.out",
    "*.toc",
    "*.acn",
    "*.acr",
    "*.alg",
    "*.glg",
    "*.glo",
    "*.gls",
    "*.ist",
    "*.fls",
    "*.log",
    "*.fdb_latexmk",
    "*.nav",
    "*.snm",
    "*.synctex.gz",
    "*.bcf",
    "*.run.xml"
    ],
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.intellisense.citation.label": "title"
    }

    可以参考以下网站,它有关于各配置项含义的讲解:

简单使用

前几天在网上高强度冲浪的时候,发现了武汉大学的论文模板。

你别说,还挺不错。不过要用起来还要花点时间琢磨。

该部分主要围绕该论文模板展开,可能并不适用于其他情况。

文献管理

BibTeX

BibTeX 是最为流行的参考文献数据组织格式之一。它的出现让我们摆脱手写参考文献条目的麻烦。我们还可以通过参考文献样式的支持,让同一份 BibTeX 数据库生成不同样式的参考文献列表。

Zotero 导出 .bib 文件

Zotero 是一款优秀的文献管理软件,真的超好用啊!尤其是它的浏览器插件,“抓取”文献很方便!并且 Zotero 可以通过账号在不同电脑上同步,能支持很多的拓展插件。

Zotero 可以导出分类或导出条目,对应的是一组文献和单个文献。右击菜单中选择导出XX,就可以导出相应的 .bib 文件。

但是,它默认导出的 .bib 文件有很多不必要的信息。这时,我们可以使用 Better BibTeX for Zotero 插件优化 .bib 文件的导出内容。安装插件的步骤很简单,安装完成后,在首选项-> Export -> Fields 中,可以设置要过滤的项目,这样导出的 .bib 文件就可以直接拿去使用了。

知网导出 .bib 文件

想要从知网的文献引用中获取 .bib 文件,需要利用脚本进行提取。这里推荐使用 Google ChromeTampermonkey 拓展,使用油猴脚本实现提取。

在模板中使用 .bib 文件

\whusetup{⟨键值列表⟩} 的键值 element/bibliography,设置 .bib 文件。可以是单个文件,也可以是用英文逗号隔开的一组文件。如果选定了 bib-backend = biblatex,数据源必须明确给出 .bib 后缀名。设置好 .bib 文件的路径后,模板就会生成 参考文献章节,引用文献会按要求的格式显示并自动编号。

\documentclass[type=bachelor]{whu-thesis}
\whusetup
{
info =
{
title = {武汉大学学位论文 \LaTeX{} 模板\\使用示例文档},
title* = {An Introduction to LaTeX Thesis Template\\of Wuhan University},
student-number = {xxxxxxxxxxxxx},
school = {院系名称},
author = {作者姓名},
author* = {Your Name},
subject = {学科},
major = {专业名称},
advisor = {教师姓名 , 职称},
direction = {研究方向},
% date = {2021/5},
keywords = {关键词 1 , 关键词 2 , 关键词 3 , 关键词 4 , 一个非常非常,非常非常长——的关键词 5},
keywords* = {key word 1 , key word 2 , key word 3 , key word 4 , {and a very very, very very long key word---the key word 5}},
},
style =
{
graphics-path = {{figures/}{data/}},
list-of-figures,
list-of-tables,
},
element =
{
innovation = {pages/innovation},
abstract = {pages/abstract},
abstract* = {pages/enabstract},
bibliography = {ref/refs , ref/thu},
achievements = {pages/achievements},
thanks = {pages/thanks},
appendix = {pages/appendix}
}
}

\begin{document}
%%----------- 主体部分 ----------- %%
\include{pages/chapter1}
\include{pages/chapter2}
\include{pages/chapter3}
\include{pages/chapter4}
\end{document}

在正文中使用 \cite{⟨citation⟩} 进行引用,可以自动匹配编号。具体请参见文档 whu-thesis-doc.pdf 的相关说明。

公式插图表格

这一部分其实参考 whu-thesis-demo.tex 的源码和 whu-thesis-demo.pdf 就可以理解大部分使用方法了。

公式的使用

这部分包括行内公式、行间公式与公式引用等。

  • 行内公式:

    $a^2+b^2=c^2$
    \(a^2+b^2=c^2\)
    \[a^2+b^2=c^2\]
  • 行间公式,让公式单独一段:

    还可以让公式单独一段:
    \begin{equation}
    \sin^2{\theta} + \cos^2{\theta} = 1
    \end{equation}
    注意,公式前请不要空行。

    为了格式的正确,公式前后的空行问题一定要注意。语意是连续的情况下,公式后面的文字是顶格开始的,不应当空行。

    行间公式还可以多行对齐:

    \begin{equation}
    \begin{aligned}
    f_1(x) & = (x + y)^2 \\
    & = x^2 + 2 x y + y^2
    \end{aligned}
    \end{equation}
  • 公式引用

    使用 \label{⟨标签名⟩} 为公式添加标签。使用 \eqref{⟨标签名⟩} 进行引用。

    可以给公式加上编号
    \begin{equation}
    \sin^2{\theta} + \cos^2{\theta} = 1 \label{eq:pingfanghe}
    \end{equation}
    并通过添加的标签在正文中引用公式,如式\eqref{eq:pingfanghe}。

插图的使用

这部分是插图的使用,包括设置图片的大小、位置及分图等:

\begin{figure}
\centering
\includegraphics[width=0.3\textwidth]{whulogo.pdf}
\caption{插图示例}
\label{fig:whu}
\end{figure}
  • 设置大小

    图像可以使用 width 设置宽度。[width=\textwidth] 则为一整行。

  • 设置排版位置

    作为浮动体, figure 可以设置排版位置,即使用 [htbp] 设置排版位置:

    \begin{figure}[⟨placement⟩]
    ...
    \end{figure}
  • 分图子图

    如果一个图由两个或两个以上分图组成时,各分图分别以(a)、(b)、(c)… 作为图序,并须有分图题。模板使用 subcaption 宏包来处理。可以参考以下代码:

    \begin{figure}[h]
    \centering
    \begin{subfigure}{0.2\textwidth}
    \includegraphics[width=\linewidth]{whulogo.pdf}
    \caption{武汉大学校徽}
    \label{fig:subfig-a}
    \end{subfigure}\qquad
    \begin{subfigure}{0.7\textwidth}
    \includegraphics[width=\linewidth]{whu.pdf}
    \caption{武汉大学}
    \label{fig:subfig-b}
    \end{subfigure}
    \caption{多个分图的示例}
    \label{fig:multi-image}
    \end{figure}
  • 插图引用

    若要进行引用,也是通过 \label{⟨标签名⟩} 添加标签。并使用 \ref{⟨标签名⟩} 进行引用。

    比如引用上面的两个子图,可以用图~\ref{fig:subfig-a} 和图~\ref{fig:subfig-b}。

表格的使用

这部分包括普通表格(三线表)和跨页表格的使用。

  • 普通表格

    \begin{table}[ht]
    \centering
    \caption{简单表格}
    \label{tab:1}
    \begin{tabular}{|l|c|r|}
    \hline
    我是 & 一只 & 普通 \\
    \hline
    & 表格 &\\
    \hline
    \end{tabular}
    \end{table}

    由示例可知, {|l|c|r|}参数是用于确定文字的对齐方向的。

    作为浮动体, table 可以设置排版位置,即使用 [htbp] 设置排版位置:

    \begin{table}[⟨placement⟩]
    ...
    \end{table}

    如果需要引用表格,方法与之前类似。通过 \label{⟨标签名⟩} 添加标签。并使用 \ref{⟨标签名⟩} 进行引用。

  • 三线表

    \begin{table}[ht]
    \centering
    \caption{一般三线表}
    \label{tab:2}
    \begin{tabular}{ccc}
    \toprule
    姓名 & 学号 & 性别 \\
    \midrule
    张三 & 001 &\\
    李四 & 002 &\\
    \bottomrule
    \end{tabular}
    \end{table}

    三线表中三条横线分别使用 \toprule\midrule\bottomrule。若要添加 m-n 列的横线,可使用 \cmidrule{m-n} :

    \begin{table}[ht]
    \centering
    \caption{占满文字宽度的三线表}
    \label{tab:3}
    \begin{tabularx}{\textwidth}{CCCC}
    \toprule
    序号 & 年龄 & 身高 & 体重 \\
    \midrule
    1 & 14 & 156 & 42 \\
    2 & 16 & 158 & 45 \\
    3 & 14 & 162 & 48 \\
    4 & 15 & 163 & 50 \\
    \cmidrule{2-4} %添加2-4列的中线
    平均 & 15 & 159.75 & 46.25 \\
    \bottomrule
    \end{tabularx}
    \end{table}
  • 跨页表格

    跨页表格常用于附录(把正文懒得放下的实验数据统统放在附录的表中)。下面是跨页表格的一个示例:

    \begin{xltabular}{\textwidth}{CCCCCCCCC}
    \caption{文字宽度的跨页表格示例} \\
    \toprule
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    \midrule
    \endfirsthead

    \multicolumn{9}{l}{接上一页} \\
    \toprule
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    \midrule
    \endhead

    \toprule
    \multicolumn{9}{r}{转下一页}
    \endfoot

    \bottomrule
    \endlastfoot

    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    1 & 0 & 5 & 1 & 2 & 3 & 4 & 5 & 6 \\
    \end{xltabular}

    跨页表格的表头表尾:

    % 这里写第一页表头的内容
    \endfirsthead

    % 这里写之后每一页的表头的内容,可选
    \endhead

    % 这里写第一页表尾的内容,可选
    \endfoot

    % 这里写最后一页表尾的内容,可选
    \endlastfoot