Cambiar el nombre de los números del apéndice a S1 y S2 en lugar de A y B

Cambiar el nombre de los números del apéndice a S1 y S2 en lugar de A y B

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 elsarticleclase. 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 elsarticleclase 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 \autorefy \cref, que son dos macros de nivel de usuario proporcionadas por los paquetes hyperrefy 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}

ingrese la descripción de la imagen aquí

\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 \appendixin elsarticle.clses 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 \@seccntformatgarantiza la uniformidad en la salida. También cambio la forma en que se imprime la tabla de contenido para que sea similar a la elsarticlede '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 cleverefde ninguna manera es necesario para que el código funcione.

ingrese la descripción de la imagen aquí

Respuesta3

\appendix
\setcounter{section}{18}%. is R, next will be S
\renewcommand{\thesection}{\Alph{section}}

información relacionada