Несовместимость стиха и раздаточного материала Тафта

Несовместимость стиха и раздаточного материала Тафта

Я пытаюсь использовать tufte-handoutкласс документа с verseпакетом. Однако, похоже, что он tufte-handoutзагружается hyperrefпо умолчанию, и это вызывает следующую ошибку в verse.sty:

! LaTeX Error: Command \theHpoemline already defined.

Поиск вариантов решения привел меня к следующему ответу: Как правильно использовать параметры hyperref в раздаточном классе Tufte?

Загрузка с nohyperопцией в tufte-handoutклассе документа позволяет verseпакету функционировать, но мне также нужен пакет hyperref. (Загрузка hyperrefпостфактум все равно приводит к той же ошибке.)

Как мне справиться с этой очевидной несовместимостью?

МВЭ:

\documentclass{tufte-handout}
\usepackage{verse}

\begin{document}
\begin{verse}
    A sprig, with its flower, I break.
\end{verse}
\end{document}

решение1

Это должно сработать: временно отключите загрузку hyperrefи загрузите ее после verse. verse(излишне?) определяет \theHpoemlineформат счетчика, на мой взгляд.

\documentclass[nohyper]{tufte-book}
\usepackage{verse}
\usepackage{hyperref}

\begin{document}
\begin{verse}
    A sprig, with its flower, I break.
\end{verse}
\end{document}

Грязный обходной путь, без прямых изменений вverse.sty

Так как verse.styопределяет счетчик poemline, hyperrefто автоматически сделает \theHpoemlineопределение. Однако это плохо, так как

\newcommand*{\theHpoemline}{\arabic{verse@envctr}.\arabic{poemline}}

используется в verse.sty.

Обходной путь — временно использовать \providecommandвместо \newcommand, который не жалуется на уже существующие команды, а после verseзагрузки переключиться обратно на \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}

решение2

У меня была та же проблема, и я решил ее аккуратно, загрузив пакет \hyperrefперед загрузкой \verse.

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