zoukankan      html  css  js  c++  java
  • 用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给我留言。

  • 相关阅读:
    ExtJs学习准备工作(二) firebug firefox插件的安装 全新时代
    Hibernate系统中调试SQL方式 全新时代
    Eclipse工程出现红叉导致无法编译的问题 全新时代
    javascript 取table中内容
    Asp.Net中清空所有textbox的几种方法
    SQL Server:使用系统存储过程实现的通用分页存储过程
    C# 检查网络是否连通
    sq分页原理
    SQL Server:日志备份和差异备份还原中的常见问题示例
    javascript:连接数据库
  • 原文地址:https://www.cnblogs.com/Chen-Jr/p/10979145.html
Copyright © 2011-2022 走看看