LaTeX繪製UML圖形宏包開發過程記錄002

自定義類

  LaTeX中自定義類與自定義宏包幾乎是一樣的,區別就是擴展名,類文件的擴展名是cls,宏包文件的擴展名是sty。在文件內容格式上也差不多,類文件中內容的樣式舉例如下:

\NeedsTeXFormat{LaTeX2e}%
\ProvidesClass{lua-general}[2019/01/01]% 
%
\LoadClass{book}% 載入book類
%
% 需求的宏包
\RequirePackage{geometry}% 用於頁面設置
\RequirePackage{tikz}%   繪圖包
\RequirePackage{xcolor}% 色彩包
...

  上面的區別就是\ProvidesClass命令,宏包中是\ProvidesPackage,但好像並沒有區別,我兩個都換着試過,都沒問題。

宏包中加載庫的問題

  通常情況下,我們在使用\usepackage命令時,有時會用中括號把相關的一些庫載入進來,例如:

\usepackage[dvipsnames, svgnames, x11names]{xcolor}% 色彩支持

  這種方式在宏包與類的定義文件中就不能使用,會報錯。例如我在自定義的宏包中使用命令\RequirePackage{xcolor}包含了xcolor宏包,這時在調用文件中使用擴展的色彩名稱時會報錯,即使在調用文件中加入\usepackage命令也不行。解決辦法是在調用文件中把這些庫加入進去,例如:

\documentclass[dvipsnames, svgnames, x11names]{lua-general}%

  還有一種方法是使用命令\PassOptionsToPackage,直接在自定義的宏包或類文件中加入,例如:

\PassOptionsToPackage{dvipsnames, svgnames, x11names}{xcolor}
\RequirePackage{xcolor}% 色彩包

  上述例子中,命令\PassOptionsToPackage一定要放在\RequirePackage{xcolor}命令之前,否則無效。這個方法可能更恰當一些,不用修改調用文件,只需設置好宏包文件或類文件即可。

加載其他類的方法

  上面的代碼示例中已經有了,就是用命令:\LoadClass{}。注意LaTeX中是大小寫敏感的。上面的例子可以視爲是在標準類book的基礎上擴展出來的類。此外,要注意的是每一份文件只能調用一個類,換句話說就是\documentclass命令只能用一次,不像宏包可以多項調用。所以才需要使用\LoadClass命令去載入其他類。
  真希望51CTO博客能夠支持LaTeX。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章