
Ich schreibe eine Aufgabe und gemäß den Anweisungen,
Anhänge müssen dem Benennungsformat „Anhang S1“, „Anhang S2“ usw. folgen.
Ich verwende die elsarticle
Klasse. 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 elsarticle
Dokumentklasse 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
\cref
hyperref
cleveref
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}
\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 \appendix
in elsarticle.cls
schrecklich 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 \@seccntformat
stellt 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 cleveref
für die Funktion des Codes keinesfalls erforderlich ist.
Antwort3
\appendix
\setcounter{section}{18}%. is R, next will be S
\renewcommand{\thesection}{\Alph{section}}