דילוג לתוכן

פקודות משלך עם \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}
סודר על ידי Scissor LaTeX: קיצורים לקבוצות ולשם של מוצר

ארגומנטים וערך ברירת מחדל

[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.