如何格式化小节标题(不含包)?

如何格式化小节标题(不含包)?

我想改变格式\subsection{} 无需使用特殊包.report.cls我们发现它的定义

\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\large\bfseries}}

但我想对计数器和标题使用不同的字体。

例如,对于\section{}我使用的命令

{\fontsectionnumber{\color{black!50}\thesection.}\hspace{.5em}{\fontsection\MakeUppercase{#1}}} 

如何对 做同样的事情\subsection


编辑:这是 的改编代码\section{}

\newcommand\section{\global\@topnum\z@
                      \@afterindenttrue
                      \secdef\@section\@ssection}
\def\@section[#1]#2{\ifnum \c@secnumdepth >\z@
                       \if@mainmatter
                         \refstepcounter{section}%
                         \typeout{\thesection}%
                         \addcontentsline{toc}{section}%
                         {\protect{\color{black!30} %
                         {\fontsectionnumbertoc\numberline{\thesection.}}} {\normalfont #1} \hspace{1em} %
                         {\fontheadernumber\thepage}\hfil}%
                       \else
                         \addcontentsline{toc}{section}{#1}%
                       \fi
                    \else
                      \addcontentsline{toc}{section}{#1}%
                    \fi
                    \sectionmark{#1}%
                    \addtocontents{lof}{\protect\addvspace{10\p@}}%
                    \addtocontents{lot}{\protect\addvspace{10\p@}}%
%                    \if@twocolumn
%                      \@topnewpage[\@makechapterhead{#2}]%
%                    \else
                      \@makesectionhead{#2}%
                      \@afterheading
                    }
\def\@makesectionhead#1{%
  \vskip 5mm
  {\parindent \z@ \raggedright 
    \ifnum \c@secnumdepth >\m@ne
      %\if@mainmatter
        {\fontsectionnumber{\color{black!50}\thesection.}\hspace{.5em}{\fontsection\MakeUppercase{#1}}} 
        %\newline\nobreak
%        \vskip 0\p@
      %\fi
    \fi
    \interlinepenalty\@M
%    \large\MakeUppercase{#1} \par\nobreak
    \vskip 2mm %2.3ex \@plus.2ex
  }}

答案1

处理此类问题的标准方法是使用\@seccntformat,该宏负责格式化章节编号(在标准类中,章节以下的任何级别)。

通常的定义是

\csname the#1\endcsname \quad

#1与当前部分级别关联的计数器在哪里。因此,如果您定义

\def\@seccntformat#1{%
  {\csname font#1number\endcsname\csname the#1\endcsname}\quad}

您可以获得您想要的任何效果。

如果您不定义\font<level>number,则命令将与相同\relax,因此不会引发错误。

例子。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lipsum}

\def\fontsectionnumber{\fontsize{9}{16}\usefont{T1}{DejaVuSans-TLF}{b}{n}}
\def\fontsection{\fontsize{9}{16}\usefont{T1}{DejaVuSans-TLF}{m}{n}}
\def\fontsubsectionnumber{\fontsize{7}{12}\usefont{T1}{DejaVuSans-TLF}{b}{n}}
\def\fontsubsection{\fontsize{7}{12}\usefont{T1}{DejaVuSans-TLF}{m}{n}}

\makeatletter

\def\@seccntformat#1{%
  {\csname font#1number\endcsname\csname the#1\endcsname}\quad}

\renewcommand\section{%
  \@startsection{section}{1}{\z@}%
    {-3.5ex \@plus -1ex \@minus -.2ex}%
    {2.3ex \@plus.2ex}%
    {\normalfont\fontsection}}

\renewcommand\subsection{%
  \@startsection{subsection}{2}{\z@}%
    {-3.25ex\@plus -1ex \@minus -.2ex}%
    {1.5ex \@plus .2ex}%
    {\normalfont\fontsubsection}}

\makeatother

\begin{document}

\section{This is a section title}

\lipsum[2]

\subsection{This is a subsection title}

\lipsum[3]

\end{document}

在此处输入图片描述

相关内容