让 AI 根据已有格式继续写 LaTeX?
让 AI 续写却格式走样时:先交给它格式定义的来源
格式的定义集中在文件开头那一段:字号、行距、编号与引用样式由 \documentclass 和 \usepackage 选项决定,项目还会定义自己的命令。这些都不在正文里,只贴正文时,AI 只能按通用写法补内容。
下面这份 main.tex 与同目录的 refs.bib 合起来可以直接编译。导言区定义了术语命令 \method,正文里的 Convergence 小节是要交给 AI 的样板:
main.tex:
\documentclass[11pt]{article}
\usepackage{amsmath,booktabs}
\usepackage[backend=biber]{biblatex}
\addbibresource{refs.bib}
\newcommand{\method}[1]{\textsc{#1}}
\begin{document}
\section{Convergence}\label{sec:convergence}
We use \method{gradient descent}; see~\cite{knuth1984}.
This subsection demonstrates the project's notation.
\printbibliography
\end{document}
refs.bib:
@book{knuth1984,
author = {Donald E. Knuth},
title = {The TeXbook},
publisher = {Addison-Wesley},
year = {1984}
}
@book{lamport1994,
author = {Leslie Lamport},
title = {LaTeX: A Document Preparation System},
edition = {2},
publisher = {Addison-Wesley},
year = {1994}
}
样板里的 \method{...}、\cite{...}、\label{sec:...} 就是格式的样本。
只贴一段正文不够时:连同同类型小节一起给出
「请保持格式一致」没有可对照的对象。要续写小节,就给一个已排好的小节;要续写表格,就给一个已排好的表格环境。
项目用 booktabs 的三线表时,把已有的表格连同 \toprule / \midrule / \bottomrule 一起贴过去,续写的表格才会沿用同一套线型与列宽写法:
\begin{table}[htbp]
\centering
\begin{tabular}{lcc}
\toprule
Model & Accuracy & F1 \\
\midrule
Baseline & 0.812 & 0.794 \\
Ours & 0.867 & 0.851 \\
\bottomrule
\end{tabular}
\caption{Illustrative results.}
\label{tab:results}
\end{table}
提交续写请求时:写明可用命令、标签前缀与 key 范围
把下面这份请求模板连同样板源码一起提交:
按给出的样板续写一个小节,只输出新增内容。
保留文档类、导言区和现有宏定义。
只使用已提供的命令与引用键,不添加新的宏包。
新标签使用 sec: 前缀,不与已有标签重复。
不确定的术语、数据或引用先标记待确认,不自行补全。
.bib 的 key 列表也一并给出,或说明「只用已出现过的 key」。看不到列表时,生成的引用可能指向不存在的条目,表现为 Citation '...' undefined 与 PDF 中的 [?]。
续写完成后:编译一次再核对命令、标签与引用
续写结果接回项目后先编译一次。日志里出现未定义命令或未定义引用,说明生成内容用了上下文之外的名字。核对三处:
-
命令:把续写部分里的
\命令与导言区清单对一遍,未定义的删掉或替换; -
标签:
\ref指向的对象有没有对应的\label,前缀是否与项目规则一致; -
引用:
\cite的 key 是否都在.bib中,改动过.bib时在平台重新编译,并等待参考文献处理完成。
排版本身对不对,日志不会提示。字号、缩进、编号样式这类偏差靠新旧两段对照:把续写部分与样板小节放在同一页比较,层级不一致时先检查新增内容是否遵守模板,不要让 AI 改动全局导言区,不要在结果里手工补 \vspace。
常见偏差与处理
| 报错 | 触发原因 | 处理 |
|---|---|---|
! Undefined control sequence. \method | 使用了上下文里没有的项目自定义命令 | 把导言区的命令定义一起提供,再核对命令清单 |
| LaTeX Warning: Citation 'x' undefined | key 由生成时编造,.bib 中没有 | 提交请求时附上 key 列表;在 .bib 中检索该 key |
| LaTeX Warning: Reference 'fig:x' undefined | \ref 指向的标签未定义,或前缀与项目规则不符 | 按前缀规则补 \label,完整编译一次 |
| ! LaTeX Error: Environment tabularx undefined. | 续写内容换了项目里未加载的宏包 | 在导言区补该宏包,或要求沿用已有的表格写法 |
Overfull \hbox (30.0pt too wide) in paragraph | 生成的表格或公式超出栏宽 | 收窄列宽或减少列数;双栏模板里更常见 |
总结
-
先给格式来源:文档类、导言区与自定义命令决定新内容的样子,正文里看不到;
-
给同类型样板:续写小节就给已排好的小节,续写表格就给已排好的表格;
-
请求里写边界:可用命令、标签前缀、key 范围一次说清;
-
接回后编译核对:未定义的命令与引用看日志,排版偏差靠新旧两段对照。
续写的内容接回项目后,把整个目录导入 EasyLaTeX 编辑器,编译一次,日志中可以查看有没有未定义的命令与引用。