2

I defined a command that I use to add some levels of section headers (there are more of those, with different properties, but I show only one here):

\newcommand{\myssssection}[1]{{\addcontentsline{toc}{subsubsection}{\hspace{1.6cm}{#1}}}%
                              {\vspace{1ex}\noindent\normalfont\large\sffamily{\bfseries{#1}}\newline}}

Now what I would like to do is to suppress the indentation of the first paragraph that follows, similar to the way the regular \section commands presumably does it.

I understand I can add \noindent in from of the first paragraph, but it would be nicer to include this in the pseudo-section command that I defined.

user52366
  • 655
  • 2
    is there any reason not to use the latex section defining commands such as \@startsection here so that tables of contents handling and control of indentation were automatic? – David Carlisle Mar 21 '17 at 20:22
  • Have a look at the noindentafter package. –  Mar 21 '17 at 21:00
  • Do you use a KOMA-class? If so you can use \DeclareSectionCommand – Marco Daniel Mar 21 '17 at 21:34
  • apart from suppressing indentation a section command would normally be expected to prevent page breaks after the heading or after just one line of the next paragraph – David Carlisle Mar 21 '17 at 21:36
  • Ok, \@startsection fixes this, I was not aware of this command. However, I don't know how to add the toc entry for this sectioning, the way I like it (indented). – user52366 Mar 22 '17 at 19:37
  • Perhaps the noindentafter package will help. Does not address every situation. –  Dec 16 '17 at 18:43

1 Answers1

1

There are a number of things that sectional units do that is not covered properly in your definition of \myssssection. Sections

  • start a new paragraph;
  • insert a ToC-related entry after setting the heading;
  • ensures there is no (page) break between the section heading and the first line of the following paragraph;
  • insert an appropriate mark (in the header);
  • typically prevent indentation of the following paragraph.

All of the above is implemented when you use \@startsection. Here's how one can do just that:

enter image description here

enter image description here

\documentclass{article}

\usepackage{lipsum,pgffor}% Just for this example
\usepackage{etoolbox}

\newcounter{subsubsubsection}[subsubsection]
\renewcommand\thesubsubsubsection{\thesubsubsection.\arabic{subsubsubsection}}
\renewcommand\theparagraph{\thesubsubsubsection.\arabic{paragraph}}% Optional, if you're using numbered \paragraphs

\makeatletter

\newcommand\subsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
  {-1ex \@plus.2ex \@minus.2ex}% <space before>
  {1ex \@plus.2ex \@minus.2ex}% <space after>
  {\normalfont\large\bfseries\sffamily}}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\paragraph}{{paragraph}{4}}{{paragraph}{5}}{}{}% Demote \paragraph
\patchcmd{\subparagraph}{{subparagraph}{5}}{{subparagraph}{6}}{}{}% Demote \subparagraph

\newcommand{\subsubsubsectionmark}[1]{}% An appropriate mark

\newcommand{\l@subsubsubsection}{\@dottedtocline{4}{7em}{4em}}
\renewcommand{\l@paragraph}{\@dottedtocline{5}{10em}{5em}}% Shift \paragraph entries one level lower
\renewcommand{\l@subparagraph}{\@dottedtocline{6}{14em}{6em}}% Shift \subparagraph entries one level lower

\makeatother

\setcounter{secnumdepth}{3}% Only number up to \subsubsection, not \subsubsubsection
\setcounter{tocdepth}{4}% Include up to \subsubsubsection in ToC

\begin{document}

% Create a dummy document with all levels of sectional units from \section to \paragraph
\tableofcontents

\foreach \SECTION in {First, Second, Third, Last} {
  \section{\SECTION{} section}\lipsum[1]
  \foreach \SUBSECTION in {First, Second, Third, Last} {
    \subsection{\SUBSECTION{} subsection}\lipsum[2]
    \foreach \SUBSUBSECTION in {First, Second, Third, Last} {
      \subsubsection{\SUBSUBSECTION{} subsubsection}\lipsum[3]
      \foreach \SUBSUBSUBSECTION in {First, Second, Third, Last} {
        \subsubsubsection{\SUBSUBSUBSECTION{} subsubsubsection}\lipsum[4]
        \foreach \PARAGRAPH in {First, Second, Third, Last} {
          \paragraph{\PARAGRAPH{} paragraph}\lipsum[5]
        }
      }
    }
  }
}

\end{document}

References:

Werner
  • 603,163