一个用于生成学术作业的LaTeX模板项目,提供标准化的作业格式和自动化脚本。
这个模板项目旨在为学生提供一个标准化的作业格式,使用LaTeX排版,支持自动生成作业文档并推送到GitHub。
- 标准化格式: 使用LaTeX exam文档类,支持问题、分值和解答
- 自动化生成: 通过脚本快速生成新作业项目
- 课程管理: 一门课的所有作业组织在同一个仓库中
- GitHub集成: 自动创建GitHub仓库并推送代码
- 个性化配置: 可自定义学生信息和课程代码
assignment-template/
├── Template.tex # LaTeX作业模板文件
├── create_assignment.sh # 作业生成脚本
├── setup_github.sh # GitHub仓库创建脚本
├── Course_README_Template.md # 课程README模板
├── .gitignore # Git忽略文件配置
└── README.md # 项目说明文档
使用此模板后,每门课程将有以下结构:
MDS5110/ # 课程仓库
├── README.md # 课程说明文档
├── .gitignore # Git配置
├── Assignment1/
│ └── Assignment1.tex # 作业1
├── Assignment2/
│ └── Assignment2.tex # 作业2
└── Assignment3/
└── Assignment3.tex # 作业3
- 首次创建课程: 创建课程目录、初始化Git仓库、生成第一个作业
- 添加新作业: 在现有课程仓库中添加新的作业目录
- 版本控制: 每个作业自动提交到Git,便于追踪进度
使用 create_assignment.sh 脚本生成新的作业项目:
./create_assignment.sh <课程代码> <作业编号> [输出目录]示例:
./create_assignment.sh MDS5110 1 ~/Desktop这将在指定目录创建一个名为 MDS5110 的课程文件夹,包含:
- 课程README文件
- Assignment1子目录和LaTeX文件
- Git仓库初始化
- 基本的提交记录
后续添加作业(Assignment2, Assignment3等):
./create_assignment.sh MDS5110 2 ~/Desktop这将在现有的 MDS5110 目录中添加 Assignment2 子目录,并自动提交到Git。
在生成的课程目录中运行:
cd ~/Desktop/MDS5110
../setup_github.sh MDS5110前提条件:
- 安装GitHub CLI:
brew install gh - 登录GitHub:
gh auth login
-
在GitHub上创建新仓库
-
在课程目录中运行:
git remote add origin https://github.com/YOUR_USERNAME/COURSE_NAME.git
git branch -M main
git push -u origin main在 create_assignment.sh 中修改以下变量:
STUDENT_NAME="你的姓名"
STUDENT_ID="你的学号"Template.tex 文件包含以下可自定义部分:
- 课程信息: 在文档顶部修改课程名称
- 学生信息: 姓名和学号字段
- 问题格式: 使用exam文档类的questions环境
- 解答格式: 使用solution环境(可通过\printanswers控制显示)
模板基于 exam 文档类,提供以下功能:
- 问题编号: 自动编号的问题列表
- 分值标记: 使用
\droppoints显示分值 - 分题结构: 支持
parts环境创建子问题 - 解答区域: 使用
solution环境编写答案 - 打印控制: 通过
\printanswers控制是否显示答案
\question[1 Mark] 问题描述?\droppoints
\begin{solution}
答案内容
\end{solution}
\question[2 Marks] 多部分问题
\begin{parts}
\part 子问题 a
\part 子问题 b\droppoints
\end{parts}
\begin{solution}
\begin{parts}
\part 子问题 a 的答案
\part 子问题 b 的答案
\end{parts}
\end{solution}- LaTeX发行版: TeX Live, MiKTeX 或 MacTeX
- 编译器: pdflatex 或 xelatex
- Git: 版本控制
- GitHub CLI: 用于自动化GitHub操作
- LaTeX编辑器: VS Code (LaTeX Workshop插件), TeXShop, 或 Overleaf
在具体作业目录中运行以下命令编译LaTeX文档:
cd Assignment1
pdflatex Assignment1.tex或使用LaTeX编辑器的编译功能。
在课程根目录中编译所有作业:
find . -name "Assignment*.tex" -execdir pdflatex {} \;欢迎提交Issue和Pull Request来改进这个模板项目。
本项目采用MIT许可证,详见LICENSE文件。
- 课程组织: 每门课程创建一个独立的GitHub仓库,所有作业在同一仓库中管理
- 目录命名: 建议使用课程代码作为仓库名称,如
MDS5110、CS101等 - 定期备份: 定期推送到GitHub进行备份
- 版本追踪: 每次添加作业都会自动创建Git提交,方便追踪进度
- **可以根据具体课程要求调整LaTeX模板格式
快速开始示例:
# 1. 克隆模板
git clone https://github.com/breayhing/assignment-template.git
cd assignment-template
# 2. 生成第一个作业(创建课程仓库)
./create_assignment.sh CS101 1 ~/Documents
# 3. 进入课程目录
cd ~/Documents/CS101
# 4. 推送到GitHub
../setup_github.sh CS101
# 5. 添加第二个作业
cd ../assignment-template
./create_assignment.sh CS101 2 ~/Documents
# 6. 推送更新
cd ~/Documents/CS101
git push origin main