Word Docgen — md → pandoc → docx 管線
從中文 md(或翻譯後的英文 md)產生 Word 文件,並依照研究團隊的參考手稿風格進行排版:使用 pandoc 轉換,再加上 Python zipfile 後處理,直接讀寫 docx XML。
六條鐵律(優先記住)
\tag{n}會被 pandoc 靜默丟棄:在產生前,將\tag{…}替換為\qquad\text{(n)},使編號位於方程式右端;md 原始碼保留標準的\tag拼寫不變。- 停用隱含圖片功能:使用
-f markdown-implicit_figures,且圖片替代文字留空——否則 pandoc 會自動從替代文字產生重複的標題。 - 後向引用語法在不同語言間會失效:Python
re.sub使用\1/\g<1>;PowerShell/JS 使用$1。沿用錯誤習慣會直接輸出($1)字面文字。 - 方程式字型是個地雷區:OMML 數學運算依賴
w:ascii="Cambria Math";任何全文件字型替換必須以<m:oMath>…</m:oMath>為界,僅修改外部內容,並確認 Cambria Math 計數不變。 - 先驗證再覆寫:暫存副本 → 驗證(特徵計數 + 透過
minidom.parseString檢查 XML 格式 + pandoc 回讀)→os.replace;兩個真實錯誤都是被這道關卡攔下。 - 編輯樣式表勝過編輯 body XML:pandoc 從
--reference-doc繼承樣式與 sectPr;參考 docx 的剖析操作手冊請見參考文件 §3.5。
內容導覽
完整細節(pandoc 層陷阱、OOXML/正則表達式層陷阱、工程實務、方程式布局與標題規則的第二輪陷阱、可重複使用的腳本)收錄於 references/word-pandoc-pitfalls.md。提取的格式規範本身(頁面/排版/標題/標題/方程式/表格)收錄於 references/word-format-spec.md。
可重複使用的腳本(位於 scripts\ 目錄下)
_rebuild_word.py:完整的 md → docx 管線(\tag前置處理、樣式注入、後處理、寫入前驗證);_fix_docx_format.py:對手動編輯的 docx 進行三項格式原地修補(TNR 字型、圖片置中、表格網格線);- 呼叫方式(從手稿目錄執行,輸入與輸出路徑均為相對路徑):
python <skill-path>\scripts\_rebuild_word.py input.md output.docx。
選擇方式:使用者已手動編輯過 Word 檔案 → 僅進行原地修補(重新產生會遺失編輯內容);使用者希望從 md 全新建置 → 執行完整管線。先詢問使用者,或檢查是否存在 ~$ 鎖定檔以確認文件是否正在編輯中。
範圍界限
- Word 註解/追蹤修訂(docx-editor MCP 領域):不屬於本技能範圍;
- 手稿格式規範本身(頁面/排版/標題慣例):由本技能的
references/word-format-spec.md提供; - 驅動腳本時 PowerShell 的引號陷阱:請見 references/word-pandoc-pitfalls.md §3.4。