在Latex中自定義命令

2021-09-29 04:13:14 字數 1353 閱讀 1921

newcommand有如下的三種使用方式:

這是newcommand最簡單的使用方式,比如嫌每次輸入「helloworld」很麻煩,可以定義命令:

\newcommand\prc

以後就可以通過輸入命令\prc來輸入「helloworld」了。

定義有引數命令的通用形式為:

\newcommand\cmd[引數個數]

方括號中定義了命令的引數個數(最多9個),在命令的定義中,可以使用#1引用第乙個引數,#2引用第二個引數,以此類推,比如:

\newcommand\answer[1]

\newcommand\parabola[3]}

在定義帶引數的命令時,latex也允許其中的乙個引數有預設值,即在呼叫命令時可以不給出這個引數,直接取用該引數的預設值。這個帶預設值的引數,在latex中永遠使用#1來引用。定義帶預設值引數的命令的通用形式為:

\newcommand\cmd[引數個數][引數的預設值]

需要特別注意的是,當呼叫這個命令時,使用{}形式給出的引數列表要比定義命令時少乙個—帶預設值的引數不能以{}的形式給出。要麼使用引數的預設值,這樣就不需要給出#1這個引數;要麼使用在其他引數前面重新定義預設值。

顯然,帶預設值引數的命令,至少有乙個引數。

下面是乙個具有乙個引數且有預設值的命令:

\newcommand\lvec[1][n]}}

\lvec\par%使用引數的預設值n

\lvec[i]%重新定義引數的預設值為i

下面是乙個具有2個引數,其中#1為帶預設值的引數的命令:

\newcommand\lvec[2][n]}}

\lvec\par

\lvec[i]

\lvec[2][n]的輸出和\lvec[1][n]是一樣的,但是顯然\lvec[2][n]更靈活一些。

下面使用帶預設值的引數重新定義拋物線:

\newcommand\parabola[3][x]^2 + #3#1 + #4}}

有程式設計經驗的童鞋很容易寫出下面的**:

\newcommand\str1

\newcommand\str2

但是卻不小心掉進了tex的「陷阱」!latex的命令和tex的命令一樣,只允許普通字元(26個字母的大小寫形式)作為命令的名稱,不允許出現數字、特殊字元等。當然,這不是乙個不可逾越的鴻溝。本質上來說,只要catcode=11的字元都可以作為命令的名稱,因此只要修改字元的catcode為11,這個字元就可以出現在命令的名稱中。latex的內部命令中,\makeatletter命令的實質就是修改字元@的catcode為11,這樣@就可以出現在命令名稱中了。\makeatother重新修改@的catcode為12,不允許@出現在命令的名字中。

Latex 自定義命令與環境 箱子

自定義命令與環境 箱子 導言區 documentclass a4 usepackage usepackage 匯入這個巨集包,就可以支援中文 usepackage usepackage 數學粗體所需要的的巨集包 usepackage 縮放箱子 usepackage 5.1自定義命令與環境 自定義命令...

Latex之自定義頁首頁尾

定義頁首頁尾要用到 pagestyle其中latex內建了四種 empty 沒有頁首和頁尾 plain 沒有頁首,頁尾中部放置頁碼。headings 沒有頁尾,頁首包含章節的標題和頁碼。myheadings 沒有頁尾,頁首頁碼和使用者所定義的資訊。article 預設使用 plain 格式,而 bo...

在angularJS中自定義指令

mymodule.directive namespacedirectivename function factory injectables 定義與其他指令進行互動的介面函式 require string,指定需要依賴的其他指令 link function postlink scope,ieleme...