拿掉「目錄」,再編譯,成功!PDF 又完整呈現出來!
真的是太詭異了!
為了解決這個詭異的問題,我研究了一下到底是哪裡出問題?以及該如何解決?終於, 稍微發現問題所在,以及解決方法。
如果使用中文的章節名稱,在製作目錄的時候,會有問題。解決辦法是,在文章的最末,加上一行 Clear Page 的命令。
下圖是編譯失敗的畫面:
編譯失敗的文件檔 |
編譯失敗的訊息 |
文件結束前,加上 Clear Page (從 Insert > Formatting 選擇), 就可以編譯成功了。 |
不過我發現,有時候就算在文章最末加上 Clear Page 也沒用。這時候可能跟文章內容, 或版面大小設定有關了。
由於一般的 .tex 如果需要製作目錄,一般的流程是使用 latex 程式對 .tex 檔案編譯 2 次。
編譯2次的目的,就是因為第一次編譯的時候,程式會建立一個 .toc 的目錄檔案,檔案內存放各個 Section, subsection 等要放在目錄裡面的內容。
通常 LyX 文件如果沒有加入目錄的時候,可以編譯成功,而加入目錄之後,編譯失敗。這樣應該就是 LaTeX 沒有正確生成 .toc 檔案的緣故了。
編譯2次的目的,就是因為第一次編譯的時候,程式會建立一個 .toc 的目錄檔案,檔案內存放各個 Section, subsection 等要放在目錄裡面的內容。
通常 LyX 文件如果沒有加入目錄的時候,可以編譯成功,而加入目錄之後,編譯失敗。這樣應該就是 LaTeX 沒有正確生成 .toc 檔案的緣故了。
實際上,只從 LyX 實在很難看出 TeX 建立目錄的時候,到底哪個章節名稱發生錯誤了?
因此,我採用迂迴戰術,先將 LyX 文件匯出成一般的 LaTeX (plain) 檔案, 如下圖:
$ latex filename.tex這時候編譯程式會「正常」的跑完,不會有什麼錯誤訊息。但是再輸入一次上述命令編譯文件後,就會發生錯誤了。
其實,開啟 filename.toc 就可以看到問題所在了. 如下圖,沒有加上 \clearpage 命令,編譯出的 filename.toc 文件。可以看到裡面夾雜了一大堆亂七八糟的訊息。
錯誤的 .toc 文件 |
正確的 .toc 文件 |
最後,再提醒一下,如果希望 LaTeX 要重新生成 .toc 檔案的話,記得要將原來的 .toc 檔案刪掉。要不然就算原始程式再怎麼改,都還是會用舊的 .toc 檔案進行編譯的。
參考網站:
http://tex.stackexchange.com/questions/34108/error-compiling-cjk-with-tableofcontents-and-makeindex
測試用檔案: test_toc.zip
沒有留言:
張貼留言