
Ich versuche, die tufte-handout
Dokumentklasse mit dem verse
Paket zu verwenden. Es scheint jedoch, dass sie standardmäßig tufte-handout
geladen wird , und dies verursacht den folgenden Fehler in :hyperref
verse.sty
! LaTeX Error: Command \theHpoemline already defined.
Die Recherche nach Lösungsmöglichkeiten führte mich zu dieser Antwort: Wie verwende ich Hyperref-Optionen richtig mit der Tufte-Handout-Klasse?
Das Laden mit der nohyper
Option für die tufte-handout
Dokumentklasse ermöglicht zwar die verse
Funktion des Pakets, aber ich benötige das hyperref
Paket auch. ( hyperref
Das nachträgliche Laden führt immer noch zum selben Fehler.)
Wie gehe ich mit dieser offensichtlichen Inkompatibilität um?
MWE:
\documentclass{tufte-handout}
\usepackage{verse}
\begin{document}
\begin{verse}
A sprig, with its flower, I break.
\end{verse}
\end{document}
Antwort1
Das sollte funktionieren: Deaktivieren Sie vorübergehend das Laden hyperref
und laden Sie es nach verse
. verse
(unnötig?) definiert \theHpoemline
das Zählerformat, aus meiner Sicht.
\documentclass[nohyper]{tufte-book}
\usepackage{verse}
\usepackage{hyperref}
\begin{document}
\begin{verse}
A sprig, with its flower, I break.
\end{verse}
\end{document}
Ein schmutziger Workaround, ohne direkte Änderungen inverse.sty
Da verse.sty
ein Zähler definiert wird poemline
, hyperref
wird automatisch eine \theHpoemline
Definition durchgeführt. Dies ist jedoch schlecht, da
\newcommand*{\theHpoemline}{\arabic{verse@envctr}.\arabic{poemline}}
wird in verwendet verse.sty
.
Eine Problemumgehung besteht \providecommand
darin, vorübergehend anstelle von zu verwenden \newcommand
, das sich nicht über bereits vorhandene Befehle beschwert, und nach verse
dem Laden wieder zu zu wechseln \newcommand
.
\documentclass{tufte-book}
%\hypersetup{colorlinks=true} Not needed, just for debug
\let\orignewcommand\newcommand % store the original \newcommand
\let\newcommand\providecommand % make \newcommand behave like \providecommand
\RequirePackage{verse}
\let\newcommand\orignewcommand % use the original `\newcommand` in future
\makeatletter
% Use the original definition from verse.sty
\renewcommand*{\theHpoemline}{\arabic{verse@envctr}.\arabic{poemline}}
\makeatother
\begin{document}
\tableofcontents
\chapter{first}
\chapter{second}
\begin{verse}
A sprig, with its flower, I break.
\end{verse}
\end{document}
Antwort2
Ich hatte das gleiche Problem und habe es sauber gelöst, indem ich das Paket \hyperref
vor dem Laden geladen habe \verse
.