LaTeX2e類和包的設計(二)

2021-08-22 05:26:52 字數 4984 閱讀 6492

latex2e類和包的設計(二)

繼續說明如何編寫class和package。

二、類和包書寫命令

1) 檔案標識命令

/needstexformat[release-date]

此命令告訴tex,本檔案由format-name格式的tex系統進行處理。

release-date用來指定使用格式的版本日期。

/providesclass[release-info]

/providespackage[release-info]

表示本檔案包含文件類class-name和包package-name的定義。

release-info表示類或包的說明資訊。格式如下:

(1)包版本日期yyyy/mm/dd;

(2)說明文字,可包括版本號。

可通過/listfiles命令顯示release-info的資訊。

/providesfile[release-info]

file-name必須為檔案全名,包括副檔名;此命令用來宣告除主類和包檔案以外的檔案。

2)檔案裝入命令

在類或包檔案中裝入別的包:

/requirepackage[options-list][release-info]

/requirepackagewithoptions[release-info]

/loadclass[options-list][release-info]

/loadclasswithoptions[release-info]

每個類檔案中最多只能使用一次,且只能在類檔案中使用。

3)可選項宣告命令

/declareoption

使option-name變成所在包或類的乙個可選項;code引數是當使用者使用了該可選項時要執行的**,可包含任何合法的latex2e結構。

/declareoption*

設定「預設可選項**」,指當使用者使用的可選項在類或包中沒有顯式宣告時,系統執行該命令的code引數。code引數可以包含任何合法的latex2e結構。

4)可選項**中使用的命令

在code引數中使用的命令:

/currentoption

代表使用者指定的當前可選項

/optionnotused

將使用者指定的當前可選項新增到「未使用可選項」列表。

/passoptionstopackage

將optons-list引數中列出的可選項(不止乙個時用逗號隔開)傳遞給包package-name,即此後的/requirepackage或/usepackage命令可以使用的可選項中包含了option-list中的可選項。

/passoptionstoclass

注:/requirepackagewithoptions命令同/requirepackage命令相似,但前者在裝入指定的包時所使用的可選項列表總是同當前類或包開啟時所使用的可選項列表完全相同,而不使用明確給出或由/passoptionstopackage命令傳遞來的可選項。

/loadclasswithoptions的主要目的是允許乙個類簡單地繼承別的類的特性,如命令/loadclasswithoptions同控制序列:

/declareoption*}

/processoptions/relax

/loadclass

的作用相同,但使用/loadclasswithoptions命令要簡單得多,執行也快些。如果類宣告了自己的可選項,則兩者的區別就大了。如:

(1)/declareoption

/processoptions/relax

/loadclasswithoptions

(2)/declareoption

/declareoption*}

/processoptions/relax

/loadclass

序列(1)很好;序列(2)中article被裝入時根本接收不到landscape可選項,因為只有預設的可選項傳遞給了article,而landscape是有顯示宣告的可選項,不在傳遞之列。

5)**延遲執行命令

/atendofclass

/atendofpackage

主要用於/declareoption或/declareoption*命令的引數中間,將code**暫時內部儲存,等到當前類或包處理完畢後再執行code**。命令可多次使用。

/atbegindocument

/atenddocument

/atbegindocument命令將code**暫時內部儲存,等到latex執行/begin和/end命令時再執行。

/atenddocument命令的code引數將在/end命令開始執行、最終頁面尚未完成、剩下的可浮動環境還沒有處理的時候得到執行。如果code中的某些**需要在頁面和可浮動環境都已經完成排版任務之後才執行,那麼這些**之前必須插入一條/clearpage命令。

/atbegindvi

此命令將specials引數儲存在乙個註冊盒子裡並寫入.dvi檔案中文件首頁輸出開始處。引數中不能帶任何排版內容進入.dvi檔案。命令可多次使用。

6)可選項處理命令

/processoptions

將執行每個使用的可選項在宣告時設定的處理**。在類檔案和包檔案中的執行過程和結果略有不同。

可選項分兩種:區域性可選項和全域性可選項。

區域性可選項:指那些在/passoptionstopackage命令、/usepackage[options]命令或/requirepackage[options]命令的options引數中明確指定的可選項。

全域性可選項:指使用者在/documentclass[options]命令的options引數中指定的,除了區域性可選項之外的所有可選項。

(1)在包檔案中使用

(2)在類檔案中使用

在類檔案中使用同在包檔案中,只是所有的可選項都當作區域性可選項,另外/declareoption*的預設值是/optionnotused而不是出錯。

/processoptions*/@options

執行過程同/processoptions,但是可選項的處理順序不是按照在類或包中的宣告順序進行,而是由命令呼叫時的options引數指定。

/exceuteoptions

options-list引數的每個可選項,按照順序依次執行一下/ds@option命令。使用這條命令可在緊靠/processoptions命令前面的地方提供乙個「預設可選項列表」。

7)檔案操作命令

/iffileexists

檢測乙個檔案是否存在。存在則執行true引數給出的**;不存在則執行false引數給出的**。

/inputiffileexists

如果file-name檔案存在,將執行true引數給出的**並馬上裝入該檔案;如果不存在,則執行false引數給出的**。

8)報告錯誤命令

/classerror

/packageerror

用來產生錯誤資訊,出錯時將顯示error-text引數給出的錯誤資訊以及?提示符,如果使用者敲擊h鍵,系統將顯示help-text引數指定的幫助文字。在errror-text和help-text引數中,可以使用/protect命令來終止當前出錯命令的進一步展開;可以使用/messagebreak命令使顯示內容換行;使用/space命令輸出空格。

如:/newcommand

/packageerror

將產生如下的輸出結果:

!package ethel error: your hovercraft is full of eels,

(ethel) and /foo is foo.

see the ethel package documentation for explanation.

按下h鍵,再顯示:

oh dear! something's gone wrong.

try typing to proceed, ignoring /foo.

/classwarning

/packagewarning

/classwarningnoline

/packagewarningnoline

在螢幕上顯示warning-text引數所給的警告資訊:其中,第1、2條將顯示警告發生處的行號,而第3、4條命令不顯示行號。

/classinfo

/packageinfo

將info-text引數所給資訊寫進log檔案(包括行號)。

在warning-text和info-text引數中,可使用/protect命令來終止當前出錯命令的進一步展開,可使用/messagebreak命令使顯示內容換行,使用/space命令輸出空格。

9)定義牢固命令

牢固命令:指該命令可以作為其它命令的引數使用,而前面無需使用/protect字首命令。

/declarerobustcommand[num][default][definition]

/declarerobustcommand*[num][default][definition]

使用這兩個命令既可以定義新命令,也可以重新定義已有的命令。

如:/declarerobustcommand[2][n]/ldots#1_%

/else

/packagewarning%

/fi}

/checkcommand [num][default]

/checkcommand*[num][default]

檢查cmd命令的當前定義是否未definition引數所給出的那樣,如果不同,導致出錯。

10)其它雜類命令

布局參量

/*****height

/*****width

紙張的實際尺寸,而不象/textwidth和/textheight命令那樣只是標註內部主文件區的大小。

大小寫字元轉換命令

/uppercase

/lowercase

實現字母的大小寫轉換。不能轉換由某些命令(如/ae或/aa)產生的特殊字元。

解決這個問題,用以下命令:

/makeuppercase

/makelowercase

類的設計2

包含以下屬性 國家,郵編,省份,城市,街道 設計 private string nation private string zipcode private string province private string street 函式 public setnation string nation ...

包的設計原則 2

包的設計原則 2.穩定性 包的耦合性原則 1 無環依賴原則 很好理解,包的依賴關係中不能出現環,否則等著看好戲吧 例如晨後綜合症 怎麼解除依賴環呢?很簡單!使用dip 依賴倒置 原則 2 穩定依賴原則 什麼是穩定性?穩定性和更改所需要的工作量相關,例如豎立的硬幣是不穩定的,但是桌子是穩定的。若有很多...

ASP中設計和使用類2

asp中設計和使用類2 class classlist private currentclassid private currenttablename private parentclassid private currentclassname public property let classid...