MENU

【歪门邪道】2021年的中文LaTeX排版指北

July 24, 2021 • Read: 319 • 瞎折腾

也不知道怎么想的,原来用Markdown用得挺好,最近突然想用LaTeX做小学期的报告了。我以前也用过LaTeX排版系统,效果非常棒,但是用起来也十分麻烦,尤其涉及到中文排版的时候。上一次用还是2018年高考结束后,那个时候还是CTeX。这个发行版本在2021年已经算是老古董了,因此本文记述我在编写报告时使用到的一些技巧和配置。



环境

关于环境,我的是Windows 10专业工作站版21H1,内部版本号19043.1110。LaTeX发行版本使用的MiKTeX,安装了ctex宏包(与CTeX发行版本是两回事儿)。

关于编辑器,我是用了最趁手的IDEA,安装了TeXiFy插件,可以完美支持MiKTeX发行版本,并且还有代码高亮,依赖宏包导入之类的功能。

文档配置

关于小学期的平时报告,由于分成了六次实验,所以使用了ctexrep文档类。其中有几个默认参数不适合打印,所以额外修改了一下:

%! Language = Chinese simplified
%! compiler = XeTex

% Preamble
\documentclass[UTF8,twoside,openright]{ctexrep}

\title{《*》课程报告}
\author{班级\\姓名\\学号}
\date{2020年7月3日}

% Packages
\usepackage{amsmath}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{booktabs}

% Document
\begin{document}
    \pagestyle{empty}
    \maketitle
    \tableofcontents

    % 正文开始
    \chapter{标题}\label{ch:Title}
    \pagestyle{fancy}
    \setcounter{page}{1}

\end{document}

前两行是一些注释,其中提到最好使用XeTeX引擎来编译文章,因为该引擎原生支持Unicode字符。第五行使用CTeX宏包提供的报告文档类,设置文章编码为UTF-8,twoside表示文档使用双面打印,因此排版时将根据奇偶页数向左/右产生偏移,让出装订线。openright表示每一章起始在右手,即奇数页,这样如果上一章提前结束,XeTeX将自动插入空白页。额勒金德。

第七行设置了文档标题,第八行设置作者,作者字段中的\\表示换行,这样的话将班级、姓名、学号分成三行来显示,看起来比较舒服。第九行设置了日期,这三行将在后面的\maketitle指令中用到。

12~15行是一些宏包,amsmath是数学公式的宏包,在Markdown中的公式写法与之类似:$ something $表示单行公式,而\[ ... \]表示多行公式,如果想要对公式编号,供后续引用的话,需要使用这样的写法:

    模型损失(交叉熵):
    \begin{equation}
        L = -\frac{1}{BatchSize}\sum_{i=1}^{OutputSize} Y_i \cdot logY'_i + (1 - Y_i)log(1-Y'_i)
        \label{eq:cross_entropy}
    \end{equation}
    
    % 后续文段中引用该公式
    损失函数使用交叉熵损失函数,即公式\ref{eq:cross_entropy}。

需要注意的是,类似目录或者\ref的引用,通常需要编译两次才能得到正确的结果。第一次编译会将引用翻译成??,第二次编译才会被替换成正确的公式编号。

fontenc是帮助处理字体的宏包,虽然不太懂什么意思,但是既然别人都写了,我也写上吧。

graphicx是引用图片的宏包,我喜欢将图片居中,所以写起来是这样的:

    \begin{center}
        \includegraphics[width=\textwidth]{assets/image-20210708183520715}
    \end{center}

图片文件的路径是src/assets/image-20210708183520715.png。如果不加方括号里面的宽度限制,默认图片有多大就原封不动的放进来,而设置最大宽度后,图片将保持比例自动缩放,我设置的宽度是与文字同宽,而最外面的center则是让图片居中。

booktabs宏包用于绘制花哨的表格,就是论文中常见的那种三条线就能画完的表格,看起来十分的优雅:

\begin{center}
        \begin{tabular}{cccc}
            \toprule
            \cmidrule{2-4}
            & 预测为新冠 & 预测为健康 & 预测为病毒 \\
            \midrule
            实际为新冠 & 25    & 1     & 4     \\
            实际为健康 & 0     & 30    & 0     \\
            实际为病毒 & 1     & 2     & 27    \\
            \bottomrule
        \end{tabular}
    \end{center}

效果如下:

屏幕截图 2021-07-24 160203.png

除了以上宏包提供的特殊操作外,我还使用到了LeTeX的脚注:

\footnote{脚注内容}

该指令将会自动在当前页面的下方插入一条脚注。

以上这些内容是我在编写报告时用到的。

与Markdown对比

写完了LeTeX,我不禁开始思考我最常用的Markdown和LeTeX之间的差距。可以说平时用起来最顺手的还是Markdown,不需要在界面上点好多设置,通过键入不同的文本就能渲染出丰富的格式,通过替换渲染主题(我使用Typora搭配Opt Autumnus主题)就可以得到漂亮的输出,但是这种输出只适合于在电子设备上阅览。例如我的网站上的文章也都是Markdown写的,效果还不错,可是如果你试图把他打印出来的话,可能Word更适合一些。Word的定位更像是面向一般用户,就2021年来说,Word的公式编辑器,相对丰富的排版设置,虽然我搞不懂绝大部分,但是使用Word也能排版出可打印,好看且易于编辑的实验报告。

这样一说,在2021年LaTeX可能并不是硬性需求,但是从整个系统来看,通过文本源代码生成出最终结果,这种可复现性,应该更贴近平时写程序的体验,Word那种手一滑不知道改了什么就全废了的操作,以前也不是没遇到过。所以我更愿意把LaTeX看作是可打印的Markdown,因为MD本身不适合打印,它根本不关心排版与分页之类的东西。对应的,如果要照顾排版和分页那些东西,就不得不繁琐一些。

参考文献

主要的参考文献是「一份不太简短的LATEX2ε 介绍」,其中介绍了关于绝大部分关于LaTeX排版和中文CTeX宏包的使用,至于其他文档之外的使用,谷歌通常能够解决大部分问题。


生活不易,一点广告


知识共享许可协议
【歪门邪道】2021年的中文LaTeX排版指北天空 Blond 采用 知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://www.skyblond.info/about.html 处获得。

Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

4 Comments
  1. 码了码了,最近实验也做得差不多了准备写论文了,准备就用这个了,另外不知有无专业点的绘图软件的分享呢#(脸红)

    1. @硫酸钡绘图也可以用LaTeX啊,比如TikZ包和pgfplots包,效果还行,就是一张图随便一画一天就没了。

  2. wys wys

    效果表不错,大方,简洁,低调。文本排版,我用得最多的是WORD了。

    1. @wys嗯,WORD一般来说就算够用了,LaTeX配置起来有些麻烦,不像Word那样好用