2010-07-14 67 views
11

我正在使用Windows的MiKTeX 2.8分佈。如何將LaTeX警告視爲錯誤

我們主要開發軟件,並使用LaTeX來製作我們的用戶指令。我們使用LaTeX的,因爲:

  • 這對跟蹤變化等
  • 文件不要突然決定要成爲腐敗的,不像Word文檔的源源控制下很大。
  • 多個文檔可以共享單個部分,因此我們可以將DRY原則應用於我們的文檔,並避免一些文檔與其他文檔不同步。你可以在Word中擁有主文檔,但是我發現它們很糟糕。

作爲構建服務器上無人蔘與構建過程的一部分,我們使用MiKTeX的texify可執行文件構建文檔。這工作相當好。

但是,如果開發人員發生錯誤(例如\ ref不存在的\ ref),則會出現問題。諸如此類的錯誤只會在LaTeX中產生警告。這個警告沒有被texify注意到,我們在文檔中留下了錯誤。

我目前有一個構建步驟,它掃描以'LaTeX Warning'開頭的行的日誌文件並且如果有任何構建失敗。這種方法很有效,但顯然很脆弱,可能會讓警告消失。它目前不用於開發機器上的本地構建,但如果這是實現它的唯一方法,則可能需要將它與我們當前使用的編輯器(TeXworks隨MiKTeX一起提供)集成。

如果發生任何警告(如未定義的引用),我想要構建失敗,並且我寧願不執行日誌文件的片狀掃描。有什麼提供這個功能?

如果我可以在開發機器上以及在構建服務器上的本地構建中使用此功能,這將是一個巨大的獎勵。

+2

你也應該試試在http://tex.stackexchange.com詢問這個問題 – Novelocrat 2010-08-11 17:59:15

回答

4

以下(未經測試)的代碼應該把任何警告插入錯誤:

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}} 

那麼你可能會感興趣的silence包過濾警告。

但是,您還需要安排僅在最後一次運行LaTeX時執行此操作,因爲在第一次運行期間會出現一些警告,如未定義的引用。

具有良好LaTeX支持的編輯會告訴您是否需要重新運行LaTeX(TeXworks不這樣做?)。他們通過解析控制檯輸出或日誌文件來完成。事實上它非常強大(如果你真的擔心,你可以重新定義\GenericWarning爲所有警告添加一個特徵字符串)。我認爲解析日誌是正確的方法。

將此視爲針對文檔運行的測試。如果存在未定義的引用,則文檔構建成功。構建產品是pdf(或其他)和TeX日誌。檢查日誌中的警告是一個測試。

1

最好通過乳膠工作管理來做到這一點,但我不知道有辦法做到這一點。

下面是一些未經檢驗的膠帶,可能是有用的:

 
\def\exitfromtex{\nonstopmode\read16to\dummy} 
\let\writerrmessage\errmessage 
\def\errmessage#1{\writerrmessage{#1}\exitfromtex} 

它可以被放入你需要你的資料員,包括一個包文件,或烤到本地乳膠.FMT文件。

+0

謝謝查爾斯,我會在接下來的幾天裏嘗試一下。 – 2010-07-16 06:32:49

相關問題