用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的建立。

文件结构:

12

其中:

  1. 主文件中的 config文件为控制一级目录的配置文件,主要用来控制Section的输出。内部填写的名字代表着一个一级目录。该项需要使用者自行进行更改。
  2. 主文件中的 headtailmain.cpp文件不建议进行修改,直接使用即可。如果有意对生成的tex文件进行自定义修改,可以修改head以及tail文件。如果发现编译运行main.cpp文件时发生错误,可以根据main.cpp中的注释进行一定程度上的修改。
  3. 一级目录中的config文件为当前目录的配置文件,主要用来控制Subsection的输出及判定是否存在Subsubsection。该文件存在四个参数:

\[<二级目录名称> <代码文件> <tex文件> <三级目录名称> \]

  • \(<二级目录名称>\):在<>内部填写当前你需要的二级目录(即Subsection)的名称
  • \(<代码文件>\):在<>内部填写在当前二级目录中,你所需要插入的代码(支持.java/.cpp/.py文件)。如果当前状态下无需代码,则在<>中间留空(如果没有后面两个参数,则可以直接省略<>)
  • \(<tex文件>\):在<>内部填写在当前二级目录中,你所需要插入的说明文件.tex.如果当前状态下无需代码,则在<>中间留空(如果没有最后一个参数,则可以直接省略<>)
  • \(<三级目录名称>\):如果你需要生成一个三级目录,则你只需要在此项中填写于\(<二级目录名称>\)相同的名称。注意:此时填写的名字代表的是一个二级目录,(是一个文件夹),此时第二个以及第三个参数需要留空
  1. 二级目录中的config文件配置跟上述相同,只需要照葫芦画瓢即可。

使用:

准备:

ACM-ICPC模版库、g++环境、Latex发行版软件

Linux

直接make就可以了(如果没有安装Latex,需要自行安装一下texlive-full)

Windows

因为需要支持中文,故需要将Windows系统编码改为utf-8!!

之后编译运行main.cpp,之后就会生成一份template.tex文件,最后只需要用Latex使用XeLatex编译生成pdf文件即可。

样式:

封面:

uploading-image-150610.png

代码样式:

uploading-image-551524.png

后记

用Latex来创建ICPC的模板非常容易,我们只需要根据上述的格式,梳理好每个配置文件之间的关系,最后只需要运行c++文件即可以自动生成Latex文件,最后编译Latex文件即可获得一份漂亮的模板啦。同时,如果觉得上述的pdf的格式还是不符合自己的心意,可以通过修改head以及tail文件对tex文件进行修改。

另外,如果在使用过程中遇到一些神奇的bug,可以去github给我留言。

posted @ 2019-06-05 13:49  ChenJr  阅读(4170)  评论(4编辑  收藏  举报