Ich möchte, dass Abschnitte in subappendices
mit kleinen Kapitälchen nummeriert werden memoir
. Das heißt, ich möchte, dass alle Verweise auf diese Abschnitte kleine Kapitälchen verwenden. Aus dem Stegreif sind das:
- Die Abschnittsüberschrift
\section{An appendix\label{an_appendix}}
- Verweise auf den Abschnitt
\ref{an_appendix}
- Einträge im Inhaltsverzeichnis
- Schwebt innerhalb des Abschnitts
- Verweise auf Floats innerhalb des Abschnitts
Es gibt wahrscheinlich noch mehr, was mir nicht einfällt.
memoir
Ich vermute, dass sich dies am besten beheben lässt, indem man den in der Umgebung verwendeten Abschnittszähler ändert subappendices
. Aber ich kann nicht herausfinden, wie das geht.
Im MWE weiter unten habe ich einige teilweise Korrekturen auskommentiert, die (1) Abschnittsüberschriftennummern, (3) Float-Untertitelnummern und (4) Inhaltsverzeichnisnummern behandeln.
Ich würde eine saubere Lösung bevorzugen, bei der der Zähler für die Unteranhangabschnitte geändert wird (oder etwas noch Saubereres, das ich nicht sehen kann), wäre aber mit der Korrektur der Referenzen zufrieden.
Was sollte ich stattdessen tun?
\documentclass{memoir}
\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont{EBGaramond-Regular}[
BoldFont = EBGaramond-Bold,
ItalicFont = EBGaramond-Italic,
BoldItalicFont = EBGaramond-BoldItalic,
Numbers={Proportional, OldStyle},
]
\AtBeginEnvironment{subappendices}{
\numberwithin{table}{section}
}
\setsecnumformat{\textsc{\csname the#1\endcsname}\quad}
% \setsecnumformat{\textsc{\MakeLowercase{\csname the#1\endcsname}}\quad} % (1) Make numbers in section headings lowercase small caps
\usepackage{caption}
\DeclareCaptionLabelFormat{lowercase}{\MakeLowercase{#1}~#2}
% \DeclareCaptionLabelFormat{lowercase}{\MakeLowercase{#1~#2} % (3) Make numbers in float captions lowercase small caps
\captionsetup{
labelfont=sc,
labelformat=lowercase,
}
% \makeatletter % (4) Make numbers in the table of contents lowercase small caps
% \patchcmd\numberline{\@cftbsnum #1\@cftasnum}{\@cftbsnum{#1}\@cftasnum}{}{\ERROR}
% \makeatother
% \renewcommand\cftsectionpresnum{\scshape\MakeLowercase}
\begin{document}
\tableofcontents*
\chapter{A chapter}
\section{A section}
See table~\ref{tab:a_table} in appendix~\ref{an_appendix}.
\begin{subappendices}
\section{An appendix\label{an_appendix}}
\begin{table}[h]
\caption{A table\protect\label{tab:a_table}}
\centering
\begin{tabular}{lcc}
& Column A & Column B \\
First row & 123 & 456 \\
Second row & 123 & 456 \\
\end{tabular}
\end{table}
\end{subappendices}
\end{document}
Antwort1
Beides kann mit einer einzigen Zeile gelöst werden
\renewcommand{\setthesection}{\thechapter.\alph{section}}
Zu Beginn subappendices
führen wir diesen Befehl aus
\newcommand{\@resets@ppsub}{
\par
\setcounter{section}{0}
\renewcommand{\thesection}{\setthesection}
\def\theHsection{\theHchapter.\Alph{section}}
}
mit
\newcommand{\setthesection}{\thechapter.\Alph{section}}
also reicht es, damit herumzuspielen.
Das Inhaltsverzeichnis wird dann mit dem auskommentierten
\renewcommand\cftsectionpresnum{\scshape\MakeLowercase}
Dies löst das Referenzproblem. Es funktioniert hyperref
auch mit . Wenn es ein Paket gibt, das ein optionales Argument hinzufügt \ref
, muss das ebenfalls berücksichtigt werden. Ich frage mich immer noch, ob es einen Hook gibt, den Cone stattdessen verwenden kann.
\AtBeginDocument{
\NewCommandCopy\oldref\ref
\RenewDocumentCommand\ref{sm}{%
\textsc{%
\IfBooleanTF{#1}%
{\oldref*{#2}}%
{\oldref{#2}}%
}%
}
}