
Estoy escribiendo una tarea y, según las instrucciones,
Los apéndices deben seguir el formato de denominación “Apéndice S1”, Apéndice S2”, etc.
Estoy usando la elsarticle
clase. Hasta ahora lo he intentado.
\appendix
\renewcommand{\thesection}{\Alph{section}}
Pero, de forma predeterminada, comienza como A
. ¿Hay alguna manera de que el formato de nombres pueda comenzar desde S en lugar de A?
Respuesta1
Los apéndices deben seguir el formato de denominación “Apéndice S1”, Apéndice S2”, etc.
La elsarticle
clase de documento contiene las siguientes instrucciones, bastante mal concebidas, sobre las secciones del apéndice y su contenido:
\def\appendixname{Appendix }
\renewcommand\appendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\setcounter{equation}{0}
\gdef\thefigure{\@Alph\c@section.\arabic{figure}}%
\gdef\thetable{\@Alph\c@section.\arabic{table}}%
\gdef\thesection{\appendixname~\@Alph\c@section}%
\@addtoreset{equation}{section}%
\gdef\theequation{\@Alph\c@section.\arabic{equation}}%
\addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{}
}
Observe, en particular, la atrocidad \gdef\thesection{\appendixname~\@Alph\c@section}
, que hace imposible hacer referencias cruzadas a las secciones del apéndice correctamente a través de \autoref
y \cref
, que son dos macros de nivel de usuario proporcionadas por los paquetes hyperref
y cleveref
, respectivamente.
Para lograr el formato deseado y restaurar las capacidades normales de referencias cruzadas, le sugiero que ejecute las siguientes instrucciones después de ejecutar \appendix
:
\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
{\csname the#1\endcsname\space}% default
{\csname #1@cntformat\endcsname}}% enable individual control
\newcommand\section@cntformat{\appendixname\thesection.\space} % section-level
\makeatother
\renewcommand{\thesection}{S\arabic{section}}
\counterwithin{equation}{section}
\counterwithin{figure}{section}
\counterwithin{table}{section}
\documentclass{elsarticle}
\usepackage{cleveref} % for '\cref' command
\begin{document}
\section{Introduction}
\noindent
Cross-references to \cref{app:hello,app:world,eq:pyth,fig:here,tab:there}.
\appendix
\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
{\csname the#1\endcsname\space}% default
{\csname #1@cntformat\endcsname}}% enable individual control
\newcommand\section@cntformat{\appendixname\thesection.\space} % section-level
\makeatother
\renewcommand{\thesection}{S\arabic{section}}
\counterwithin{equation}{section}
\counterwithin{figure}{section}
\counterwithin{table}{section}
\section{Hello} \label{app:hello}
\begin{equation}\label{eq:pyth} a^2+b^2=c^2 \end{equation}
\begin{figure}[h] \caption{A figure caption}\label{fig:here} \end{figure}
\section{World} \label{app:world}
\begin{table}[h] \caption{A table caption}\label{tab:there} \end{table}
\end{document}
Respuesta2
estoy de acuerdo conEl análisis de Mico.que el código para \appendix
in elsarticle.cls
es terrible.
Sin embargo, no estoy de acuerdo con el código complicado en medio del documento. Además, parecen necesarios algunos cambios en la propuesta de Mico, pero sus ideas son, como siempre, muy buenas.
\documentclass{elsarticle}
\usepackage{cleveref} % for '\cref' command
\makeatletter
\newif\if@els@appendix
\renewcommand\appendix{\par
\global\@els@appendixtrue
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\setcounter{equation}{0}%
\counterwithin{figure}{section}%
\counterwithin{table}{section}%
\counterwithin{equation}{section}%
\gdef\thesection{S\arabic{section}}% <--- HERE THE NUMBERING FORMAT
\addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{}
}
\NewCommandCopy{\els@seccntformat}{\@seccntformat}
\renewcommand{\@seccntformat}[1]{%
\ifcsname format@#1\endcsname
\csname format@#1\endcsname
\else
\els@seccntformat{#1}%
\fi
}
\newcommand{\format@section}{%
\if@els@appendix \appendixname\fi\els@seccntformat{section}%
}
\def\tmptocnumberline#1{%
\settowidth\appnamewidth{\appendixname S00}%
\hb@xt@\appnamewidth{\appendixname #1\hfill}%
}
\makeatother
\begin{document}
\tableofcontents
\section{Introduction}
Cross-references to \cref{app:hello,app:world,eq:pyth,fig:here,tab:there}.
\appendix
\section{Hello} \label{app:hello}
\begin{equation}\label{eq:pyth} a^2+b^2=c^2 \end{equation}
\begin{figure}[htp] \caption{A figure caption}\label{fig:here} \end{figure}
\section{World} \label{app:world}
\begin{table}[htp] \caption{A table caption}\label{tab:there} \end{table}
\end{document}
El uso de una copia de la clase definida \@seccntformat
garantiza la uniformidad en la salida. También cambio la forma en que se imprime la tabla de contenido para que sea similar a la elsarticle
de 's.
No he “abstraído” también la numeración del apéndice, pero el lugar donde está definido está claramente marcado.
Ventaja de este enfoque: si los editores no están de acuerdo con su estilo, simplemente elimina el código agregado en el preámbulo. Sin embargo, si utiliza cleveref
, serán necesarios varios cambios en el documento.
Tenga en cuenta que cleveref
de ninguna manera es necesario para que el código funcione.
Respuesta3
\appendix
\setcounter{section}{18}%. is R, next will be S
\renewcommand{\thesection}{\Alph{section}}