I'm trying to redefine the \subsubsection
of the report class to behave like \paragraph
and not have a linebreak after the title.
It's closely related to this question but I have no idea how to extrapolate the reverse effect from it.
I tried to get the code for paragraph using \show\paragraph
and redifining \subsubsection
with it as follows, but although it does compile, it doesn't work when I try to use it.
\renewcommand{\subsubsection}{\long macro :->\@startsection{subsubsection}{4}{\z@ }{3.25ex \@plus 1ex \@minus .2ex}{-1em}{\normalfont \normalsize \bfseries}}
I'm would like to know how to solve my original problem, but now, I'm also curious as to what I did wrong with that \renewcommand
since it seems to me like I'd encounter it again with other problems I'd try to solve by modifying how latex does its thing.
MWE:
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[12pt]{report}
\usepackage{listings}
\def\thesection{\Roman{section}}
\def\thesubsection{\thesection.\Alph{subsection}}
\setcounter{secnumdepth}{2}
%\renewcommand{\subsubsection}{\long macro :->\@startsection{subsubsection}{4}{\z@ }{3.25ex \@plus 1ex \@minus .2ex}{-1em}{\normalfont \normalsize \bfseries}}
\begin{document}
\chapter{Chapter 1}
\label{c:c1}
\section{Section 1}
\label{s:s1}
\subsection{Subsection 1}
\label{ss:ss1}
\subsubsection{\lstinline{<Upper|Lower> Triangular}} defines a triangular matrix ...
\end{document}
Best Answer
The output of
\show
cannot be used as you are trying. It says that\subsection
is a "long" macro that has no arguments and the replacement text is what follows->
.The right place where to look is
report.cls
, where you findThe key point that explain the different behavior are: the negative fourth argument of
\@startsection
for\subsubsection
which suppresses indentation of the following paragraph; the positive fifth argument tells TeX that the title will not be "run-in". SoThe second argument to
\@startsection
tells LaTeX the level of the sectioning command for the purposes ofsecnumdepth
andtocdepth
and should stay3
.Important note
The
\makeatletter
and\makeatother
commands are necessary because we are doing stuff involving the internal command of LaTeX.Every time a command containing
@
in its name has to be used, the code must either be in a.sty
file or surrounded by that pair. See What do \makeatletter and \makeatother do? for more information.