
还记得那次投 IEEE 会议论文之前我花了一整晚上把 Word 里的几十个公式重新敲进 LaTeX结果编译出来的表格还因为宏包冲突变了形。后来我发现与其手动搬内容不如把“Word 到 LaTeX”的转换流程交给 Codex 来跑再配合一份自定义的开源 Skill就能把转换过程规范成一条可复用的流水线。这篇文章我会完整拆解这套方案包括 Codex 环境准备、Skill 的目录结构与编写思路、docx 解析脚本、IEEE 期刊模板适配、常见报错排查和工程实践建议。如果你正在为论文投稿的 LaTeX 模板发愁或者想给团队做一套“Word 论文一键转 TeX”的内部工具这篇内容可以直接照着落地。1. 为什么需要 Word 转 LaTeX——论文投稿前的“最后一公里”很多同学和工程师写论文时习惯用 Word批注方便、审阅模式顺手、导师修改意见也能直接挂在文末。但到了投稿环节目标期刊或会议往往只提供 LaTeX 模板或者明确要求“请使用官网 LaTeX 模板排版后提交”。这时就面临两种选择手动把 Word 内容复制到 .tex 文件逐段调整格式。用工具或脚本做半自动转换再由 AI 辅助修正结构和公式。手动方案最痛苦因为它不只是“复制粘贴”还要处理下面这些问题公式Word 里的公式可能是 MathType 对象也可能是 Word 原生公式OMML复制到 LaTeX 后经常变成乱码。表格Word 表格的边框、列宽、字体样式在 LaTeX 中没有直接对应关系特别是论文里常见的三线表、双线表转换后经常出现“双线变单线”。图片与交叉引用Word 中的“图 1”“表 2”是自动编号字段转为 LaTeX 后必须改成\ref{}和\label{}机制。参考文献Word 的尾注或文献管理软件插入的引用很难自动转换成 BibTeX 条目。模板适配不同期刊对字号、页边距、标题格式要求不同LaTeX 模板之间的差异比想象中大。为什么选择 Codex 来做这件事因为 Codex 是一个能读取文件、生成代码、执行命令并理解上下文的 AI 编程助手。它可以读取 docx 解包后的 XML 结构也能直接操作 .tex 文件并且可以通过“Skill”的形式把专家经验固化成一套可复用的操作规程。相比简单提问“帮我把这篇论文转成 LaTeX”Skill 的优势在于每次转换都按同一套规则执行不会因为提示词写得不够全而变化。所以这篇文章的核心目标就是构建一个本地开源 Skill让 Codex 按固定流程把 Word 论文转换成指定期刊模板的 LaTeX 源码。2. Codex 与 Skill 基础先理解工具边界2.1 Codex 是什么Codex 是面向开发者的 AI 编程工具提供命令行交互方式。你可以在终端里向它描述任务它能够读取项目文件、修改代码、执行命令并根据运行结果继续调整。它的核心使用场景包括项目分析和代码生成。自动化脚本编写。批量文件处理。格式转换和数据整理。和直接在网页对话框里贴文本不同Codex CLI 能直接操作本地文件系统这是“一键转论文格式”这类任务最关键的能力。2.2 Skill 是什么Skill技能是 AI 编程助手的一种扩展机制通常表现为项目内的一组指令文件。一个 Skill 可以把某个特定任务的完整操作步骤、注意事项、参考规则打包起来。Codex 在执行任务时会优先读取 Skill 定义并按照里面的规则来处理问题。一个典型的 Skill 目录结构如下.codex/skills/word-to-latex/ ├── SKILL.md ├── reference/ │ ├── ieee_template_notes.md │ └── table_rules.md └── examples/ └── sample_output.tex其中SKILL.md是核心指令文件用来告诉 Codex这个技能适用于什么任务。处理任务的完整流程是什么。有哪些必须遵守的规则。有哪些常见坑需要避免。2.3 为什么用 Skill 而不是普通提示词普通提示词的问题是“每次都要重新描述一遍需求”而且描述质量直接决定输出质量。Skill 相当于把专家经验固化到项目里每次运行都按同一套标准执行。例如你可以在 Skill 里写死标题层级映射规则Heading 1对应\sectionHeading 2对应\subsection。表格处理规则默认使用booktabs宏包表格线用\toprule、\midrule、\bottomrule。公式处理规则优先使用amsmath数学环境避免出现$$...$$与模板冲突。图片处理规则导出图片到指定目录并在 .tex 中用\includegraphics引用。这样话即使换一个人来执行或者隔了很久再运行输出质量也能保持一致。2.4 工具边界这不是“全自动魔术”需要提前说明Word 转 LaTeX 目前做不到“一键无人工”。复杂的 Word 文档里经常有文本框、嵌套表格、DOM 结构混乱的目录、批注、修订记录这些都会影响转换质量。合理的方式是用脚本提取 Word 中的核心内容生成结构化中间文件。让 Codex 根据中间文件和目标期刊模板生成 LaTeX 源码。人工 review 公式、引用和特殊格式做最后的编译修正。这套流程的目标是把转换效率提升 80%剩下 20% 的花样格式交给人工兜底。3. 环境准备Codex CLI LaTeX 发行版安装在做具体转换之前先把环境搭建好。这里列出推荐安装方案实际版本请根据你的操作系统和网络环境调整。3.1 安装 Codex CLICodex CLI 的安装方式以官方文档为准常见做法是使用 Node.js 的 npm 全局安装或者直接下载对应平台的二进制安装包。# 如果是 npm 方式 npm install -g codex安装完成后在终端验证codex --version如果命令提示找不到codex需要确认 Node.js 的全局 bin 目录是否已加入 PATH。在 Windows 上通常是%APPDATA%\npm在 macOS / Linux 上常见路径是/usr/local/bin或/usr/lib/node_modules下的软链接目录。Codex CLI 安装好之后还需要登录并配置模型。具体步骤以当前版本命令行提示为准一般会引导你完成认证和默认模型选择。3.2 安装 LaTeX 发行版LaTeX 本身不是单个程序而是一套排版系统需要安装发行版来管理宏包和编译引擎。常见发行版WindowsMiKTeX 或 TeX Live。macOSMacTeXTeX Live 的 macOS 版本。Linux通过系统包管理器安装texlive-full。安装完以后验证编译环境xelatex --version pdflatex --version这里建议至少保留pdflatex和xelatex两个引擎。pdflatex是多数期刊模板的标准引擎xelatex用于处理中文文档或特殊字体。需要注意有些期刊模板依赖特定宏包比如IEEEtran.cls、elsarticle.cls、svjour3.cls。这些模板文件通常由期刊官网提供不属于 TeX Live 标准宏包。转换前先把目标期刊提供的模板文件夹下载到项目里确保编译时能找到对应的.cls文件。3.3 在 VS Code 中接入 LaTeX 工作流VS Code 配合 LaTeX Workshop 插件是本地编辑和编译 LaTeX 比较顺手的组合。安装插件后打开.tex文件侧边栏会出现编译、查看 PDF 的按钮。在settings.json中可以指定需要使用的 LaTeX 引擎和编译命令。例如{ latex-workshop.latex.recipes: [ { name: xelatex, tools: [xelatex] } ], latex-workshop.latex.tools: [ { name: xelatex, command: xelatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOC% ] } ] }把xelatex设为默认编译工具遇到中文文档不容易出现字体问题。如果期刊模板要求必须用pdflatex再切换回去。4. 核心原理一份 Skill 如何驱动 Codex 完成转换4.1 Word 文档本质与可解析性很多人以为 docx 只能用 Word 打开其实 docx 本质是一个 ZIP 压缩包里面是 XML 文件集合。用解压工具打开 docx可以看到这样的结构word/ ├── document.xml ├── styles.xml ├── numbering.xml └── media/ └── image1.png其中document.xml记录了正文的段落、表格和样式信息media目录存放文档中嵌入的图片。这意味着我们可以通过编程方式读取 Word 结构。更简单的方式是使用 python-docx 库它把 XML 细节封装成了 Python 对象。下面是一个常见的解析流程遍历Document.paragraphs获取段落文本和样式。遍历Document.tables获取表格内容。遍历关系文件导出图片资源。将内容整理成 JSON 中间格式方便 Codex 阅读。4.2 Skill 目录结构与职责在项目里创建下面的目录结构这就是我们要分享的开源 Skillword2latex-skill/ ├── AGENTS.md ├── scripts/ │ ├── extract_docx.py │ └── extract_images.py ├── templates/ │ ├── ieee/ │ │ └── IEEEtran.cls │ ├── elsevier/ │ └── springer/ ├── .codex/ │ └── skills/ │ └── word-to-latex/ │ └── SKILL.md └── output/ └── paper.tex各目录职责如下AGENTS.md声明 Codex 在执行任务时需要加载的 Skill 和项目文件约定。scripts/存放 Word 内容解析脚本。templates/存放不同期刊的 LaTeX 模板文件。.codex/skills/Skill 定义目录。output/最终生成的 .tex 文件和图片资源。4.3 转换规则定义从文档结构到 LaTeX 语法在SKILL.md中需要把 Word 到 LaTeX 的映射规则写清楚。核心映射关系如下Word 内容LaTeX 目标说明Heading 1\section{}章节标题Heading 2\subsection{}子章节标题Heading 3\subsubsection{}三级标题普通段落直接写入正文注意分段与空行列表itemize/enumerate根据 Word 列表类型图片figure环境 \includegraphics图片需要复制到 output 目录表格table环境 tabular推荐使用booktabs风格公式equation/align需要将 Word 公式转为 LaTeX 语法交叉引用\ref{}\label{}避免硬编码编号参考文献thebibliography或 BibTeX需要转换为条目格式这些规则写进 SKILL.md 之后Codex 每次转换都会参考同样的映射不会出现“上次用 itemize、这次用 description”这种不稳定输出。4.4 模板适配层一次转换多模板复用不同期刊的 LaTeX 模板差异很大所以 Skill 里还要有一个“模板适配层”。我的做法是在templates/目录下按期刊名建立子目录。每个子目录里放.cls文件、期刊提供的说明文档、以及一份模板结构参考 .tex。在 SKILL.md 中定义“目标模板”参数例如TARGET_TEMPLATEieee。Codex 转换时先读取对应模板的结构再按照该模板的格式生成输出。这样做的好处是同一套 docx 解析逻辑不需要改换模板时只需要替换templates/下的内容并调整少量输出规则。5. 完整实战从 Word 论文到 IEEE 期刊 LaTeX 模板下面进入核心实操环节。我们以一篇简化的通用学术 Word 论文为例目标是转换为 IEEE conference 模板IEEEtran.cls。5.1 准备 Word 样例假设我们有一个paper.docx包含以下内容标题一篇关于边缘计算任务调度的实验论文。摘要Abstract。一级标题引言、系统模型、实验设置、结论。一个表格实验参数对比表。一张图片系统架构图。在正式执行转换前建议先用 Word 把文档中的批注和修订记录清除否则这些内容会被提取脚本当作正文读取影响转换结果。5.2 搭建 Skill 定义文件在项目根目录创建AGENTS.md# Word 转 LaTeX 工作目录 本目录用于将 Word 论文转换为指定期刊的 LaTeX 源码。 ## 技能加载 - 名称word-to-latex - 位置.codex/skills/word-to-latex/SKILL.md ## 工作流程 1. 使用 scripts/extract_docx.py 解析 Word 文档。 2. 使用 scripts/extract_images.py 导出图片。 3. 根据目标模板生成 .tex 文件。 4. 确认输出目录为 output/。然后在.codex/skills/word-to-latex/SKILL.md中写入--- name: word-to-latex description: 将 Word 论文转换为指定期刊模板的 LaTeX 源码支持标题、表格、图片、公式和引用迁移。 --- # Word 转 LaTeX 技能 ## 适用场景 用户提供 .docx 文件需要生成符合目标期刊模板要求的 .tex 源码。 ## 输入 - input.docx需要转换的 Word 论文。 - target_template目标模板名称如 ieee、elsevier、springer。 ## 处理流程 1. 运行 python scripts/extract_docx.py input.docx output/content.json。 2. 运行 python scripts/extract_images.py input.docx output/figures。 3. 阅读 output/content.json识别标题层级、段落、表格和图片位置。 4. 在 templates/target_template 中读取模板配置与参考示例。 5. 在 output/ 下生成 paper_name.tex。 6. 在 output/ 下生成或补充参考文献文件。 7. 提醒用户执行编译命令。 ## 格式映射规则 - 标题Heading 1 对应 \sectionHeading 2 对应 \subsection。 - 段落每个段落之间用空行分隔。 - 表格使用 table 环境表格线使用 booktabs 风格。 - 图片使用 figure 环境图片路径相对于 .tex 文件。 - 公式使用 equation 或 align 环境避免 $$。 - 引用正文中的“图 1”“表 2”改为 \ref{fig:xxx}、\ref{tab:xxx}。 ## 注意事项 - 如果 Word 中的公式提取失败在 output/ 下生成 formula_issues.md列出需要人工处理的位置。 - 如果表格列数不一致以第一行为准并在输出中补充对齐说明。 - 不要修改原文内容只做格式转换。5.3 编写 Word 内容解析脚本创建解析脚本scripts/extract_docx.py# 文件路径scripts/extract_docx.py 从 Word 文档中提取段落与表格输出为 JSON 中间格式。 用法 python scripts/extract_docx.py input.docx output/content.json import json import sys from docx import Document def extract(docx_path): doc Document(docx_path) blocks [] for p in doc.paragraphs: text p.text.strip() if not text: continue blocks.append({ type: paragraph, style: p.style.name if p.style else , text: text, }) for idx, table in enumerate(doc.tables): rows [] for row in table.rows: rows.append([cell.text.strip() for cell in row.cells]) blocks.append({ type: table, index: idx, rows: rows, }) return blocks if __name__ __main__: src, dst sys.argv[1], sys.argv[2] result extract(src) with open(dst, w, encodingutf-8) as f: json.dump(result, f, ensure_asciiFalse, indent2) print(f已提取 {len(result)} 个内容块 - {dst})这段脚本会把 Word 段落和表格按顺序提取到 JSON 文件中。注意这里只是简化版本如果文档中图表交错出现建议改成按文档流顺序遍历避免段落和表格的先后关系丢失。创建图片提取脚本scripts/extract_images.py# 文件路径scripts/extract_images.py 导出 Word 文档中的图片到指定目录。 用法 python scripts/extract_images.py input.docx output/figures import sys from pathlib import Path from docx import Document src sys.argv[1] out_dir Path(sys.argv[2]) out_dir.mkdir(parentsTrue, exist_okTrue) doc Document(src) for i, rel in enumerate(doc.part.rels.values()): if image not in rel.reltype: continue suffix Path(rel.target_ref).suffix or .png image_name ffig_{i 1}{suffix} image_path out_dir / image_name image_path.write_bytes(rel.target_part.blob) print(f已导出 {image_path})这个脚本会把 docx 包里的所有图片导出到output/figures目录文件名自动命名为fig_1.png这种格式。5.4 启动 Codex 执行转换环境准备好之后打开终端进入word2latex-skill项目根目录启动 Codexcodex 请使用 word-to-latex 技能将 paper.docx 转换为 IEEE 会议模板论文Codex 会读取AGENTS.md找到技能定义然后依次执行脚本、读取 JSON、生成 LaTeX 源码。整个过程中你可以在对话里追加要求比如“摘要不要加粗。”“表格统一使用三线表。”“图片路径改成相对路径。”“参考文献采用 IEEE 数字编号格式。”Codex 生成的核心 .tex 文件效果类似下面这样% 文件路径output/paper.tex \documentclass[conference]{IEEEtran} \usepackage{cite} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{graphicx} \usepackage{textcomp} \usepackage{xcolor} \usepackage{booktabs} \title{基于边缘计算的任务调度方法研究} \author{ \IEEEauthorblockN{张三} \IEEEauthorblockA{某大学计算机学院\\ 北京中国} } \begin{document} \maketitle \begin{abstract} 随着边缘计算场景的复杂性提升任务调度成为影响服务质量的关键因素。 本文提出一种基于优先级队列的动态调度方法并通过仿真实验验证了方法的有效性。 \end{abstract} \begin{IEEEkeywords} 边缘计算, 任务调度, 优先级队列 \end{IEEEkeywords} \section{引言} 边缘计算将计算资源部署到网络边缘显著降低了任务响应时延。 然而边缘节点的计算能力有限如何高效调度任务仍然是一个挑战。 \section{系统模型} 本文考虑一个由多个边缘节点组成的系统模型。 每个节点具备独立计算能力任务以队列形式到达并被调度执行。 \section{实验设置} \begin{table}[htbp] \centering \caption{实验参数设置} \label{tab:params} \begin{tabular}{lcc} \toprule 参数名称 默认值 说明 \\ \midrule 节点数量 10 边缘节点总数 \\ 任务数量 1000 模拟任务总数 \\ 带宽 100Mbps 网络带宽 \\ \bottomrule \end{tabular} \end{table} 图~\ref{fig:architecture} 展示了系统架构。 \begin{figure}[htbp] \centering \includegraphics[width0.8\linewidth]{figures/fig_1.png} \caption{系统架构图} \label{fig:architecture} \end{figure} \section{结论} 本文针对边缘计算任务调度问题设计并验证了一种动态调度方法。 下一步将在真实边缘环境中继续验证算法稳定性。 \begin{thebibliography}{00} \bibitem{ref1} 作者. 文章标题. 会议或期刊名称, 年份. \end{thebibliography} \end{document}5.5 编译验证在 VS Code 中打开output/paper.tex使用 LaTeX Workshop 执行编译。如果一切正常会生成同名 PDF 文件。也可以在终端手动编译cd output xelatex paper.tex如果模板切换为pdflatex编译命令改为pdflatex paper.tex编译过程中如果报错缺少宏包常见处理方式MiKTeX 会自动提示安装缺失宏包。TeX Live 可以使用tlmgr install 宏包名手动安装。确保模板提供的.cls文件和.tex在同一目录或者已经在 TEXINPUTS 环境变量中声明。6. 常见报错与排查思路6.1 Codex 相关报错问题现象常见原因解决思路unable to locate the codex cli binaryCodex CLI 未安装或客户端找不到codex可执行文件安装 Codex CLI确认codex --version可运行在客户端设置中指定codex_cli_pathlocal proxy failed while handling codex endpoint /responsesAPI 端点配置错误、本地转发服务未运行、认证令牌失效检查 API Base URL 是否正确确认转发服务在线重新登录认证model is not supported when using codex当前配置的模型名不在支持列表或拼写有误升级 Codex 到最新版本查看模型支持列表改用官方推荐模型名Codex 响应速度慢或中断网络不稳定、单次任务过于复杂将任务拆分为小步骤先执行脚本解析再分步生成 LaTeX关于unable to locate the codex cli binary这个报错在桌面客户端集成场景中出现较多。原因是图形界面程序在调用 Codex CLI 时需要在环境变量 PATH 中找到codex可执行文件或者需要在配置中指定完整路径。排查时先打开终端执行where codexWindows或which codexmacOS/Linux确认安装位置再把它填到客户端设置里。6.2 LaTeX 编译相关报错问题现象常见原因解决思路.cls not found模板文件不在当前目录或未加入 texmf 目录把期刊模板.cls放到 .tex 同目录重新编译表格双线变单线Word 表格边框在 docx 中信息丢失或者 LaTeX 表格宏包不匹配使用booktabs宏包规则指定三线表中文乱码或无法处理中文使用了pdflatex默认字体不支持中文改用xelatex并引入ctex宏包公式编译报错Word 公式语法转换不完整定位公式位置人工修复 LaTeX 数学表达式图片编译不出图片路径不对或图片扩展名与编译器不兼容检查\includegraphics路径确认图片存在6.3 Word 内容提取问题问题现象常见原因解决思路提取结果为空文档正文在文本框或内容控件中python-docx 默认读不到先用 Word 将文本框转为正文或使用 pandoc 作为备选提取方案表格列错乱使用表格合并单元格导致行列数量不一致在提取脚本中加入列数校验处理合并单元格数学公式提取为空白Word 公式以 OLE 对象形式存在优先处理 OMML 公式MathType 公式需要借助 MathType 转换工具7. 最佳实践与工程建议7.1 把转换流程沉淀为模板不要每次转换都临时改 Skill。建议把总结出来的规则固化到 SKILL.md 里例如表格统一用三线表。图片统一使用\linewidth相对宽度。公式统一用amsmath环境。参考文献统一用数字编号样式。这样换一个人执行输出质量也不会明显下降。7.2 使用中间文件做质量检查docx 解析脚本输出 JSON 中间文件后不要直接跳到 LaTeX 生成。先检查 JSON 内容确认标题层级、表格数据、段落顺序都是完整的。这个步骤能提前发现大部分问题。7.3 模板与脚本分开维护期刊模板更新频率不高但偶有版本变化。建议把模板放在templates/下并记录模板来源和版本信息。这样既方便切换也方便回溯问题。7.4 安全与合规注意事项涉及未发表论文、内部技术报告时注意数据脱敏。运行解析脚本和编译命令前建议在测试目录中操作避免误覆盖源文件。不要在编译命令中加入未知来源的可执行命令尤其不能执行从论文内容中直接提取出来的 shell 片段。如果使用第三方 AI 服务处理涉密或敏感论文先把内容中的人名、单位、关键数据做匿名化处理。7.5 保留人工 Review 清单转换完成后建议按下面的清单检查[ ] 章节编号是否连续。[ ] 图表编号是否对应正确。[ ] 图片是否都成功导出并引用。[ ] 公式是否完整可编译。[ ] 参考文献格式是否符合期刊要求。[ ] 表格列宽和字体是否正常。[ ] 编译过程中是否有 warning特别是 overfull 和 undefined reference。8. 总结这套“Word 论文 Codex Skill LaTeX 模板”的流程本质上是把 AI 变成一个懂排版规则的转换工人它负责读取 Word 结构、按照固定规则生成 .tex 源码、并根据编译结果不断修正。比起手动复制速度和稳定性都有大幅提升。整个项目跑通之后我最大的感受是真正值得花时间的不是“会提问”而是把转换规则沉淀成 Skill 文件。规则越细Codex 的输出越稳定。下一次遇到 Elsevier 模板、Springer 模板只需要把对应模板放进templates/目录再微调 SKILL.md 里的映射规则就能复用整套流程。如果你也正在为 Word 论文转 LaTeX 苦恼可以先从一个结构简单的文档开始测试把上面这些脚本和 Skill 搭起来跑通后再处理公式多、表格复杂的论文。动手实践一遍远比收藏一份转换工具清单更有用。