Власні команди з \newcommand
Напишіть \newcommand{\name}{replacement} у преамбулі, з [n] для аргументів від #1 до #n; відтоді \name замінюється своїм визначенням — і в тексті, і в математиці.
Команда без аргументів
Команда заощаджує набір і тримає позначення узгодженими. Визначте її один раз у преамбулі й використовуйте будь-де.
Скорочення для множин і назви продукту
\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}Аргументи й значення за замовчуванням
[n] після назви вказує, скільки аргументів приймає команда; усередині визначення вони позначаються #1, #2 і так далі. Друга пара квадратних дужок задає першому аргументу значення за замовчуванням, і він стає необов'язковим.
Аргументи й необов'язковий перший аргумент
\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}Зміна наявної команди
\renewcommand замінює команду, яка вже існує, а \providecommand визначає команду лише тоді, коли її ще немає. \newcommand для зайнятої назви в інсталяції TeX є помилкою; у такому разі використовуйте \renewcommand.
\renewcommand і \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}Назви операторів
Назви функцій, як-от sin і log, набираються прямим шрифтом із правильними відступами. \DeclareMathOperator (amsmath) створює власні; форма із зірочкою ставить межі під оператором у формулах окремим рядком, як у \max.
\DeclareMathOperator і його форма із зірочкою
\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}Власні середовища
\newenvironment{name}[n]{before}{after} визначає середовище: код «before» виконується на \begin{name}, а код «after» — на \end{name}. Аргументи можна використовувати в частині «before».
Середовище з аргументом
\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}Що працює
| Команда | У Scissor LaTeX | Примітки |
|---|---|---|
\newcommand, \renewcommand, \providecommand | Працює | До 9 аргументів, необов'язковий перший аргумент зі значенням за замовчуванням. Форми із зірочкою теж. |
\DeclareRobustCommand | Працює | Як \newcommand. |
\newenvironment, \renewenvironment | Працює | З аргументами й значенням за замовчуванням. |
\DeclareMathOperator, \DeclareMathOperator* | Працює | |
\def\name{...}, \gdef, \edef, \xdef | Частково | Прості визначення й аргументи у стилі #1 працюють; параметри з роздільниками, як-от \def\pt(#1,#2){...}, не розпізнаються й дають спотворений результат. |
\let\new\old | Працює | |
\NewDocumentCommand, \RenewDocumentCommand (xparse) | Не підтримується | Визначення відкидається, а там, де команду використано, про неї повідомляється як про невідому. |
\DeclarePairedDelimiter (mathtools) | Працює | |
\makeatletter, \makeatother | Приймається | Команди з @ у назві не виконуються. |
Визначення розгортаються перед версткою, тож команду можна використовувати в тексті, у математиці, у підписах і в заголовках розділів. Щоб уникнути зациклення, розгортання зупиняється на межі безпеки з повідомленням на вкладці «Проблеми».
Команди xparse
\NewDocumentCommand з xparse не читається. Визначення відкидається, а там, де команду використано, її назву пропущено з повідомленням, тоді як аргументи лишаються в тексті.
\NewDocumentCommand не підтримується
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\pair}{m m}{(#1, #2)}
\begin{document}
The pair \pair{a}{b} loses its parentheses and comma.
\end{document}Вкладка «Проблеми»: Skipped 1 unknown command: \pair
Щоб це виправити, запишіть ту саму команду як \newcommand{\pair}[2]{(#1, #2)}. Для необов'язкових аргументів типовий випадок покриває \newcommand зі значенням за замовчуванням.
Чим це відрізняється від інсталяції TeX
Посібники xparse і mathtools є на CTAN: xparse, mathtools. Про оператори й назви функцій див. також Суми, інтеграли й назви функцій.
Запитання й відповіді
Як визначити нову команду в LaTeX?
Напишіть \newcommand{\name}{text} у преамбулі. Додайте [2] після назви для двох аргументів і використовуйте #1 і #2 у тексті.
Яка різниця між \newcommand і \def?
\newcommand перевіряє, що назва вільна, і підтримує необов'язковий аргумент. \def — низькорівнева команда TeX; вона перезаписує без запитань. Надавайте перевагу \newcommand і \renewcommand.
Чи працює \NewDocumentCommand у Scissor LaTeX?
Ні. Перепишіть такі команди через \newcommand, яка покриває обов'язкові аргументи й один необов'язковий.
Кожен приклад на цій сторінці верстається в Scissor LaTeX під час збирання сайту. Оновлено 2026-11-07.