TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I can't find official documentation for the \@startsection command. I already looked in:

  1. LaTeX Wikibook
  2. LaTeX: Structured document for TEX, 2008
  3. beginLatex — a book that comes with ProTeX
  4. in the files that comes with MikTeX in the folder doc

and Google. I found a lot of sites that show examples and discussions about it but I'd like to find the official help or document.

share|improve this question

migrated from stackoverflow.com Oct 17 '11 at 2:52

This question came from our site for professional and enthusiast programmers.

up vote 34 down vote accepted

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 = 1, section = 2, 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 counter secnumdepth. It contains a pointer to the highest section level that is to be numbered.

share|improve this answer
Excellent that is exactly what I want. Let's read! – mjsr Oct 17 '11 at 22:06
Can anyone help explain to me the use \@plus and \@minus in this context \@startsection{subexperiment}{2}{\z@} {1ex \@plus 2ex \@minus 0.5ex}{1.3ex \@plus.2ex}{\raggedsection\normalfont\sectfont\nobreak\normalsize\nobreak} {#1} – George Feb 26 at 4:17
@George: \@plus and \@minus are similar to \plus and \minus and refer to glue. See What is glue stretching? – Werner Feb 26 at 4:47

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
> \@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}}}.
share|improve this answer
Great comment. I didn't know about that. Does it also work after including packages to get more information about in-package defined macros? – Rupert Jones Feb 19 '10 at 15:07
Yep. \section, for example, doesn't exist until you include the document class. – Josh Lee Feb 19 '10 at 15:13
Actually, using texdoc packagename (or texdoc source2e for the kernel) will often give better results, as it also contains clarification for the commands. – Paŭlo Ebermann Oct 13 '11 at 15:02

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.

share|improve this answer
It's the second book every LaTeX user should have. The first one should be Lamport's. – Martin Schröder Nov 1 '11 at 22:54

A lot of LaTex's internals can be mastered only by using the source, but have a look at LaTeX 2e for Class and Package Writers.

share|improve this answer

look into the main LaTeX file latex.ltx. You'll find it in the tex/latex/base directory, or let kpsewhich find the place:

kpsewhich latex.ltx

For my system:

voss@shania:~> kpsewhich latex.ltx

in this file you'll find all definitions.

share|improve this answer

See This discussion on the texhax mailing list for where to find the definition in the LaTeX distribution This link (PDF) has some documentation about it.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.