AI 修改 LaTeX 總是出錯?5 步減少新 Bug 並安全回退
一、AI 修改 LaTeX 前,先檢查編譯狀態並儲存版本
提需求之前先完整編譯一次,確認手上這份是乾淨的。如果當前就出錯,先處理它,再讓 AI 改內容;否則新舊錯誤訊息混在一起,後面分不清是哪一步引入的。定位方法可參考 編譯與排錯。
另存一份副本再開始改。多輪修改之後想回到某一步,只能靠之前存下的版本,靠對話記錄退不回去。
二、如何限制 AI 修改 LaTeX 的範圍?
貼整篇文件讓它「順便改一下」,等於允許它改任何地方。更穩的做法是隻給出要改的那個環境——從 \begin{...} 到 \end{...} 之間的原文,並明確只輸出這個環境的替換塊。下面這份模板可以直接複製,方括號裡的內容按實際情況替換:
任務:[只描述一個改動]。範圍:[檔案路徑] 中從 \begin{...} 到 \end{...} 的環境。1. 只修改這個環境,不改其他位置。2. 不改導言區、全域設定、表題、標籤、引用鍵和已有資料。3. 只輸出替換塊,再列出改動清單。4. 缺少資訊時先提問,不猜測數值。模板裡第 2 條容易被忽略,作用卻最大:AI 常會順手「最佳化」導言區或改寫 \caption,這類改動不會出錯,只會讓全文排版悄悄變化。
三、AI 修改 LaTeX 的 4 類常見風險與約束方法
| 它的典型行為 | 會造成什麼 | 提需求時補的約束 |
|---|---|---|
| 順手改導言區或全域格式 | 排版變化,且不會出錯,事後難以察覺 | 不新增 \usepackage,不改動全域設定 |
| 一輪裡改多處 | 出錯後分不清是哪一處引入的 | 一輪只提一個改動 |
| 返回整篇文件 | 貼上時容易漏掉未改動的部分 | 只輸出被改動環境的替換塊 |
| 在沒看到出錯時憑猜測修 | 引入與原問題無關的新改動 | 貼完整錯誤訊息原文,含行號與上下文 |
第一類造成的損失通常最大:文件仍能編譯,問題不會當場暴露,往往到匯出 PDF 時才被發現。
四、AI 修改 LaTeX 後,如何檢查程式碼與編譯結果?
先看它列出的改動清單,確認改的都是你要求的地方,再把替換塊貼回原始碼編譯。下面這段原始碼改動前後都能編譯,可以用來試這套流程:
\documentclass[11pt]{article}\usepackage{booktabs}\begin{document}\begin{table}[htbp]\centering\caption{Illustrative results}\label{tab:results}\begin{tabular}{lcc}\topruleModel & Accuracy & F1 \\\midruleBaseline & 0.812 & 0.794 \\Ours & 0.867 & 0.851 \\\bottomrule\end{tabular}\end{table}\end{document}在 Model 列後加一列 Params (M) 時,替換塊應當長這樣,注意列格式從 lcc 變成 lccc,兩處必須同時改:
\begin{table}[htbp]\centering\caption{Illustrative results}\label{tab:results}\begin{tabular}{lccc}\topruleModel & Params (M) & Accuracy & F1 \\\midruleBaseline & -- & 0.812 & 0.794 \\Ours & -- & 0.867 & 0.851 \\\bottomrule\end{tabular}\end{table}參數量未知時先保留 --,不要讓 AI 編造實測資料。
列數與 & 的數量對不上時,編譯會報 Extra alignment tab has been changed to \cr.,這是 AI 改表格時常見的一類錯誤,核對時可以先數一遍列。
五、AI 修改 LaTeX 出錯後,如何回退到可編譯版本?
幾輪之後錯誤訊息越來越多時,回到副本裡最後一次編譯成功的狀態,從那裡重新提一個更小的改動。讓 AI 「重新生成整篇」看起來省事,實際上會把已經改好的部分一起丟掉。
生成新內容時的編譯問題與修改場景不同,見 如何避免 AI 生成無法編譯的 LaTeX 程式碼?。
總結
-
範圍要釘死:只給一個環境,只收一個替換塊,不讓 AI 順手改別處;
-
每輪只改一處:編譯成功再進下一輪,出錯時按改動清單縮小範圍;
-
留可退回的版本:改崩了回到上一次編譯成功的狀態,而不是讓它重寫整篇。
如果你希望改動始終限定在指定段落內,可以在 EasyLaTeX 編輯器 裡選中要改的內容再提需求,編譯結果同步顯示在同一介面。