免责声明:我知道这个问题的答案是主观的。但我还是想问,因为我不知道我还能怎么做,而且想寻求建议。
我用labbook
写一本实验手册。当我激活caption
在序言中,一切都很好,但当我添加subcaption
,XeLaTeX 抛出:
命令 \theHsubfigure 已定义。
说实话,我加载caption
和subcaption
默认情况下,因为我在大多数文档中都使用它们,而且我非常确定我将在我的实验室手册中需要它们,但我还没有在我的文档中包含任何图像。labbook
class 自 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 作者所解释的那样德语版问题不在于 KOMA-Script,而在于labbook
。要使用labbook
,hyperref
您必须使用选项 加载它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
该技术已经好几年没有维护了,而且不能保证这种黑客技术至少能真正解决您问题中的问题。作者subcaption
对labbook
重新定义\theHfigure
和\theHtable
在我看来,的定义\theHsubfigure
与此非常相似。因此,如果没有新的维护者来修复所有问题,labbook
我的建议将与 moewe 在问题下方的评论中所述相同:我可能会从scrreprt
/scrbook
或开始memoir
并编写一些宏。但我不会使用labbook
,至少不会与结合使用subcaption
。