梅威瑟:
\documentclass{memoir}
\usepackage[english]{babel}
\usepackage{varioref}
\usepackage{cleveref}
\renewcommand*{\thesubsection}{\Alph{subsection}.}
\setsecnumdepth{subsection}
\begin{document}
\chapter{A Chapter}
\section{A Section}
\subsection{A subsection}
\label{sec:subsection}
\appendix
\chapter{An appendix}
We refer to \vref{sec:subsection}.
\end{document}
输出:
问题是我想在这里显示第 1.1.A 节,但我需要更改子节计数器以按我想要的方式显示子节标题。这里的解决方法是什么?
答案1
如果您只想在小节编号后面添加一个尾随句点,最好的方法是重新定义\@seccntformat
(参见手册中的第 6.6 节memoir
,第 107 页)。
然后我们就可以使用\p@<counter>
LaTeX 内核的功能了。当\label
给出命令时,LaTeX 使用最后一个“refstepped”计数器,前缀为\p@<counter>
。通常\p@subsection
是空的,但我们可以重新定义它。
\documentclass{memoir}
\usepackage[english]{babel}
\usepackage{varioref}
\usepackage{cleveref}
% We add an optional suffix to numbers when printing the section header
\setsecnumformat{\csname the#1\endcsname\csname suffix@#1\endcsname\quad}
\renewcommand*{\thesubsection}{\Alph{subsection}}
% Access to the internals
\makeatletter
% redefine the prefix to the subsection number when \ref is used
\renewcommand{\p@subsection}{\thesection.}
% only \suffix@subsection needs a definition
\newcommand{\suffix@subsection}{.}
\makeatother
\setsecnumdepth{subsection}
\begin{document}
\chapter{A Chapter}
\section{A Section}
\subsection{A subsection}
\label{sec:subsection}
\appendix
\chapter{An appendix}
We refer to \vref{sec:subsection}.
\end{document}
由于我们没有定义\suffix@section
,LaTeX\relax
在找到时会自动将其更改为\csname suffix@section\endcsname
。
如果您还想更改标题中数字的格式,那么请添加前缀:
\setsecnumformat{%
\csname prefix@#1\endcsname
\csname the#1\endcsname
\csname suffix@#1\endcsname\quad}
然后相应地定义\prefix@subsection
和\suffix@subsection
:
\makeatletter
% redefine the prefix to the subsection number when \ref is used
\renewcommand{\p@subsection}{\thesection.}
% only \prefix@subsection and \suffix@subsection need a definition
\newcommand{\prefix@subsection}{\begingroup\large}
\newcommand{\suffix@subsection}{.\endgroup}
\makeatother
该组仅适用\large
于部分编号。