https://github.com/quark-zju/zm_builder
zm_builder is a ruby script to format code fragments and build them into one pdf file.
https://github.com/quark-zju/zm_builder
Last synced: 3 months ago
JSON representation
zm_builder is a ruby script to format code fragments and build them into one pdf file.
- Host: GitHub
- URL: https://github.com/quark-zju/zm_builder
- Owner: quark-zju
- Created: 2011-10-13T18:02:05.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-10-11T17:14:43.000Z (over 11 years ago)
- Last Synced: 2025-01-08T08:45:52.978Z (5 months ago)
- Language: Ruby
- Homepage:
- Size: 230 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
zm\_builder is a ruby script to format code fragments and build them into one pdf file.
zm\_builder 最初在 2010 年实现,用于浙江大学 ACM/ICPC 集训队模板的自动格式化输出。
依赖
====圆括号中的版本为测试过无问题的版本,使用其他版本也有可能没有问题
软件
----* ruby (1.9.2)
* pygmentize (1.4)
* xelatex (TeX Live 2012) (3.1415926-2.3-0.9997.5)
* fc-match (fontconfig) (2.8.0)
* astyle (2.01)RubyGems
----
* term-ansicolor (1.0.7)字体
----以下为默认字体,由于字体可通过配置更换,所以在存在自定义字体配置时,它们不是必需的
* TeX Gyre Pagella (otf-texgyre)
* Adobe 黑体 Std
* Consolas配置
====
以下环境变量会影响脚本的行为,但皆为可选,空缺时脚本使用默认值* `OUTPUT_PATH`
输出路径,缺省为 `[输入路径]/../build`
* `OUTPUT_FILE`
输出文件名,缺省为 `output`,不需要扩展名
* `PAGE_FOOTER`
页脚文字,可以是 TeX 代码
* `MAIN_FONT`
普通字体,默认为 TeX Gyre Pagella
* `CJK_FONT`
中文字体,默认为 Adobe 黑体 Std
* `MONO_FONT`
等宽字体,默认为 Consolas输入
====输入是有一定组织的文件,参考 `sample/src` 目录
文件夹名
----
* 目前处理一层文件夹,也就是说代码只能放在一层文件夹内,否则会被忽略
* 文件夹名称中如果出现下划线,则生成对应的章和节,否则只有一个章
* 比如,如果有“图论\_匹配”和“图论\_网络流”两个文件夹,则会生成一个名叫“图论”的章,在这一章下面有“匹配”和“网络流”两个节
* 再比如,“数论”和“应用”两个文件夹名称都没有下划线,那么它们是两章
* 以 `.` 开头的隐藏目录或文件会被忽略
* 脚本硬编码了一些目录名和所对应英文名称,影响章节的顺序。新建的目录,会排在后面,如果要修改这种顺序,需要修改代码文件名
----
* 文件名会被当作节或者是节下面的小节标题。其中下划线会被换成空格,请避免在文件名中使用空格,全部使用下划线
* 文件可以有不同的类型,按照后缀来区分,后缀应该是小写字母
* .txt 文件会被当作无格式纯文本填入对应章节,同章节中,这种类型的文件会最先处理
* .tex 文件会被原封不动地当作 TeX 代码填入对应章节,它适合用来写一些带有数学公式等的内容。注意这种类型的文件乱写会最后的生成失败,所以要谨慎
* .c, .cc, .cpp, .java, .pas 这些代码文件会被格式化后填入对应章节,格式化内容主要包括:
* 以 4 个空格作为缩进重新整理整个代码(C 和 Java)
* 语法高亮,其中数字(包括整数和浮点数)会被加上下划线以更好地区分 `1` 和 `l`
* .pdf 文件会被整页插入到对应位置,依然使用主文档的页眉页脚文件内容
----
* .txt 和代码文件中,如果一行超过 88 个字符(一个汉字算做两个字符),会被强制折行,被折行的行最后会有一个 `\ ` 符号
* 除了 .pdf 类型的文件,其他文件必须是 UTF-8 编码输出
====最终输出是一个 pdf 文件,参考 `sample/output.pdf`
用法
====1. 在终端进入输入所在的目录,例如 `sample/src`
2. 执行 `zm_builder.sh`
3. 如果一切顺利的话, `../build/output.pdf` 为输出文件