{"id":"cd1c1133-df75-44b8-9ddb-0c09c035b25d","entityType":"agent","slug":"clawhub-cwyalpha-doc-format","name":"公文格式转换","canonicalUrl":"https://www.xpersona.co/agent/clawhub-cwyalpha-doc-format","canonicalPath":"/agent/clawhub-cwyalpha-doc-format","generatedAt":"2026-10-11T03:54:17.702Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":null},"description":"公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Skill: 公文格式转换 Owner: cwyalpha Summary: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-05-15T14:43:52.244Z | user doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”（如 1. 1.2.3）按源文档保留、不自动重排说明。 - 其他内容无变动，仅补充文档描述与功能说明，无代码更新。 v1.0.3 | 2026-05-01T02:02:42.975Z | user doc-","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17dwrya2j06j616dbs8mscvwd85smfr:doc-format","sourceUrl":"https://clawhub.ai/cwyalpha/doc-format","homepage":"https://clawhub.ai/cwyalpha/skills/doc-format","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/cwyalpha/doc-format","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/cwyalpha/skills/doc-format","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":null},"stars":null,"forks":null,"downloads":1210,"packageName":null,"latestVersion":"1.0.4","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T01:09:54.859Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T01:09:54.921Z","lastCrawledAt":"2026-10-11T01:09:54.859Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T01:09:54.859Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.4","createdAt":"2026-05-15T14:43:52.244Z","changelog":"doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”（如 1. 1.2.3）按源文档保留、不自动重排说明。 - 其他内容无变动，仅补充文档描述与功能说明，无代码更新。","fileCount":11,"zipByteSize":39459},{"version":"1.0.3","createdAt":"2026-05-01T02:02:42.975Z","changelog":"doc-format 1.0.3 - 文档和描述内容精简、调整，移除冗余说明，无代码变动。 - 保留核心能力、流程和命令示例，提升可读性。 - 参考/规则/流程与用户提示未变。 - 功能和用法保持与前一版一致。","fileCount":10,"zipByteSize":38224},{"version":"1.0.2","createdAt":"2026-05-01T01:58:12.592Z","changelog":"doc-format v1.0.2 - 增加 requirements.txt、wfp_config.py、wfp_tests.py，完善依赖声明和内置单元测试。 - 丰富说明文档：详细列出支持输入格式、空行处理模式、LibreOffice 转换方式、常见用法、命令行选项。 - 技能描述与使用前检查流程更新，突出配置、自定义覆盖和批量处理能力。 - 新增对 TXT/MD 空行处理模式与更灵活的配置输入（如 --config-json、--set）。 - 明确日志输出、错误处理、测试运行和环境兼容性说明。","fileCount":10,"zipByteSize":38371},{"version":"1.0.1","createdAt":"2026-04-29T05:58:40.557Z","changelog":"- 优化说明文档，全面梳理工具核心功能、输入输出行为和配置方法。 - 明确各类输入支持（含 docx/doc/wps/txt/md）、自动识别标题与内容结构，详述批量与目录处理方式。 - 补充常用 CLI 使用示例、配置保存/修改流程、常见便利开关操作。 - 明确失败处理、输出路径、日志与退出码规范。 - 强调处理完成后的用户自查要点，特别针对自动编号与增强设置提醒。 - 提供引用文档指导（命令格式、配置、排版规则）便于后续查询。","fileCount":7,"zipByteSize":32239}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dwrya2j06j616dbs8mscvwd85smfr:doc-format","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T03:54:17.701Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":null},"readme":"Skill: 公文格式转换\n\nOwner: cwyalpha\n\nSummary: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化...\n\nTags: latest:1.0.4\n\nVersion history:\n\nv1.0.4 | 2026-05-15T14:43:52.244Z | user\n\ndoc-format 1.0.4\n\n- 新增 TXT/MD 格式下“手写数字编号”（如 1. 1.2.3）按源文档保留、不自动重排说明。\n- 其他内容无变动，仅补充文档描述与功能说明，无代码更新。\n\nv1.0.3 | 2026-05-01T02:02:42.975Z | user\n\ndoc-format 1.0.3\n\n- 文档和描述内容精简、调整，移除冗余说明，无代码变动。\n- 保留核心能力、流程和命令示例，提升可读性。\n- 参考/规则/流程与用户提示未变。\n- 功能和用法保持与前一版一致。\n\nv1.0.2 | 2026-05-01T01:58:12.592Z | user\n\ndoc-format v1.0.2\n\n- 增加 requirements.txt、wfp_config.py、wfp_tests.py，完善依赖声明和内置单元测试。\n- 丰富说明文档：详细列出支持输入格式、空行处理模式、LibreOffice 转换方式、常见用法、命令行选项。\n- 技能描述与使用前检查流程更新，突出配置、自定义覆盖和批量处理能力。\n- 新增对 TXT/MD 空行处理模式与更灵活的配置输入（如 --config-json、--set）。\n- 明确日志输出、错误处理、测试运行和环境兼容性说明。\n\nv1.0.1 | 2026-04-29T05:58:40.557Z | user\n\n- 优化说明文档，全面梳理工具核心功能、输入输出行为和配置方法。\n- 明确各类输入支持（含 docx/doc/wps/txt/md）、自动识别标题与内容结构，详述批量与目录处理方式。\n- 补充常用 CLI 使用示例、配置保存/修改流程、常见便利开关操作。\n- 明确失败处理、输出路径、日志与退出码规范。\n- 强调处理完成后的用户自查要点，特别针对自动编号与增强设置提醒。\n- 提供引用文档指导（命令格式、配置、排版规则）便于后续查询。\n\nArchive index:\n\nArchive v1.0.4: 11 files, 39459 bytes\n\nFiles: references/cli-reference.md (5738b), references/config-reference.md (3769b), references/formatting-rules.md (4164b), requirements.txt (63b), scripts/wfp_cli.py (25226b), scripts/wfp_config.py (2666b), scripts/wfp_core.py (76875b), scripts/wfp_tests.py (7437b), skill-card.md (2281b), SKILL.md (6756b), _meta.json (129b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: doc-format\ndescription: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词：公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。\n---\n\n# doc-format — 公文格式排版工具\n\n使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改，Word/WPS 类文档会先复制或转换到临时副本，再执行排版。\n\n## 核心能力\n\n- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。\n- 支持单文件、多文件、重复 `-i`、位置参数输入，以及一个或多个目录；目录输入默认递归扫描，输出目录保留原结构。\n- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。\n- 可选表格内容自动调整、数字和字母单独字体、符号标准化。\n- TXT/MD 支持三种空行模式：不改动任何空行；删除单个空行，多个空行保留至 1 个空行；保留单个空行，多个空行保留至 1 个空行。\n- TXT/MD 中手写数字编号（如 `1.`、`1.2.3`）按源文档保留，不自动递增重排。\n- 支持自动读取当前目录 `wfp_config.json`、指定 JSON 配置文件、内联 JSON、`--set key=value` 和便利开关覆盖配置。\n\n## 使用前检查\n\n1. 确认脚本路径：脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录，使用 `SKILL.md` 所在目录推导脚本绝对路径，或先 `cd` 到 Skill 目录。\n2. 检查输入：如果用户没有给出文件或目录，请先要求提供输入路径；告知支持 `.docx/.doc/.wps/.txt/.md`，目录默认递归处理。\n3. 检查配置：CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件，使用用户指定配置；否则说明将使用当前目录配置或内置默认配置。\n4. 检查转换条件：Windows 处理 `.doc/.wps` 时优先使用 WPS/Word 和 pywin32；macOS/Linux 或 COM 不可用时，CLI 会尝试调用 LibreOffice `soffice` 转为 `.docx`。如果转换失败，再提示用户安装 LibreOffice、用 `--soffice` 指定路径，或先另存为 `.docx`。\n\n## 常用命令\n\n```bash\n# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，只处理当前目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用自定义配置\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# macOS/Linux 或 COM 不可用时，可指定 soffice 处理 .doc/.wps 转换\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 临时覆盖配置\npython scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting\n\n# 内联 JSON 覆盖配置\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# TXT/MD 文件转换\npython scripts/wfp_cli.py format -i draft.md \n\n# 查看默认配置\npython scripts/wfp_cli.py show-config\n\n# 保存默认配置模板\npython scripts/wfp_cli.py save-config\n\n# 显示 LibreOffice 安装提示\npython scripts/wfp_cli.py install-help\n\n# 运行内置单元测试\npython scripts/wfp_cli.py test\n```\n\n## 配置处理流程\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 输出行为\n\n- 成功生成的 `.docx` 绝对路径写入 stdout。\n- 详细日志仅在使用 `-v/--verbose` 时写入 stderr。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n- 目录处理中单个文件失败不会阻止后续文件继续处理。\n- 处理失败时，最终回复应说明失败文件和错误原因。\n\n## 完成后必读\n\n每次完成格式化后，都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。\n\n如果处理过 `.doc/.wps` 或 Word/WPS 类文档，尤其要检查自动编号。自动编号未能确认转换成功时，编号文本、段落缩进、字体字号可能没有正常格式化；如果编号无法单独选中，说明可能仍是 Word/WPS 自动编号，必要时请将其转为手写文本编号后重新运行工具。\n\n表格内容自动调整、符号标准化属于更容易影响版面的增强项，重要文件建议在副本上检查效果。\n\n## Reference Files\n\n- 需要完整命令格式、参数说明、更多命令示例时，读取 `references/cli-reference.md`。\n- 需要把用户配置需求映射到字段、查看字号对照时，读取 `references/config-reference.md`。\n- 需要说明默认排版规则、标题识别、页面段落、TXT/MD、表格和附件规则时，读取 `references/formatting-rules.md`。\n\n## Agent 使用准则\n\n1. 没有输入时不要直接运行 `format`。\n2. 用户询问配置时运行 `show-config`，不要凭记忆列配置。\n3. 用户提出配置修改时，优先保存配置，再用该配置处理文档。\n4. 用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n5. 目录输入默认递归；只有用户明确要求“只处理当前目录”时才加 `--no-recursive`。\n6. macOS/Linux 或 COM 不可用环境下，可以处理 `.doc/.wps` 的前提是 LibreOffice `soffice` 可用；不要承诺可转换自动编号。\n7. 处理结束后必须提示用户检查自动编号所在标题和段落的转换效果，并提醒用户如启用了表格内容自动调整、数字和字母单独字体、符号标准化，应重点抽查版面。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn79hzn4zapay7zmdpvynrys6981vxne\",\n  \"slug\": \"doc-format\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1778856232244\n}\n\nFile v1.0.4:references/cli-reference.md\n\n# CLI Reference\n\n## 命令格式\n\n主命令：\n\n```bash\npython scripts/wfp_cli.py <子命令> [参数]\n```\n\n格式化：\n\n```bash\npython scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数]\n```\n\n查看配置：\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n保存配置：\n\n```bash\npython scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>]\n```\n\n安装提示：\n\n```bash\npython scripts/wfp_cli.py install-help\n```\n\n运行测试：\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n## `format` 参数\n\n| 参数 | 默认值 | 说明 |\n|---|---:|---|\n| `paths` | 可选 | 位置参数输入路径，可一次传入多个文件或目录 |\n| `-i, --input` | 可选 | 输入文件或目录，可重复。与 `paths` 可同时使用 |\n| `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 |\n| `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件，会覆盖默认配置中的同名字段 |\n| `--config-json` | 无 | 内联 JSON 对象，会覆盖配置文件中的同名字段 |\n| `--set key=value` | 无 | 覆盖单个配置项，可重复使用 |\n| `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 |\n| `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 |\n| `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 |\n| `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 |\n| `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体；使用后自动启用 `use_custom_english_font` |\n| `--normalize-punctuation` | 关闭 | 启用符号标准化 |\n| `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 |\n| `--blank-line-mode` | 删除单个空行，多个空行保留至1个空行 | 覆盖 TXT/MD 空行处理模式 |\n| `--no-recursive` | 关闭 | 目录输入时不递归子目录；默认递归 |\n| `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径，用于 `.doc/.wps` 转 `.docx` |\n| `--soffice-timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 |\n| `-v, --verbose` | 关闭 | 显示详细日志 |\n\n`--blank-line-mode` 可选值：\n\n- `不改动任何空行`\n- `删除单个空行，多个空行保留至1个空行`\n- `保留单个空行，多个空行保留至1个空行`\n\n## `show-config`\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n输出 JSON，包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、空行模式、常用可选增强项、所有配置项的值、名称和说明。\n\n`show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关，用来查看覆盖后的配置效果。\n\n## `save-config`\n\n```bash\npython scripts/wfp_cli.py save-config\n```\n\n- 默认输出到当前目录 `wfp_config.json`。\n- 会先读取 `--config` 或当前目录已有 `wfp_config.json`，再应用 `--config-json`、`--set` 和便利开关，最后保存合并后的配置。\n- 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化。\n\n## `test`\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n运行内置单元测试，覆盖文本处理、Markdown 清理、空行模式、OOXML 保护、表格辅助判断、临时文件路径和 TXT 转换等纯函数或轻量流程。\n\n## 使用示例\n\n```bash\n# DOCX 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# TXT/MD 输入\npython scripts/wfp_cli.py format -i meeting_notes.txt\npython scripts/wfp_cli.py format -i draft.md --blank-line-mode \"不改动任何空行\"\n\n# 多文件\npython scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，默认递归\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 不递归子目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 指定 LibreOffice soffice 转换旧格式\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 启用增强功能后处理\npython scripts/wfp_cli.py format -i input.docx --enable-table-formatting --english-font \"Times New Roman\" --normalize-punctuation\n\n# 查看和导出配置\npython scripts/wfp_cli.py show-config\npython scripts/wfp_cli.py save-config --set body_font=宋体 --set body_size=12\n\n# 显示安装提示\npython scripts/wfp_cli.py install-help\n\n# 查看详细日志\npython scripts/wfp_cli.py format -i input.docx -v\n```\n\n## 平台行为\n\n- Windows：`.doc/.wps` 转 `.docx` 优先使用 WPS/Word COM 和 pywin32；如果 COM 转换失败，会尝试 LibreOffice `soffice` 兜底。\n- macOS/Linux：可处理 `.docx/.txt/.md`；`.doc/.wps` 会尝试调用 LibreOffice `soffice` 转为 `.docx`，失败时提示安装 LibreOffice、用 `--soffice` 指定路径，或先手动另存为 `.docx`。\n- 非 Windows 或 COM 不可用时，自动编号转文本会跳过。完成后需人工检查自动编号字体字号。\n\n## 输出行为\n\n- 成功时 stdout 每行打印一个输出 `.docx` 的绝对路径。\n- `-v/--verbose` 开启后，详细处理日志写入 stderr。\n- 单文件默认输出到同目录 `*_formatted.docx`。\n- 目录默认输出到 `<输入目录>_formatted/`，或用户指定的输出目录。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n\nFile v1.0.4:references/config-reference.md\n\n# Config Reference\n\n## 根据用户需求修改配置\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解默认配置字段和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 使用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 使用 `format` 处理文档；CLI 会自动读取当前目录的 `wfp_config.json`。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 常见自然语言到配置字段\n\n| 用户需求 | 配置字段或命令 |\n|---|---|\n| 正文字体改为宋体 | `--set body_font=宋体` |\n| 正文字号改为小四 | `--set body_size=12` |\n| 题目字体改为华文中宋 | `--set title_font=华文中宋` |\n| 题目字号改为小二 | `--set title_size=18` |\n| 一级标题字体改为黑体 | `--set h1_font=黑体` |\n| 二级标题字体改为楷体 | `--set h2_font=楷体` |\n| 页码字体改为 Times New Roman | `--set page_number_font=\"Times New Roman\"` |\n| 正文行距改为 30 磅 | `--set line_spacing=30` |\n| 题目行距改为 33 磅 | `--set title_line_spacing=33` |\n| 副标题行距改为 33 磅 | `--set subtitle_line_spacing=33` |\n| 强制 A4 | `--set force_a4=true` |\n| 不设置大纲级别 | `--set set_outline=false` |\n| 不启用附件格式化 | `--set enable_attachment_formatting=false` |\n| 启用表格内容自动调整 | `--enable-table-formatting` |\n| 启用表格智能对齐 | `--set table_smart_align=true` |\n| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font \"Times New Roman\"` |\n| 启用符号标准化 | `--normalize-punctuation` |\n| TXT/MD 不改动任何空行 | `--set blank_line_mode=\"不改动任何空行\"` |\n| TXT/MD 删除单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"删除单个空行，多个空行保留至1个空行\"` |\n| TXT/MD 保留单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"保留单个空行，多个空行保留至1个空行\"` |\n\n旧配置中的 `remove_blank_lines` 仍可读取；如未提供 `blank_line_mode`，CLI 会按旧字段映射到新的 TXT/MD 空行模式。\n\n## 常用字号对照\n\n| 字号名称 | pt 值 |\n|---|---:|\n| 一号 | 26 |\n| 小一 | 24 |\n| 二号 | 22 |\n| 小二 | 18 |\n| 三号 | 16 |\n| 小三 | 15 |\n| 四号 | 14 |\n| 小四 | 12 |\n| 五号 | 10.5 |\n| 小五 | 9 |\n\n## 配置文件示例\n\n```json\n{\n    \"body_font\": \"宋体\",\n    \"body_size\": 12,\n    \"line_spacing\": 30,\n    \"force_a4\": true,\n    \"enable_table_formatting\": true,\n    \"use_custom_english_font\": true,\n    \"english_font\": \"Times New Roman\",\n    \"normalize_punctuation\": true,\n    \"blank_line_mode\": \"删除单个空行，多个空行保留至1个空行\"\n}\n```\n\n配置文件不需要包含所有字段；只写需要覆盖默认值的字段即可。若使用 `save-config` 导出的完整模板，可直接在模板中修改对应值。\n\n## 使用配置处理文档\n\n```bash\n# 保存配置到当前目录 wfp_config.json\npython scripts/wfp_cli.py save-config \\\n  --set body_font=宋体 \\\n  --set body_size=12 \\\n  --set line_spacing=30 \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n\n# 使用当前目录自动配置\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 使用指定配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 使用内联 JSON 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# 使用 --set 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18\n```\n\nFile v1.0.4:references/formatting-rules.md\n\n# Formatting Rules\n\n## 标题层级\n\n| 类型 | 识别规则 | 默认字体 | 默认字号 |\n|---|---|---|---:|\n| 题目 | 文档开头连续居中且字体字号一致的段落；TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 |\n| 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 |\n| 一级标题 | `一、`、`二、` 等 | 黑体 | 16 |\n| 二级标题 | `（一）`、`（二）` 等 | 楷体_GB2312 | 16 |\n| 三级标题 | `1.`、`2.`、`1．` 等 | 仿宋_GB2312 | 16 |\n| 四级标题 | `（1）`、`(1)` 等 | 仿宋_GB2312 | 16 |\n| 正文 | 其他普通段落 | 仿宋_GB2312 | 16 |\n\n二级标题与正文在同一段落且以句号分隔时，会尝试在段内拆分标题部分和正文部分，分别应用二级标题和正文字体。\n\n## 页面和段落\n\n- 页边距：上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm。\n- 页脚距：2.5cm。\n- 正文行距：28 磅。\n- 题目/副标题行距：33 磅。\n- 页码：默认奇偶分页，奇数页右对齐，偶数页左对齐。\n- 页码字体：宋体，14pt。\n- 正文和标题会清理残留缩进，再设置标准首行缩进 2 字符。\n- `force_a4=false` 时 Word/WPS 文档保留原纸张大小；TXT/MD 默认使用 A4。\n\n段落包含图片、嵌入对象等特殊内容时，只处理必要文字格式，保留段落行距等布局，避免图片或对象显示不全。\n\n## TXT/MD 特殊处理\n\n- `.txt` 会按文本行生成段落。\n- `.md` 会清理 Markdown 标记，包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等。\n- TXT/MD 中手写数字编号（如 `1.`、`1.2.3`）按源文档保留，不自动递增重排。\n- 默认空行模式为：删除单个空行，连续多个空行合并为 1 个空行。\n- 可通过 `--blank-line-mode` 或配置字段 `blank_line_mode` 改为空行不处理，或保留单个空行但压缩多个空行。\n\n空行模式：\n\n| 模式 | 行为 |\n|---|---|\n| `不改动任何空行` | TXT/MD 原始空行保持不变 |\n| `删除单个空行，多个空行保留至1个空行` | 单个空行删除，连续多个空行合并为 1 个 |\n| `保留单个空行，多个空行保留至1个空行` | 单个空行保留，连续多个空行合并为 1 个 |\n\n## 表格、图表和附件\n\n- 表格内容自动调整默认关闭，避免改变复杂表格布局。\n- 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐。\n- 表格智能对齐启用后，会尝试将表头、合计/总计、序号列、短文本居中，将数字内容右对齐。\n- 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别。\n- 附件标识默认启用格式化，识别 `附件`、`附件1`、`附件：` 等形式，并会段前分页。\n- 附件标识后会继续尝试识别附件题目和副标题；如果没有附件题目/副标题，不应跳过紧随其后的正文段落。\n\n## 符号和特殊内容\n\n- 符号标准化默认关闭，可通过配置 `normalize_punctuation: true` 启用。\n- 启用后会较保守地处理中文语境中的英文标点、引号、括号、省略号等，避免影响数字、小数、英文内容。\n- 段落含域代码时会跳过符号标准化，避免破坏自动域、书签、批注引用等特殊内容。\n- 删除段首空白 run 时会检查 run 内是否含有非文本 OOXML 子元素，避免破坏域代码、书签、批注引用等特殊内容。\n\n## 平台和自动编号\n\n- Windows 环境下，会尽量通过 WPS/Word COM 接受修订，并将自动编号转为普通文本。\n- `.doc/.wps` 转 `.docx` 在 Windows 优先使用 WPS/Word COM；macOS/Linux 或 COM 转换失败时，会尝试调用 LibreOffice `soffice`。\n- 如果 `soffice` 自动查找失败，可在 CLI 中使用 `--soffice <路径>` 指定；如果转换仍失败，应先手动另存为 `.docx` 后再处理。\n- 非 Windows 或 COM 不可用时，会跳过需要 WPS/Word 的预处理步骤。\n- 自动编号转换失败或被跳过时，输出文件中编号样式可能仍由 Word/WPS 自动编号控制，字体字号和缩进需要人工检查。\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\n公文格式转换 helps an agent format DOC, DOCX, WPS, TXT, and Markdown documents into standardized DOCX files using Chinese official-document layout conventions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[cwyalpha](https://clawhub.ai/user/cwyalpha)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEmployees, external users, and document-processing agents use this skill to standardize Chinese official documents, batch-format directories, adjust layout configuration, and generate DOCX outputs while preserving original source files.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Windows document handling can open Office files invisibly without clearly disabling active content.\n\nMitigation: Avoid running the skill on untrusted DOC or WPS files unless Office or WPS macros and active content are force-disabled, or perform conversion in a sandbox.\n\nRisk: Recursive directory formatting and configuration writes can affect many output paths.\n\nMitigation: Review input and output paths before batch formatting or saving configuration files, and inspect generated DOCX files after processing.\n\nRisk: Unpinned Python dependencies can change behavior across installations.\n\nMitigation: Pin and review dependency versions before production use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/cwyalpha/skills/doc-format)\n- [CLI Reference](references/cli-reference.md)\n- [Config Reference](references/config-reference.md)\n- [Formatting Rules](references/formatting-rules.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and generated DOCX file paths]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The skill may produce DOCX files through its bundled CLI and should report output paths and processing failures.]\n\n## Skill Version(s):\n\n1.0.4 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.4:requirements.txt\n\npython-docx\ntkinterdnd2\npywin32; platform_system == \"Windows\"\n\nArchive v1.0.3: 10 files, 38224 bytes\n\nFiles: references/cli-reference.md (5738b), references/config-reference.md (3769b), references/formatting-rules.md (4064b), requirements.txt (63b), scripts/wfp_cli.py (25226b), scripts/wfp_config.py (2667b), scripts/wfp_core.py (77990b), scripts/wfp_tests.py (6999b), SKILL.md (6656b), _meta.json (129b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: doc-format\ndescription: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词：公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。\n---\n\n# doc-format — 公文格式排版工具\n\n使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改，Word/WPS 类文档会先复制或转换到临时副本，再执行排版。\n\n## 核心能力\n\n- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。\n- 支持单文件、多文件、重复 `-i`、位置参数输入，以及一个或多个目录；目录输入默认递归扫描，输出目录保留原结构。\n- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。\n- 可选表格内容自动调整、数字和字母单独字体、符号标准化。\n- TXT/MD 支持三种空行模式：不改动任何空行；删除单个空行，多个空行保留至 1 个空行；保留单个空行，多个空行保留至 1 个空行。\n- 支持自动读取当前目录 `wfp_config.json`、指定 JSON 配置文件、内联 JSON、`--set key=value` 和便利开关覆盖配置。\n\n## 使用前检查\n\n1. 确认脚本路径：脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录，使用 `SKILL.md` 所在目录推导脚本绝对路径，或先 `cd` 到 Skill 目录。\n2. 检查输入：如果用户没有给出文件或目录，请先要求提供输入路径；告知支持 `.docx/.doc/.wps/.txt/.md`，目录默认递归处理。\n3. 检查配置：CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件，使用用户指定配置；否则说明将使用当前目录配置或内置默认配置。\n4. 检查转换条件：Windows 处理 `.doc/.wps` 时优先使用 WPS/Word 和 pywin32；macOS/Linux 或 COM 不可用时，CLI 会尝试调用 LibreOffice `soffice` 转为 `.docx`。如果转换失败，再提示用户安装 LibreOffice、用 `--soffice` 指定路径，或先另存为 `.docx`。\n\n## 常用命令\n\n```bash\n# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，只处理当前目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用自定义配置\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# macOS/Linux 或 COM 不可用时，可指定 soffice 处理 .doc/.wps 转换\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 临时覆盖配置\npython scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting\n\n# 内联 JSON 覆盖配置\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# TXT/MD 文件转换\npython scripts/wfp_cli.py format -i draft.md \n\n# 查看默认配置\npython scripts/wfp_cli.py show-config\n\n# 保存默认配置模板\npython scripts/wfp_cli.py save-config\n\n# 显示 LibreOffice 安装提示\npython scripts/wfp_cli.py install-help\n\n# 运行内置单元测试\npython scripts/wfp_cli.py test\n```\n\n## 配置处理流程\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 输出行为\n\n- 成功生成的 `.docx` 绝对路径写入 stdout。\n- 详细日志仅在使用 `-v/--verbose` 时写入 stderr。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n- 目录处理中单个文件失败不会阻止后续文件继续处理。\n- 处理失败时，最终回复应说明失败文件和错误原因。\n\n## 完成后必读\n\n每次完成格式化后，都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。\n\n如果处理过 `.doc/.wps` 或 Word/WPS 类文档，尤其要检查自动编号。自动编号未能确认转换成功时，编号文本、段落缩进、字体字号可能没有正常格式化；如果编号无法单独选中，说明可能仍是 Word/WPS 自动编号，必要时请将其转为手写文本编号后重新运行工具。\n\n表格内容自动调整、符号标准化属于更容易影响版面的增强项，重要文件建议在副本上检查效果。\n\n## Reference Files\n\n- 需要完整命令格式、参数说明、更多命令示例时，读取 `references/cli-reference.md`。\n- 需要把用户配置需求映射到字段、查看字号对照时，读取 `references/config-reference.md`。\n- 需要说明默认排版规则、标题识别、页面段落、TXT/MD、表格和附件规则时，读取 `references/formatting-rules.md`。\n\n## Agent 使用准则\n\n1. 没有输入时不要直接运行 `format`。\n2. 用户询问配置时运行 `show-config`，不要凭记忆列配置。\n3. 用户提出配置修改时，优先保存配置，再用该配置处理文档。\n4. 用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n5. 目录输入默认递归；只有用户明确要求“只处理当前目录”时才加 `--no-recursive`。\n6. macOS/Linux 或 COM 不可用环境下，可以处理 `.doc/.wps` 的前提是 LibreOffice `soffice` 可用；不要承诺可转换自动编号。\n7. 处理结束后必须提示用户检查自动编号所在标题和段落的转换效果，并提醒用户如启用了表格内容自动调整、数字和字母单独字体、符号标准化，应重点抽查版面。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn79hzn4zapay7zmdpvynrys6981vxne\",\n  \"slug\": \"doc-format\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1777600962975\n}\n\nFile v1.0.3:references/cli-reference.md\n\n# CLI Reference\n\n## 命令格式\n\n主命令：\n\n```bash\npython scripts/wfp_cli.py <子命令> [参数]\n```\n\n格式化：\n\n```bash\npython scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数]\n```\n\n查看配置：\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n保存配置：\n\n```bash\npython scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>]\n```\n\n安装提示：\n\n```bash\npython scripts/wfp_cli.py install-help\n```\n\n运行测试：\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n## `format` 参数\n\n| 参数 | 默认值 | 说明 |\n|---|---:|---|\n| `paths` | 可选 | 位置参数输入路径，可一次传入多个文件或目录 |\n| `-i, --input` | 可选 | 输入文件或目录，可重复。与 `paths` 可同时使用 |\n| `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 |\n| `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件，会覆盖默认配置中的同名字段 |\n| `--config-json` | 无 | 内联 JSON 对象，会覆盖配置文件中的同名字段 |\n| `--set key=value` | 无 | 覆盖单个配置项，可重复使用 |\n| `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 |\n| `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 |\n| `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 |\n| `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 |\n| `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体；使用后自动启用 `use_custom_english_font` |\n| `--normalize-punctuation` | 关闭 | 启用符号标准化 |\n| `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 |\n| `--blank-line-mode` | 删除单个空行，多个空行保留至1个空行 | 覆盖 TXT/MD 空行处理模式 |\n| `--no-recursive` | 关闭 | 目录输入时不递归子目录；默认递归 |\n| `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径，用于 `.doc/.wps` 转 `.docx` |\n| `--soffice-timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 |\n| `-v, --verbose` | 关闭 | 显示详细日志 |\n\n`--blank-line-mode` 可选值：\n\n- `不改动任何空行`\n- `删除单个空行，多个空行保留至1个空行`\n- `保留单个空行，多个空行保留至1个空行`\n\n## `show-config`\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n输出 JSON，包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、空行模式、常用可选增强项、所有配置项的值、名称和说明。\n\n`show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关，用来查看覆盖后的配置效果。\n\n## `save-config`\n\n```bash\npython scripts/wfp_cli.py save-config\n```\n\n- 默认输出到当前目录 `wfp_config.json`。\n- 会先读取 `--config` 或当前目录已有 `wfp_config.json`，再应用 `--config-json`、`--set` 和便利开关，最后保存合并后的配置。\n- 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化。\n\n## `test`\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n运行内置单元测试，覆盖文本处理、Markdown 清理、空行模式、OOXML 保护、表格辅助判断、临时文件路径和 TXT 转换等纯函数或轻量流程。\n\n## 使用示例\n\n```bash\n# DOCX 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# TXT/MD 输入\npython scripts/wfp_cli.py format -i meeting_notes.txt\npython scripts/wfp_cli.py format -i draft.md --blank-line-mode \"不改动任何空行\"\n\n# 多文件\npython scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，默认递归\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 不递归子目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 指定 LibreOffice soffice 转换旧格式\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 启用增强功能后处理\npython scripts/wfp_cli.py format -i input.docx --enable-table-formatting --english-font \"Times New Roman\" --normalize-punctuation\n\n# 查看和导出配置\npython scripts/wfp_cli.py show-config\npython scripts/wfp_cli.py save-config --set body_font=宋体 --set body_size=12\n\n# 显示安装提示\npython scripts/wfp_cli.py install-help\n\n# 查看详细日志\npython scripts/wfp_cli.py format -i input.docx -v\n```\n\n## 平台行为\n\n- Windows：`.doc/.wps` 转 `.docx` 优先使用 WPS/Word COM 和 pywin32；如果 COM 转换失败，会尝试 LibreOffice `soffice` 兜底。\n- macOS/Linux：可处理 `.docx/.txt/.md`；`.doc/.wps` 会尝试调用 LibreOffice `soffice` 转为 `.docx`，失败时提示安装 LibreOffice、用 `--soffice` 指定路径，或先手动另存为 `.docx`。\n- 非 Windows 或 COM 不可用时，自动编号转文本会跳过。完成后需人工检查自动编号字体字号。\n\n## 输出行为\n\n- 成功时 stdout 每行打印一个输出 `.docx` 的绝对路径。\n- `-v/--verbose` 开启后，详细处理日志写入 stderr。\n- 单文件默认输出到同目录 `*_formatted.docx`。\n- 目录默认输出到 `<输入目录>_formatted/`，或用户指定的输出目录。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n\nFile v1.0.3:references/config-reference.md\n\n# Config Reference\n\n## 根据用户需求修改配置\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解默认配置字段和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 使用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 使用 `format` 处理文档；CLI 会自动读取当前目录的 `wfp_config.json`。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 常见自然语言到配置字段\n\n| 用户需求 | 配置字段或命令 |\n|---|---|\n| 正文字体改为宋体 | `--set body_font=宋体` |\n| 正文字号改为小四 | `--set body_size=12` |\n| 题目字体改为华文中宋 | `--set title_font=华文中宋` |\n| 题目字号改为小二 | `--set title_size=18` |\n| 一级标题字体改为黑体 | `--set h1_font=黑体` |\n| 二级标题字体改为楷体 | `--set h2_font=楷体` |\n| 页码字体改为 Times New Roman | `--set page_number_font=\"Times New Roman\"` |\n| 正文行距改为 30 磅 | `--set line_spacing=30` |\n| 题目行距改为 33 磅 | `--set title_line_spacing=33` |\n| 副标题行距改为 33 磅 | `--set subtitle_line_spacing=33` |\n| 强制 A4 | `--set force_a4=true` |\n| 不设置大纲级别 | `--set set_outline=false` |\n| 不启用附件格式化 | `--set enable_attachment_formatting=false` |\n| 启用表格内容自动调整 | `--enable-table-formatting` |\n| 启用表格智能对齐 | `--set table_smart_align=true` |\n| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font \"Times New Roman\"` |\n| 启用符号标准化 | `--normalize-punctuation` |\n| TXT/MD 不改动任何空行 | `--set blank_line_mode=\"不改动任何空行\"` |\n| TXT/MD 删除单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"删除单个空行，多个空行保留至1个空行\"` |\n| TXT/MD 保留单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"保留单个空行，多个空行保留至1个空行\"` |\n\n旧配置中的 `remove_blank_lines` 仍可读取；如未提供 `blank_line_mode`，CLI 会按旧字段映射到新的 TXT/MD 空行模式。\n\n## 常用字号对照\n\n| 字号名称 | pt 值 |\n|---|---:|\n| 一号 | 26 |\n| 小一 | 24 |\n| 二号 | 22 |\n| 小二 | 18 |\n| 三号 | 16 |\n| 小三 | 15 |\n| 四号 | 14 |\n| 小四 | 12 |\n| 五号 | 10.5 |\n| 小五 | 9 |\n\n## 配置文件示例\n\n```json\n{\n    \"body_font\": \"宋体\",\n    \"body_size\": 12,\n    \"line_spacing\": 30,\n    \"force_a4\": true,\n    \"enable_table_formatting\": true,\n    \"use_custom_english_font\": true,\n    \"english_font\": \"Times New Roman\",\n    \"normalize_punctuation\": true,\n    \"blank_line_mode\": \"删除单个空行，多个空行保留至1个空行\"\n}\n```\n\n配置文件不需要包含所有字段；只写需要覆盖默认值的字段即可。若使用 `save-config` 导出的完整模板，可直接在模板中修改对应值。\n\n## 使用配置处理文档\n\n```bash\n# 保存配置到当前目录 wfp_config.json\npython scripts/wfp_cli.py save-config \\\n  --set body_font=宋体 \\\n  --set body_size=12 \\\n  --set line_spacing=30 \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n\n# 使用当前目录自动配置\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 使用指定配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 使用内联 JSON 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# 使用 --set 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18\n```\n\nFile v1.0.3:references/formatting-rules.md\n\n# Formatting Rules\n\n## 标题层级\n\n| 类型 | 识别规则 | 默认字体 | 默认字号 |\n|---|---|---|---:|\n| 题目 | 文档开头连续居中且字体字号一致的段落；TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 |\n| 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 |\n| 一级标题 | `一、`、`二、` 等 | 黑体 | 16 |\n| 二级标题 | `（一）`、`（二）` 等 | 楷体_GB2312 | 16 |\n| 三级标题 | `1.`、`2.`、`1．` 等 | 仿宋_GB2312 | 16 |\n| 四级标题 | `（1）`、`(1)` 等 | 仿宋_GB2312 | 16 |\n| 正文 | 其他普通段落 | 仿宋_GB2312 | 16 |\n\n二级标题与正文在同一段落且以句号分隔时，会尝试在段内拆分标题部分和正文部分，分别应用二级标题和正文字体。\n\n## 页面和段落\n\n- 页边距：上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm。\n- 页脚距：2.5cm。\n- 正文行距：28 磅。\n- 题目/副标题行距：33 磅。\n- 页码：默认奇偶分页，奇数页右对齐，偶数页左对齐。\n- 页码字体：宋体，14pt。\n- 正文和标题会清理残留缩进，再设置标准首行缩进 2 字符。\n- `force_a4=false` 时 Word/WPS 文档保留原纸张大小；TXT/MD 默认使用 A4。\n\n段落包含图片、嵌入对象等特殊内容时，只处理必要文字格式，保留段落行距等布局，避免图片或对象显示不全。\n\n## TXT/MD 特殊处理\n\n- `.txt` 会按文本行生成段落。\n- `.md` 会清理 Markdown 标记，包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等。\n- 默认空行模式为：删除单个空行，连续多个空行合并为 1 个空行。\n- 可通过 `--blank-line-mode` 或配置字段 `blank_line_mode` 改为空行不处理，或保留单个空行但压缩多个空行。\n\n空行模式：\n\n| 模式 | 行为 |\n|---|---|\n| `不改动任何空行` | TXT/MD 原始空行保持不变 |\n| `删除单个空行，多个空行保留至1个空行` | 单个空行删除，连续多个空行合并为 1 个 |\n| `保留单个空行，多个空行保留至1个空行` | 单个空行保留，连续多个空行合并为 1 个 |\n\n## 表格、图表和附件\n\n- 表格内容自动调整默认关闭，避免改变复杂表格布局。\n- 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐。\n- 表格智能对齐启用后，会尝试将表头、合计/总计、序号列、短文本居中，将数字内容右对齐。\n- 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别。\n- 附件标识默认启用格式化，识别 `附件`、`附件1`、`附件：` 等形式，并会段前分页。\n- 附件标识后会继续尝试识别附件题目和副标题；如果没有附件题目/副标题，不应跳过紧随其后的正文段落。\n\n## 符号和特殊内容\n\n- 符号标准化默认关闭，可通过配置 `normalize_punctuation: true` 启用。\n- 启用后会较保守地处理中文语境中的英文标点、引号、括号、省略号等，避免影响数字、小数、英文内容。\n- 段落含域代码时会跳过符号标准化，避免破坏自动域、书签、批注引用等特殊内容。\n- 删除段首空白 run 时会检查 run 内是否含有非文本 OOXML 子元素，避免破坏域代码、书签、批注引用等特殊内容。\n\n## 平台和自动编号\n\n- Windows 环境下，会尽量通过 WPS/Word COM 接受修订，并将自动编号转为普通文本。\n- `.doc/.wps` 转 `.docx` 在 Windows 优先使用 WPS/Word COM；macOS/Linux 或 COM 转换失败时，会尝试调用 LibreOffice `soffice`。\n- 如果 `soffice` 自动查找失败，可在 CLI 中使用 `--soffice <路径>` 指定；如果转换仍失败，应先手动另存为 `.docx` 后再处理。\n- 非 Windows 或 COM 不可用时，会跳过需要 WPS/Word 的预处理步骤。\n- 自动编号转换失败或被跳过时，输出文件中编号样式可能仍由 Word/WPS 自动编号控制，字体字号和缩进需要人工检查。\n\nFile v1.0.3:requirements.txt\n\npython-docx\ntkinterdnd2\npywin32; platform_system == \"Windows\"\n\nArchive v1.0.2: 10 files, 38371 bytes\n\nFiles: references/cli-reference.md (5738b), references/config-reference.md (3769b), references/formatting-rules.md (4064b), requirements.txt (63b), scripts/wfp_cli.py (25226b), scripts/wfp_config.py (2667b), scripts/wfp_core.py (77990b), scripts/wfp_tests.py (6999b), SKILL.md (6979b), _meta.json (129b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: doc-format\ndescription: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词：公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。\n---\n\n# doc-format — 公文格式排版工具\n\n使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改，Word/WPS 类文档会先复制或转换到临时副本，再执行排版。\n\n本 Skill 可作为 `doc-format` 文件夹独立安装；`scripts` 目录内包含完整的 CLI、核心排版逻辑、默认配置和内置测试代码。维护 GUI 版本后，如核心逻辑有变更，应同步复制 `wfp_cli.py`、`wfp_core.py`、`wfp_config.py`、`wfp_tests.py` 到本 Skill 的 `scripts` 目录。\n\n## 核心能力\n\n- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。\n- 支持单文件、多文件、重复 `-i`、位置参数输入，以及一个或多个目录；目录输入默认递归扫描，输出目录保留原结构。\n- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。\n- 可选表格内容自动调整、数字和字母单独字体、符号标准化。\n- TXT/MD 支持三种空行模式：不改动任何空行；删除单个空行，多个空行保留至 1 个空行；保留单个空行，多个空行保留至 1 个空行。\n- 支持自动读取当前目录 `wfp_config.json`、指定 JSON 配置文件、内联 JSON、`--set key=value` 和便利开关覆盖配置。\n\n## 使用前检查\n\n1. 确认脚本路径：脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录，使用 `SKILL.md` 所在目录推导脚本绝对路径，或先 `cd` 到 Skill 目录。\n2. 检查输入：如果用户没有给出文件或目录，请先要求提供输入路径；告知支持 `.docx/.doc/.wps/.txt/.md`，目录默认递归处理。\n3. 检查配置：CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件，使用用户指定配置；否则说明将使用当前目录配置或内置默认配置。\n4. 检查转换条件：Windows 处理 `.doc/.wps` 时优先使用 WPS/Word 和 pywin32；macOS/Linux 或 COM 不可用时，CLI 会尝试调用 LibreOffice `soffice` 转为 `.docx`。如果转换失败，再提示用户安装 LibreOffice、用 `--soffice` 指定路径，或先另存为 `.docx`。\n\n## 常用命令\n\n```bash\n# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，只处理当前目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用自定义配置\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# macOS/Linux 或 COM 不可用时，可指定 soffice 处理 .doc/.wps 转换\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 临时覆盖配置\npython scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting\n\n# 内联 JSON 覆盖配置\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# TXT/MD 文件转换\npython scripts/wfp_cli.py format -i draft.md \n\n# 查看默认配置\npython scripts/wfp_cli.py show-config\n\n# 保存默认配置模板\npython scripts/wfp_cli.py save-config\n\n# 显示 LibreOffice 安装提示\npython scripts/wfp_cli.py install-help\n\n# 运行内置单元测试\npython scripts/wfp_cli.py test\n```\n\n## 配置处理流程\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 输出行为\n\n- 成功生成的 `.docx` 绝对路径写入 stdout。\n- 详细日志仅在使用 `-v/--verbose` 时写入 stderr。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n- 目录处理中单个文件失败不会阻止后续文件继续处理。\n- 处理失败时，最终回复应说明失败文件和错误原因。\n\n## 完成后必读\n\n每次完成格式化后，都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。\n\n如果处理过 `.doc/.wps` 或 Word/WPS 类文档，尤其要检查自动编号。自动编号未能确认转换成功时，编号文本、段落缩进、字体字号可能没有正常格式化；如果编号无法单独选中，说明可能仍是 Word/WPS 自动编号，必要时请将其转为手写文本编号后重新运行工具。\n\n表格内容自动调整、符号标准化属于更容易影响版面的增强项，重要文件建议在副本上检查效果。\n\n## Reference Files\n\n- 需要完整命令格式、参数说明、更多命令示例时，读取 `references/cli-reference.md`。\n- 需要把用户配置需求映射到字段、查看字号对照时，读取 `references/config-reference.md`。\n- 需要说明默认排版规则、标题识别、页面段落、TXT/MD、表格和附件规则时，读取 `references/formatting-rules.md`。\n\n## Agent 使用准则\n\n1. 没有输入时不要直接运行 `format`。\n2. 用户询问配置时运行 `show-config`，不要凭记忆列配置。\n3. 用户提出配置修改时，优先保存配置，再用该配置处理文档。\n4. 用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n5. 目录输入默认递归；只有用户明确要求“只处理当前目录”时才加 `--no-recursive`。\n6. macOS/Linux 或 COM 不可用环境下，可以处理 `.doc/.wps` 的前提是 LibreOffice `soffice` 可用；不要承诺可转换自动编号。\n7. 处理结束后必须提示用户检查自动编号所在标题和段落的转换效果，并提醒用户如启用了表格内容自动调整、数字和字母单独字体、符号标准化，应重点抽查版面。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn79hzn4zapay7zmdpvynrys6981vxne\",\n  \"slug\": \"doc-format\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1777600692592\n}\n\nFile v1.0.2:references/cli-reference.md\n\n# CLI Reference\n\n## 命令格式\n\n主命令：\n\n```bash\npython scripts/wfp_cli.py <子命令> [参数]\n```\n\n格式化：\n\n```bash\npython scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数]\n```\n\n查看配置：\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n保存配置：\n\n```bash\npython scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>]\n```\n\n安装提示：\n\n```bash\npython scripts/wfp_cli.py install-help\n```\n\n运行测试：\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n## `format` 参数\n\n| 参数 | 默认值 | 说明 |\n|---|---:|---|\n| `paths` | 可选 | 位置参数输入路径，可一次传入多个文件或目录 |\n| `-i, --input` | 可选 | 输入文件或目录，可重复。与 `paths` 可同时使用 |\n| `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 |\n| `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件，会覆盖默认配置中的同名字段 |\n| `--config-json` | 无 | 内联 JSON 对象，会覆盖配置文件中的同名字段 |\n| `--set key=value` | 无 | 覆盖单个配置项，可重复使用 |\n| `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 |\n| `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 |\n| `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 |\n| `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 |\n| `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体；使用后自动启用 `use_custom_english_font` |\n| `--normalize-punctuation` | 关闭 | 启用符号标准化 |\n| `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 |\n| `--blank-line-mode` | 删除单个空行，多个空行保留至1个空行 | 覆盖 TXT/MD 空行处理模式 |\n| `--no-recursive` | 关闭 | 目录输入时不递归子目录；默认递归 |\n| `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径，用于 `.doc/.wps` 转 `.docx` |\n| `--soffice-timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 |\n| `-v, --verbose` | 关闭 | 显示详细日志 |\n\n`--blank-line-mode` 可选值：\n\n- `不改动任何空行`\n- `删除单个空行，多个空行保留至1个空行`\n- `保留单个空行，多个空行保留至1个空行`\n\n## `show-config`\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n输出 JSON，包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、空行模式、常用可选增强项、所有配置项的值、名称和说明。\n\n`show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关，用来查看覆盖后的配置效果。\n\n## `save-config`\n\n```bash\npython scripts/wfp_cli.py save-config\n```\n\n- 默认输出到当前目录 `wfp_config.json`。\n- 会先读取 `--config` 或当前目录已有 `wfp_config.json`，再应用 `--config-json`、`--set` 和便利开关，最后保存合并后的配置。\n- 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化。\n\n## `test`\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n运行内置单元测试，覆盖文本处理、Markdown 清理、空行模式、OOXML 保护、表格辅助判断、临时文件路径和 TXT 转换等纯函数或轻量流程。\n\n## 使用示例\n\n```bash\n# DOCX 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# TXT/MD 输入\npython scripts/wfp_cli.py format -i meeting_notes.txt\npython scripts/wfp_cli.py format -i draft.md --blank-line-mode \"不改动任何空行\"\n\n# 多文件\npython scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，默认递归\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 不递归子目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 指定 LibreOffice soffice 转换旧格式\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 启用增强功能后处理\npython scripts/wfp_cli.py format -i input.docx --enable-table-formatting --english-font \"Times New Roman\" --normalize-punctuation\n\n# 查看和导出配置\npython scripts/wfp_cli.py show-config\npython scripts/wfp_cli.py save-config --set body_font=宋体 --set body_size=12\n\n# 显示安装提示\npython scripts/wfp_cli.py install-help\n\n# 查看详细日志\npython scripts/wfp_cli.py format -i input.docx -v\n```\n\n## 平台行为\n\n- Windows：`.doc/.wps` 转 `.docx` 优先使用 WPS/Word COM 和 pywin32；如果 COM 转换失败，会尝试 LibreOffice `soffice` 兜底。\n- macOS/Linux：可处理 `.docx/.txt/.md`；`.doc/.wps` 会尝试调用 LibreOffice `soffice` 转为 `.docx`，失败时提示安装 LibreOffice、用 `--soffice` 指定路径，或先手动另存为 `.docx`。\n- 非 Windows 或 COM 不可用时，自动编号转文本会跳过。完成后需人工检查自动编号字体字号。\n\n## 输出行为\n\n- 成功时 stdout 每行打印一个输出 `.docx` 的绝对路径。\n- `-v/--verbose` 开启后，详细处理日志写入 stderr。\n- 单文件默认输出到同目录 `*_formatted.docx`。\n- 目录默认输出到 `<输入目录>_formatted/`，或用户指定的输出目录。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n\nFile v1.0.2:references/config-reference.md\n\n# Config Reference\n\n## 根据用户需求修改配置\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解默认配置字段和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 使用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 使用 `format` 处理文档；CLI 会自动读取当前目录的 `wfp_config.json`。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 常见自然语言到配置字段\n\n| 用户需求 | 配置字段或命令 |\n|---|---|\n| 正文字体改为宋体 | `--set body_font=宋体` |\n| 正文字号改为小四 | `--set body_size=12` |\n| 题目字体改为华文中宋 | `--set title_font=华文中宋` |\n| 题目字号改为小二 | `--set title_size=18` |\n| 一级标题字体改为黑体 | `--set h1_font=黑体` |\n| 二级标题字体改为楷体 | `--set h2_font=楷体` |\n| 页码字体改为 Times New Roman | `--set page_number_font=\"Times New Roman\"` |\n| 正文行距改为 30 磅 | `--set line_spacing=30` |\n| 题目行距改为 33 磅 | `--set title_line_spacing=33` |\n| 副标题行距改为 33 磅 | `--set subtitle_line_spacing=33` |\n| 强制 A4 | `--set force_a4=true` |\n| 不设置大纲级别 | `--set set_outline=false` |\n| 不启用附件格式化 | `--set enable_attachment_formatting=false` |\n| 启用表格内容自动调整 | `--enable-table-formatting` |\n| 启用表格智能对齐 | `--set table_smart_align=true` |\n| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font \"Times New Roman\"` |\n| 启用符号标准化 | `--normalize-punctuation` |\n| TXT/MD 不改动任何空行 | `--set blank_line_mode=\"不改动任何空行\"` |\n| TXT/MD 删除单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"删除单个空行，多个空行保留至1个空行\"` |\n| TXT/MD 保留单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"保留单个空行，多个空行保留至1个空行\"` |\n\n旧配置中的 `remove_blank_lines` 仍可读取；如未提供 `blank_line_mode`，CLI 会按旧字段映射到新的 TXT/MD 空行模式。\n\n## 常用字号对照\n\n| 字号名称 | pt 值 |\n|---|---:|\n| 一号 | 26 |\n| 小一 | 24 |\n| 二号 | 22 |\n| 小二 | 18 |\n| 三号 | 16 |\n| 小三 | 15 |\n| 四号 | 14 |\n| 小四 | 12 |\n| 五号 | 10.5 |\n| 小五 | 9 |\n\n## 配置文件示例\n\n```json\n{\n    \"body_font\": \"宋体\",\n    \"body_size\": 12,\n    \"line_spacing\": 30,\n    \"force_a4\": true,\n    \"enable_table_formatting\": true,\n    \"use_custom_english_font\": true,\n    \"english_font\": \"Times New Roman\",\n    \"normalize_punctuation\": true,\n    \"blank_line_mode\": \"删除单个空行，多个空行保留至1个空行\"\n}\n```\n\n配置文件不需要包含所有字段；只写需要覆盖默认值的字段即可。若使用 `save-config` 导出的完整模板，可直接在模板中修改对应值。\n\n## 使用配置处理文档\n\n```bash\n# 保存配置到当前目录 wfp_config.json\npython scripts/wfp_cli.py save-config \\\n  --set body_font=宋体 \\\n  --set body_size=12 \\\n  --set line_spacing=30 \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n\n# 使用当前目录自动配置\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 使用指定配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 使用内联 JSON 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# 使用 --set 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18\n```\n\nFile v1.0.2:references/formatting-rules.md\n\n# Formatting Rules\n\n## 标题层级\n\n| 类型 | 识别规则 | 默认字体 | 默认字号 |\n|---|---|---|---:|\n| 题目 | 文档开头连续居中且字体字号一致的段落；TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 |\n| 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 |\n| 一级标题 | `一、`、`二、` 等 | 黑体 | 16 |\n| 二级标题 | `（一）`、`（二）` 等 | 楷体_GB2312 | 16 |\n| 三级标题 | `1.`、`2.`、`1．` 等 | 仿宋_GB2312 | 16 |\n| 四级标题 | `（1）`、`(1)` 等 | 仿宋_GB2312 | 16 |\n| 正文 | 其他普通段落 | 仿宋_GB2312 | 16 |\n\n二级标题与正文在同一段落且以句号分隔时，会尝试在段内拆分标题部分和正文部分，分别应用二级标题和正文字体。\n\n## 页面和段落\n\n- 页边距：上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm。\n- 页脚距：2.5cm。\n- 正文行距：28 磅。\n- 题目/副标题行距：33 磅。\n- 页码：默认奇偶分页，奇数页右对齐，偶数页左对齐。\n- 页码字体：宋体，14pt。\n- 正文和标题会清理残留缩进，再设置标准首行缩进 2 字符。\n- `force_a4=false` 时 Word/WPS 文档保留原纸张大小；TXT/MD 默认使用 A4。\n\n段落包含图片、嵌入对象等特殊内容时，只处理必要文字格式，保留段落行距等布局，避免图片或对象显示不全。\n\n## TXT/MD 特殊处理\n\n- `.txt` 会按文本行生成段落。\n- `.md` 会清理 Markdown 标记，包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等。\n- 默认空行模式为：删除单个空行，连续多个空行合并为 1 个空行。\n- 可通过 `--blank-line-mode` 或配置字段 `blank_line_mode` 改为空行不处理，或保留单个空行但压缩多个空行。\n\n空行模式：\n\n| 模式 | 行为 |\n|---|---|\n| `不改动任何空行` | TXT/MD 原始空行保持不变 |\n| `删除单个空行，多个空行保留至1个空行` | 单个空行删除，连续多个空行合并为 1 个 |\n| `保留单个空行，多个空行保留至1个空行` | 单个空行保留，连续多个空行合并为 1 个 |\n\n## 表格、图表和附件\n\n- 表格内容自动调整默认关闭，避免改变复杂表格布局。\n- 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐。\n- 表格智能对齐启用后，会尝试将表头、合计/总计、序号列、短文本居中，将数字内容右对齐。\n- 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别。\n- 附件标识默认启用格式化，识别 `附件`、`附件1`、`附件：` 等形式，并会段前分页。\n- 附件标识后会继续尝试识别附件题目和副标题；如果没有附件题目/副标题，不应跳过紧随其后的正文段落。\n\n## 符号和特殊内容\n\n- 符号标准化默认关闭，可通过配置 `normalize_punctuation: true` 启用。\n- 启用后会较保守地处理中文语境中的英文标点、引号、括号、省略号等，避免影响数字、小数、英文内容。\n- 段落含域代码时会跳过符号标准化，避免破坏自动域、书签、批注引用等特殊内容。\n- 删除段首空白 run 时会检查 run 内是否含有非文本 OOXML 子元素，避免破坏域代码、书签、批注引用等特殊内容。\n\n## 平台和自动编号\n\n- Windows 环境下，会尽量通过 WPS/Word COM 接受修订，并将自动编号转为普通文本。\n- `.doc/.wps` 转 `.docx` 在 Windows 优先使用 WPS/Word COM；macOS/Linux 或 COM 转换失败时，会尝试调用 LibreOffice `soffice`。\n- 如果 `soffice` 自动查找失败，可在 CLI 中使用 `--soffice <路径>` 指定；如果转换仍失败，应先手动另存为 `.docx` 后再处理。\n- 非 Windows 或 COM 不可用时，会跳过需要 WPS/Word 的预处理步骤。\n- 自动编号转换失败或被跳过时，输出文件中编号样式可能仍由 Word/WPS 自动编号控制，字体字号和缩进需要人工检查。\n\nFile v1.0.2:requirements.txt\n\npython-docx\ntkinterdnd2\npywin32; platform_system == \"Windows\"\n\nArchive v1.0.1: 7 files, 32239 bytes\n\nFiles: references/cli-reference.md (3752b), references/config-reference.md (2132b), references/formatting-rules.md (1747b), scripts/wfp_cli.py (36235b), scripts/wfp_core.py (69716b), SKILL.md (5520b), _meta.json (129b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: doc-format\ndescription: 公文格式排版工具。将doc/docx/wps/txt/md文档按照公文排版规范进行自动格式化，输出标准docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距/页码/行距设定。支持批量处理目录、自定义字体配置。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词：公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。\n---\n\n# doc-format — 公文格式排版工具\n\n使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改，Word/WPS 类文档会先复制或转换到临时副本，再执行排版。\n\n## 核心能力\n\n- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。\n- 支持单文件、多文件、一个或多个目录；目录输入默认递归扫描，输出目录保留原结构。\n- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。\n- 可选表格内容自动调整、数字和字母单独字体、符号标准化。\n- 支持 `wfp_config.json`、`--config`、`--config-json`、`--set key=value` 和便利开关覆盖配置。\n\n## 使用前检查\n\n1. 确认脚本路径：脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录，使用 `SKILL.md` 所在目录推导脚本绝对路径，或先 `cd` 到 Skill 目录。\n2. 检查配置：CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件，使用用户指定配置；否则说明将使用当前目录配置或内置默认配置。\n3. 检查输入：如果用户没有给出文件或目录，请先要求提供输入路径；告知支持 `.docx/.doc/.wps/.txt/.md`，目录默认递归处理。\n4. 检查转换条件：`.doc/.wps` 需要转换后端。Windows 通常用 WPS/Word；macOS/Linux 通常用 LibreOffice。转换失败时提示用户先另存为 `.docx`。\n\n## 常用命令\n\n```bash\n# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt -i c.md -o ./formatted_output\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 查看当前配置\npython scripts/wfp_cli.py show-config\n\n# 保存配置到当前目录 wfp_config.json\npython scripts/wfp_cli.py save-config --set body_font=宋体 --set body_size=12\n```\n\n## 配置处理流程\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n常用便利开关：\n\n```bash\n# 启用表格内容自动调整\npython scripts/wfp_cli.py save-config --enable-table-formatting\n\n# 数字和字母使用 Times New Roman\npython scripts/wfp_cli.py save-config --enable-custom-english-font --english-font \"Times New Roman\"\n\n# 启用符号标准化\npython scripts/wfp_cli.py save-config --normalize-punctuation\n```\n\n## 输出行为\n\n- 成功生成的 `.docx` 绝对路径写入 stdout。\n- 日志写入 stderr。\n- 退出码 `0` 表示全部成功，非 `0` 表示至少一个文件失败。\n- 多文件处理中单个文件失败不会阻止后续文件继续处理。\n- 处理失败时，最终回复应说明失败文件和错误原因。\n\n## 完成后必读\n\n每次完成格式化后，都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。\n\n如果处理过 `.doc/.wps` 或 Word/WPS 类文档，尤其要检查自动编号。自动编号未能确认转换成功时，编号文本、段落缩进、字体字号可能没有正常格式化；如果编号无法单独选中，说明可能仍是 Word/WPS 自动编号，必要时请将其转为手写文本编号后重新运行工具。\n\n表格内容自动调整、符号标准化属于更容易影响版面的增强项，重要文件建议在副本上检查效果。\n\n## Reference Files\n\n- 需要完整命令格式、参数说明、更多命令示例时，读取 `references/cli-reference.md`。\n- 需要把用户配置需求映射到字段、查看字号对照时，读取 `references/config-reference.md`。\n- 需要说明默认排版规则、标题识别、页面段落、TXT/MD、表格和附件规则时，读取 `references/formatting-rules.md`。\n\n## Agent 使用准则\n\n1. 没有输入时不要直接运行 `format`。\n2. 用户询问配置时运行 `show-config`，不要凭记忆列配置。\n3. 用户提出配置修改时，优先保存配置，再用该配置处理文档。\n4. 用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n5. 目录输入默认递归；只有用户明确要求“只处理当前目录”时才加 `--no-recursive`。\n6. 处理结束后必须提示用户检查自动编号所在标题和段落的转换效果。并提示用户，表格内容自动调整、数字和字母使用 Times New Roman、符号标准化功能未启用，如有需要可要求调整。\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn79hzn4zapay7zmdpvynrys6981vxne\",\n  \"slug\": \"doc-format\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777442320557\n}\n\nFile v1.0.1:references/cli-reference.md\n\n# CLI Reference\n\n## 命令格式\n\n主命令：\n\n```bash\npython scripts/wfp_cli.py <子命令> [参数]\n```\n\n格式化：\n\n```bash\npython scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [转换参数] [其他参数]\n```\n\n查看配置：\n\n```bash\npython scripts/wfp_cli.py show-config [配置覆盖参数]\n```\n\n保存配置：\n\n```bash\npython scripts/wfp_cli.py save-config [配置覆盖参数] [-o <配置文件路径>]\n```\n\n## `format` 参数\n\n| 参数 | 默认值 | 说明 |\n|---|---:|---|\n| `paths` | 可选 | 位置参数输入路径，可一次传入多个文件或目录 |\n| `-i, --input` | 可选 | 输入文件或目录，可重复。与 `paths` 可同时使用 |\n| `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 |\n| `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件 |\n| `--config-json` | 无 | 内联 JSON 对象，会覆盖配置文件中的同名字段 |\n| `--set key=value` | 无 | 覆盖单个配置项，可重复使用 |\n| `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 |\n| `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 |\n| `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 |\n| `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 |\n| `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体；使用后自动启用 `use_custom_english_font` |\n| `--normalize-punctuation` | 关闭 | 启用符号标准化 |\n| `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 |\n| `--backend auto/office/libreoffice/none` | `auto` | 转换后端。Windows 默认 Office/WPS，macOS/Linux 默认 LibreOffice |\n| `--office-app auto/wps/word` | `auto` | Windows Office 后端选择 |\n| `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径 |\n| `--timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 |\n| `--no-recursive` | 关闭 | 目录输入时不递归子目录；默认递归 |\n| `--convert-numbering` | Windows 默认开，macOS/Linux 默认关 | 尝试将自动编号转文本。macOS/Linux 通常不建议强制启用 |\n| `--skip-numbering` | 关闭 | 跳过自动编号转文本 |\n| `--keep-blank-lines` | 关闭 | 保留 TXT/MD 原始空行；默认删除多余空行 |\n| `-v, --verbose` | 关闭 | 显示详细日志 |\n\n## `show-config`\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n输出 JSON，包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、常用可选增强项、所有配置项的值、名称和说明。\n\n`show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关，用来查看覆盖后的配置效果。\n\n## `save-config`\n\n```bash\npython scripts/wfp_cli.py save-config -o ./wfp_config.json\n```\n\n- 默认输出到当前目录 `wfp_config.json`\n- 会先读取 `--config` 或当前目录已有 `wfp_config.json`，再应用 `--config-json`、`--set` 和便利开关，最后保存合并后的配置\n- 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化\n\n## 使用示例\n\n```bash\n# TXT/MD 输入\npython scripts/wfp_cli.py format -i meeting_notes.txt\npython scripts/wfp_cli.py format -i draft.md --keep-blank-lines\n\n# 多文件\npython scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output\n\n# 不递归子目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 启用增强功能后处理\npython scripts/wfp_cli.py format -i input.docx \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n```\n\nFile v1.0.1:references/config-reference.md\n\n# Config Reference\n\n## 根据用户需求修改配置\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 使用 `save-config` 保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n## 常见自然语言到配置字段\n\n| 用户需求 | 配置字段或命令 |\n|---|---|\n| 正文字体改为宋体 | `--set body_font=宋体` |\n| 正文字号改为小四 | `--set body_size=12` |\n| 题目字号改为小二 | `--set title_size=18` |\n| 行距改为 30 磅 | `--set line_spacing=30` |\n| 强制 A4 | `--set force_a4=true` |\n| 不设置大纲级别 | `--set set_outline=false` |\n| 不启用附件格式化 | `--set enable_attachment_formatting=false` |\n| 启用表格内容自动调整 | `--enable-table-formatting` |\n| 启用表格智能对齐 | `--set table_smart_align=true` |\n| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font \"Times New Roman\"` |\n| 启用符号标准化 | `--normalize-punctuation` |\n\n## 常用字号对照\n\n| 字号名称 | pt 值 |\n|---|---:|\n| 一号 | 26 |\n| 小一 | 24 |\n| 二号 | 22 |\n| 小二 | 18 |\n| 三号 | 16 |\n| 小三 | 15 |\n| 四号 | 14 |\n| 小四 | 12 |\n| 五号 | 10.5 |\n| 小五 | 9 |\n\n## 保存配置示例\n\n```bash\npython scripts/wfp_cli.py save-config \\\n  --set body_font=宋体 \\\n  --set body_size=12 \\\n  --set line_spacing=30 \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n```\n\n## 使用配置处理文档\n\n```bash\n# 使用当前目录自动配置\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 使用指定配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./project_wfp_config.json\n\n# 使用内联 JSON 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# 使用 --set 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18\n```\n\nFile v1.0.1:references/formatting-rules.md\n\n# Formatting Rules\n\n## 标题层级\n\n| 类型 | 识别规则 | 默认字体 | 默认字号 |\n|---|---|---|---:|\n| 题目 | 文档开头连续居中且字体字号一致的段落；TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 |\n| 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 |\n| 一级标题 | `一、`、`二、` 等 | 黑体 | 16 |\n| 二级标题 | `（一）`、`（二）` 等 | 楷体_GB2312 | 16 |\n| 三级标题 | `1.`、`2.` 等 | 仿宋_GB2312 | 16 |\n| 四级标题 | `(1)`、`(2)` 等 | 仿宋_GB2312 | 16 |\n| 正文 | 其他普通段落 | 仿宋_GB2312 | 16 |\n\n## 页面和段落\n\n- 页边距：上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm\n- 页脚距：2.5cm\n- 正文行距：28 磅\n- 题目/副标题行距：33 磅\n- 页码：默认奇偶分页，奇数页右对齐，偶数页左对齐\n- 页码字体：宋体，14pt\n- 正文和标题会清理残留缩进，再设置标准首行缩进 2 字符\n- `force_a4=false` 时 Word/WPS 文档保留原纸张大小；TXT/MD 默认使用 A4\n\n## TXT/MD 特殊处理\n\n- `.txt` 会按文本行生成段落\n- `.md` 会清理 Markdown 标记，包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等\n- 默认删除 TXT/MD 多余空行：单个空行删除，连续多个空行合并为一个\n- 使用 `--keep-blank-lines` 可保留原始空行\n\n## 表格、图表和附件\n\n- 表格内容自动调整默认关闭，避免改变复杂表格布局\n- 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐\n- 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别\n- 附件标识默认启用格式化，并会段前分页","readmeExcerpt":"Skill: 公文格式转换 Owner: cwyalpha Summary: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-05-15T14:43:52.244Z | user doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”（如 1. 1.2.3）按源文档保留、不自动重排说明。 - 其他内容无变动，仅补充文档描述与功能说明，无代码更新。 v1.0.3 | 2026-05-01T02:02:42.975Z | user doc-","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，只处理当前目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用自定义配置\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# macOS/Linux 或 COM 不可用时，可指定 soffice 处理 .doc/.wps 转换\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 临时覆盖配置\npython scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting\n\n# 内联 JSON 覆盖配置\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# TXT/MD 文件转换\npython scripts/wfp_cli.py format -i draft.md \n\n# 查看默认配置\npython scripts/wfp_cli.py show-config\n\n# 保存默认配置模板\npython scripts/wfp_cli.py save-config\n\n# 显示 LibreOffice 安装提示\npython scripts/wfp_cli.py install-help\n\n# 运行内置单元测试\npython scripts/wfp_cli.py test"},{"language":"bash","snippet":"python scripts/wfp_cli.py <子命令> [参数]"},{"language":"bash","snippet":"python scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数]"},{"language":"bash","snippet":"python scripts/wfp_cli.py show-config"},{"language":"bash","snippet":"python scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>]"},{"language":"bash","snippet":"python scripts/wfp_cli.py install-help"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: doc-format\ndescription: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词：公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。\n---\n\n# doc-format — 公文格式排版工具\n\n使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改，Word/WPS 类文档会先复制或转换到临时副本，再执行排版。\n\n## 核心能力\n\n- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。\n- 支持单文件、多文件、重复 `-i`、位置参数输入，以及一个或多个目录；目录输入默认递归扫描，输出目录保留原结构。\n- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。\n- 可选表格内容自动调整、数字和字母单独字体、符号标准化。\n- TXT/MD 支持三种空行模式：不改动任何空行；删除单个空行，多个空行保留至 1 个空行；保留单个空行，多个空行保留至 1 个空行。\n- TXT/MD 中手写数字编号（如 `1.`、`1.2.3`）按源文档保留，不自动递增重排。\n- 支持自动读取当前目录 `wfp_config.json`、指定 JSON 配置文件、内联 JSON、`--set key=value` 和便利开关覆盖配置。\n\n## 使用前检查\n\n1. 确认脚本路径：脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录，使用 `SKILL.md` 所在目录推导脚本绝对路径，或先 `cd` 到 Skill 目录。\n2. 检查输入：如果用户没有给出文件或目录，请先要求提供输入路径；告知支持 `.docx/.doc/.wps/.txt/.md`，目录默认递归处理。\n3. 检查配置：CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件，使用用户指定配置；否则说明将使用当前目录配置或内置默认配置。\n4. 检查转换条件：Windows 处理 `.doc/.wps` 时优先使用 WPS/Word 和 pywin32；macOS/Linux 或 COM 不可用时，CLI 会尝试调用 LibreOffice `soffice` 转为 `.docx`。如果转换失败，再提示用户安装 LibreOffice、用 `--soffice` 指定路径，或先另存为 `.docx`。\n\n## 常用命令\n\n```bash\n# 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# 目录批量处理，默认递归并保留目录结构\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 多文件\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，只处理当前目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用自定义配置\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# macOS/Linux 或 COM 不可用时，可指定 soffice 处理 .doc/.wps 转换\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice\n\n# 临时覆盖配置\npython scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting\n\n# 内联 JSON 覆盖配置\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# TXT/MD 文件转换\npython scripts/wfp_cli.py format -i draft.md \n\n# 查看默认配置\npython scripts/wfp_cli.py show-config\n\n# 保存默认配置模板\npython scripts/wfp_cli.py save-config\n\n# 显示 LibreOffice 安装提示\npython scripts/wfp_cli.py install-help\n\n# 运行内置单元测试\npython scripts/wfp_cli.py test\n```\n\n## 配置处理流程\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解当前配置来源和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 再运行 `format` 处理文档。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 输出行为\n\n- 成功生成的 `.docx` 绝对路径写入 stdout。\n- 详细日志仅在使用 `-v/--verbose` 时写入 stderr。\n- 退出码 `0` 表示全部成功，非 `0` 表示没有找到可处理文件或至少一个文件失败。\n- 目录处理中单个文件失败不会阻止后续文件继续处理。\n- 处理失败时，最终回复应说明失败文件和错误原因。\n\n## 完成后必读\n\n每次完成格式化后，都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。\n\n如果处理过 `.doc/.wps` 或 Word/WPS 类文档，尤其要检查自动编号。自动编号未能确认转换成功时，编号文本、段落缩进、字体字号可能没有正常格式化；如果编号无法单独选中，说明可"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79hzn4zapay7zmdpvynrys6981vxne\",\n  \"slug\": \"doc-format\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1778856232244\n}"},{"path":"references/cli-reference.md","content":"# CLI Reference\n\n## 命令格式\n\n主命令：\n\n```bash\npython scripts/wfp_cli.py <子命令> [参数]\n```\n\n格式化：\n\n```bash\npython scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数]\n```\n\n查看配置：\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n保存配置：\n\n```bash\npython scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>]\n```\n\n安装提示：\n\n```bash\npython scripts/wfp_cli.py install-help\n```\n\n运行测试：\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n## `format` 参数\n\n| 参数 | 默认值 | 说明 |\n|---|---:|---|\n| `paths` | 可选 | 位置参数输入路径，可一次传入多个文件或目录 |\n| `-i, --input` | 可选 | 输入文件或目录，可重复。与 `paths` 可同时使用 |\n| `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 |\n| `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件，会覆盖默认配置中的同名字段 |\n| `--config-json` | 无 | 内联 JSON 对象，会覆盖配置文件中的同名字段 |\n| `--set key=value` | 无 | 覆盖单个配置项，可重复使用 |\n| `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 |\n| `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 |\n| `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 |\n| `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 |\n| `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体；使用后自动启用 `use_custom_english_font` |\n| `--normalize-punctuation` | 关闭 | 启用符号标准化 |\n| `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 |\n| `--blank-line-mode` | 删除单个空行，多个空行保留至1个空行 | 覆盖 TXT/MD 空行处理模式 |\n| `--no-recursive` | 关闭 | 目录输入时不递归子目录；默认递归 |\n| `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径，用于 `.doc/.wps` 转 `.docx` |\n| `--soffice-timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 |\n| `-v, --verbose` | 关闭 | 显示详细日志 |\n\n`--blank-line-mode` 可选值：\n\n- `不改动任何空行`\n- `删除单个空行，多个空行保留至1个空行`\n- `保留单个空行，多个空行保留至1个空行`\n\n## `show-config`\n\n```bash\npython scripts/wfp_cli.py show-config\n```\n\n输出 JSON，包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、空行模式、常用可选增强项、所有配置项的值、名称和说明。\n\n`show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关，用来查看覆盖后的配置效果。\n\n## `save-config`\n\n```bash\npython scripts/wfp_cli.py save-config\n```\n\n- 默认输出到当前目录 `wfp_config.json`。\n- 会先读取 `--config` 或当前目录已有 `wfp_config.json`，再应用 `--config-json`、`--set` 和便利开关，最后保存合并后的配置。\n- 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化。\n\n## `test`\n\n```bash\npython scripts/wfp_cli.py test\n```\n\n运行内置单元测试，覆盖文本处理、Markdown 清理、空行模式、OOXML 保护、表格辅助判断、临时文件路径和 TXT 转换等纯函数或轻量流程。\n\n## 使用示例\n\n```bash\n# DOCX 单文件\npython scripts/wfp_cli.py format -i report.docx\n\n# 指定输出文件\npython scripts/wfp_cli.py format -i report.docx -o report_final.docx\n\n# TXT/MD 输入\npython scripts/wfp_cli.py format -i meeting_notes.txt\npython scripts/wfp_cli.py format -i draft.md --blank-line-mode \"不改动任何空行\"\n\n# 多文件\npython scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output\npython scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output\n\n# 目录批量处理，默认递归\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 不递归子目录\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive\n\n# 使用配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 指定 LibreOffice soffice 转换旧格式\npython scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Conten"},{"path":"references/config-reference.md","content":"# Config Reference\n\n## 根据用户需求修改配置\n\n当用户要求调整字体、字号、边距、行距、表格、符号等配置时：\n\n1. 运行 `show-config` 了解默认配置字段和值。\n2. 将用户自然语言需求映射到配置字段。\n3. 使用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`，或保存到用户指定路径。\n4. 使用 `format` 处理文档；CLI 会自动读取当前目录的 `wfp_config.json`。\n\n用户只要求一次性临时调整时，可用 `--config-json` 或 `--set` 直接运行 `format`。\n\n## 常见自然语言到配置字段\n\n| 用户需求 | 配置字段或命令 |\n|---|---|\n| 正文字体改为宋体 | `--set body_font=宋体` |\n| 正文字号改为小四 | `--set body_size=12` |\n| 题目字体改为华文中宋 | `--set title_font=华文中宋` |\n| 题目字号改为小二 | `--set title_size=18` |\n| 一级标题字体改为黑体 | `--set h1_font=黑体` |\n| 二级标题字体改为楷体 | `--set h2_font=楷体` |\n| 页码字体改为 Times New Roman | `--set page_number_font=\"Times New Roman\"` |\n| 正文行距改为 30 磅 | `--set line_spacing=30` |\n| 题目行距改为 33 磅 | `--set title_line_spacing=33` |\n| 副标题行距改为 33 磅 | `--set subtitle_line_spacing=33` |\n| 强制 A4 | `--set force_a4=true` |\n| 不设置大纲级别 | `--set set_outline=false` |\n| 不启用附件格式化 | `--set enable_attachment_formatting=false` |\n| 启用表格内容自动调整 | `--enable-table-formatting` |\n| 启用表格智能对齐 | `--set table_smart_align=true` |\n| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font \"Times New Roman\"` |\n| 启用符号标准化 | `--normalize-punctuation` |\n| TXT/MD 不改动任何空行 | `--set blank_line_mode=\"不改动任何空行\"` |\n| TXT/MD 删除单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"删除单个空行，多个空行保留至1个空行\"` |\n| TXT/MD 保留单个空行，多个空行保留至 1 个 | `--set blank_line_mode=\"保留单个空行，多个空行保留至1个空行\"` |\n\n旧配置中的 `remove_blank_lines` 仍可读取；如未提供 `blank_line_mode`，CLI 会按旧字段映射到新的 TXT/MD 空行模式。\n\n## 常用字号对照\n\n| 字号名称 | pt 值 |\n|---|---:|\n| 一号 | 26 |\n| 小一 | 24 |\n| 二号 | 22 |\n| 小二 | 18 |\n| 三号 | 16 |\n| 小三 | 15 |\n| 四号 | 14 |\n| 小四 | 12 |\n| 五号 | 10.5 |\n| 小五 | 9 |\n\n## 配置文件示例\n\n```json\n{\n    \"body_font\": \"宋体\",\n    \"body_size\": 12,\n    \"line_spacing\": 30,\n    \"force_a4\": true,\n    \"enable_table_formatting\": true,\n    \"use_custom_english_font\": true,\n    \"english_font\": \"Times New Roman\",\n    \"normalize_punctuation\": true,\n    \"blank_line_mode\": \"删除单个空行，多个空行保留至1个空行\"\n}\n```\n\n配置文件不需要包含所有字段；只写需要覆盖默认值的字段即可。若使用 `save-config` 导出的完整模板，可直接在模板中修改对应值。\n\n## 使用配置处理文档\n\n```bash\n# 保存配置到当前目录 wfp_config.json\npython scripts/wfp_cli.py save-config \\\n  --set body_font=宋体 \\\n  --set body_size=12 \\\n  --set line_spacing=30 \\\n  --enable-table-formatting \\\n  --english-font \"Times New Roman\" \\\n  --normalize-punctuation\n\n# 使用当前目录自动配置\npython scripts/wfp_cli.py format -i ./documents -o ./documents_formatted\n\n# 使用指定配置文件\npython scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json\n\n# 使用内联 JSON 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --config-json \"{\\\"force_a4\\\": true, \\\"line_spacing\\\": 30}\"\n\n# 使用 --set 临时覆盖\npython scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18\n```"},{"path":"references/formatting-rules.md","content":"# Formatting Rules\n\n## 标题层级\n\n| 类型 | 识别规则 | 默认字体 | 默认字号 |\n|---|---|---|---:|\n| 题目 | 文档开头连续居中且字体字号一致的段落；TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 |\n| 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 |\n| 一级标题 | `一、`、`二、` 等 | 黑体 | 16 |\n| 二级标题 | `（一）`、`（二）` 等 | 楷体_GB2312 | 16 |\n| 三级标题 | `1.`、`2.`、`1．` 等 | 仿宋_GB2312 | 16 |\n| 四级标题 | `（1）`、`(1)` 等 | 仿宋_GB2312 | 16 |\n| 正文 | 其他普通段落 | 仿宋_GB2312 | 16 |\n\n二级标题与正文在同一段落且以句号分隔时，会尝试在段内拆分标题部分和正文部分，分别应用二级标题和正文字体。\n\n## 页面和段落\n\n- 页边距：上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm。\n- 页脚距：2.5cm。\n- 正文行距：28 磅。\n- 题目/副标题行距：33 磅。\n- 页码：默认奇偶分页，奇数页右对齐，偶数页左对齐。\n- 页码字体：宋体，14pt。\n- 正文和标题会清理残留缩进，再设置标准首行缩进 2 字符。\n- `force_a4=false` 时 Word/WPS 文档保留原纸张大小；TXT/MD 默认使用 A4。\n\n段落包含图片、嵌入对象等特殊内容时，只处理必要文字格式，保留段落行距等布局，避免图片或对象显示不全。\n\n## TXT/MD 特殊处理\n\n- `.txt` 会按文本行生成段落。\n- `.md` 会清理 Markdown 标记，包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等。\n- TXT/MD 中手写数字编号（如 `1.`、`1.2.3`）按源文档保留，不自动递增重排。\n- 默认空行模式为：删除单个空行，连续多个空行合并为 1 个空行。\n- 可通过 `--blank-line-mode` 或配置字段 `blank_line_mode` 改为空行不处理，或保留单个空行但压缩多个空行。\n\n空行模式：\n\n| 模式 | 行为 |\n|---|---|\n| `不改动任何空行` | TXT/MD 原始空行保持不变 |\n| `删除单个空行，多个空行保留至1个空行` | 单个空行删除，连续多个空行合并为 1 个 |\n| `保留单个空行，多个空行保留至1个空行` | 单个空行保留，连续多个空行合并为 1 个 |\n\n## 表格、图表和附件\n\n- 表格内容自动调整默认关闭，避免改变复杂表格布局。\n- 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐。\n- 表格智能对齐启用后，会尝试将表头、合计/总计、序号列、短文本居中，将数字内容右对齐。\n- 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别。\n- 附件标识默认启用格式化，识别 `附件`、`附件1`、`附件：` 等形式，并会段前分页。\n- 附件标识后会继续尝试识别附件题目和副标题；如果没有附件题目/副标题，不应跳过紧随其后的正文段落。\n\n## 符号和特殊内容\n\n- 符号标准化默认关闭，可通过配置 `normalize_punctuation: true` 启用。\n- 启用后会较保守地处理中文语境中的英文标点、引号、括号、省略号等，避免影响数字、小数、英文内容。\n- 段落含域代码时会跳过符号标准化，避免破坏自动域、书签、批注引用等特殊内容。\n- 删除段首空白 run 时会检查 run 内是否含有非文本 OOXML 子元素，避免破坏域代码、书签、批注引用等特殊内容。\n\n## 平台和自动编号\n\n- Windows 环境下，会尽量通过 WPS/Word COM 接受修订，并将自动编号转为普通文本。\n- `.doc/.wps` 转 `.docx` 在 Windows 优先使用 WPS/Word COM；macOS/Linux 或 COM 转换失败时，会尝试调用 LibreOffice `soffice`。\n- 如果 `soffice` 自动查找失败，可在 CLI 中使用 `--soffice <路径>` 指定；如果转换仍失败，应先手动另存为 `.docx` 后再处理。\n- 非 Windows 或 COM 不可用时，会跳过需要 WPS/Word 的预处理步骤。\n- 自动编号转换失败或被跳过时，输出文件中编号样式可能仍由 Word/WPS 自动编号控制，字体字号和缩进需要人工检查。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Skill: 公文格式转换 Owner: cwyalpha Summary: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化，输出标准 docx。支持智能识别标题层级（一、/（一）/1./（1））、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-05-15T14:43:52.244Z | user doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”（如 1. 1.2.3）按源文档保留、不自动重排说明。 - 其他内容无变动，仅补充文档描述与功能说明，无代码更新。 v1.0.3 | 2026-05-01T02:02:42.975Z | user doc-","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":752,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T01:09:54.921Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:54:17.702Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}