就像问题标题所说的那样,是否可以只自定义章节和子章节编号或标题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}
给出
(最后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}}}