├── README.md ├── generate.sh ├── header.md ├── src └── 0-一切的开始.md └── template.pdf /README.md: -------------------------------------------------------------------------------- 1 | # ICPC 模板生成工具 2 | 3 | ## 依赖 4 | 5 | - [TexLive](http://tug.org/texlive/) 6 | - [Pandoc](https://www.pandoc.org/) 7 | - [Pygments](http://pygments.org/) 8 | - [pandoc-minted](https://pypi.org/project/pandoc-minted/) 9 | 10 | ```bash 11 | $ sudo apt install pandoc texlive-latex-recommended \ 12 | texlive-latex-extra texlive-fonts-recommended 13 | $ pip install Pygments pandoc-minted 14 | ``` 15 | 16 | ## 使用方式 17 | - 使用 markdown 编辑工具在 `src` 文件夹内编写模板、修改 `header.md` 中的作者信息。 18 | - 运行 `generate.sh` 自动生成 `template.pdf`;各章节会按 `ls` 命令中所列的顺序排序。 19 | - 相关细节需要定制请自行修改脚本和阅读相关文档。 20 | -------------------------------------------------------------------------------- /generate.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | FILENAME=template 3 | SRCDIR=src 4 | OUTPUTDIR=output 5 | 6 | MARKDOWN=$FILENAME.md 7 | TEX=$FILENAME.tex 8 | PDF=$FILENAME.pdf 9 | 10 | rm -rf $OUTPUTDIR 11 | mkdir -p $OUTPUTDIR 12 | 13 | cat header.md > $OUTPUTDIR/$MARKDOWN 14 | for file in `ls $SRCDIR` 15 | do 16 | if [ -f $SRCDIR/$file ]; then 17 | echo "\newpage" >> $OUTPUTDIR/$MARKDOWN 18 | echo >> $OUTPUTDIR/$MARKDOWN 19 | cat $SRCDIR/$file >> $OUTPUTDIR/$MARKDOWN 20 | else 21 | cp -r $SRCDIR/$file $OUTPUTDIR/$file 22 | fi 23 | done 24 | 25 | cd $OUTPUTDIR 26 | 27 | pandoc -F pandoc-minted -s $MARKDOWN -o $TEX --toc-depth=2 28 | sed -i '/^\\maketitle$/i \\\begin{titlepage}' $TEX 29 | sed -i '/^\\maketitle$/a \\\thispagestyle{empty}\n\\\end{titlepage}' $TEX 30 | 31 | xelatex -synctex=1 -interaction=nonstopmode --shell-escape $TEX 32 | xelatex -synctex=1 -interaction=nonstopmode --shell-escape $TEX 33 | xelatex -synctex=1 -interaction=nonstopmode --shell-escape $TEX 34 | 35 | if [ $? -ne 0 ]; then 36 | echo "error" 37 | exit 38 | fi 39 | 40 | cd - 41 | 42 | mv $OUTPUTDIR/$PDF $PDF >/dev/null 2>&1 43 | rm -r $OUTPUTDIR >/dev/null 2>&1 44 | 45 | echo "done" 46 | -------------------------------------------------------------------------------- /header.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Standard Code Library 3 | subtitle: Untitled 4 | author: Untitled University 5 | date: \today 6 | toc: true 7 | geometry: 8 | - top=25mm 9 | - left=25mm 10 | header-includes: 11 | - \usepackage{xeCJK} 12 | - \usepackage{minted} 13 | - \setminted{breaklines} 14 | - \setminted{linenos} 15 | --- 16 | -------------------------------------------------------------------------------- /src/0-一切的开始.md: -------------------------------------------------------------------------------- 1 | # 一切的开始 2 | ## 宏定义 3 | ```cpp 4 | #include 5 | using namespace std; 6 | using ll = long long; 7 | 8 | #ifndef ONLINE_JUDGE 9 | #define dbg(args...) \ 10 | do { \ 11 | cerr << "\033[32;1m" << #args << " -> "; \ 12 | err(args); \ 13 | } while (0) 14 | #else 15 | #define dbg(...) 16 | #endif 17 | void err() { cerr << "\033[39;0m" << endl; } 18 | template