我想改变格式\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}