
No puedo compilar styleguide.tex en biometrika.zip (verhttps://academic.oup.com/biomet/pages/General_Instructions).
Aquí hay un MWE que genera el mismo mensaje de error, aunque todavía no estoy seguro de no haber tirado al bebé con el agua del baño.
\documentclass{article}
\RequirePackage[thmmarks]{ntheorem}
\makeatletter
\def\arabic#1{{\rm\expandafter\@arabic\csname c@#1\endcsname}}
\theoremnumbering{arabic}
\newtheorem{definition}{Definition}
\makeatother
\begin{document}
\begin{definition}
This is a definition.
\end{definition}
\end{document}
Aquí está el resultado de pdflatex
:
% pdflatex styleguide
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./styleguide.tex
LaTeX2e <2020-02-02> patch level 5
L3 programming layer <2020-03-06>
(/usr/local/texlive/2020/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
(/usr/local/texlive/2020/texmf-dist/tex/latex/base/size10.clo)) (./ntheorem.sty
Style `ntheorem', Version 1.24 <2004/09/20>
) (/usr/local/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
) (./styleguide.aux)
! Use of \@item doesn't match its definition.
\update@series@target@value #1->\def \reserved@a {
#1}\ifx \target@meta@famil...
l.13 T
his is a definition.
? q
OK, entering \batchmode
Respuesta1
El biometrika
archivo de clase comete (al menos) tres errores graves:
se usa
\rm
en todas partes, a pesar de que el comando ha estado obsoleto durante 25 años (bueno, 14 según la fecha de lanzamiento, pero de todos modos es mucho tiempo);redefine
\document
, lo cual es aún peor;hace
\def\arabic#1{{\rm\expandafter\@arabic\csname c@#1\endcsname}}
lo que no se puede comentar en un sitio público.
Realmente, el error número 3 es algo que cualquier programador de LaTeX debería evitar. En cuanto al número 2, el propósito de la clase parece ser simplemente eliminar
\ifx\normalsfcodes\@empty
\ifnum\sfcode`\.=\@m
\let\normalsfcodes\frenchspacing
\else
\let\normalsfcodes\nonfrenchspacing
\fi
\fi
\ifx\document@default@language\m@ne
\chardef\document@default@language\language
\fi
(verificado latex.ltx
en TeX Live 2007), por lo que no hay motivo alguno para hacerlo.
¿Como arreglarlo?
Aquí hay un preámbulo adecuado que se convierte \rm
en una operación no operativa, por lo que todas las apariciones explícitas en el documento deben reemplazarse por el comando correcto ( \mathrm
en modo matemático).
%%% fix the plain theorem style to have numbers upright
\RequirePackage[thmmarks]{ntheorem}
\makeatletter
\renewtheoremstyle{plain}
{\item[\hskip\labelsep \theorem@headerfont ##1\ \textup{##2}\theorem@separator]}
{\item[\hskip\labelsep \theorem@headerfont ##1\ \textup{##2}\ (##3)\theorem@separator]}
\makeatother
%%% save \document and \arabic to be reinstated after loading the class
\let\latexdocument\document
\let\latexarabic\arabic
%%% load the class (use the option you need)
\documentclass[manuscript]{biometrika}
%\documentclass[lineno]{biometrika}
%%% reinstate the original \document and \arabic
\let\document\latexdocument
\let\arabic\latexarabic
%%% make \rm into a no-op
\def\rm{}
Luego se puede continuar con los demás paquetes necesarios para el documento y el cuerpo del documento.
Tenga en cuenta que el autor de la clasesabeacerca de \renewtheoremstyle
!
Respuesta2
Tenga en cuenta que
\documentclass{article}
\RequirePackage[thmmarks]{ntheorem}
\newtheorem{definition}{Definition}
\begin{document}
\begin{definition}
This is a definition.
\end{definition}
\end{document}
no plantea ningún problema. Parece que están intentando utilizar el nteorema de una forma no estándar.