Konflikt zwischen ASL-Klassendatei und den Paketen cleveref und cite

Konflikt zwischen ASL-Klassendatei und den Paketen cleveref und cite

Ich möchte einen Beitrag einreichen bei derZeitschrift für symbolische Logik, was bedeutet, dass ich die Klassendatei asl.clsund die Bibliographie-Stildatei der Association of Symbolic Logic verwenden muss asl.bst, die beide verfügbar sindHier.

In der Vergangenheit habe ich die Pakete hyperref, cleverefund erfolgreich citezusammen mit den Dokumentklassen articleund verwendet book. Die Klassendatei asl.clsverursacht jedoch Probleme. Hier ist ein 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}

Und hier ist die Datei 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}
 }

Einige bisherige Beobachtungen und Versuche:

  1. Die Datei asl.clsist von 2002 und damit meiner Meinung nach älter als einige der Pakete, aber ich konnte keine aktuellere Version finden.
  2. Ich habe die Datei durchgesehen asl.cls, aber mein Wissen über die Funktionsweise von LaTeX-Klassendateien istsehrbegrenzt und es gibt so viele Abhängigkeiten, dass ich nicht weiß, wo ich anfangen soll.
  3. Schalte ich das citePaket aus, erscheint die Quellenangabe zwar korrekt als [1] (anstatt als [?]), ist aber nicht anklickbar.
  4. Einige Standardpakete, wie beispielsweise amsthm, sind in die Datei integriert asl.cls(ich verstehe jedoch nicht ganz, wie).

Meine Frage lautet also: Gibt es eine Möglichkeit hyperref, die Pakete cleverefund citemit (einer möglicherweise geänderten Version von) zu verwenden asl.cls?

Antwort1

Ich habe in den Dateien herumgestöbert asl.clsund asl.bstversucht, das Benutzerhandbuch der Dokumentklasse (in asldoc.ps) zu verstehen.

  • Erstellen Sie eine Kopie der Datei asl.clsund nennen Sie die Kopie beispielsweise als-mod.cls.

  • Öffnen Sie die Datei als-mod.clsim Texteditor und gehen Sie zu Zeile 3332, wo die (Neu-)Definition \bibliographystylebeginnt. Kommentieren Sie die gesamte (Neu-)Definition dieses Makros aus, also die Zeilen 3332 bis 3349.

  • Geben Sie in Ihrer Haupt-Tex-Datei asl-modals erforderliches Argument an \documentclassund geben Sie die Optionen bibotherund an otherbib– ja, beides!

  • Ändern Sie in Ihrer Haupt-Tex-Datei das Argument von \bibliographystylefrom aslin plain. Die Kodierung in der Datei asl.bstist einfach unerträglich. Es hat keinen Sinn, zu versuchen, sie zu beheben. Das Benutzerhandbuch der aslDokumentklasse schlägt, wenn auch indirekt, vor, dass es akzeptabel ist, seine Bibliografie im plainStil zusammenzustellen; machen Sie es! (Das Benutzerhandbuch besagt, dass „es keinen Grund gibt, einen anderen Stil als zu verwenden asl.“ Obwohl dies wie eine Befürwortung der Verwendung des Bibliografiestils klingt asl, gibt es keinen Hinweis darauf, dass man verwenden muss asl.)

Mit diesen Änderungen \citeerhalten Sie in den Anweisungen tatsächlich numerische Verweise auf Zitate. Juhu!

  • Um cleverefzur Arbeit zu gelangen, sollten Sie (a) laufen\newtheorem{thm}{Theorem} VorLaden cleveref, und b) Erteilung der Anweisung \crefname{thm}{Theorem}{Theorems}nach dem Laden cleveref.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen