用Latex高效整理你的ACM-ICPC模板
前言
在ICPC比赛前,为了在赛场上比较高效的书写代码,各位ACMer往往会提前准备好一份或是他人整理的,亦或是自己整理的板子。
而在我们整理板子的过程中,因为word文档的局限性,我们往往会对模板的排版而绞尽脑汁,而如果我们花大量的时间在排版上,或许也太过与得不偿失。因此此时就需要我们采用\(\Latex\)这一排版神器来帮助我们高效的整理我们的ICPC板子。
我在浏览了各位大佬的博客后,发现他们所提供的方法虽然已经非常不错,但是都或多或少有一定的缺陷。因此,在他们的博客的启示下,我个人整理并完善了一份我个人认为比较好的一份Latex模板生成器。
项目地址:
地址:https://github.com/Chen-Jr/ICPC-Code-Template-in-Latex
本项目主要以github的另一个项目:https://github.com/jasison27/ACM-ICPC-CodeTemplate-Late 为基础,进行了一定程度上的修改于完善:
- 优化了排版
- 优化了全文的代码显示
- 支持中文
- 可以在每一个Subciton/Subsection/Subsubsection后插入
.tex
文件,用来对当前的模板进行说明。 - 支持subsubsection的建立。
文件结构:
其中:
- 主文件中的
config
文件为控制一级目录的配置文件,主要用来控制Section的输出。内部填写的名字代表着一个一级目录。该项需要使用者自行进行更改。 - 主文件中的
head
、tail
、main.cpp
文件不建议进行修改,直接使用即可。如果有意对生成的tex
文件进行自定义修改,可以修改head
以及tail
文件。如果发现编译运行main.cpp
文件时发生错误,可以根据main.cpp
中的注释进行一定程度上的修改。 - 一级目录中的
config
文件为当前目录的配置文件,主要用来控制Subsection的输出及判定是否存在Subsubsection。该文件存在四个参数:
- \(<二级目录名称>\):在<>内部填写当前你需要的二级目录(即Subsection)的名称
- \(<代码文件>\):在<>内部填写在当前二级目录中,你所需要插入的代码(支持
.java
/.cpp
/.py
文件)。如果当前状态下无需代码,则在<>中间留空(如果没有后面两个参数,则可以直接省略<>) - \(<tex文件>\):在<>内部填写在当前二级目录中,你所需要插入的说明文件
.tex
.如果当前状态下无需代码,则在<>中间留空(如果没有最后一个参数,则可以直接省略<>) - \(<三级目录名称>\):如果你需要生成一个三级目录,则你只需要在此项中填写于\(<二级目录名称>\)相同的名称。注意:此时填写的名字代表的是一个二级目录,(是一个文件夹),此时第二个以及第三个参数需要留空
- 二级目录中的
config
文件配置跟上述相同,只需要照葫芦画瓢即可。
使用:
准备:
ACM-ICPC模版库、g++环境、Latex发行版软件
Linux:
直接make就可以了(如果没有安装Latex,需要自行安装一下texlive-full)
Windows:
因为需要支持中文,故需要将Windows系统编码改为utf-8!!
之后编译运行main.cpp
,之后就会生成一份template.tex
文件,最后只需要用Latex使用XeLatex
编译生成pdf文件即可。
样式:
封面:
代码样式:
后记
用Latex来创建ICPC的模板非常容易,我们只需要根据上述的格式,梳理好每个配置文件之间的关系,最后只需要运行c++文件即可以自动生成Latex文件,最后编译Latex文件即可获得一份漂亮的模板啦。同时,如果觉得上述的pdf的格式还是不符合自己的心意,可以通过修改head
以及tail
文件对tex
文件进行修改。
另外,如果在使用过程中遇到一些神奇的bug,可以去github给我留言。