Isenção de responsabilidade:Eu sei que esta é uma pergunta que atrai respostas opinativas. Ainda quero perguntar, pois não sei de que outra forma devo proceder e estou procurando um conselho.
eu usolabbook
escrever - você adivinhou - um labbook. Quando eu ativocaption
no preâmbulo, está tudo bem, mas assim que adicionosubcaption
, XeLaTeX lança:
Comando \theHsubfigure já definido.
Para ser honesto, eu carregocaption
esubcaption
por padrão, já que eu os uso na maioria dos meus documentos e tenho certeza de que precisarei deles no meu labbook, mas ainda não incluí nenhuma imagem no meu documento. Olabbook
a classe não é atualizada desde 2003 e o mantenedor parece estar ativo no ctan o mais tardar em 2007, quando ele atualizou pela última vezalnumsec
. A probabilidade delabbook
experimentar uma atualização no futuro é, portanto, marginal, na melhor das hipóteses. Meu desconforto com essa classe surgiu quando recebi o erro, embora meu documento ainda seja bastante virgem (ele tem 40 linhas de código no total, no momento). Minha pergunta é, portanto:
Que classe você recomenda que eu use em vez delabbook
escrever meu labbook?
Eu não estou - aparentemente, eu acho - não muito interessado em continuar com uma classe de documento não mantida para mais tarde atingir algum muro de incompatibilidade inconcebível com algum pacote importante (que de outra forma funciona bem) e então ter que reescrever todas as partes estruturais do meu arquivo TEX.
Estou apenas lendo olabbook
documentação novamente e diz
labbook.cls
é baseado na classe KOMA-Scriptscrbook.cls
.
poderia ser esta a fonte da incompatibilidade comsubcaption
? Não conheço muito bem o script KOMA. EmQuais pacotes são incompatíveis com o KOMA-Script?,subcaption
não aparece.
Além disso,subcaption
costumava serincompatívelcommemoir
, masnão é mais. Eu não sei sememoir
é baseado emscrbook
, mas isso realmente não importa agora, pois foi atualizado para funcionar comsubcaption
. Devo talvez usarmemoir
em vez delabbook
?
Responder1
Conforme já explicado por moewe em um comentário e pelo autor do KOMA-Scriptem alemão em komascript.deo problema não é KOMA-Script, mas labbook
. Para usar labbook
with hyperref
você tem que carregá-lo com a opção hyperref
. Mas se você carregá-lo com a opção, hyperref
ele fará um
\newcommand*\theHsubfigure{%
\theHfigure.\arabic{subfigure}}
logo após o carregamento hyperref
. Isso resulta em um erro, porque subcaption
já define \theHsubfigure
. A única coisa que você poderia fazer éindefinir \theHsubfigure
antes de carregar hyperref
. Para fazer isso, você pode usar:
\documentclass[hyperref]{labbook}
\usepackage{subcaption}
\let\theHsubfigure\relax
\usepackage{hyperref}
\begin{document}
Test
\end{document}
ou
\documentclass[hyperref]{labbook}
\BeforePackage{hyperref}{\let\theHsubfigure\relax}
\usepackage{subcaption}
\usepackage{hyperref}
\begin{document}
Test
\end{document}
No entanto, você deve observar, labbook
não é mantido há vários anos e não há garantia de que tal hack realmente resolva pelo menos o problema da sua pergunta.O subcaption
autor tem algumas palavras muito claras sobre labbook
a redefinição \theHfigure
e\theHtable
e IMHO a definição de \theHsubfigure
é muito semelhante a isso. Então, se não fosse um novo mantenedor que corrigisse todos os problemas, labbook
minha recomendação seria a mesma do comentário de moewe abaixo da pergunta:Eu provavelmente começaria com scrreprt
/ scrbook
ou memoir
e escreveria algumas macros.Mas eu não usaria labbook
e pelo menos não em combinação com subcaption
.