Where can I find help files or documentation for commands like \@startsection for LaTeX?
The actual command, including its formal definition posted by @JoshLee is contained in the LaTeX 2e source, section 61.2 Sectioning (p 283). It forms part of ltsect.dtx
, the bundle containing all sectioning commands for LaTeX. It even includes a pseudo-code interpretation of the actual macro. Here is an extract:
The
\@startsection{<name>}{<level>}{<indent>}{<beforeskip>}{<afterskip>}{<style>}*[<altheading>]{<heading>}
command is the mother of all the user level sectioning commands. The part after the*
, including the*
is optional.
- name: e.g.,
subsection
- level: a number, denoting depth of section - e.g.,
chapter
= 0,section
= 1, etc.- indent: Indentation of heading from left margin
- beforeskip: Absolute value = skip to leave above the heading. If negative, then paragraph indent of text following heading is suppressed.
- afterskip: If positive, then skip to leave below heading, else negative of skip to leave to right of run-in heading.
- style: Commands to set style. Since June 1996 release the last command in this argument may be a command such as
\MakeUppercase
or\fbox
that takes an argument. The section heading will be supplied as the argument to this command. So setting#6
to, say,\bfseries\MakeUppercase
would produce bold, uppercase headings.If
*
is missing, then increment the counter. If it is present, then there should be no[<altheading>]
argument. The command uses the countersecnumdepth
. It contains a pointer to the highest section level that is to be numbered.
It’s not a LaTeX command per se (which is why it’s not well documented), but a TeX macro that’s defined in the implementation of LaTeX’s kernel. @Concerned has a good answer, but you can also explore macros in LaTeX’s interactive mode:
~$ latex
**\makeatletter
*\show\@startsection
> \@startsection=macro:
#1#2#3#4#5#6->\if@noskipsec \leavevmode \fi \par \@tempskipa #4\relax
\@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi
\if@nobreak \everypar {}\else \addpenalty \@secpenalty \addvspace \@tempskipa \fi
\@ifstar {\@ssect {#3}{#4}{#5}{#6}}{\@dblarg {\@sect {#1}{#2}{#3}{#4}{#5}{#6}}}.
I'd consider the LaTeX companion (second edition) as a very good ressource for this kind of command. It may be not up to date in every aspect, but IMO very much is still valid.