是否可以仅自定义回忆录中的章节和小节编号或标题?

是否可以仅自定义回忆录中的章节和小节编号或标题?

就像问题标题所说的那样,是否可以只自定义章节和子章节编号或标题memoir?我知道如何更改整个块的字体,但我想让章节编号比章节标题小一点,并保持子章节编号直立,同时使子章节标题倾斜。

另外,我希望能够在不影响数字的情况下对标题做一些事情。

答案1

适当定义“secnumformat”就足够了;它的通常设置是

\setsecnumformat{\csname the#1\endcsname\quad}

因此我们可以修改它以执行不同的宏,我为其选择名称\gablinsection\gablinsubsection等等。

\documentclass{memoir}

\setsecnumformat{\csname gablin#1\endcsname\quad}
\newcommand{\gablinsection}{{\small\thesection}}
\newcommand{\gablinsubsection}{{\footnotesize\thesubsection}}
\newcommand{\gablinsubsubsection}{{\scriptsize\thesubsubsection}}
\setsecnumdepth{subsubsection}

\begin{document}
\section{Test me}
\subsection{Another test}
\subsubsection{Test me too}
\end{document}

这个想法来自于英国 TUG 常见问题解答

答案2

您可以secnumformat通过向相关的分段命令添加钩子来为每个分段级别分别定义:

\headstyles{bringhurst}
% I don't know what style you're using but chose this one since it
% has italic subsection titles - the same principles apply to any 
% set of heading styles.
\setsecnumdepth{subsubsection}
% Make sure subsections are numbered

\let\oldsection=\section
\let\oldsubsection=\subsection
% Save the existing sectioning commands

\renewcommand{\section}[1]{{%
  \setsecnumformat{\footnotesize\thesection\quad}%
  \oldsection{#1}}}
\renewcommand{\subsection}[1]{{%
  \setsecnumformat{{\upshape\thesubsection\quad}}%
  \oldsubsection{#1}}}
% New sectioning commands use \setsecnumformat to
% redefine the number font locally. Note the extra
% pair of curly brackets to make sure that the
% \secnumformat returns to normal after the (sub)section
% definition.

然后

\begin{document}
\section{Test me}
\subsection{Another test}
\subsubsection{Test me too}
\end{document}

给出

a set of headings with the required numbering fonts

(最后subsubsection是为了表明我们没有全局改变编号字体)。

(不过,从印刷术的角度来看,您真正想要的章节编号可能不是小数字而是“旧式”数字 - 如果您使用的字体有的话。)

编辑

@daleif 指出,狡猾的额外组会破坏交叉引用,从而产生不良影响。避免这种情况的另一种方法是

\makeatletter
\let\oldsection=\section
\let\oldsubsection=\subsection
\renewcommand{\section}[1]{%
  \let\oldsecnumformat=\@seccntformat%
  \setsecnumformat{{\footnotesize\thesection\quad}}%
  \oldsection{#1}%
  \let\@seccntformat=\oldsecnumformat}
\renewcommand{\subsection}[1]{%
  \let\oldsecnumformat=\@seccntformat%
  \setsecnumformat{{\upshape\thesubsection\quad}}%
  \oldsubsection{#1}%
  \let\@seccntformat=\oldsecnumformat}
\makeatother

其中,不是定义一个在其中secnumformat发生更改的组,而是明确保存然后恢复旧格式,以便交叉引用仍然有效。

我还注意到,如果你不介意恢复旧格式(即,如果你乐意为你使用的每个部分级别明确定义格式),那么比我展示的第一个方法更简单的方法是

\setsechook{\setsecnumformat{{\footnotesize\thesection\quad}}}
\setsubsechook{\setsecnumformat{{\upshape\thesection\quad}}}

相关内容