Własne polecenia z \newcommand
Wpisz \newcommand{\name}{replacement} w preambule, z [n] dla argumentów od #1 do #n; od tego miejsca \name jest zastępowane swoją definicją, zarówno w tekście, jak i w matematyce.
Polecenie bez argumentów
Własne polecenie oszczędza pisania i pozwala zachować spójną notację. Zdefiniuj je raz w preambule i używaj w dowolnym miejscu.
Skróty dla zbiorów i nazwy produktu
\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}Argumenty i wartość domyślna
[n] po nazwie określa, ile argumentów przyjmuje polecenie; wewnątrz definicji są to #1, #2 i tak dalej. Drugi nawias kwadratowy nadaje pierwszemu argumentowi wartość domyślną, dzięki czemu staje się on opcjonalny.
Argumenty i opcjonalny pierwszy 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}Zmiana istniejącego polecenia
\renewcommand zastępuje polecenie, które już istnieje, a \providecommand definiuje polecenie tylko wtedy, gdy jeszcze nie istnieje. \newcommand dla zajętej nazwy jest w instalacji TeX błędem; w takim przypadku użyj \renewcommand.
\renewcommand i \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}Nazwy operatorów
Nazwy funkcji, takie jak sin i log, są składane prostym krojem z właściwymi odstępami. \DeclareMathOperator (amsmath) tworzy własne operatory; wersja z gwiazdką umieszcza w wzorach wystawionych granice pod spodem, tak jak \max.
\DeclareMathOperator i jego wersja z gwiazdką
\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}Własne środowiska
\newenvironment{name}[n]{before}{after} definiuje środowisko: kod „before” wykonuje się przy \begin{name}, a kod „after” przy \end{name}. Argumentów można używać w części „before”.
Środowisko z argumentem
\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}Co działa
| Polecenie | W Scissor LaTeX | Uwagi |
|---|---|---|
\newcommand, \renewcommand, \providecommand | Działa | Do 9 argumentów, opcjonalny pierwszy argument z wartością domyślną. Także wersje z gwiazdką. |
\DeclareRobustCommand | Działa | Jak \newcommand. |
\newenvironment, \renewenvironment | Działa | Z argumentami i wartością domyślną. |
\DeclareMathOperator, \DeclareMathOperator* | Działa | |
\def\name{...}, \gdef, \edef, \xdef | Częściowo | Proste definicje i argumenty w stylu #1 działają; parametry z ogranicznikami, takie jak \def\pt(#1,#2){...}, nie są dopasowywane i dają zniekształcony wynik. |
\let\new\old | Działa | |
\NewDocumentCommand, \RenewDocumentCommand (xparse) | Nieobsługiwane | Definicja jest pomijana, a polecenie jest zgłaszane jako nieznane tam, gdzie zostało użyte. |
\DeclarePairedDelimiter (mathtools) | Działa | |
\makeatletter, \makeatother | Akceptowane | Polecenia z @ w nazwie nie są wykonywane. |
Definicje są rozwijane przed składem, więc polecenia można użyć w tekście, w matematyce, w podpisach i w tytułach rozdziałów. Aby zapobiec pętlom, rozwijanie zatrzymuje się po osiągnięciu limitu bezpieczeństwa, z komunikatem w karcie Problemy.
Polecenia xparse
\NewDocumentCommand z pakietu xparse nie jest odczytywane. Definicja jest pomijana, a w miejscu użycia polecenia jego nazwa jest pomijana z komunikatem, podczas gdy jego argumenty zostają w tekście.
\NewDocumentCommand nie jest obsługiwane
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\pair}{m m}{(#1, #2)}
\begin{document}
The pair \pair{a}{b} loses its parentheses and comma.
\end{document}Karta Problemy: Skipped 1 unknown command: \pair
Aby to naprawić, zapisz to samo polecenie jako \newcommand{\pair}[2]{(#1, #2)}. W przypadku argumentów opcjonalnych \newcommand z wartością domyślną wystarcza w typowych sytuacjach.
Czym różni się od instalacji TeX
Dokumentacja pakietów xparse i mathtools jest dostępna w CTAN: xparse, mathtools. O operatorach i nazwach funkcji przeczytasz też na stronie Sumy, całki i nazwy funkcji.
Pytania i odpowiedzi
Jak zdefiniować nowe polecenie w LaTeX?
Wpisz \newcommand{\name}{text} w preambule. Dodaj [2] po nazwie, aby uzyskać dwa argumenty, i użyj #1 oraz #2 w tekście.
Czym różni się \newcommand od \def?
\newcommand sprawdza, czy nazwa jest wolna, i obsługuje argument opcjonalny. \def to niskopoziomowe polecenie TeX; nadpisuje bez pytania. Lepiej używać \newcommand i \renewcommand.
Czy \NewDocumentCommand działa w Scissor LaTeX?
Nie. Przepisz takie polecenia za pomocą \newcommand, które obsługuje argumenty obowiązkowe i jeden argument opcjonalny.
Każdy przykład na tej stronie jest składany przez Scissor LaTeX podczas budowania witryny. Ostatnia aktualizacja: 2026-11-07.