ワンクリックで
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 把这些题目排成标准试卷格式