简介:这份文档是广西高校教师资格证试讲环节使用的教案模版,面向准备参加高校教师资格认定试讲的高校教师与应届毕业生,帮助解决试讲教案不知如何规范撰写、环节如何排布的问题。全文以电子商务专业「第七章 电子支付」为示例课题,依次给出课题、学科、授课教师、单位等表头项,以及教学目的与要求、教学重点与难点、教学方法、使用教材和主要参考书、教学过程等完整栏目,内容涉及电子支付与电子货币的含义、储值卡与银行卡及信用卡的功能、虚拟货币、网上银行和第三方支付平台等知识点,并配有案例引入与课时分配痕迹,可直接对照修改。资源为单个doc文件,压缩包约219KB,结构完整、便于打印与二次编辑,目前已有72人学习下载,适合作为试讲备课的框架参考与格式范本。
1. 广西高校教师资格证试讲教案模版.doc 到底该装什么
面试前一周最常见的场景是:从学长那里要来一份广西高校教师资格证试讲教案模版.doc,把课程名一改,字号、行距、表格列宽全乱了;改完三份不同学科的教案,格式已经各不相同。省时间的做法是把这份模版当成一份有字段定义、有样式约束的文档,而不是一份可以随手覆盖的稿子。试讲环节评委在十几分钟里要判断的是「目标—过程—评价」能不能闭合,教案把这个闭环摆清楚、格式统一,就已经赢过一大半人。接下来的路数适合三类人:马上要试讲的考生、替教研室整理统一模版的老师,以及被安排写文档自动化脚本的 IT 从业者——用 python-docx 和 docxtpl 把一份 Word 模版变成可批量套打、可自动校验的数据驱动产物。
2. 拆解试讲教案模版的字段结构:从教学目标到板书设计的表格化建模
把模版用起来之前,先要回答一个问题:哪些内容是「字段」、哪些是「版式」。字段是可以从数据里填进去的,版式是在 Word 里一次调好、之后不再动的。分不清这两者,就会出现「每换一个学科都要重新调一遍表格」的局面。下面先把字段清单固定下来,再用脚本把现有 .doc 的骨架读出来验证。
2.1 试讲教案必备字段与面试评分点的对应关系
教案的字段顺序应当跟说课逻辑一致:先说清教什么、教给谁,再说怎么教、教完怎么检验。下表是可以在绝大多数广西高校试讲场合直接复用的字段集。
| 字段 | 评委关注点 | 常见写法 | 篇幅建议 |
|---|---|---|---|
| 课程名称 / 授课对象 | 教案与试讲内容是否对得上 | 用课程全称,不写简称 | 一行 |
| 教学目标 | 知识、能力、素质三维是否写全 | 三维分行,动词开头(能说明、能实现、能分析) | 60~100 字 |
| 教学重点与难点 | 重点和难点是否分开写 | 重点 1~2 条,难点 1 条 | 40~80 字 |
| 教学方法与手段 | 除讲授外有没有互动设计 | 讲授法、案例法、演示法 + 信息化手段 | 30~60 字 |
| 教学过程 | 环节是否完整、时间是否分配 | 导入—讲授—互动—小结—作业 | 400~700 字 |
| 板书设计 | 是否与讲授主线一致 | 用表格画版面,别用大段文字描述 | 版面示意图 |
| 教学反思 | 是否留了可写的空间 | 留 3~5 行空白,现场手写 | 空白 |
| 参考资料 | 版本信息是否完整 | 教材名 + 作者 + 出版社 | 一行 |
提示:教学目标一栏最容易被写成「让学生了解 XX」这类无法检验的句子。换成「能画出 XX 的状态转移图」「能说明 XX 与 YY 的差异」,评委一眼就能看出目标可评价。
2.2 用 python-docx 读出现有模版的段落与表格骨架
2.2.1 先把 .doc 转成 .docx
python-docx 只认 OOXML,也就是 .docx,老版 .doc 必须转换。Windows 上最稳的是用 Word 另存为,Linux 或者服务器上一般走 LibreOffice 命令行:
# --headless 不弹界面,--convert-to 指定目标格式,--outdir 指定输出目录 soffice --headless --convert-to docx --outdir ./converted "试讲教案模版.doc"转换后一定要打开比对一次。常见差异是文本框里的内容会掉出来变成普通段落,页眉页脚里的横线会丢。如果模版本身大量使用文本框排版,直接重做一个 .docx 反而比修补转换结果快。
2.2.2 按文档流顺序遍历段落与表格
doc.paragraphs和doc.tables是两个独立列表,分别遍历会丢失「段落和表格谁在前」的信息。要还原真实骨架,得走底层 XML:
from docx import Document from docx.table import Table from docx.text.paragraph import Paragraph from docx.oxml.ns import qn def iter_block_items(parent): """按文档流顺序依次产出段落和表格,便于比对模版骨架""" body = parent.element.body for child in body.iterchildren(): if child.tag == qn('w:p'): yield Paragraph(child, parent) elif child.tag == qn('w:tbl'): yield Table(child, parent) doc = Document('试讲教案模版.docx') for i, block in enumerate(iter_block_items(doc)): if isinstance(block, Paragraph): if block.text.strip(): print(f'[P{i}] 样式={block.style.name} | {block.text.strip()[:40]}') else: print(f'[T{i}] 表格 {len(block.rows)}行 x {len(block.columns)}列 ' f'| 首格={block.rows[0].cells[0].text.strip()}')逻辑说明:iter_block_items直接遍历<w:body>下的子元素,w:p是段落、w:tbl是表格,二者的先后顺序就是你在 Word 里看到的顺序。参数说明:qn('w:p')把简写标签展开成带命名空间的完整标签,不写命名空间判断恒为假。输出里[T]开头的行就是需要保留为版式的部分,[P]开头的行是需要改成占位符的部分。
2.3 把字段定义成 YAML,一份数据对应一份教案
确定字段后,把内容抽到 YAML 里,模版只保留结构。这样做的好处是同一个模版可以喂给不同学科,备课内容改起来也不必再开 Word。
meta: course: 数据结构与算法 audience: 计算机科学与技术专业二年级 hours: 1 课时(45 分钟) textbook: 严蔚敏《数据结构》(C 语言版) objectives: knowledge: 能说明栈的后进先出特性及其在表达式求值中的作用 ability: 能用 C 语言实现一个基于数组的顺序栈 quality: 能在调试中形成先定位边界条件的排查习惯 key_points: [栈的存储结构, 入栈出栈的边界判断] difficult_points: [栈满与栈空的判定条件区分] methods: [讲授法, 案例演示法, 课堂练习] steps: - {stage: 导入, minutes: 3, content: 用浏览器后退按钮引出后进先出} - {stage: 讲授, minutes: 20, content: 顺序栈的结构体定义与两个基本操作} - {stage: 互动, minutes: 12, content: 学生上机实现入栈并观察栈满时的返回值} - {stage: 小结, minutes: 5, content: 对比顺序栈与链栈的取舍} - {stage: 作业, minutes: 5, content: 用栈判断括号匹配}参数说明:steps用列表而不是字典,是因为教学过程的顺序本身有意义,YAML 列表保序,字典在部分解析器里不保证。minutes单独成字段,后续可以写一段脚本校验各环节时间之和是否等于课时,这是评委最容易挑的硬伤之一。
3. 用 python-docx 生成符合规范的教案正文:样式、表格与中文字体
模版的观感八成取决于三件事:中文字体有没有设对、表格列宽稳不稳、页面尺寸是不是 A4。这三件事都不在内容里,却最容易在打印或投影时翻车。
3.1 中文字体与字号设置的两个陷阱
第一个陷阱是run.font.name只作用于西文。Word 把字体拆成 ascii、hAnsi、eastAsia 三套,中文字符认的是 eastAsia。只设font.name,结果是数字和字母变成了 Times New Roman,汉字还是默认字体。
from docx.shared import Pt from docx.oxml.ns import qn def set_run_font(run, cn='宋体', en='Times New Roman', size=12, bold=False): """同时设置西文与中文字体,避免出现西文生效、汉字不生效""" run.font.name = en # ascii 与 hAnsi run.font.size = Pt(size) run.bold = bold rpr = run._element.get_or_add_rPr() rpr.rFonts.set(qn('w:eastAsia'), cn) # 关键:汉字字体第二个陷阱是字号与「号数字号」的换算。教案里说的是「正文小四、表格五号」,代码里要用磅值。
| 中文字号 | 磅值 | 教案里的典型用途 |
|---|---|---|
| 小三 | 15 | 教案首页大标题 |
| 四号 | 14 | 一级栏目名(教学目标、教学过程) |
| 小四 | 12 | 正文、教学目标条目 |
| 五号 | 10.5 | 表格内文字 |
| 小五 | 9 | 页脚、参考资料 |
注意:整篇教案的字号种类控制在三种以内,超过三种在投影上看就是「排版在抢内容」。
3.2 页面设置与课程信息表的固定列宽
页面尺寸用 EMU 作为内部单位,Cm()只是换算包装。A4 去掉左右各 3.17 厘米的页边距,正文宽度正好 14.66 厘米,表格列宽之和超过这个值就会被挤到下一页。
from docx import Document from docx.shared import Cm from docx.enum.table import WD_TABLE_ALIGNMENT doc = Document() sec = doc.sections[0] sec.page_width, sec.page_height = Cm(21.0), Cm(29.7) # A4 sec.left_margin = sec.right_margin = Cm(3.17) sec.top_margin = sec.bottom_margin = Cm(2.54) info = doc.add_table(rows=2, cols=4) info.style = 'Table Grid' info.alignment = WD_TABLE_ALIGNMENT.CENTER info.autofit = False # 关掉自动调整,否则列宽会被内容顶开 keys = ['课程名称', '授课对象', '课时', '教材'] vals = ['数据结构与算法', '计算机科学与技术专业二年级', '1 课时(45 分钟)', '严蔚敏《数据结构》'] for j, (k, v) in enumerate(zip(keys, vals)): info.cell(0, j).text = k info.cell(1, j).text = v widths = [Cm(2.6), Cm(5.4), Cm(2.6), Cm(4.0)] # 合计 14.6cm,留一点余量 for row in info.rows: for j, w in enumerate(widths): row.cells[j].width = w参数说明:autofit = False必须写在设置列宽之前,否则 Word 打开时会按内容重新分配宽度。widths逐单元格设置而非整列设置,是因为 python-docx 的column.width在合并单元格存在时不可靠。
3.3 教学过程表与教学环节的编号方式
教学过程表常见的五列是:教学环节、教学内容、教师活动、学生活动、时间分配。列宽建议按 2:5:3:3:2 分配,时间分配列窄一点,评委扫一眼就能对上总时长。
教学环节的编号,建议直接手写前缀「1. 导入(3 分钟)」,不要用 Word 的自动编号。
提示:自动编号是域,在 WPS、Pages 或转 PDF 时可能不刷新,出现「1. 1. 1.」或者编号粘连。教案要在陌生环境里打开,手写前缀最省事。
板书设计同样建议用表格而不是图片。用两三个合并单元格画出主板书区、副板书区,评委在原尺寸文档里能看到你在讲什么,图片在缩放后会糊。
4. 用 docxtpl 批量套打多学科教案:模板占位符与数据驱动
python-docx 适合从零生成,但只要模版里有一点复杂版式(页眉、页脚、带边框的表格),从零写的代码会长得难以维护。这时候换成 docxtpl:在 Word 里把模版改好,代码只负责填空。
4.1 在 .docx 里写 Jinja2 占位符的规则与坑
普通变量用{{ course }},表格行循环用{%tr for s in steps %}。tr前缀表示整行,docxtpl 会把这一行删掉,再按数据条数复制。
最大的坑是占位符被拆散。Word 会把一次输入的文本按编辑历史拆进多个<w:r>元素,{{ course }}一旦被拆成{{和course }}两段,Jinja2 解析就会报语法错误。典型触发场景是:输入占位符后又单独改了其中几个字的字体或颜色。修复办法是在 Word 里选中整个占位符删掉,重新一次性输入。
| 模板行位置 | 单元格内容 |
|---|---|
| 循环行第 1 格 | {%tr for s in steps %} |
| 循环行第 2~5 格 | {{ s.content }}、{{ s.teacher }}、{{ s.student }}、{{ s.minutes }} |
| 循环行的下一行第 1 格 | {%tr endfor %} |
4.2 批量生成多学科教案的脚本
import yaml from pathlib import Path from docxtpl import DocxTemplate DATA = Path('data') # 每门课一份 YAML OUT = Path('out') OUT.mkdir(exist_ok=True) for f in sorted(DATA.glob('*.yaml')): ctx = yaml.safe_load(f.read_text(encoding='utf-8')) # 每轮重新载入模版,避免上一轮替换结果被累积进来 tpl = DocxTemplate('试讲教案模版.docx', autoescape=False) tpl.render(ctx) name = f'{ctx["meta"]["course"]}-试讲教案.docx' tpl.save(OUT / name) print('生成', name)逻辑说明:DocxTemplate的实例有状态,同一个实例连续render会把上一轮的上下文残留下来,表格行循环尤其明显——第二轮生成出来的表格会带着第一轮的行。所以放在循环体内重新构造。参数说明:autoescape=False关掉 HTML 转义,教案正文里出现A<B、T&、泛型尖括号这类符号时不会被转成实体。
4.3 表格行循环与可选段落的处理
教学过程的环节数量每门课都不一样,导入、讲授、互动、小结、作业五段是常规,但有的课没有上机互动。数据里直接不写这条,{%tr for %}自然就不会渲染该行,不需要在模板里加if。
真正需要条件渲染的是「教学反思」这种整块可选内容。给整段套上{% if reflection %}与{% endif %},段落级标签必须独占一行,写在段落中间会导致整段被切碎。渲染完的文件建议再跑一次第 2 章的iter_block_items,确认表格行列数和预期一致,一行命令就能挡住大部分批量生成事故。
5. 交付前的自动校验与导出:字段完整性检查、PDF 转换与页码技巧
批量生成最容易出的问题不是脚本报错,而是脚本不报错、文件打开才发现某门课的「教学重点」是空的。交付前加一道自检最划算。
5.1 必填字段与时间分配的自检脚本
from docx import Document from pathlib import Path REQUIRED = ['课程名称', '教学目标', '教学重点', '教学过程', '板书设计'] for p in sorted(Path('out').glob('*.docx')): doc = Document(p) text = '\n'.join(x.text for x in doc.paragraphs) for t in doc.tables: # 表格文字不在 paragraphs 里 for row in t.rows: text += '\n' + '\t'.join(c.text for c in row.cells) miss = [k for k in REQUIRED if k not in text] if miss: print(p.name, '缺字段:', miss)逻辑说明:python-docx 的paragraphs不包含表格内的文字,必须单独遍历doc.tables,否则「教学过程」这种整块都在表格里的字段会被误判为缺失。重点检查的是「教学重点」和「板书设计」,这两项最常因为数据里忘了写而空着。
5.2 转 PDF 与页脚页码
打印稿通常要求 PDF。LibreOffice 可以批量转:
soffice --headless --convert-to pdf --outdir out/pdfs out/*.docx转换完成后一定要抽查两页:一是表格有没有跨页断开,二是页码有没有正确显示。页码靠页脚的 PAGE 域,python-docx 没有直接 API,需要写入域代码。如果嫌麻烦,更稳的做法是在模版 .docx 的页脚里预先放好页码域,批量生成时不去动它。最后提醒一句,同一份教案在 Word 和 WPS 里的分页位置可能差一两行,确认版式时用你面试现场真正会打开的那个软件。
本文还有配套的精品资源,点击获取