Пакет «labbook» несовместим с пакетом «subcaption»?

Пакет «labbook» несовместим с пакетом «subcaption»?

Отказ от ответственности:Я знаю, что это вопрос, вызывающий неоднозначные ответы. Я все равно хочу его задать, так как не знаю, как еще мне следует поступить, и ищу совета.

я используюlabbookнаписать - вы угадали - лабораторную книгу. Когда я активируюcaptionв преамбуле все хорошо, но как только я добавляюsubcaption, XeLaTeX выдает:

Команда \theHsubfigure уже определена.

Честно говоря, я загружаюcaptionиsubcaptionпо умолчанию, так как я использую их в большинстве своих документов и я почти уверен, что они мне понадобятся в моей лабораторной работе, но я пока не включил ни одного изображения в свой документ.labbookкласс не обновлялся с 2003 года, а его разработчик, похоже, был активен на ctan не позднее 2007 года, когда он в последний раз обновлялalnumsec. ВероятностьlabbookТаким образом, в лучшем случае, обновление в будущем будет незначительным. Мое беспокойство по поводу этого класса возникло, когда я получил ошибку, хотя мой документ все еще довольно девственный (в нем всего 40 строк кода на данный момент). Поэтому мой вопрос:

Какой класс вы рекомендуете мне использовать вместоlabbookнаписать мою лабораторную работу?

Я, как мне кажется, относительно не горю желанием продолжать работу с неподдерживаемым классом документа, чтобы впоследствии не натолкнуться на невообразимую стену несовместимости с каким-нибудь важным (в остальном хорошо работающим) пакетом и затем переписать все структурные части моего TEX-файла.

Я просто читаюlabbookдокументация снова и там говорится

labbook.clsоснован на классе KOMA-Script scrbook.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.

Связанный контент