
简介这份导学案面向高中数学导数专题从平均变化率、瞬时变化率到导数公式与四则运算体系完整既适合高二学生初次学习时配套教材使用也可作为高三一轮复习梳理知识点的资料。资源打包为1个docx文档压缩包大小578KB文档中不仅包含基础概念表格、常用导数公式总结还设置了“题组一”常识题与“题组二”常错题覆盖易混淆考点。目前已有95人学习下载。围绕导数的运算和几何意义资料通过解析复杂函数求导、切线方程求解等例题示范如何先利用代数、三角恒等变形化简函数再求导并结合易错题索引提醒区分平均变化率与导数、复合函数求导法则等关键细节。整体编排按“概念—公式—例题—纠错—探究”递进有助于学生抓住导数学习中的重点与难点提升分析函数性质及解决实际应用问题的能力。1. 把高中数学导数导学案做成可复现的 Word 工程拿到“高中数学导数导学案,导数及其应用导学案.docx”这类标题大部分人的第一反应是打开 Word 手敲写定义、贴公式、截一张函数图像再调半天排版。这个路线本身没问题但一旦你要做整章导学案、多个班级共用、或者下个月还要重排版手工维护的成本会立刻追上你。更反直觉的是Word 并不是这套产物的瓶颈——瓶颈在图像精度、公式一致性、表格编号和批量导出的可重复性上。这篇文章想讲的是把制作高中数学导数导学案.docxx 这件事当成一个自动化文档工程来做。用 Python 生成函数图像、用 python-docx 搭骨架、用样式与域管理公式和编号最后用脚本批量转 PDF 或打印。你会发现真正花在“想清楚怎么排版”上的时间变多了花在“反复调格式”上的时间会大幅缩短。适合教辅编辑、教研组负责课件与学案整理的老师、以及帮学校做数字化平台的技术人员。2. 用 Python 生成导数与函数图像先解决图形的精度问题2.1 为什么不用 Word 自带的形状和 WPS 截图高中数学导数章节里常见图像包括二次函数、三次函数、指数函数、对数函数以及带切线的单调性分析图。用 Word 自带的“形状—曲线”手绘能画出大致趋势但当学生需要看清切点附近的变化、需要放大看零点位置时手绘图的误差会直接误导判断。截图也存在同样问题屏幕截图通常只有 96 DPI插入 Word 后一旦放大锯齿就很明显更麻烦的是截图没法保证两张图的坐标轴刻度、图例字体一致。我一般会直接用 Python 的 matplotlib 把图渲染成矢量或高分辨率位图再插入 Word。用代码出图的好处在于同一个函数参数一改就能重新生成坐标系范围、刻度密度、切线方程都可以精确控制而且图与图之间的视觉风格完全统一。对于导学案这种要反复打印的资料这个统一性比单张图的“好看”重要得多。做导数图像时最优先要保证的其实是两件事一是函数曲线足够平滑二是横纵坐标的比例不能失真。否则学生看单调区间和极值时会被拉伸的坐标轴误导。matplotlib 里这两件事分别由 plot 的分段采样点数量和 figure 的尺寸比例控制。2.2 最简可用的导数图像生成代码下面这段代码可以生成 f(x) x^3 - 3x^2 2 的图像并把驻点和拐点标注出来。这是我做导学案插图时的最小模板直接保存成 Python 文件就能跑import matplotlib matplotlib.use(Agg) # 不弹窗直接存文件 import matplotlib.pyplot as plt import numpy as np x np.linspace(-1.2, 3.2, 1000) y x**3 - 3*x**2 2 fig, ax plt.subplots(figsize(5.2, 3.8), dpi200) ax.plot(x, y, color#1f77b4, linewidth2.2, labelr$f(x)x^3-3x^22$) ax.axhline(0, colorgray, linewidth0.8, linestyle--) ax.axvline(0, colorgray, linewidth0.8, linestyle--) # 标注驻点 x0 和 x2 for x0 in (0, 2): y0 x0**3 - 3*x0**2 2 ax.plot(x0, y0, o, color#d62728, markersize6) ax.annotate(f({x0}, {y0}), xy(x0, y0), xytext(x00.15, y00.45), fontsize10, arrowpropsdict(arrowstyle-, colorblack, lw0.8)) ax.set_xlabel(r$x$, fontsize12) ax.set_ylabel(r$y$, fontsize12) ax.set_title(导数图像导学案插图, fontsize13) ax.grid(alpha0.25) ax.set_xticks([-1, 0, 1, 2, 3]) plt.tight_layout() plt.savefig(derivative_cubic.png)这段代码里最值得改的三个参数是np.linspace的第三个参数、figsize和dpi。1000个采样点对于三次函数完全够用如果画的是带有尖点或振荡的函数可以把采样点数提高到 3000 以上避免曲线出现折角figsize(5.2, 3.8)控制图片宽高比导学案单栏排版一般用 5:3.6 左右的比例太窄会导致函数图像纵向被拉伸dpi200是经验值Word 里缩放到 60% 宽度时还能保持锐利如果用 300 当然更好但图片体积会明显变大不适合打包发给学生。输出格式上我一直用png在配套的 jpg 输出物中通常只有系列图需要嵌入到学习单里时才转成 jpeg。导学案经常会被互相拷贝转发png 在微信和 QQ 里不会被二次压缩jpg 反而会出现明显的块状噪点。2.3 导数切线与单调性图的绘制思路在导数及其应用的教学设计里比函数本身更常见的是“切线 函数曲线”的组合图。比如证明某个点处的切线方程或者展示单调性区间时用斜线叠加在曲线上。这个场景下不要单独画曲线然后手动加箭头因为箭头长度、位置、角度只要一拖动手感就全乱了。更可靠的做法是直接让代码算出切线方程。已知 f(x) 和切点横坐标 x0切线斜率是导数 f(x0)点斜式方程写出来就能在同一坐标区内绘制直线def tangent_line(f_prime, x0, x_range): y0 f(x0) k f_prime(x0) return x_range, k*(x_range - x0) y0这里f_prime可以是数值导数也可以是手写的导函数。对高中数学导数章节不限初等函数直接用scipy.misc.derivative做中心差分也够用但建议在学案里标注“切线方程中求斜率用的是 f(x0)”避免学生在看插图时把代码逻辑和教材定义混淆。坐标范围要控制在切点附近 ±1.5太大会让切线看起来几乎水平太小又看不清斜率变化。除了切线极值点、拐点、单调区间的分界点也可以统一用标记点加注释来呈现。一个常见误区是给每个注释都画一个箭头结果图和文字挤在一起打印出来反而看不清。我通常只把极值点用实心圆点标出来拐点不用符号只用颜色区分保持插图清爽。3. 用 python-docx 创建导数及其应用导学案的主结构3.1 最小可跑的 Word 生成脚本图像准备好之后下一步是把文字、公式、表格和图像拼成完整的 docx。很多人在这一步选择“先在 Word 里排版好再手工粘图”但这其实把自动化流程截断了。用 python-docx 从空文档开始搭结构可以让整章导学案完全由脚本控制后续改版时只改配置不重新排版。安装依赖和生成一个空白文档的最小做法pip install python-docx matplotlib numpyfrom docx import Document from docx.shared import Pt, Cm, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH doc Document() # 页面边距适合双面打印 for section in doc.sections: section.top_margin Cm(2.0) section.bottom_margin Cm(2.0) section.left_margin Cm(2.5) section.right_margin Cm(2.0) # 标题 title doc.add_heading(高中数学导数导学案 —— 导数及其应用, level1) title.alignment WD_ALIGN_PARAGRAPH.CENTER doc.save(导数及其应用导学案.docx)for section in doc.sections这个循环会遍历文档中的所有分节即使新建文档只有一个节也建议这样写因为以后你很可能加入分节符来区分“例题区”和“课后练习区”。页边距的数值不是随便定的教育类文档需要留出装订线左间距一般大于右间距如果你们学校有标准的学案模板先用尺子量一下印刷成品再换算。add_heading(level1)在默认模板里对应“标题 1”样式后续可以通过修改样式来统一中文字体和字号。注意 python-docx 默认样式对中文字体的处理不是很好所以建完文档后要马上设置style.font.name和rFonts否则 Word 里会变成宋体加 Times New Roman 的混合状态。3.2 在 Word 里插入带公式的步骤导数章节绕不开公式。常见写法有三种一是直接在 Word 里按 Alt 插入公式域二是用 LaTeX 语法写好后粘贴三是把公式渲染成图片。对于导学案我强烈不建议用图片公式因为打印出来后公式会发虚而且如果公式需要修改你得重新渲染。更好的方案是让 python-docx 在段落中留下公式占位然后用 Word 的公式域自动生成。python-docx 本身不直接支持创建 OMML 公式对象但有个实用技巧先在 Word 里建一个空文档把常用公式复制进去另存为 docx 后解包把公式段落粘贴到模板里。更轻量的做法是直接使用document.add_paragraph()插入文本形式的公式例如把f(x) 3x^2 - 6x写成普通文本再对下标和上标做字符格式调整p doc.add_paragraph() p.add_run(f).font.italic True sup p.add_run(′) sup.font.superscript True p.add_run((x) 3x) sup2 p.add_run(2) sup2.font.superscript True p.add_run( - 6x)这段代码用“上标格式”模拟了公式排版对于导学案这种以文字为主、公式数量在 10 个以内的资料完全够用。如果公式数量多到接近试卷级别建议换成真正的公式编辑器类型用 pandoc 从 LaTeX 生成 docx。命令大概长这样pandoc math_demo.tex -o math_demo.docxpandoc 会把 LaTeX 公式转换成 Word 原生的 OMML 格式插入后可以在 Word 里直接编辑双击就能像普通公式一样修改。这是目前文档工程里最稳定的“从 LaTeX 到 Word”路径。需要提醒的是pandoc 转换后要检查一遍公式中的字体大小和对齐因为默认转换规则不会自动处理中文环境的正文字号。3.3 用表格组织学案里的题型分层导学案通常会分三层基础感知、例题精讲、变式巩固。用 Word 的标题段落可以做到但用表格会更清晰。下面这段代码生成一个四行三列的表格对应“考点、题目、配图/备注”三栏并按需合并单元格table doc.add_table(rows4, cols3) table.style Table Grid headers [考点, 题目, 配图/备注] data [ [导数的定义, 求 f(x)x^2 在 x1 处的导数, 插图: tangent_1.png], [导数的几何意义, 求曲线 yx^3 在 x1 的切线方程, 插图: tangent_3.png], [单调性与极值, 判断 f(x)x^3-3x^22 的单调区间, 插图: cubic_extrema.png], ] for j, h in enumerate(headers): table.cell(0, j).text h for i, row in enumerate(data, start1): for j, val in enumerate(row): table.cell(i, j).text val table.columns[0].width Cm(3.0) table.columns[1].width Cm(8.0) table.columns[2].width Cm(4.5)表头那一行建议单独设置底纹浅灰色即可不要用深色否则打印时墨水消耗大且文字不清。用Table Grid样式会给所有单元格加黑框如果你们学校的学案是“无竖线只留横线”的风格需要改用Table Normal加上下边框这属于模板层的定制不在生成脚本里反复调。3.4 样式表与字体参数中文字体不生效的坑python-docx 生成的文档默认样式是基于内置模板default.docx的。如果你在脚本里只设置doc.styles[Normal].font.name 仿宋在 Word 里打开大概率会看到中文仍然是宋体英文和数字却是 Times New Roman。这是因为 Word 的中文字体由w:rFonts的eastAsia属性控制python-docx 的font.name只会修改ascii属性。处理办法是同时操作 run 的字体元素from docx.oxml.ns import qn def set_run_font(run, cn_font仿宋, en_fontCambria, size12): run.font.name en_font run._element.rPr.rFonts.set(qn(w:eastAsia), cn_font) run.font.size Pt(size)调用set_run_font时en_font控制英文和数字的字体cn_font控制中文两者可以不是同一字体。导学案正文我一般用“仿宋_GB2312”或“宋体”例题用“楷体”公式中的变量建议用“Cambria Math”但 Cambria Math 只用于真正的 OMML 公式文本模拟的公式里变量还是用italicTrue配合 Cambria 更协调。把这些设置在循环里应用到你添加的每一个段落才算真正统一的排版方案。4. 批量生成题图与多份学案的自动化管线和常见落地坑4.1 把图像生成与 Word 文档生成合并到一个流程第 2 章和第 3 章分别是画图和写文档实际项目中如果分别执行你很容易忘记重新生成图片就直接加文档导致插图和最新公式对不上。常见的做法是用一个入口脚本驱动全流程先生成所有图再把带图片路径的清单传给 Word 生成脚本最后用 LibreOffice 批量转 PDF。这比分步执行更接近工程方式。这里给出可以当作模板的build_all.py骨架import subprocess, pathlib, sys ROOT pathlib.Path(__file__).parent IMG ROOT / assets OUT ROOT / build def step_run(name, cmd): print(f[build] {name}: {cmd}) subprocess.run(cmd, shellTrue, checkTrue) def main(): OUT.mkdir(exist_okTrue) step_run(generate images, fpython gen_images.py --out {IMG}) step_run(generate docx, fpython gen_docx.py --assets {IMG} --out {OUT}) step_run(convert to pdf, fsoffice --headless --convert-to pdf --outdir {OUT} {OUT/导数及其应用导学案.docx}) if __name__ __main__: sys.exit(main())把生成图和生成文档分成两个独立脚本比合成一个大脚本更易维护。教师或编辑改题目时只需要看gen_docx.py里的数据列表不需要碰绘图代码视觉调整时只需要改gen_images.py不用重新跑 Word 结构。这里的关键是checkTrue一旦某一步失败整个流水线立刻停止避免拿到一份“图片已生成但 docx 还是旧版”的产物。命令行参数用--out和--assets而不是在脚本里硬编码路径是为了能在多台电脑上复用。学校机房或办公室电脑的目录结构差异很大把路径作为参数传是省事故的最有效手段之一。4.2 用 LibreOffice 做 docx 到 PDF 的批量转换LibreOffice 是 CentOS、Ubuntu、Windows 都能用的转换器用soffice --headless可以无界面地批量转换。如果你手上是 Windows 机器可以直接安装 LibreOffice并把它加入 PATH在 macOS 上则用/Applications/LibreOffice.app/Contents/MacOS/soffice。转换时如果文件名带空格命令要加双引号否则会当成多个文件传入。转换常见的失败点是字体。PDF 里中文变成方块字几乎都是因为字体没装全。用 LibreOffice 转换 docx 时它依赖系统字体渲染Windows 上通常有宋体和黑体Linux 服务器上如果没有字体包就要手动装。建议在 Ubuntu 上执行sudo apt install fonts-noto-cjk fonts-noto-cjk-extra然后再跑转换。fonts-noto-cjk-extra包含仿宋和楷体的替代字形能覆盖学案正文和例题区的中文需求。转换后不要直接发布先用命令抽几页内容检查字体渲染下面这段脚本可以把 PDF 首页转成图片快速目测pdftoppm -png -f 1 -l 1 导数及其应用导学案.pdf page4.3 从 Word 里提取内容和改稿的逆向操作自动化流程不是你一个人走完就完事的。教研组的老师可能会在 Word 里直接改文字、调字体、把某个例题换掉然后给你一条消息说“帮我重新转一下 PDF”。如果你用原来的脚本重新生成 docx她改的内容就全丢掉了。这就是“改稿回写”难题。常见的处理办法是约定默契老师只改 docx 正文不删除图片表格你这边用脚本重新抽取 docx 里的段落与题目回填到数据源再统一生成全新 PDF。抽取段落可以用python-docx遍历document.paragraphs但要注意 Word 表格里的段落不在这个列表里需要再遍历document.tables。另一个可行办法是放弃自动生成 docx 这条主线直接在 Word 模板上用内容控件Rich Text Content Control做占位老师填内容脚本只负责样式刷新。这个方案对内容维护更友好但对样式控制要求高需要 Word 开发工具支持复杂度比 python-docx 高不少。对于大多数高中教研组场景用修改脚本数据源的方式更直接。5. 验证学案完整性的三个技巧与 Word 域代码刷新5.1 用 docx 解包检查图片引用和公式生成的 docx 能不能正常打印不能只靠肉眼预览。docx 本质上是一个 zip 压缩包里面包含word/media、word/document.xml、word/styles.xml。你可以直接解压检查结构unzip 导数及其应用导学案.docx -d check_dir find check_dir/word/media -type f | sort看到media目录下图片数量正确说明插入步骤成功如果图片数量对但体积为 0 字节多半是源图片路径写错python-docx 插入了空文件。公式同理如果使用的是 OMML 公式document.xml里会存在大量的m:oMath节点减少此节点则说明公式仍是纯文本可能需要重新处理。5.2 让 Word 打开时自动刷新目录与交叉引用导学案如果有目录或页眉页脚中的题目编号第一次打开时会显示“文档中的域需要更新”。Word 的目录、页码、交叉引用都是域代码python-docx 默认不计算域结果打开时需要手动 CtrlA 再按 F9。如果要对多份文档批量处理可以用一小段 VBA 在 Word 里刷新域但更轻量的做法是在 docx 的settings.xml里设置updateFields为true。在 python-docx 中修改设置from docx.oxml.ns import qn settings doc.settings.element update_fields settings.find(qn(w:updateFields)) if update_fields is None: update_fields settings.makeelement(qn(w:updateFields), {}) settings.append(update_fields) update_fields.set(qn(w:val), true)这样打开文档时 Word 会弹一次“是否更新域”选择“是”后目录和页码就自动刷新了。这个设置对打印和导出 PDF 都有效LibreOffice 转换时也会读取该标记。5.3 题目与插图分离后的自动对齐最后一个值得试的技巧是把题目和插图的位置关系交给 Word 的对齐规则而不是手工拖拽。图片插入后设置文字环绕方式为“嵌入型”放在题目段落的下一段然后在生成脚本里对插图统一设置宽度为页面可用宽度的 85%。这样做的好处是后续任何机器打开都不会因为缺少某个字体库导致图片位置错乱。我的做法是在gen_docx.py的数据结构里直接声明题目与插图的映射questions [ {text: 求曲线 yx³ 在 x1 处的切线方程, image: tangent_1.png, width: 0.85}, {text: 判断 f(x)x³-3x²2 的单调性, image: cubic_monotonic.png, width: 0.75}, ] for q in questions: doc.add_paragraph(q[text]) if q.get(image): img_path IMG / q[image] pic_par doc.add_paragraph() pic_par.alignment WD_ALIGN_PARAGRAPH.CENTER run pic_par.add_run() run.add_picture(str(img_path), widthCm(14.8 * q[width]))14.8是在 A4 页面、左右边距 2.5cm 和 2cm 的情况下计算出的可用宽度。按比例乘以0.85能让图四周留白视觉上不会顶到正文边界。这个方法比每次插入图片后手工居中再设宽度要稳定得多也是我目前维护整套导数导学案时最重要的一个固定动作。本文还有配套的精品资源点击获取