Pkg‘labbook’与pkg‘subcaption’不兼容?

Pkg‘labbook’与pkg‘subcaption’不兼容?

免责声明:我知道这个问题的答案是主观的。但我还是想问,因为我不知道我还能怎么做,而且想寻求建议。

我用labbook写一本实验手册。当我激活caption在序言中,一切都很好,但当我添加subcaption,XeLaTeX 抛出:

命令 \theHsubfigure 已定义。

说实话,我加载captionsubcaption默认情况下,因为我在大多数文档中都使用它们,而且我非常确定我将在我的实验室手册中需要它们,但我还没有在我的文档中包含任何图像。labbookclass 自 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 作者所解释的那样德语版问题不在于 KOMA-Script,而在于labbook。要使用labbookhyperref您必须使用选项 加载它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该技术已经好几年没有维护了,而且不能保证这种黑客技术至少能真正解决您问题中的问题。作者subcaptionlabbook重新定义\theHfigure\theHtable在我看来,的定义\theHsubfigure与此非常相似。因此,如果没有新的维护者来修复所有问题,labbook我的建议将与 moewe 在问题下方的评论中所述相同:我可能会从scrreprt/scrbook或开始memoir并编写一些宏。但我不会使用labbook,至少不会与结合使用subcaption

相关内容