DOCX 生成与编辑
该技能用于在 Open Science 环境中从 Markdown 创建 Word DOCX 报告,并处理已有 DOCX 的编辑场景。工作流应以用户要求的内容、结构和呈现方式为准,用户需求优先于默认设置;表格、标题和列表应保持为原生文档结构。
Markdown 转新 DOCX
对于普通报告,使用内置转换器。该转换器依赖已存在的 Pandoc 3.12.1 可执行文件和 Python 3.9 或更新版本;它使用带版本号的参考文档,将普通表格段落与列表共用的 Compact 样式分开,并在 DOCX 内记录转换器与模板来源信息。该转换器不安装软件。应运行此转换器,而不是直接执行 pandoc source.md -o output.docx,因为直接命令会绕过报告模板及其排版、页面几何、表格间距和来源记录。
在 Open Science 中,先通过注册的 Notebook 辅助函数准备工作流:
{ "kernelSkillIds": ["docx-generation"], "code": "docx_workflow = prepare_docx_conversion('.')\nprint(docx_workflow)" }
直接调用该函数,无需导入。每个使用该函数的单元格都要重复 kernelSkillIds。该辅助函数会把固定转换器和参考文档写入授权 Notebook 工作目录下的新目录,并返回 script_path、reference_path 和 workflow_directory。这里使用的是注册技能传输方式;Notebook 和 shell 不一定能读取框架的技能目录。
然后通过会话批准的 shell 工具运行返回的 script_path:
python "<returned-script_path>" "<source.md>" "<output.docx>"
使用为会话配置的解释器。如果辅助函数不可用,应通过正常执行恢复流程报告该前置条件;不要探测或从隔离的框架技能目录复制。在 Open Science 之外、已允许读取此包的环境中,原始 scripts/convert.py 也可作为独立 CLI 使用。
可选参数:
--reference-doc "<template.docx>":使用用户模板。其样式和页面设置优先,内置的 TableBody 规范化不会应用。
--from gfm 或 --from markdown+pipe_tables:选择与源文件匹配的方言。默认是 Pandoc Markdown。
--pandoc "<absolute-executable-path>":选择已有可执行文件。
内置报告配置使用 A4、2 cm 页边距、10.5 pt 正文、约 1.33 倍行距,标题字号协调(17/14/11.5 pt),列表间距更紧。表格使用 9.5 pt 文字,单元格内边距为垂直 3 pt、水平 4 pt,显示外框和内部网格线,表头加粗且无背景底纹。顶层表格在自动宽度下填满文本区域;显式宽度和列比例保持不变。默认字体为 Arial 和用于东亚文本的 PingFang SC;字体不嵌入,查看器会替换缺失字体。针对特定查看平台或字体要求,应使用具有合适可用字体的参考文档。参考文档的正文内容不会被复制到输出中。如果任务需要填充模板已有内容,应使用其他工作流。
当用户提供模板或要求不同设计时,不要用内置模板替代。对于特殊页面布局或表格宽度,应使用合适的参考文档或进行针对性文档编辑;不要对每份文档强加固定页面或列尺寸。
对于 Pandoc Markdown 管道表格,应保留有意的分隔行宽度。对宽 Markdown 表格进行补齐或重新格式化可能改变 Pandoc 推断出的列比例。
转换器输出一条 JSON 回执,包含输出路径、MIME 类型、版本和模板哈希。它要求新的输出文件名,并保持现有文件不变。如果支持的 Pandoc 版本不可用,应报告缺失的前置条件,或在会话正常环境规则下使用其他合适的文档生成工作流。该技能并非所有 DOCX 任务都需要 Pandoc。
编辑已有 DOCX 文件
使用合适的文档库或范围受限的 OOXML 修改来改变现有包。保留无关的样式、编号、关系、节和嵌入对象。当任务需要保留复杂格式源文档的布局时,避免通过 Markdown 重建。对于复杂表格和精确表单,选择适合该结构的文档库;仅选择文档库并不保证样式保留。
产物交付
将生成文件的本地路径和 MIME 类型传给 write_artifact_file。如果由 Notebook 或 shell 执行生成,应包含确切的执行 runId 作为 producerRunId。转换器回执不是 Artifact 回执;只有在 Artifact 工具成功后,才能声明文件可用。