ข้ามไปยังเนื้อหา

คำสั่งของคุณเองด้วย \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