24

Pardon the naive beginner question.

In a command like: \textcolor[HTML]{4C7045}{dark green text}, or \documentclass[12pt]{article}, or \begin{figure}[htb], why are some arguments surrounded by [] and some by {}?

The above examples are all for LaTeX, but this doesn't seem to be LaTeX-specific.

4
  • 4
    This really is LaTeX-specific: the [] optional convention really doesn't apply to plain, ConTeXt or other formats.
    – Joseph Wright
    Jun 2, 2014 at 8:41
  • Is \newcommand from LaTeX, then? How is it defined?
    – user253751
    Jun 2, 2014 at 8:42
  • 1
    @immbis Yes, \newcommand is LaTeX-specific: it's wrapper around the \def primitive and depending on the exact set up does various things (optional arguments, for example, require more than one TeX macro for implementation).
    – Joseph Wright
    Jun 2, 2014 at 8:46
  • 1
    There is also <n>; used, for example, in beamer.
    – gerrit
    Jun 2, 2014 at 14:41

2 Answers 2

17

In TeX (and LaTeX and ConTeXt) braces ({}) are used as grouping characters.

In LaTeX, brackets ([]) are conventionally used for optional arguments, whereas braces are used for mandatory arguments.

In ConTeXt, braces are used for text that is to be typeset, whereas brackets are used for 'setup' text such as option lists.

3
  • 1
    Nota bene: xargs (and probably others) make it easy to screw the conventions in LaTeX.
    – Raphael
    Jun 2, 2014 at 19:30
  • @Raphael Of course: the answer doe say 'conventionally'. Notice that xparse, written by the team, does allow the creation of non-standard input syntaxes but the idea is that it's primarily for creating standard ones: \foo*[<opt>]{<mandatory-1>}.
    – Joseph Wright
    Jun 4, 2014 at 9:10
  • I have the impression this convenction is very often neglected, and correct me if I'm wrong. A notable "exception" being the title of a frame in beamer, which is optional and still is inside curly braces (\begin{frame}{Frame title}). And this without metionnning the fact that---again, correct me if I'm wrong---there seems to be no clear convention about what goes first: the curly braces or the square brackets. You find as much \[...]{...} as \{...}[...]. I sometimes think TeX is a mess, but perhaps this is due to my ignorance, for sure.
    – Hal
    May 21, 2021 at 8:21
9

In general everything between [...] is optional and everything between {...} is mandatory. However, it depends to the author of the macros what will be optional and what will be mandatory. There are a lot of other possibilities.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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