Нумерация дополнительных приложений с использованием строчных букв в мемуарах

Нумерация дополнительных приложений с использованием строчных букв в мемуарах

Я хочу, чтобы разделы в subappendicesбыли пронумерованы с использованием строчных букв в memoir. То есть, я хочу, чтобы все ссылки на эти разделы были пронумерованы строчными буквами. Из верхней части моей головы это включает:

  1. Заголовок раздела\section{An appendix\label{an_appendix}}
  2. Ссылки на раздел\ref{an_appendix}
  3. Записи в содержании
  4. Плавает в разделе
  5. Ссылки на поплавки в разделе

Вероятно, есть что-то большее, что я не могу вспомнить.

Я подозреваю, что это лучше всего исправить, изменив счетчик разделов, используемый внутри memoirсреды subappendices. Но я не могу понять, как это сделать.

В приведенном ниже MWE я закомментировал некоторые частичные исправления, которые обрабатывают (1) номера заголовков разделов, (3) номера плавающих подписей и (4) номера оглавлений.

Я бы предпочел чистое решение, которое изменяет счетчик для разделов подприложений (или что-то еще более чистое, чего я не вижу), но согласился бы на исправление ссылок.

Что мне следует делать вместо этого?

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

Вывод с добавлением красных прямоугольников вокруг нежелательных объектов

решение1

Оба можно решить с помощью одной линии.

\renewcommand{\setthesection}{\thechapter.\alph{section}}

В начале subappendicesмы запускаем эту команду

\newcommand{\@resets@ppsub}{
  \par
  \setcounter{section}{0}
  \renewcommand{\thesection}{\setthesection}
  \def\theHsection{\theHchapter.\Alph{section}}
}

с

\newcommand{\setthesection}{\thechapter.\Alph{section}}

так что хватит с этим возиться.

Затем toc исправляется с помощью закомментированного

\renewcommand\cftsectionpresnum{\scshape\MakeLowercase}

Это решает проблему со ссылками. Это hyperrefтакже работает с . Если есть какой-то пакет, который добавляет необязательный аргумент к \ref, то его тоже нужно подобрать. Все еще интересно, есть ли конус-хук, который можно использовать вместо этого.

\AtBeginDocument{
  \NewCommandCopy\oldref\ref
  \RenewDocumentCommand\ref{sm}{%
    \textsc{%
      \IfBooleanTF{#1}%
      {\oldref*{#2}}%
      {\oldref{#2}}%
    }%
  }
}

Связанный контент