一键导入
wps-exam-paper
试卷排版。按标准格式排版考试试卷,包含密封线、评分栏、题号编排, 支持选择题、填空题、判断题、简答题等题型。 用于帮助教师制作考试试卷。当用户提到试卷、考试、出题时触发。 Exam paper formatter.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
试卷排版。按标准格式排版考试试卷,包含密封线、评分栏、题号编排, 支持选择题、填空题、判断题、简答题等题型。 用于帮助教师制作考试试卷。当用户提到试卷、考试、出题时触发。 Exam paper formatter.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
考勤打卡统计。把考勤机导出的打卡数据丢进来,自动统计每个人的 迟到、早退、缺勤、加班时长,生成月度考勤汇总表,异常考勤自动标红。 用于帮助HR处理考勤数据。当用户提到考勤、打卡、迟到、加班统计时触发。 Attendance tracker - generates summary reports from clock-in records.
文档批量格式转换。把一个文件夹里的Word全转文本、Excel全导出CSV、 Markdown转Word,支持docx/txt/xlsx/csv/md等格式批量互转,一次搞定。 用于帮助用户批量转换文档格式。当用户提到批量转换、格式转换、导出时触发。 Batch converts documents between formats (docx/pdf/xlsx/csv/md).
预算表一键生成。部门年度预算、项目预算、活动经费预算,选个模板填数字就行, 小计合计公式自动写好,还有预算vs实际对比和执行率自动计算。 用于帮助财务和行政制作预算表。当用户提到预算、费用表、经费时触发。 Budget spreadsheet generator with formulas and variance analysis.
证书奖状批量生成。给一份名单,批量生成荣誉证书、结业证书、聘书、感谢信, 每人一份独立文件,年终评优、培训结业、表彰活动必备工具。 用于帮助用户批量生成证书。当用户提到证书、奖状、聘书时触发。 Batch certificate/award generator from a list of recipients.
数据图表一键生成。不知道数据该用什么图表?告诉我你的数据和目的, 自动推荐最佳图表类型并生成,柱状图折线图饼图散点图都支持,还帮你调配色。 用于帮助用户制作数据可视化图表。当用户提到图表、柱状图、折线图、饼图时触发。 Chart generator - recommends best chart type and creates professional charts.
日历排班值班表。生成带法定节假日和调休标注的月度/年度日历表, 还能做三班倒/两班倒排班表和节假日值班安排,颜色区分不同班次一目了然。 用于帮助用户生成日历和排班表。当用户提到日历、排班、值班、节假日时触发。 Chinese calendar with holidays, shift scheduling, and duty rosters.
| name | wps-exam-paper |
| description | 试卷排版。按标准格式排版考试试卷,包含密封线、评分栏、题号编排, 支持选择题、填空题、判断题、简答题等题型。 用于帮助教师制作考试试卷。当用户提到试卷、考试、出题时触发。 Exam paper formatter. |
| license | MIT |
| user-invocable | true |
| argument-hint | [学科/年级/考试类型] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"试卷排版","description_zh":"按标准格式排版试卷,包含密封线、评分栏、题号等","tags":["试卷","考试","教育","python-docx","WPS"],"version":"1.0.2","license":"MIT"} |
题目 → 规范排版 → 带密封线和评分栏的标准试卷。
老师出题最头疼的不是题目本身,而是排版。
wps-coursewarewps-docx-writer┌──────────────────────────────────────────────┐
│ ┃ 姓 ┃ │
│ ┃ 名 ┃ XX学校 2025-2026学年第二学期 │
│ ┃ : ┃ 【XX学科】期末考试试卷 │
│ ┃ ┃ │
│ ┃ 班 ┃ 考试时间:120分钟 满分:100分 │
│ ┃ 级 ┃ │
│ ┃ : ┃ ┌────┬────┬────┬────┬────┬────┐ │
│ ┃ ┃ │题号│ 一 │ 二 │ 三 │ 四 │总分│ │
│ ┃ 学 ┃ ├────┼────┼────┼────┼────┼────┤ │
│ ┃ 号 ┃ │得分│ │ │ │ │ │ │
│ ┃ : ┃ └────┴────┴────┴────┴────┴────┘ │
│ ┃ ┃ │
│密封线 ┃ 一、选择题(每小题3分,共30分) │
│ ┃ ┃ 1. 题目内容 │
│ ┃ ┃ A. 选项A B. 选项B │
│ ┃ ┃ C. 选项C D. 选项D │
│ ┃ ┃ │
└──────────────────────────────────────────────┘
[1] 选择题 → A/B/C/D 四选一,可设单选/多选
[2] 填空题 → 下划线留空
[3] 判断题 → 对(√) 错(×)
[4] 简答题 → 留答题空间
[5] 计算题 → 留解题步骤空间
[6] 作文/论述 → 留方格纸区域
[7] 连线题 → 左右匹配
[8] 材料分析 → 阅读材料+问题
from docx import Document
from docx.shared import Pt, Cm, Mm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
import os
def create_exam_paper(info, sections, output_path=None):
"""
info = {
'school': 'XX中学',
'semester': '2025-2026学年第二学期',
'subject': '数学',
'exam_type': '期末考试',
'duration': 120,
'total_score': 100,
}
sections = [
{'type': '选择题', 'score_each': 3, 'total': 30, 'questions': [...]},
{'type': '填空题', 'score_each': 3, 'total': 15, 'questions': [...]},
]
"""
doc = Document()
section = doc.sections[0]
section.page_width = Mm(210)
section.page_height = Mm(297)
section.top_margin = Mm(25)
section.bottom_margin = Mm(20)
section.left_margin = Mm(30) # 留密封线空间
section.right_margin = Mm(20)
def set_font(run, name='宋体', size=12, bold=False):
run.font.size = Pt(size)
run.font.name = name
run._element.rPr.rFonts.set(qn('w:eastAsia'), name)
run.bold = bold
# 标题
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(info['school'])
set_font(run, '黑体', 10)
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(f"{info['semester']}")
set_font(run, '宋体', 10)
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(f"【{info['subject']}】{info['exam_type']}试卷")
set_font(run, '黑体', 16, True)
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(
f"考试时间:{info['duration']}分钟 满分:{info['total_score']}分")
set_font(run, '宋体', 10)
# 评分表
num_sections = len(sections)
table = doc.add_table(rows=2, cols=num_sections + 2)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
headers = ['题号'] + [f'{"一二三四五六七八九十"[i]}' for i in range(num_sections)] + ['总分']
for i, h in enumerate(headers):
table.cell(0, i).text = h
table.cell(0, i).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
table.cell(1, 0).text = '得分'
table.cell(1, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph() # 空行
# 题目区域
section_labels = "一二三四五六七八九十"
q_num = 1
for idx, sec in enumerate(sections):
# 大题标题
p = doc.add_paragraph()
label = section_labels[idx]
run = p.add_run(
f"{label}、{sec['type']}(每小题{sec['score_each']}分,"
f"共{sec['total']}分)")
set_font(run, '黑体', 12, True)
# 题目
for q in sec.get('questions', []):
p = doc.add_paragraph()
run = p.add_run(f"{q_num}. {q.get('stem', '(题目内容)')}")
set_font(run, '宋体', 11)
p.paragraph_format.line_spacing = Pt(24)
if sec['type'] == '选择题' and 'options' in q:
p = doc.add_paragraph()
opts = q['options']
run = p.add_run(
f" A. {opts[0]} B. {opts[1]} "
f"C. {opts[2]} D. {opts[3]}")
set_font(run, '宋体', 11)
if sec['type'] in ['简答题', '计算题', '论述题']:
for _ in range(4):
doc.add_paragraph() # 答题空间
q_num += 1
if not output_path:
output_path = f"{info['subject']}{info['exam_type']}试卷.docx"
doc.save(output_path)
return os.path.abspath(output_path)
# 生成试卷
/wps-exam-paper 帮我做一份初三数学期末试卷,选择题10道填空题5道计算题3道
# 模板
/wps-exam-paper 生成一个空白的语文试卷模板
# 指定题目
/wps-exam-paper 把这些题目排成标准试卷格式