[背景與問題描述]
在Latex中,經常出現各種問題;
Runaway argument?
{\contentsline {subsection}{\numberline {6.3}General comments o
! File ended while scanning use of \@writefile.
<inserted text>
\par
l.47 \begin{document}
這個Runaway argument問題經常是由於不完全的Latex編譯導致的,例子可以參考
https://tex.stackexchange.com/questions/66015/errors-in-tables-then-runaway-argument-at-begindocument
在離線的Latex工具上,一個簡單的解決方法就是刪除.aux文件並重新編譯。如果編譯完全,生成正確.aux文件,問題也就解決了。但是,如果問題未解決,重新編譯依然不完全,那么Runaway argument還會反復出現。
在線的Latex工具(如overleaf)由於增加了一些限制,也常常使得這些問題變得更加棘手。
如Overleaf有編譯時間限制,當處理占用空間較大的圖片文件時(比方說,為了解決Type 3問題,將eps圖片曲線化從而使得圖片增大),容易超時。
=============================
[問題解決方法與解釋]
這里,針對在線Latex工具Overleaf,羅列我們嘗試成功的方法:
1、重新新建Overleaf項目
“遇事不決就重啟”的Latex版。雖然玄學地跑通了,但對Overleaf的內部業務邏輯不了解,我們猜測原因如下:
新開的項目,沒有編譯之前不存在中間文件,所以運行正常。而老項目:
1)在Overleaf中產生了備份或log文件,增加了編譯時間
2)會產生中間文件會覆蓋之前的,不斷的覆蓋的過程中,可能出現碎片等其它錯誤
--------------------------------
2、延用原有Overleaf項目
為了保持原有的版本控制,這里我們選擇了繼續調整原有項目。
問題描述:Runaway argument的產生是因為aux出錯,aux出錯是因為編譯的不完全。而在線版本,由於我們重新編譯仍然不完全,所以aux和compile timeout交替出現。
問題分析:編譯不完全的其中一個原因是因為eps占用空間太大,在線生成pdf需要時間太長;
問題解決:
1)在離線備份前提下,刪除在線的大體積eps (比如名字是abc.eps);
2)用離線latex(包含了epstopdf package,離線文件夾中也有大體積eps)生成大體積eps對應的pdf
3)確認pdf命名,比如名字是abc.eps,其pdf命名應為abc-eps-converted-to.pdf
4)上傳pdf
編譯無錯通過
注意:
1)如果不希望編譯eps,即使上傳了pdf,其eps也應該刪除。因為一旦系統發現eps和pdf不匹配,會重新編譯eps。
2)pdf的命名
好處:主要是希望兼容之前的版本(不去修改原文中圖片引用的代碼)。原理是這樣的,系統首先會搜索eps,搜索不到的情況會顯示上一次成功版本(也就是,對名字是abc.eps的文件,系統會搜索abc-eps-converted-to.pdf),所以pdf的名字就需要是convert后的命名。這樣就可以同時支持eps和pdf文件的讀取(但abc.eps)。
缺點:由於部分在文中提及的eps缺失了,所以會有warning;如果之后有相應的eps圖片要更新,就需要先生成pdf再上傳
3)也可以考慮用其它方式壓縮圖片體積。用photoshop打開,然后另存為eps,可以將5.5MB的eps壓縮到3.8M左右。也可以考慮換個轉換的軟件(如果讀者還有其它建議,歡迎評論或留言)。
4)Overleaf編譯超時還可以嘗試一下買一個Pro版 。匿名版編譯時間30秒,免費版編譯時間1 min,時間到出不來就會超時。Pro / Pro+能把編譯時間增加到4 min [1]。

Reference
[1] https://www.overleaf.com/help/46-why-do-i-keep-getting-the-compile-timeout-error-message
=======================
鳴謝:華中科技大學 陳瓊同志
