Je eigen commando's met \newcommand
Schrijf \newcommand{\naam}{vervanging} in de preambule, met [n] voor de argumenten #1 tot #n; vanaf dat moment wordt \naam vervangen door zijn definitie, in tekst en in wiskunde.
Een commando zonder argumenten
Een commando bespaart typwerk en houdt je notatie consistent. Definieer het één keer in de preambule en gebruik het overal.
Afkortingen voor verzamelingen en een productnaam
\documentclass{article}
\usepackage{amssymb}
\newcommand{\R}{\mathbb{R}}
\newcommand{\product}{Scissor LaTeX}
\begin{document}
Every $x \in \R$ has a square $x^2 \ge 0$.
This page was typeset by \product.
\end{document}Argumenten en een standaardwaarde
[n] na de naam geeft aan hoeveel argumenten het commando heeft; in de definitie heten ze #1, #2 enzovoort. Een tweede paar vierkante haken geeft het eerste argument een standaardwaarde, waardoor het optioneel wordt.
Argumenten en een optioneel eerste argument
\documentclass{article}
\newcommand{\vect}[1]{\mathbf{#1}}
\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}
\newcommand{\greet}[2][Hello]{#1, #2!}
\begin{document}
The length of $\vect{v}$ is $\norm{\vect{v}}$.
\greet{Erika} \greet[Good morning]{John}
\end{document}Een bestaand commando wijzigen
\renewcommand vervangt een commando dat al bestaat, en \providecommand definieert er een alleen als het nog niet bestaat. \newcommand voor een naam die al in gebruik is, is in een TeX-installatie een fout; gebruik dan \renewcommand.
\renewcommand en \providecommand
\documentclass{article}
\renewcommand{\emph}[1]{\textbf{#1}}
\providecommand{\R}{\mathbb{R}}
\begin{document}
This is \emph{emphasised} in bold now, and $\R$ is defined.
\end{document}Operatornamen
Functienamen zoals sin en log worden rechtop gezet, met de juiste witruimte. Met \DeclareMathOperator (amsmath) maak je je eigen; de vorm met sterretje zet in formules op een eigen regel de grenzen eronder, zoals bij \max.
\DeclareMathOperator en de vorm met sterretje
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator*{\argmax}{arg\,max}
\begin{document}
\[
\Var(X) = \mathbb{E}\left[(X - \mu)^2\right],
\qquad
\hat{\theta} = \argmax_{\theta} L(\theta)
\]
\end{document}Je eigen omgevingen
\newenvironment{naam}[n]{ervoor}{erna} definieert een omgeving: de code "ervoor" wordt uitgevoerd bij \begin{naam} en de code "erna" bij \end{naam}. Argumenten kun je in het deel "ervoor" gebruiken.
Een omgeving met een argument
\documentclass{article}
\newenvironment{task}[1]
{\par\noindent\textbf{Task #1.}\ }
{\par}
\begin{document}
\begin{task}{44}
Measure the rainfall every morning.
\end{task}
\end{document}Wat werkt
| Commando | In Scissor LaTeX | Opmerkingen |
|---|---|---|
\newcommand, \renewcommand, \providecommand | Werkt | Tot 9 argumenten, een optioneel eerste argument met een standaardwaarde. Ook de vormen met sterretje. |
\DeclareRobustCommand | Werkt | Zoals \newcommand. |
\newenvironment, \renewenvironment | Werkt | Met argumenten en een standaardwaarde. |
\DeclareMathOperator, \DeclareMathOperator* | Werkt | |
\def\name{...}, \gdef, \edef, \xdef | Gedeeltelijk | Eenvoudige definities en argumenten in de stijl #1 werken; begrensde parameters zoals \def\pt(#1,#2){...} worden niet herkend en geven verminkte uitvoer. |
\let\new\old | Werkt | |
\NewDocumentCommand, \RenewDocumentCommand (xparse) | Niet ondersteund | De definitie wordt weggelaten en het commando wordt als onbekend gemeld waar het wordt gebruikt. |
\DeclarePairedDelimiter (mathtools) | Werkt | |
\makeatletter, \makeatother | Geaccepteerd | Commando's met @ in hun naam worden niet uitgevoerd. |
Definities worden vóór het zetten uitgevouwen, dus een commando kun je gebruiken in tekst, in wiskunde, in bijschriften en in koppen van secties. Ter bescherming tegen lussen stopt het uitvouwen bij een veiligheidslimiet, met een melding in het tabblad Problemen.
xparse-commando's
\NewDocumentCommand uit xparse wordt niet gelezen. De definitie wordt weggelaten, en waar het commando wordt gebruikt, wordt de naam met een melding overgeslagen terwijl de argumenten in de tekst blijven staan.
\NewDocumentCommand wordt niet ondersteund
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\pair}{m m}{(#1, #2)}
\begin{document}
The pair \pair{a}{b} loses its parentheses and comma.
\end{document}Tabblad Problemen: Skipped 1 unknown command: \pair
Om dit op te lossen schrijf je hetzelfde commando met \newcommand{\pair}[2]{(#1, #2)}. Voor optionele argumenten dekt \newcommand met een standaardwaarde het gewone geval.
Wat anders is dan in een TeX-installatie
De handleidingen van xparse en mathtools staan op CTAN: xparse, mathtools. Zie voor operatoren en functienamen ook Sommen, integralen en functienamen.
Vragen en antwoorden
Hoe definieer ik een nieuw commando in LaTeX?
Schrijf \newcommand{\naam}{tekst} in de preambule. Zet [2] na de naam voor twee argumenten en gebruik #1 en #2 in de tekst.
Wat is het verschil tussen \newcommand en \def?
\newcommand controleert of de naam vrij is en ondersteunt een optioneel argument. \def is het TeX-commando op laag niveau; het overschrijft zonder te vragen. Gebruik bij voorkeur \newcommand en \renewcommand.
Werkt \NewDocumentCommand in Scissor LaTeX?
Nee. Herschrijf zulke commando's met \newcommand, dat verplichte argumenten en één optioneel argument dekt.
Elk voorbeeld op deze pagina wordt door Scissor LaTeX gezet wanneer de site wordt gebouwd. Laatst bijgewerkt op 2026-11-07.