我希望 中的部分subappendices
使用 中的小写字母进行编号memoir
。也就是说,我希望对这些部分的所有引用都使用小写字母。从我的脑海中浮现,这包括:
- 节标题
\section{An appendix\label{an_appendix}}
- 参考章节
\ref{an_appendix}
- 目录中的条目
- 在部分内浮动
- 节内对浮动的引用
可能还有更多我无法想到的。
我怀疑最好通过更改环境中使用的部分计数器来解决这个问题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}}
所以弄乱这个就足够了。
然后使用注释掉的
\renewcommand\cftsectionpresnum{\scshape\MakeLowercase}
这解决了引用问题。它hyperref
也能与 配合使用。如果有一些包向 添加了可选参数\ref
,那么也需要将其拾取。仍然想知道是否有钩锥可以代替。
\AtBeginDocument{
\NewCommandCopy\oldref\ref
\RenewDocumentCommand\ref{sm}{%
\textsc{%
\IfBooleanTF{#1}%
{\oldref*{#2}}%
{\oldref{#2}}%
}%
}
}