免責聲明:我知道這是一個需要固執己見的答案的問題。我仍然想問這個問題,因為我不知道該怎麼辦,正在尋求建議。
我用labbook
寫——你猜對了——一本實驗書。當我啟動時caption
在序言中,一切都很好,但是一旦我添加subcaption
, XeLaTeX 拋出:
指令 \theHsubfigure 已定義。
說實話,我加載caption
和subcaption
預設情況下,因為我在大多數文件中使用它們,並且我很確定我的實驗簿中需要它們,但我還沒有在文件中包含任何圖像。這labbook
類別自 2003 年以來就沒有更新過,維護者似乎在 2007 年(他上次更新時)之前就在 ctan 上很活躍alnumsec
。的機率labbook
因此,未來的更新充其量是微不足道的。當我收到錯誤時,我對這個類別感到不自在,儘管我的文件仍然是原始的(到目前為止,它總共有 40 行程式碼)。因此我的問題是:
你推薦我用什麼課程來代替labbook
寫我的實驗書?
我認為,相對而言,我並不熱衷於繼續使用未維護的文檔類,以免後來遇到與某些重要的(否則運行良好的)包無法想像的不兼容性,然後必須重寫我的TEX 檔案的所有結構部分。
我正在閱讀labbook
再次文檔,它說
labbook.cls
基於 KOMA-Script-classscrbook.cls
。
這可能是不相容的根源嗎subcaption
?我不太了解 KOMA 腳本。在哪些軟體套件與 KOMA-Script 不相容?,subcaption
沒有出現。
此外,subcaption
以前是不相容和memoir
, 但不再是。我不知道是否memoir
是基於scrbook
,但這現在並不重要,因為它已更新以與subcaption
。我應該使用memoir
代替labbook
?
答案1
正如 moewe 在評論中和 KOMA-Script 作者已經解釋的那樣komascript.de 上的德文版本問題不是 KOMA-Script 而是labbook
.要使用labbook
,hyperref
您必須使用 option 加載它hyperref
。但是如果你用選項載入它,hyperref
它會執行
\newcommand*\theHsubfigure{%
\theHfigure.\arabic{subfigure}}
就在加載之後hyperref
。這確實會導致錯誤,因為subcaption
已經定義了\theHsubfigure
.你唯一能做的就是取消定義 \theHsubfigure
加載前hyperref
。為此,您可以使用:
\documentclass[hyperref]{labbook}
\usepackage{subcaption}
\let\theHsubfigure\relax
\usepackage{hyperref}
\begin{document}
Test
\end{document}
或者
\documentclass[hyperref]{labbook}
\BeforePackage{hyperref}{\let\theHsubfigure\relax}
\usepackage{subcaption}
\usepackage{hyperref}
\begin{document}
Test
\end{document}
但是,您應該注意,labbook
它已經有好幾年沒有維護了,並且不能保證這樣的駭客攻擊至少能真正解決您問題中的問題。對於and的重新定義,作者subcaption
有一些非常明確的話labbook
\theHfigure
\theHtable
恕我直言, 的定義\theHsubfigure
與此非常相似。因此,如果他們不是解決labbook
我建議的所有問題的新維護者,則與問題下面 moewe 的評論相同:我可能會從scrreprt
/scrbook
或開始memoir
並編寫一些巨集。但我不會使用labbook
,至少不會與subcaption
.