天空 Blond - LaTeX
type: channel
link: https://skyblond.info/tag/LaTeX/
items: 【歪门邪道】2021年的中文LaTeX排版指北

【歪门邪道】2021年的中文LaTeX排版指北
type: item
date: 2021-07-24T16:48:10+08:00
description: 也不知道怎么想的，原来用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 \\ 实际为病毒 &…