论文从 Word 转成 LaTeX,是不少科研党都绕不过去的一道坎。手动复制粘贴一个小时只是基础操作,公式、表格、图片换了环境要重新排版;用在线工具转换完,格式又跟期刊模板对不上。OpenAI 开源的 Codex CLI 提供了另一种做法:让 AI 在本地读取文档、执行命令、反复编译,再通过 Skill 机制把“Word 论文转 LaTeX 并适配期刊模板”这套流程固化下来,变成一条可重复执行的自动化流水线。
下面从零演示如何准备环境、编写一个 docx-to-latex-paper Skill,把一篇带标题、图片、表格和参考文献的 Word 论文转成可编译的 LaTeX 项目,并说明如何适配常见期刊模板。这套流程适合正在准备投稿的科研人员、帮助他人排版的技术支持人员,以及想用 Codex CLI 管理重复性格式转换任务的开发者。所谓“一键”,不是第一次使用就完全不用配置,而是把整套规则预置成 Skill 后,后续每次只需要一句话触发。
1. 先理清 Word 转 LaTeX 的难点和自动化思路
1.1 手动转换为什么容易翻车
Word 是可视化排版,格式藏在段落属性和样式里;LaTeX 是声明式排版,结构、样式和内容完全分离。两者之间不是“复制粘贴再改改字体”的关系,而是一次结构重建。手动转换时,以下内容最容易消耗时间:
- 标题层级辨认:Word 里用加粗、字号、编号手动控制的标题,到了 LaTeX 必须还原成
\section、\subsection等命令。 - 公式格式:MathType 公式、Word 自带公式编辑器、公式图片,三种形态需要三种处理方式。
- 表格结构:Word 里常见的网格线、双线、合并单元格,在 LaTeX 中通常要改成
booktabs三线表,列宽和对齐方式都需要重新定义。 - 图片引用:Word 中图片是嵌入的浮动对象,导出 LaTeX 后图片文件、路径、编号和交叉引用都要重建。
- 参考文献:手动排序的引用列表要转成
.bib文件,再让 BibTeX 自动编号。 - 特殊字符:
_ % & # $ { }这些字符在 LaTeX 中有特殊含义,不转义会导致编译失败。
下面这张表可以快速看出一篇 Word 论文在转入 LaTeX 时要经历哪些变化。
| Word 中的常见状态 | 转到 LaTeX 时要做的处理 |
|---|---|
| 标题靠加粗和字号区分 | 恢复为\section、\subsection等层级命令 |
| 公式用 MathType 或公式编辑器 | 转换为 LaTeX 数学语法,编号方式统一 |
| 表格使用网格线和双线 | 改为booktabs三线表,重设列宽与对齐 |
| 图片是居中嵌入的浮动对象 | 使用figure环境并设置\caption、\label |
| 引用手动编号 | 使用 BibTeX 或 biblatex 自动编号 |
| 章节交叉引用写“见图1” | 使用\ref、\autoref自动更新引用 |
如果论文只有几千字、没有公式,手动转换还能接受。一旦进入多图、多表、多公式的真实投稿场景,手动方案不仅效率低,还容易出现“正文改完了,图表编号忘了更新”这类低级错误。
1.2 为什么 Codex 适合做这个转换
Codex CLI 是 OpenAI 开源的命令行 AI 助手,它能在终端中读取文件、写文件、执行 shell 命令,并且根据运行结果继续调整自己的操作。这正好匹配“Word 转 LaTeX”这类多步骤任务:先解析文档结构,再生成.tex,接着编译,看到报错后修改,最后输出可用的 PDF。
Codex 的 Skill 机制解决的是“复用”问题。没有 Skill 时,每次都要在对话里重新描述转换规则、模板要求、检查标准;有了 Skill,这些内容被固化到本地目录中的SKILL.md和参考资料里。用户只需要写一句“使用某个 Skill 处理某个文件”,Codex 就会按预置流程执行。
这个过程的价值不只是省掉一条长提示词:
- 规则可维护:期刊模板调整时,只改 Skill 中的参考文件即可。
- 团队可共享:把 Skill 目录放入 Git 仓库,成员克隆后就能使用同一套转换标准。
- 结果可复现:同一份文档在不同时间转换,执行逻辑一致,不会因为一次对话状态不同而飘忽。
- 本地执行:未发表的论文稿件不需要上传到第三方在线转换服务,降低隐私顾虑。
1.3 这套方案的边界
必须承认,不是所有 Word 文档都能被自动转换成 100% 还原的 LaTeX。以下场景需要人工介入:
- 公式密集且混用了 MathType、OMML、图片三种形式的文档;
- 含有大量合并单元格、复杂嵌套表格的文档;
- 模板本身不规范,缺少样例
.tex和宏包的期刊; - Word 中完全通过手动空格对齐的“伪表格”。
所以,把 Codex 定位成“自动完成 80% 重复劳动,剩下 20% 由人核对”是最稳妥的使用心态。下面进入环境准备。
2. 环境准备:Codex CLI、LaTeX 发行版与 pandoc
2.1 安装 Codex CLI
Codex CLI 的安装方式在不同版本之间有差异,常见途径有两种。如果官方提供 npm 包,可以执行:
npm install -g @openai/codex如果更习惯直接使用发行版二进制,可以从 GitHub Releases 页面下载当前系统对应的压缩包,解压后把可执行文件加入PATH。也可以克隆官方仓库后按 README 说明从源码构建。具体方式以官方 README 为准,不要照搬一个固定的安装命令到所有系统。
安装后先验证版本:
codex --version首次启动时,根据提示完成账号登录或 API Key 配置。不同版本的鉴权方式有差异,直接跟随终端提示即可。配置完成后可以执行一条简单命令测试:
codex "列出当前目录下的文件"如果 Codex 能正确读取目录并描述文件,说明基础功能可用。
2.2 安装 LaTeX 发行版
LaTeX 编译器是整个流水线的终点,建议按操作系统选择发行版。
| 操作系统 | 推荐发行版 | 说明 |
|---|---|---|
| Windows | TeX Live 或 MiKTeX | TeX Live 宏包完整,安装时间长;MiKTeX 按需安装宏包,占用小 |
| macOS | MacTeX | 官方 GUI 安装包,内含 TeX Live、TeXShop 等工具 |
| Linux | texlive-full | 多数发行版可通过包管理器安装,宏包齐全 |
| 跨平台 | Overleaf | 在线编译,适合协作,但不适合需要本地执行的自动化流程 |
安装完后验证两个关键命令:
xelatex --version latexmk --version这里特意使用xelatex而不是pdflatex,因为中文学术论文场景下,xelatex配合ctex宏包对中文的支持最省心。后面示例也统一用latexmk -xelatex作为编译命令。
2.3 安装 pandoc 作为转换过渡工具
pandoc 是文档格式转换的瑞士军刀。完整方案不是让 Codex 从零读取二进制.docx文件,而是先用 pandoc 把.docx转成一份基础.tex草稿,再让 Codex 在此基础上做语义调整、模板适配和编译修复。
安装 pandoc:
pandoc --versionmacOS 可以使用brew install pandoc,Linux 使用系统包管理器安装pandoc,Windows 使用安装包或包管理器。pandoc 版本之间差异不大,但转换效果可能受版本影响,建议保持最新稳定版。
2.4 配置 VS Code 和 LaTeX Workshop
推荐使用 VS Code 加 LaTeX Workshop 扩展进行后续编辑。安装扩展后,在settings.json里配置一套 xelatex 编译链:
{ "latex-workshop.latex.recipes": [ { "name": "latexmk (xelatex)", "tools": [ "latexmk (xelatex)" ] } ], "latex-workshop.latex.tools": [ { "name": "latexmk (xelatex)", "command": "latexmk", "args": [ "-xelatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] } ] }配置完成后,在 VS Code 中打开.tex文件,点右上角 TeX 图标即可启动编译。这个配置里的-file-line-error很重要,错误信息会精确到文件行号,后面排查问题时能省很多时间。
到这里,环境中的三根支柱已经就绪:Codex 负责调用 AI 能力和执行命令行,pandoc 负责基础转换,LaTeX 环境负责编译和报错。可以先做一个总检查:
codex --version xelatex --version pandoc --version latexmk --version四个命令都没有报错,再进入 Skill 编写阶段。
3. 编写一个可复用的 docx-to-latex-paper Skill
3.1 没有 Skill 时,转换流程有多难重复
如果直接在 Codex 对话里手动描述规则,每次要写的信息非常长:Word 文件在哪里、图片怎么处理、表格要不要转三线表、参考文献用哪个样式、编译命令是什么、报错后怎么办。这些内容写一遍就够繁琐,更不用说每次换文档都要重写一遍。
Skill 的本质就是把这些指令和领域知识放到固定目录中,让 Codex 在用户触发时自动读取。你只需要在对话里说“使用 docx-to-latex-paper 处理 paper.docx”,剩下的规则全部由 Skill 提供。
3.2 建立 Skill 目录
Codex 的 Skill 通常放在用户目录的.codex/skills下,常见结构如下:
~/.codex/skills/docx-to-latex-paper/ ├── SKILL.md └── references/ ├── conversion-rules.md └── template-checklist.md不同版本的 Codex 对 Skill 的识别位置可能有差异,如果~/.codex/skills不存在,先查看当前版本官方文档确认目录。也可以用一条命令创建目录:
mkdir -p ~/.codex/skills/docx-to-latex-paper/references3.3 编写 SKILL.md 主文件
SKILL.md是 Skill 的入口,包含元信息、适用场景、执行步骤和结果标准。下面是适合作为起点的一个版本:
--- name: docx-to-latex-paper description: 将 Word 论文转换为 LaTeX 源码,并适配指定期刊模板。 --- # Word 论文转 LaTeX ## 适用场景 - 输入:.docx 格式的论文稿件 - 输出:可编译的 LaTeX 项目目录 - 目标:符合指定期刊模板的排版要求 ## 转换前检查 1. 确认 .docx 文件存在且可正常打开。 2. 确认 pandoc、xelatex、latexmk 已安装。 3. 确认期刊模板目录存在,包含 .cls 或 .bst 文件。 ## 执行步骤 1. 使用 pandoc 将 .docx 转换为基础 .tex 草稿。 2. 解压 .docx 检查 word/document.xml 中的标题样式。 3. 将 Word 内置样式映射为 LaTeX 章节命令。 4. 导出 docx 内置图片到 images 目录,并修正路径。 5. 将表格转换为 booktabs 三线表,必要时使用 tabularx。 6. 检查公式语法,统一使用 equation 或 align 环境。 7. 应用期刊模板,替换 documentclass 和相关宏包。 8. 使用 latexmk -xelatex 编译,修复所有 error。 ## 结果标准 - 编译无 error。 - 图片、表格编号连续,交叉引用正确。 - 参考文献格式与期刊模板一致。 - PDF 中文字体正常显示,无方框乱码。description字段是 Codex 判断何时使用该 Skill 的关键,要写得像一条普通功能描述,而不是内部代号。执行步骤中的每一步都应当让 Codex 在转换时真正执行,而不是只读一遍。
3.4 编写转换规则参考文件
references/conversion-rules.md用来存放具体的格式规则。主文件负责流程,参考文件负责细节,这样后续修改规则时不需要改动主逻辑。
# LaTeX 转换规则 ## 标题映射 - Word 样式 Heading 1 -> \section{} - Word 样式 Heading 2 -> \subsection{} - Word 样式 Heading 3 -> \subsubsection{} ## 表格 - 优先使用 booktabs,避免竖线。 - 列宽超出 \textwidth 时使用 tabularx。 - 单元格内容含特殊字符时做转义。 - Word 中常见的表格双线,统一改成三线表结构。 ## 图片 - 将所有图片复制到 images/ 目录。 - 使用 \includegraphics 时省略扩展名。 - 主文件设置 \graphicspath{{images/}}。 - 图片必须使用 figure 环境,并补全 \caption 和 \label。 ## 公式 - 独立公式使用 equation 环境,需要多行时使用 align。 - 行内公式使用 \( ... \),避免使用 $$ ... $$。 - MathType 公式需要先转换成 LaTeX 语法,无法直接读取时询问用户。 ## 特殊字符 - _ % & # $ { } 在普通文本中需要转义。 - 反斜杠本身用于命令,不要直接复制 Windows 路径到 LaTeX 中。这个文件解决了大多数转换“半成品”的问题。比如 Word 表格经常是网格线加重复表头,转换后容易出现竖线过多、列宽失衡,规则中直接写“避免竖线、用三线表”,Codex 执行时就有了明确依据。
3.5 编写模板检查清单参考文件
references/template-checklist.md用于保存期刊模板相关的核对项:
# 期刊模板适配检查清单 ## 文档类 - [ ] documentclass 是否替换为模板提供的类名 - [ ] 是否需要 twocolumn、manuscript 等选项 - [ ] 模板提供的 .sty 是否已全部加载 ## 标题与作者 - [ ] 标题是否使用模板提供的 title 命令或环境 - [ ] 作者、单位、邮箱是否填写正确 ## 摘要与关键词 - [ ] 是否使用 abstract 环境 - [ ] 关键词格式是否与模板一致 ## 章节与图表 - [ ] 章节标题是否按模板格式显示 - [ ] 图表标题编号是否连续 - [ ] 表格是否使用三线表样式 ## 参考文献 - [ ] bibliographystyle 是否使用模板提供的 .bst - [ ] BibTeX 是否能无警告编译 ## 中文支持 - [ ] 使用 xelatex 编译 - [ ] 是否加载 ctex 宏包这些检查项不是给读者看的,而是写给 Codex 的指令。Skill 执行完转换后,Codex 会逐项核对并报告未通过项。
3.6 验证 Skill 是否被识别
在 Codex 交互界面中,先确认 Skill 被加载:
codex然后在对话里输入:
列出当前可用的 skill如果 Skill 创建成功,列表中应该能看到docx-to-latex-paper。看不到时,先检查目录名是否为skills、SKILL.md文件名大小写是否正确,再查看官方文档确认存放位置。
值得注意的是,Skill 文件修改后可能需要重启 Codex 进程才能生效。如果发现修改不生效,先重启,再测试。
4. 实测:把一篇带图表的 Word 论文转换成 LaTeX
4.1 准备一份测试 Word 文档
为了验证整个流程,先准备一个测试目录和示例文档:
mkdir -p paper-work && cd paper-work测试文档不必用真实论文,可以构造一个包含标题、摘要、两个章节、一张图片、一个表格和三篇参考文献的.docx文件。关键是文档中尽量使用 Word 的内置样式,比如“标题 1”“标题 2”,而不是手动加粗放大,这样 Codex 才能识别出结构。
如果没有现成文档,可以让 Codex 先帮助生成:
codex "生成一个简单的 docx 测试论文,包含标题、摘要、两个一级标题、一张图片、一个三列表格和三条参考文献"这种测试文档不需要内容真实,只要结构完整即可。
4.2 查看 docx 内部结构
.docx本质上是一个 ZIP 压缩包。先看它包含哪些文件:
unzip -l paper.docx输出中重点观察word/document.xml和word/media/。前者是正文内容,后者是图片资源。继续查看正文里的样式:
unzip -p paper.docx word/document.xml | grep -o 'w:pStyle w:val="[^"]*"' | sort | uniq -c这个命令会统计文档中使用到的段落样式。如果看到Heading1、Heading2,说明文档结构规范,后续映射会很顺利;如果全是Normal或正文,则说明标题是靠手动格式控制的,转换前需要先整理文档。
4.3 导出图片
把 Word 中的图片资源释放到独立目录:
mkdir -p images unzip -j paper.docx "word/media/*" -d images/ ls -l images/导出后,Codex 在生成 LaTeX 时可以参照images目录里的文件写\includegraphics,不需要再担心路径找不到。
4.4 用 pandoc 生成基础草稿
先让 pandoc 做第一层转换:
pandoc paper.docx -o paper-pandoc.tex --standalone生成的文件是可编译的,但它是“一般 LaTeX 文档”,不是“符合期刊模板的论文”。比如标题可能只是简单\title,表格不会自动变成三线表,参考文献也不会自动套用模板样式。这份草稿的价值是提供正文内容和基础结构,最终交给 Codex 精调。
4.5 调用 Skill 完成转换
现在使用刚才创建的 Skill 执行完整转换:
codex "使用 docx-to-latex-paper skill 将 paper.docx 转换为 LaTeX 项目,输出为 main.tex,并编译验证"Codex 会按SKILL.md中写的步骤执行:读取 docx 结构、处理图片、转换表格、适配模板、编译。如果期刊模板已经放在同一个工作目录,可以追加一句:
期刊模板在 template 目录下,请参照 sample.tex 调整 documentclass 和宏包。这一步就是所谓的“一键”。实际操作中,Codex 可能在转换后主动运行latexmk -xelatex main.tex,遇到报错再回头修改,循环到编译通过为止。
4.6 生成后的项目结构
一次成功转换后的目录大致如下:
paper-work/ ├── paper.docx ├── paper-pandoc.tex ├── main.tex ├── references.bib ├── images/ │ └── image1.png └── template/ ├── yourjournal.cls └── yourjournal.bstmain.tex是入口文件,references.bib存放参考文献,images存放从 Word 中导出的图片,template存放期刊模板文件。这套结构已经接近一个规范的 LaTeX 投稿项目。
main.tex的骨架大致如下:
\documentclass[twocolumn]{yourjournal} \usepackage{ctex} \usepackage{graphicx} \usepackage{booktabs} \usepackage{tabularx} \graphicspath{{images/}} \title{基于深度学习的论文标题示例} \author{张三} \date{} \begin{document} \maketitle \begin{abstract} 摘要内容:本文提出一种示例方法…… \noindent\textbf{关键词:}示例;LaTeX;Codex \end{abstract} \section{引言} 这是引言段落。 \section{方法} \subsection{方法一} 方法一的内容。 \subsection{方法二} 方法二的内容。 \begin{figure}[htbp] \centering \includegraphics[width=0.8\linewidth]{image1} \caption{示例图片} \label{fig:example} \end{figure} \section{结果} \begin{table}[htbp] \centering \begin{tabularx}{\textwidth}{l c c} \toprule 方法 & 准确率 & 备注 \\ \midrule 方法一 & 0.91 & 基线 \\ 方法二 & 0.95 & 本文方法 \\ \bottomrule \end{tabularx} \caption{实验对比结果} \label{tab:compare} \end{table} \bibliographystyle{yourjournal} \bibliography{references} \end{document}references.bib的简单示例:
@article{example2023, author = {Zhang, San and Li, Si}, title = {An Example Paper}, journal = {Journal of Examples}, year = {2023}, volume = {1}, pages = {1--10} }注意main.tex中的\documentclass[twocolumn]{yourjournal}不是万能写法,具体类名和选项以模板提供的sample.tex为准。Codex 的职责是参照模板自动调整,但模板里没有的内容它不应该凭空捏造。
4.7 编译验证
手动执行一次编译,确认结果:
latexmk -xelatex -synctex=1 -interaction=nonstopmode main.tex编译通过后,至少检查以下内容:
| 检查项 | 检查方式 | 通过标准 |
|---|---|---|
| 编译状态 | 终端输出 | 无 error,只有少量 warning |
| 图片显示 | 打开 PDF | 图片存在且位置合理 |
| 表格显示 | 查看 PDF | 表格未超出版心,无竖线 |
| 参考文献 | 查看 PDF | 编号连续,样式正确 |
| 中文显示 | 查看 PDF | 无方框、无乱码 |
| 交叉引用 | 查看 PDF | 图题、表题、章节引用无误 |
如果编译报错,不要立刻从头再转。先看错误信息中的文件行号,定位是宏包缺失、表格溢出还是图片路径