Отказ от ответственности:Я знаю, что это вопрос, вызывающий неоднозначные ответы. Я все равно хочу его задать, так как не знаю, как еще мне следует поступить, и ищу совета.
я используюlabbook
написать - вы угадали - лабораторную книгу. Когда я активируюcaption
в преамбуле все хорошо, но как только я добавляюsubcaption
, XeLaTeX выдает:
Команда \theHsubfigure уже определена.
Честно говоря, я загружаюcaption
иsubcaption
по умолчанию, так как я использую их в большинстве своих документов и я почти уверен, что они мне понадобятся в моей лабораторной работе, но я пока не включил ни одного изображения в свой документ.labbook
класс не обновлялся с 2003 года, а его разработчик, похоже, был активен на ctan не позднее 2007 года, когда он в последний раз обновлялalnumsec
. Вероятностьlabbook
Таким образом, в лучшем случае, обновление в будущем будет незначительным. Мое беспокойство по поводу этого класса возникло, когда я получил ошибку, хотя мой документ все еще довольно девственный (в нем всего 40 строк кода на данный момент). Поэтому мой вопрос:
Какой класс вы рекомендуете мне использовать вместоlabbook
написать мою лабораторную работу?
Я, как мне кажется, относительно не горю желанием продолжать работу с неподдерживаемым классом документа, чтобы впоследствии не натолкнуться на невообразимую стену несовместимости с каким-нибудь важным (в остальном хорошо работающим) пакетом и затем переписать все структурные части моего TEX-файла.
Я просто читаюlabbook
документация снова и там говорится
labbook.cls
основан на классе KOMA-Scriptscrbook.cls
.
может ли это быть источником несовместимости сsubcaption
? Я не очень хорошо знаю KOMA-скрипт. ВКакие пакеты несовместимы с KOMA-Script?,subcaption
не появляется.
Более того,subcaption
раньше былнесовместимыйсmemoir
, нобольше нет. Я не знаю, еслиmemoir
основан наscrbook
, но сейчас это не имеет значения, так как он был обновлен для работы сsubcaption
. Может быть, мне следует использоватьmemoir
вместоlabbook
?
решение1
Как уже объяснили moewe в комментарии и автор KOMA-Scriptна немецком языке на komascript.deпроблема не в 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
и IMHO определение \theHsubfigure
очень похоже на это. Так что если бы не было нового сопровождающего, который исправляет все проблемы, labbook
моя рекомендация была бы такой же, как в комментарии moewe под вопросом:Я бы, наверное, начал с scrreprt
/ scrbook
или memoir
и написал бы несколько макросов.Но я бы не стал использовать его labbook
, по крайней мере, в сочетании с subcaption
.