LaTeX教學(xué)2.7 自定義

2.7 自定義

在LaTeX中, 很多命令和環(huán)境無法滿足我們的需要, 于是我們需要自己設(shè)計一些簡單的命令和環(huán)境, 來方便我們文章的寫作, 自定義的命令和環(huán)境會更好的服務(wù)我們自身.

2.7.1 自定義命令

定義新命令

先給出自定義命令的命令:\newcommand{<新命令>}[<參數(shù)數(shù)量>][<默認(rèn)值>]{<定義內(nèi)容>}.

它允許作者定義一條新命令, 該命令的各種必要參數(shù)和可選參數(shù)說明如下, 其中新命令兩端的花括號可以省略, 但是不建議省略.

自定義命令說明.png

新命令是一個聲明形式的命令, 通常放在導(dǎo)言中, 這樣全文都可以使用該命令, 如果放在正文中, 那么只有該命令聲明后的內(nèi)容才能使用該命令, 或者所在環(huán)境和組合之內(nèi), 即在環(huán)境中定義的命令無法在環(huán)境之外使用, 在花括號內(nèi)定義的命令同樣無法在花括號使用, 如{\newcommand{\cmdA}{a} \cmdA} \cmdA中, 花括號內(nèi)的\cmdA會正常輸出a, 而花括號外的\cmdA會報錯. 而且自定義命令的各種參數(shù)中不得含有抄錄命令\verb或抄錄環(huán)境verbatim.

自定義一條命令, 使其可以生成你自己的姓名.

    \newcommand{\myname}{Zhonghao Sun}
    \myname is a student of HIT.  \myname's sitting here to study \LaTeX. 
自定義命令-姓名示例.png

但是好像又有了點新的問題, 像我們在命令一節(jié)里講的一樣, Zhonghao Sun后面的空格又不見了, 原因應(yīng)該很明顯了, 自定義命令后的空格被當(dāng)成了命令結(jié)束的標(biāo)志從而使得Sunis中間的空格丟失, 那我們在自定義命令中主動添加一個空格不就可以了嗎长已?也不行的, 因為那樣做的話在第二句中的'前又會多出一個空格, 怎么解決呢, xspace宏包解決了這個問題, 調(diào)用宏包\usepackage{xspace}, 并將上述定義內(nèi)容改為
Zhonghao Sun\xspace
即可, 命令\xspace可以自動生成一個空格, 除非其后是標(biāo)點. 再試一下, 這個自定義命令就算完成了.

在上例中, 新命令\myname定義為自己的姓名, 每當(dāng)使用這個命令就可以生成一個名字, 對于論文排版中要大量出現(xiàn)的文字, 可以將它簡化為一個自定義命令, 提高輸入效率也防止出錯.

自定義一條帶參數(shù)的命令, 用于將部分文本轉(zhuǎn)為對應(yīng)中文字體.

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
    \newcommand{\myfont}[1]{\setCJKfamilyfont{font}{#1}\CJKfamily{font}}
    {\myfont{華文行楷} 華文行楷}
    {\myfont{方正姚體} 方正姚體}
\end{document} 
自定義命令-必要參數(shù).png

上述自定義命令中, 定義了一個必要參數(shù):字體, 用來選擇需要的字體. 下面給出一個可選參數(shù)與一個必要參數(shù)的例子:

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
    \newcommand{\myfont}[2][華文行楷]
    {\setCJKfamilyfont{CJKfont}{#1}\newfontfamily\nCJKfont{#2}\CJKfamily{CJKfont}\nCJKfont}
    \myfont[方正姚體]{Lucida Handwriting} Hello World. 這是我的字體
\end{document} 
自定義命令-帶參數(shù).png

使用可選參數(shù)可以簡化命令使其更靈活, 但是可選參數(shù)也更容易被忘記.這里我們只選取了改變字體命令來進(jìn)行舉例, 對于其他的命令也可以自行進(jìn)行嘗試.

帶星號的自定義命令:如果把自定義命令改為\newcommand*, 其不同之處就是命令中的各種參數(shù)不能超過一行, 即命令中不能含有換行符或\par, 否則會出錯.

系統(tǒng)仍然提供了一種防止同名沖突的命令:\providecommand{<新命令>}[<參數(shù)數(shù)量>][<默認(rèn)值>]{<定義內(nèi)容>}, 如此定義出來的新命令會檢查被調(diào)用的宏包提供了同名命令, 所定義的內(nèi)容將會被保存下來, 直到提供重名命令的宏包被取消, 該定義的命令才會被調(diào)用. 另外, 如果想自定義有可選子參數(shù)的命令, 可以調(diào)用keycommand宏包, 并使用命令\newkeycommand, 具體使用方法可以查看宏包文檔.

修改已有命令

如果我們對系統(tǒng)內(nèi)部的某個命令或已定義的命令的排版效果不滿意, 我們可以對其進(jìn)行修改:

\renewcommand{<已有命令>}[<參數(shù)數(shù)量>][<默認(rèn)值>]{<定義內(nèi)容>}

這個命令只能用于已有命令的修改, 而且對已有命令不要輕易將其重新定義, 因為原定義中可能隱藏著你需要而沒注意過的內(nèi)容, 如果確實需要重新定義, 應(yīng)該先查明已有命令的定義, 再進(jìn)行修改. 同樣, 修改命令也有對應(yīng)的星號形式\renewcommand*

2.7.2 自定義環(huán)境

定義新環(huán)境

如果沒有找到自己滿足的環(huán)境, 那么我們也可以自定義一個環(huán)境, 如自定義命令一樣, 自定義環(huán)境的命令如下

\newenvironment{<新環(huán)境>}[<參數(shù)數(shù)量>][<默認(rèn)值>]{<開始定義>}{<結(jié)束定義>}

然后就可以使用這個新環(huán)境了:

\begin{新環(huán)境}{參數(shù)1}{參數(shù)2}
...
\end{新環(huán)境}

新環(huán)境定義命令中的各種參數(shù)的用途如下

自定義環(huán)境說明.png

自定義一個定理環(huán)境:

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
    \newenvironment{Theorem}{\par\noindent\textbf{定理}\quad}{\par}
    \begin{Theorem}
        設(shè)可微函數(shù)……
    \end{Theorem}
\end{document}
自定義環(huán)境-定理.png

定義中的\quad是一種長度設(shè)置命令, 我們在數(shù)學(xué)式一章中會更詳細(xì)的介紹它. 開始定義中與結(jié)束定義中的的\par都是要新起一段. 的如果我們需要在某些定理的后面添加定理的名稱, 可以使用帶可選參數(shù)的自定義環(huán)境, 看下例

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
    \newenvironment{Theorem}[1][]{\par\noindent\textbf{定理}(#1)\quad}{\par}
    \begin{Theorem}[可微性定理]
        設(shè)可微函數(shù)……
    \end{Theorem}
\end{document}
自定義環(huán)境-帶參數(shù).png

我們看已完成的論文中的定理, 定義都是帶著序號的, 而如何讓這個序號也加在定理后面呢, 在下一節(jié)計數(shù)器中我們會介紹.

修改已有環(huán)境

與修改已有命令一樣, 命令為:

\renewenvrionment{<已有環(huán)境>}[<參數(shù)數(shù)量>][<默認(rèn)值>]{<開始定義>}{<結(jié)束定義>}

同樣修改已有環(huán)境和定義新命令也有帶號的形式\renewenvironment*\newenvironment*, 這些都與修改已有命令的使用方法相同.

2.7.3 多余的空格

在使用自定義命令或環(huán)境時, 可能會產(chǎn)生并不需要的空格, 如果希望消除空格的話, 可以在定義內(nèi)容或新環(huán)境的定義中分別使用以下命令:

空格刪除.png

自定義兩個引用環(huán)境, 其中第二個使用忽略空格命令, 對比兩者的排版效果.

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
    \newenvironment{QuoteA}{``}{''}
    \newenvironment{QuoteB}{``\ignorespaces}{\unskip''\ignorespacesafterend}
    當(dāng)設(shè)備處于\begin{QuoteA} 休眠 \end{QuoteA}時\par
    當(dāng)設(shè)備處于\begin{QuoteB} 休眠 \end{QuoteB}時
\end{document}
空格刪除示例.png

在后面也會有自定義的情況, 比如自定義計數(shù)器等, 在后面對應(yīng)的章節(jié)我們會一一介紹.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子意乓,更是在濱河造成了極大的恐慌扛吞,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異八秃,居然都是意外死亡垃它,警方通過查閱死者的電腦和手機(jī)鲜屏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來国拇,“玉大人洛史,你說我怎么就攤上這事〗戳撸” “怎么了也殖?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵务热,是天一觀的道長。 經(jīng)常有香客問我崎岂,道長捆毫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任冲甘,我火速辦了婚禮绩卤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘损合。我一直安慰自己省艳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布嫁审。 她就那樣靜靜地躺著跋炕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪律适。 梳的紋絲不亂的頭發(fā)上辐烂,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音捂贿,去河邊找鬼纠修。 笑死,一個胖子當(dāng)著我的面吹牛厂僧,可吹牛的內(nèi)容都是我干的扣草。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辰妙!你這毒婦竟也來了鹰祸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤密浑,失蹤者是張志新(化名)和其女友劉穎蛙婴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尔破,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡街图,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了懒构。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片餐济。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胆剧,靈堂內(nèi)的尸體忽然破棺而出颤介,到底是詐尸還是另有隱情,我是刑警寧澤赞赖,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布滚朵,位于F島的核電站,受9級特大地震影響前域,放射性物質(zhì)發(fā)生泄漏辕近。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一匿垄、第九天 我趴在偏房一處隱蔽的房頂上張望移宅。 院中可真熱鬧,春花似錦漏峰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽靖苇。三九已至,卻和暖如春贤壁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脾拆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留名船,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓包帚,卻偏偏與公主長得像运吓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拘哨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容