Pkg「labbook」與 pkg「subcaption」不相容?

Pkg「labbook」與 pkg「subcaption」不相容?

免責聲明:我知道這是一個需要固執己見的答案的問題。我仍然想問這個問題,因為我不知道該怎麼辦,正在尋求建議。

我用labbook寫——你猜對了——一本實驗書。當我啟動時caption在序言中,一切都很好,但是一旦我添加subcaption, XeLaTeX 拋出:

指令 \theHsubfigure 已定義。

說實話,我加載captionsubcaption預設情況下,因為我在大多數文件中使用它們,並且我很確定我的實驗簿中需要它們,但我還沒有在文件中包含任何圖像。這labbook類別自 2003 年以來就沒有更新過,維護者似乎在 2007 年(他上次更新時)之前就在 ctan 上很活躍alnumsec。的機率labbook因此,未來的更新充其量是微不足道的。當我收到錯誤時,我對這個類別感到不自在,儘管我的文件仍然是原始的(到目前為止,它總共有 40 行程式碼)。因此我的問題是:

你推薦我用什麼課程來代替labbook寫我的實驗書?

我認為,相對而言,我並不熱衷於繼續使用未維護的文檔類,以免後來遇到與某些重要的(否則運行良好的)包無法想像的不兼容性,然後必須重寫我的TEX 檔案的所有結構部分。

我正在閱讀labbook再次文檔,它說

labbook.cls基於 KOMA-Script-class scrbook.cls

這可能是不相容的根源嗎subcaption?我不太了解 KOMA 腳本。在哪些軟體套件與 KOMA-Script 不相容?,subcaption沒有出現。

此外,subcaption以前是不相容memoir, 但不再是。我不知道是否memoir是基於scrbook,但這現在並不重要,因為它已更新以與subcaption。我應該使用memoir代替labbook

答案1

正如 moewe 在評論中和 KOMA-Script 作者已經解釋的那樣komascript.de 上的德文版本問題不是 KOMA-Script 而是labbook.要使用labbookhyperref您必須使用 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.

相關內容