也不知道怎么想的,原来用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}
效果如下:
除了以上宏包提供的特殊操作外,我还使用到了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://skyblond.info/about.html 处获得。
码了码了,最近实验也做得差不多了准备写论文了,准备就用这个了,另外不知有无专业点的绘图软件的分享呢#(脸红)
绘图也可以用LaTeX啊,比如TikZ包和pgfplots包,效果还行,就是一张图随便一画一天就没了。
效果表不错,大方,简洁,低调。文本排版,我用得最多的是WORD了。
嗯,WORD一般来说就算够用了,LaTeX配置起来有些麻烦,不像Word那样好用