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