仅更改 \thesubsection 的显示,而不是实际值

仅更改 \thesubsection 的显示,而不是实际值

梅威瑟:

\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于部分编号。

相关内容