Tutorial :Where can I find help files or documentation for commands like \@startsection for LaTeX?


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.


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 counter secnumdepth. 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.


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  /usr/local/texlive/2011/texmf-dist/tex/latex/base/latex.ltx  

in this file you'll find all definitions.


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.


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.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »