
Я хотел бы представить доклад вЖурнал символической логики, что означает, что мне нужно использовать файл классов Ассоциации символической логики 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}
}
Некоторые наблюдения и попытки на данный момент:
- Файл
asl.cls
датирован 2002 годом, то есть, я думаю, он старше некоторых пакетов, но более поздней версии мне найти не удалось. - Я просмотрел файл
asl.cls
, но мои знания о внутренней работе файлов классов LaTeX ограничены.оченьограничены и зависимостей так много, что я не знаю, с чего начать. - Если я отключу
cite
пакет, то ссылка будет отображаться правильно как [1] (а не [?]), но она не будет кликабельной. - Некоторые стандартные пакеты, такие как
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}