ASL 类文件与 cleveref 和 cite 包之间的冲突

ASL 类文件与 cleveref 和 cite 包之间的冲突

我想提交一篇论文给符号逻辑杂志,这意味着我需要使用符号逻辑协会的类文件asl.cls和书目样式文件asl.bst,这两个文件都可以使用这里

过去,我曾成功地将hyperrefcleverefcite包与articlebook文档类一起使用。但是,类文件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包与(可能修改过的版本)一起使用?cleverefciteasl.cls

答案1

我仔细查看了这些文件asl.clsasl.bst试图理解文档类别的用户指南(在asldoc.ps)。

  • 复制该文件asl.cls并将副本命名为als-mod.cls

  • 在文本编辑器中打开文件als-mod.cls并转到第 3332 行,即(重新)定义\bibliographystyle开始的地方。注释掉此宏的整个(重新)定义,即第 3332 行至第 3349 行。

  • 在您的主 tex 文件中,指定asl-mod为所需参数\documentclass,并指定选项bibotherotherbib——是的,这两个!

  • 在您的主 tex 文件中,将\bibliographystylefrom参数更改aslplain。文件中的编码asl.bst简直是太过分了。没有必要尝试修复它。asl文档类的用户指南建议,尽管是间接的,可以使用 样式来编译参考书目plain;去做吧!(用户指南指出“没有理由使用 以外的样式asl。”虽然这听起来像是对使用参考书目样式的认可asl,但没有迹象表明必须使用asl。)

经过这些更改,\cite说明实际上会为您提供数字引用标注。太棒了!

  • cleveref上班,请务必(a)跑\newtheorem{thm}{Theorem} (b)提供装载后的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}

相关内容