Text blocks/Typography/Indentation

Unofficial ConTeXt Wiki mirror

Last modified: 2025-01-10

In plain TeX, controlling indentation is accomplished by configuring parindent, and each new paragraph is indented by that value, unless explicitly begun with noindent. Environments can provide a noindent at the end of their definitions, and if the user wants to overrule that, he can add an explicit indent at the beginning of the next paragraph. For the most part, LaTeX follows the same convention.

Indentation in ConTeXt is a bit different: it mostly does not rely on the presence of blank lines, but uses \setupindenting to manage general indentation, the indentnext=yes/no/auto key on environments to enable/disable indentation after them, and \indentation and \noindentation to manually force/disable an indentation.

The commands \indent, \noindent, \indenting, and \noindenting are present for historical reasons, but should not be used. Especially, they should not be confused with \indentation and \noindentation

Setting up indentation for the whole document

Indentation involves two things: when to indent, and how much to indent. In ConTeXt, these can be specified using \setupindenting[...]. There are three types of keys for this command:

Setting up indentation after an environment

\setupindenting does not take care of indenting after environments, such as ConTeXt's itemizes, enumerations, definitions, formulas and floats. It also does not take care of indenting after heads such as chapters, sections, and subsections.

The setup command of these environments provides an indentnext key to configure the indentation behaviour after the environment. The indentnext key can take one of three values:

Some examples:

% Do not indent paragraphs after \stopitemize
\setupitemgroup[itemize][indentnext=no]

% indent paragraphs after section heads
\setuphead[section][indentnext=yes]

% indent the paragraphs after all sectioning heads 
\setupheads[indentnext=yes] 

% indent paragraphs after formulas if there is a blank space in between
\setupformulas[indentnext=auto] 

Setting up indentation inside environments

There is one case that is not taken care of by \setupindenting and the indentnext key: indentation of paragraphs inside multi-paragraph environments such as itemizes, descriptions, and enumerations. By default ConTeXt does not indent such paragraphs. The setup commands of these environments provides an indenting= key to configure the indentation behaviour of paragraphs inside these environments. This key takes the same arguments as the \setupindenting command does. An example using \setupitemgroup:

"indentnext=auto" demo

Manual indentation

No matter how careful we are with all the settings, there are some cases which cannot be taken care of by automatic indentation, and we have to tell ConTeXt how to indent. This is done with \indentation and \noindentation. The Plain TeX (and LaTeX) commands \indent and \noindent are defined in ConTeXt, but are not hooked into the indentation mechanism.

Suppose the default setup for an article is

\setupitemgroup [itemize] [indentnext=no]

Now, if we want to indent after an itemize, starting the next paragraph with \indent does not work; to get indentation we have to say \indentation. For example,

Paragraphs with hanging indention

If you want to indent paragraphs from the second line on, you can use this bit from Hans Hagen:

\starttext

\definestartstop
  [exdent]
  [before={\startnarrower[left]\setupindenting[-\leftskip,yes]},
   after=\stopnarrower]

\setuphead[section][indentnext=yes]
\section{Test}
\startexdent
\input knuth \endgraf
\stopexdent

\stoptext