使用doxygen排版數學公式出錯的解決方法
參考:http://blog.csdn.net/huangbo10/article/details/46801949
問題
今天玩了一下doxygen,碰到一個問題
! Undefined control sequence.
l.77 $ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $
?
! Emergency stop.
這時候打開生成的網頁,所有應該是公式(圖片)的地方都只有LATEX代碼。
分析
doxygen對代碼注釋中LATEX公式的處理方法是:
把公式都提取出來寫到一個_formulas.tex文件里
這個文件先用LATEX編譯成DVI格式
再由dvips轉成PostScript格式
最后由gs(GhostScript)轉成圖片顯示在網頁里
上面的錯誤信息意思是在第2步遇到了問題。
解決
我把上面的公式拎出來用自己的模板編譯了一下發現沒什么問題,說明LATEX工作是正常的。Google+查閱日志之后發現doxygen調用LATEX的時候默認僅調用了epsfig、graphicx、keyval、graphics、dvips等幾個基本的包,其他如amsmath這種常用的包都沒有調用。所以如果要排版數學公式的話需要手動把需要的包加進來。
在Linux環境下直接修改doxygen的配置文件即可,在windows下需要通過圖形界面,在Expert->LaTeX->EXTRA_PACKAGES填入amsmath、xr、amsfonts三個包即可。
另一種方法就是也可以嘗試使用mathjax,見:《 DOxygen for C++使用說明——添加數學公式》
使用doxygen生成的幫助文檔,中文出現亂碼的問題
參考:http://blog.csdn.net/hujian2008/article/details/16343489
今天使用doxygen工具生成幫助文檔發現中文注釋都是亂碼。
然后根據網上的要求把
Exper>>Input>>INPUT_ENCODING:(輸入文件的編碼) UTF-8 改成 GBK 或者 GB2312
Exper>>HTML>>CHM_INDEX_ENCODING:(輸出文件的編碼) UTF-8 改成 GBK 或者 GB2312
但是改了之后發現連chm文件都沒有生成。查看doxygen的輸出窗口,發現這樣一條報錯:
E:/VCProject/LCD_Development_Kit_2008/LCD_Development_Kit/cHtmlEditor.cpp: failed to translate characters from GBK to UTF-8: check
INPUT_ENCODING
經過檢查,這個文件是直接導入的開源類。原來VC2005會根據文件本身的編碼方式來打開文件,也就是說,雖然VC的默認設置中新建一個文件是GB2312,但是如
果這個時候引入一個UTF-8的文件,VC也能識別出來而不會去改變它,除非是VC無法識別的文件編碼格式。
在Tools>>Options>>Environment>>Documents 就有一個”Save documents as…”選項….好了,弄明白原因就好辦了,言歸正傳。
解決辦法:
修改對應文件編碼。
1. 用vc打開報錯的文件
2. File>>Advanced Save Options
將GB2312 936 改成 GB2312-80 20936 OK
然后保存文件就可以了,這個時候如果有無法轉換的字符就會出現以下提示,
選擇No就可以了。
3. 再次執行doxygen run 編譯成功。
也可參考:http://blog.csdn.net/zhuangshn/article/details/5518672