
Ich möchte einen Beitrag einreichen bei derZeitschrift für symbolische Logik, was bedeutet, dass ich die Klassendatei asl.cls
und 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
, cleveref
und erfolgreich cite
zusammen mit den Dokumentklassen article
und verwendet book
. Die Klassendatei asl.cls
verursacht 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:
- Die Datei
asl.cls
ist von 2002 und damit meiner Meinung nach älter als einige der Pakete, aber ich konnte keine aktuellere Version finden. - 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. - Schalte ich das
cite
Paket aus, erscheint die Quellenangabe zwar korrekt als [1] (anstatt als [?]), ist aber nicht anklickbar. - Einige Standardpakete, wie beispielsweise
amsthm
, sind in die Datei integriertasl.cls
(ich verstehe jedoch nicht ganz, wie).
Meine Frage lautet also: Gibt es eine Möglichkeit hyperref
, die Pakete cleveref
und cite
mit (einer möglicherweise geänderten Version von) zu verwenden asl.cls
?
Antwort1
Ich habe in den Dateien herumgestöbert asl.cls
und asl.bst
versucht, das Benutzerhandbuch der Dokumentklasse (in asldoc.ps
) zu verstehen.
Erstellen Sie eine Kopie der Datei
asl.cls
und nennen Sie die Kopie beispielsweiseals-mod.cls
.Öffnen Sie die Datei
als-mod.cls
im Texteditor und gehen Sie zu Zeile 3332, wo die (Neu-)Definition\bibliographystyle
beginnt. Kommentieren Sie die gesamte (Neu-)Definition dieses Makros aus, also die Zeilen 3332 bis 3349.Geben Sie in Ihrer Haupt-Tex-Datei
asl-mod
als erforderliches Argument an\documentclass
und geben Sie die Optionenbibother
und anotherbib
– ja, beides!Ändern Sie in Ihrer Haupt-Tex-Datei das Argument von
\bibliographystyle
fromasl
inplain
. Die Kodierung in der Dateiasl.bst
ist einfach unerträglich. Es hat keinen Sinn, zu versuchen, sie zu beheben. Das Benutzerhandbuch derasl
Dokumentklasse schlägt, wenn auch indirekt, vor, dass es akzeptabel ist, seine Bibliografie implain
Stil zusammenzustellen; machen Sie es! (Das Benutzerhandbuch besagt, dass „es keinen Grund gibt, einen anderen Stil als zu verwendenasl
.“ Obwohl dies wie eine Befürwortung der Verwendung des Bibliografiestils klingtasl
, gibt es keinen Hinweis darauf, dass man verwenden mussasl
.)
Mit diesen Änderungen \cite
erhalten Sie in den Anweisungen tatsächlich numerische Verweise auf Zitate. Juhu!
- Um
cleveref
zur Arbeit zu gelangen, sollten Sie (a) laufen\newtheorem{thm}{Theorem}
VorLadencleveref
, und b) Erteilung der Anweisung\crefname{thm}{Theorem}{Theorems}
nach dem Ladencleveref
.
\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}