LaTeX中定义新命令和环境
LaTeX中定義新命令和環境
文章目錄
- 一、newcommand命令
-
- 1、簡單字符串替換
- 2、指定參數
- 3、指定參數默認值
- 二、renewcommand命令
- 三、newenvironment定義新環境
- 四、newenvironment與newcommand命令嵌套使用
- 五、renewenvironment重定義已有環境
- 六、總結和代碼
-
- 1、總結
- 2、代碼
這一講中,我們主要討論LaTeX中命令和環境的定義與重定義的方法。
一般都在導言區進行命令的定義和重定義。
一、newcommand命令
newcommand用于定義一個命令,需要指定新定義的命令的名稱,參數個數,默認參數值,以及具體定義。
1、簡單字符串替換
例如,
定義一個不帶參數的PRC命令(PRC是自己取的)。
設該命令的具體定義是“People’s Republic of China”(具體定義是根據自己的需要寫噠),并對“China”執行emphasize 強調命令。
這個命令實際上是一個簡單的字符串替換命令。
定義好了之后,我們就可以在正文區使用PRC這個命令。
直接在正文區寫上“\PRC”即可引用此命令。
編譯并查看結果:
顯然,只需要修改PRC命令的定義,就可以修改排版結果。
而在正文區,只需要使用PRC命令,并不需要做出任何修改。
這就是LaTeX排版中內容與格式分離的基本思想。
2、指定參數
我們也可以為newcommand命令定義的新命令指定參數。
參數個數最多是9個。用1~9來表示。
用諸如#1,#2,…,#9的方式使用各參數。
例如:
用**#1表示第一個參數,用#2**表示第二個參數。
(1)第一個例子,如圖:
在正文區,使用定義的新命令。
編譯運行查看結果:
(2)第二個例子,如圖:
在正文區,使用定義的新命令。
編譯運行查看結果:
如果定義的命令需要參數,則使用該命令時需要為其提供必要的參數。
例如,在loves命令中,“貓兒”對應“#1”參數,“魚”對應“#2”參數。
在hatedby命令中,“貓兒”對應“#1”參數,“蘿卜”對應“#2”參數。
3、指定參數默認值
還可以為newcommand命令定義的命令的參數指定默認值。
注意,只能為第一個參數指定默認值。
此時第一個參數稱為該命令的可選參數。
在使用該命令時,如果需要為第一個參數提供實際參數,則該參數需要用方括號指定。
例如,
定義一個新命令love,有三個參數,第一個參數默認值是“喜歡”,接下來是該命令的具體定義。
可以用不同的方式使用該命令。
查看結果:
解釋:
(1)在love的第一種使用方式中,只提供了兩個參數。此處的“貓兒”對應“#2”參數,“魚”對應“#3”參數。“#1”參數取默認值“喜歡”。
(2)在love的第二種使用方式中,提供了三個參數。此處的“貓兒”對應“#2”參數,“魚”對應“#3”參數。方括號[]指定的可選參數“最愛”,對應于“#1”,從而取代了該參數的默認值“喜歡”。
二、renewcommand命令
我們也可以使用renewcommand重新定義已有的命令。
renewcommand命令與newcommand命令的用法完全一致,唯一的區別是renewcommand只能作用于已有的命令!
例如,可以將abstractname重新定義為“內容簡介”。
該命令會被
abstract環境自動使用。
在正文區寫上:
編譯運行并查看結果:
注意,其標題為重新定義的abstractname命令的內容。
我們可以再次更改。
正文區不用動,咱們再次查看結果:
三、newenvironment定義新環境
newenvironment命令與newcommand命令類似。
需要指定環境名稱,參數個數,首參數默認值,環境前定義,環境后定義。
例如,
定義一個新的摘要環境myabstract,它有一個可選參數,其默認值為“摘要”。
在“環境前定義”中,用small命令設定環境中內容的字號。
并指定**#1**參數的排版方式。
用begin命令開始quotation環境。
在“環境后定義”中,用end命令結束quotation環境。
注意,在“環境前定義”和“環境后定義”兩端,使用大括號。
在正文區,用begin和end命令,使用自定義的myabstract環境。
編譯運行并查看結果:
當然,也可以為myabstract環境指定可選參數。
查看結果:
在此,“我的摘要”對應**#1**參數,并取代了第一個參數的默認值“摘要”。
四、newenvironment與newcommand命令嵌套使用
我們可以在newenvironment的環境前定義中,用newcommand定義一個使用newenvironment參數的命令,并將該新命令應用于環境后定義中,以解決環境后定義中無法使用參數的問題。
如圖:
此處,“環境前定義”中的quotesource命令使用了新環境quotation的**#1**參數。
并在“環境后定義”中,使用了新命令。
在正文區,使用begin和end命令,使用新定義的環境。
編譯運行并查看結果:
注意,新環境Quotation的必選參數“易…乾”對應**#1**參數,并傳遞到quotesource命令中。
而且,在“環境后定義”中,使用了quotesource命令,
五、renewenvironment重定義已有環境
和newenvironment用法一致,但前提是要有已有環境。
六、總結和代碼
1、總結
這一講,我們主要討論了命令和環境的定義與重定義,使用命令和環境的定義和重定義,達到內容與格式分離的目標。
這是LaTeX排版中的一個重要理念。
在LaTeX排版中,一定要避免直接在正文中使用原始的和基礎的排版命令。
當然,還可以定義和重定義帶星號的短命令與環境。
詳情請大家查閱相關資料。
2、代碼
tex文件代碼:
%導言區
\documentclass{ctexart} %ctexbook,ctexrep%newcommand--定義命令
%命令只能由字母組成,不能以\end開頭
%\newcommand<命令>[<參數個數>][<首參數默認值>]{<具體定義>}%\newcommand可以是簡單字符串替換,例如:
%使用\PRC相當于People's Republic of \emph{China} 這一串內容
\newcommand\PRC{People's Republic of \emph{China}}%newcommand也可以使用參數
%參數個數可以從1到9,使用時用 #1,#2,...,#9表示
\newcommand\loves[2]{#1 喜歡 #2}
\newcommand\hatedby[2]{#2 不受 #1 喜歡}%\newcommand的參數也可以有默認值
%指定參數個數的同時,指定了首個參數的默認值,那么這個命令的第一個參數
%就成為可選的參數(需要使用中括號指定)
\newcommand\love[3][喜歡]{#2#1#3}%renewcommand--重定義命令
%與\newcommand命令作用和用法相同,但只能用于已有命令。
%\renewcommand<命令>[<參數個數>][<首參數默認值>]{<具體定義>}
\renewcommand\abstractname{簡介}%定義和重定義環境
%\newenvironment{<環境名稱>}[<參數個數>][<首參數默認值>]
% {<環境前定義>}
% {<環境后定義>}%為book類中定義摘要(abstract)環境
\newenvironment{myabstract}[1][摘要]%
{\small\begin{center} \bfseries #1 \end{center} %\begin{quotation}} %{\end{quotation}}%環境參數只有<環境前定義>中可以使用參數,
%<環境后定義>中不能再使用環境參數。
%如果需要,可以先把前面得到的參數保存在一個命令中,在后面使用:
\newenvironment{Quotation}[1] %
{\newcommand\quotesource{#1} %\begin{quotation}} %{\par \hfill--- 《\textit{\quotesource}》%\end{quotation}}%\renewenvironment{<環境名稱>}[<參數個數>][<首參數默認值>]
% {<環境前定義>}
% {<環境后定義>}%正文區(文稿區)
\begin{document}\PRC\loves{貓兒}{魚}\hatedby{貓兒}{蘿卜}\love{貓兒}{魚}\love[最愛]{貓兒}{魚}\begin{abstract}這是一段摘要...\end{abstract}\begin{myabstract}[我的摘要]這是一段自定義格式的摘要...\end{myabstract}\begin{Quotation}{易$ \cdots $乾}初九,潛龍勿用。\end{Quotation}\end{document}
總結
以上是生活随笔為你收集整理的LaTeX中定义新命令和环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何以大数据的JAX-RS响应的形式将J
- 下一篇: 景观设计主题命名_好听的景观名字