Umbenennung der Anhangsnummern in S1 und S2 anstelle von A und B

Umbenennung der Anhangsnummern in S1 und S2 anstelle von A und B

Ich schreibe eine Aufgabe und gemäß den Anweisungen,

Anhänge müssen dem Benennungsformat „Anhang S1“, „Anhang S2“ usw. folgen.

Ich verwende die elsarticleKlasse. Bisher habe ich es versucht.

\appendix
\renewcommand{\thesection}{\Alph{section}}

Aber es beginnt standardmäßig mit A. Gibt es eine Möglichkeit, dass das Namensformat mit S statt mit A beginnt?

Antwort1

Anhänge müssen dem Benennungsformat „Anhang S1“, „Anhang S2“ usw. folgen.

Die elsarticleDokumentklasse enthält die folgenden, eher schlecht durchdachten Anweisungen bezüglich der Anhangsabschnitte und deren Inhalt:

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

Beachten Sie insbesondere die Gräueltat , die es unmöglich macht, Anhangsabschnitte über und \gdef\thesection{\appendixname~\@Alph\c@section}richtig zu referenzieren. Dabei handelt es sich um zwei Benutzermakros, die von den Paketen bzw. bereitgestellt werden .\autoref\crefhyperrefcleveref

Um die gewünschte Formatierung zu erreichen und die normalen Querverweisfunktionen wiederherzustellen, empfehle ich Ihnen, nach der Ausführung die folgenden Anweisungen auszuführen \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}

Bildbeschreibung hier eingeben

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

Antwort2

Ich stimme zuMicos Analysedass der Code für \appendixin elsarticle.clsschrecklich ist.

Ich bin jedoch mit dem komplizierten Code in der Mitte des Dokuments nicht einverstanden. Außerdem scheinen einige Änderungen an Micos Vorschlag notwendig zu sein, aber seine Ideen sind wie immer sehr gut.

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

Die Verwendung einer Kopie der definierten Klasse \@seccntformatstellt Einheitlichkeit in der Ausgabe sicher. Ich ändere auch, wie das Inhaltsverzeichnis gedruckt wird, damit es dem von ähnelt elsarticle.

Auch die Nummerierung des Anhangs habe ich nicht „abstrahiert“, aber die Stelle, an der er definiert ist, ist deutlich gekennzeichnet.

Vorteil dieser Vorgehensweise: Wenn die Redakteure mit Ihrem Stil nicht einverstanden sind, entfernen Sie einfach den hinzugefügten Code in der Präambel. Wenn Sie jedoch verwenden cleveref, wären mehrere Änderungen im Dokument erforderlich.

Beachten Sie, dass dies clevereffür die Funktion des Codes keinesfalls erforderlich ist.

Bildbeschreibung hier eingeben

Antwort3

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

verwandte Informationen