Конфликт между файлом класса ASL и пакетами cleveref и cite

Конфликт между файлом класса ASL и пакетами cleveref и cite

Я хотел бы представить доклад вЖурнал символической логики, что означает, что мне нужно использовать файл классов Ассоциации символической логики asl.clsи файл стилей библиографии asl.bst, оба из которых доступныздесь.

В прошлом я успешно использовал пакеты hyperref, cleverefи citeвместе с классами документов articleи book. Однако файл класса asl.clsвызывает проблемы. Вот MWE:

\documentclass{asl}

\usepackage{color}
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor={blue},citecolor={orange}}
%\usepackage[nameinlink]{cleveref} % If this is switched on, then the .tex file fails to compile.
\usepackage{cite} % This package doesn't lead to a catastrophic failure, but the citation appears as [?].

\newtheorem{thm}{Theorem}

\title{A minimal working example}
\author{M.W.\ Example}

\begin{document}
\maketitle

\begin{thm}\label{theorem}
There exists a solution to this \LaTeX{} problem.
\end{thm}

\begin{proof}
See the \TeX{} Stack Exchange.
\end{proof}

A reference to the theorem: \ref{theorem} This is working! :)

A citation: \cite{test} This is not working. :(

\bibliography{MWE}
\bibliographystyle{asl}

\end{document}

А вот файл MWE.bib:

 @article{test,
 author           = {Why, Y.O.},
 title            = {Clashes between packages and class files},
 journal          = {Journal of tricky \LaTeX{} problems},
 year             = {2017},
 volume           = {1},
 pages            = {1-101}
 }

Некоторые наблюдения и попытки на данный момент:

  1. Файл asl.clsдатирован 2002 годом, то есть, я думаю, он старше некоторых пакетов, но более поздней версии мне найти не удалось.
  2. Я просмотрел файл asl.cls, но мои знания о внутренней работе файлов классов LaTeX ограничены.оченьограничены и зависимостей так много, что я не знаю, с чего начать.
  3. Если я отключу citeпакет, то ссылка будет отображаться правильно как [1] ​​(а не [?]), но она не будет кликабельной.
  4. Некоторые стандартные пакеты, такие как amsthm, встроены в файл asl.cls(не совсем понимаю, как именно).

Итак, мой вопрос таков: есть ли способ использовать пакеты hyperref, cleverefи citeс (возможно, модифицированной версией) asl.cls?

решение1

Я просмотрел файлы asl.clsи asl.bstпопытался разобраться в руководстве пользователя класса документа (в asldoc.ps).

  • Сделайте копию файла asl.clsи назовите копию, например, als-mod.cls.

  • Откройте файл als-mod.clsв текстовом редакторе и перейдите к строке 3332, где начинается (пере)определение \bibliographystyle. Закомментируйте все (пере)определение этого макроса, т. е. строки с 3332 по 3349.

  • В вашем основном tex-файле укажите asl-modв качестве обязательного аргумента \documentclass, а также укажите параметры bibotherи otherbib-- да, оба этих параметра!

  • В вашем основном tex-файле измените аргумент с \bibliographystyleна asl. plainКодировка в файле asl.bstпросто выходит за рамки приличия. Нет смысла пытаться это исправить. Руководство пользователя aslкласса документа предполагает, хотя и косвенно, что допустимо составлять библиографию с использованием plainстиля; дерзайте! (В руководстве пользователя говорится, что «нет причин использовать другой стиль, кроме asl». Хотя это и звучит как одобрение использования aslстиля библиографии, нет никаких указаний на то, что нужно использовать asl.)

Благодаря этим изменениям \citeинструкции фактически будут содержать числовые ссылки на цитаты. Ура!

  • Чтобы добраться cleverefдо работы, обязательно (а) бегите\newtheorem{thm}{Theorem} дозагрузка cleverefи (б) предоставление инструкции \crefname{thm}{Theorem}{Theorems}после загрузки cleveref.

введите описание изображения здесь

\RequirePackage{filecontents}
\begin{filecontents}{MWE.bib}
@article{test,
 author       = {Why, Y. O.},
 title        = {Clashes between packages and class files},
 journal      = {Journal of tricky \LaTeX{} problems},
 year         = {2017},
 volume       = {1},
 pages        = {1-101}
 }
\end{filecontents}

\documentclass[otherbib,bibother]{asl-mod} % not 'asl'
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{colorlinks=true,
            linkcolor={blue},
            citecolor={red}}

\newtheorem{thm}{Theorem}

\usepackage[nameinlink]{cleveref} % 'nameinlink' option is optional
\crefname{thm}{Theorem}{Theorems}

\bibliographystyle{plain} % not 'asl'

\begin{document}
%\title{A minimal working example}
%\author{M.W.\ Example}
%\maketitle

\begin{thm}\label{theorem}
There exists a solution to this \LaTeX{} problem.
\end{thm}

\begin{proof}
See the \TeX{} Stack Exchange.
\end{proof}

A \verb+\cref+ cross-reference: \cref{theorem}. This is now working.

A citation call-out: \cite{test}. This now works too.

\bibliography{MWE}
\end{document}

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