Conflito entre o arquivo de classe ASL e os pacotes intelligentef e cite

Conflito entre o arquivo de classe ASL e os pacotes intelligentef e cite

Gostaria de submeter um artigo aoJornal de Lógica Simbólica, o que significa que preciso usar o arquivo de classe asl.clse o arquivo de estilo bibliográfico da Associação de Lógica Simbólica asl.bst, ambos disponíveisaqui.

No passado, usei com sucesso os pacotes hyperref, cleverefe citejunto com as classes articlee bookdocument. No entanto, o arquivo de classe asl.clsestá causando problemas. Aqui está um 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}

E aqui está o arquivo 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}
 }

Algumas observações e tentativas até agora:

  1. O arquivo asl.clsé de 2002, que acho que é anterior a alguns pacotes, mas não consegui encontrar uma versão mais recente.
  2. Examinei o arquivo asl.cls, mas meu conhecimento do funcionamento interno dos arquivos de classe LaTeX émuitolimitado e há tantas dependências que não sei por onde começar.
  3. Se eu desligar o citepacote, a citação aparecerá corretamente como [1] (em vez de [?]), mas não será clicável.
  4. Alguns pacotes padrão, como amsthm, são incorporados ao arquivo asl.cls(não que eu entenda completamente como).

Então, minha pergunta é a seguinte: existe uma maneira de usar os pacotes hyperref, cleverefe citecom (uma versão possivelmente modificada de) asl.cls?

Responder1

Examinei os arquivos asl.clse asl.bsttentei entender o guia do usuário da classe de documento (em asldoc.ps).

  • Faça uma cópia do arquivo asl.clse chame a cópia, digamos, als-mod.cls.

  • Abra o arquivo als-mod.clsno editor de texto e vá até a linha 3332, onde \bibliographystylecomeça a (re)definição de. Comente toda a (re)definição desta macro, ou seja, linhas 3332 a 3349.

  • Em seu arquivo tex principal, especifique asl-modcomo argumento obrigatório \documentclasse especifique as opções bibothere otherbib- sim, ambas!

  • No seu arquivo tex principal, altere o argumento de \bibliographystylefrom aslpara plain. A codificação no arquivo asl.bstestá simplesmente além dos limites. Não adianta tentar consertar. O guia do usuário da aslclasse document sugere, ainda que indiretamente, que é aceitável compilar a bibliografia usando o plainestilo; Vá em frente! (O guia do usuário afirma que "não há razão para usar um estilo diferente de asl." Embora isso pareça um endosso ao uso do aslestilo bibliográfico, não há indicação de que seja necessário usar asl.)

Com essas mudanças, \citeas instruções fornecerão chamadas de citação numéricas. Uau!

  • Para começar cleverefa trabalhar, certifique-se de (a) executar\newtheorem{thm}{Theorem} antescarregando cleverefe (b) fornecer as instruções \crefname{thm}{Theorem}{Theorems}após o carregamento cleveref.

insira a descrição da imagem aqui

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

informação relacionada