日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

读懂LaTeX中cls文件

發布時間:2023/12/16 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读懂LaTeX中cls文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

讀懂LaTeX中cls文件

cls文件都以

\NeedsTeXFormat{LaTeX2e} \ProvidesClass{selfbook}[2019/11/11 v0.1 Book Template for Self Use] \LoadClass{ctexbook} \RequirePackage{titlesec}

這幾行代碼開始,其中第一行指定了LaTeX編譯器的版本需求。告訴了編譯器這個宏包或者說類文件是屬于哪個版本的。本文中宏包和類都指.cls文件。

第二行指出了這個宏包的版本修改日期,日期格式必須是代碼中所示的那樣。\ProvidesClass命令的第一個參數就是cls文件的名字,兩個必須一致;第二個參數是可選的,如果給出了第二個參數,則編譯器會檢查文檔所引用的類文件,如果引用的不是最新版本會給出警告,但是一般文檔中也不會指出具體的日期,所以作用不大。

第三行給出了該類所繼承的父類,一般宏包都是依托于其他宏包編寫的。這里給出依托的其他類名,這樣我們沒有設置格式的其他文章結構都會使用父類默認的格式。

第四行\RequirePackage命令指出該類需要使用的其他宏包,這個宏包和第三行的宏包不太一樣,這里的宏包提供了設置格式的功能,第三行的宏包一般是給出了各種設置的格式,如chapter、section等的格式。此外,\RequirePackage保證引用的宏包只被引入一次,類似于C++中的#pragma once。

之后的cls文件中,一般是各種格式的定義。這里記錄比較困惑的常見命令格式:

  • \makeatletter?&?\makeatother
    這兩條命令括起來的內容中,@符號是一個普通的字符,不需要轉義或者進行其他處理,就和a~z等其他字符一樣。這是為了處理一些含有@符號的命令而設計的。

  • \@ifstar
    這條命令是為了處理命令中含有*的命令而設計的。例如

    \newcommand{\mycmd}{\@ifstar{\mycmd@star}{\mycmd@nostar}} \newcommand{\mycmd@nostar}[nostar-num-args]{nostar-body} \newcommand{\mycmd@star}[star-num-args]{star-body}

    定義了\mycmd和\mycmd*兩個命令,當使用\mycmd時,相當于調用了\mycmd@nostar命令,而使用\mycmd*時,相當于調用了\mycmd@star命令,當然,代碼中的\mycmd、\mycmd@nostar、\mycmd@star等命令名稱可以自己任意取,當似乎用@符號時,需要使用1中的兩條命令包起來。

  • glossaries宏包使用
    如果文檔中有縮寫表、符號表或者術語表的編寫需要,可以使用nomencl、glossary、glossaries這三個宏包,其中前兩個宏包比較簡單,易于使用,但是功能也少,glossaries宏包功能豐富,使用起來也更復雜。

    \documentclass{ctexbook} \usepackage{glossaries} % 引入glossaries宏包 \makeglossaries % 引入*.glo文件 \newglossaryentry{tm}{ % 新建縮寫表項name={Turing machine}, % 縮寫的展開名,可以使用其他命令以設置格式,如加粗、斜體等description={A model of a machine that computes. The model is simplebut can compute anything any existing device can compute.It is the standard model used in Computer Science.},} \begin{document} Everything begins with the definition of a \gls{tm}. ... \printglossaries % 縮寫表將打印在這個位置 \end{document}

    上面代碼是使用glossaries宏包的一個最簡單的例子。在TeXstudio中新建文件,粘貼進這些代碼,保存為任意的.tex文件,分別按F5(編譯)、F9(調用makeglossaries.exe)、F5(再次構建并預覽)即可看到運行得到的pdf文件。我主要編寫中文文檔,構建使用的是XeLaTeX,需要在texstudio中Options->Build中將Default Compiler更改為XeLaTeX。運行中可能遇到沒有perl解釋器的問題,報錯信息為makeglossaries.exe: The Perl interpreter could not be found.。需要搜索perl,去其官網下載perl解釋器并安裝。我下載的是ActivePerl-5.28.1.0000-MSWin32-x64-432e1938.msi文件,其他操作系統安裝相應版本即可。此外,我測試了安裝CTeX-2.9.2.164_Full.exe版本的ctex,當運行makeglossaries.exe時,會提示一大堆警告,大致是說makeglossaries使用了過時的perl語法,但是編譯結果是正確的。如果對一大堆警告不爽,可以安裝texlive2019.iso(win7 安裝texlive2019.iso時可以解壓后運行install-tl_windows.bat文件,但必須是管理員身份運行,否則安裝會報錯。),其對應的makeglossaries版本為4.41,本人測試,沒有任何問題,完美輸出。如下圖:

  • \graphicx
    圖片處理功能需要的宏包,在texlive2019版本中,圖片名中含有中文時導致不識別,報錯信息為File `figures/inter中‘ not found. Font shape `TU/STXingkai(0)/bx/n undefined(Font)。實際上圖片是存在的,字體也是存在的,將圖片中的中文字符刪掉重新編譯就會正常輸出,懷疑可能與編碼有關系。另外使用CTeX-2.9.2.164_Full.exe安裝的latex版本,圖片中含有中文字符可以正常輸出。CTeX是TeX的中文套裝,包含了中文文檔編寫的工具及配置,對中文支持比較好,但網上搜索到的版本很老,估計很久沒更新了。而texlive怎么配置使其正常支持中文文件名,目前沒搜到好的解決方案,如果有人知道,求教。網絡上有很多人說有圖片但提示圖片找不到,可以看看圖片路徑或名稱中是否有中文。

  • ? ? ? ? ?

    ?

    總結

    以上是生活随笔為你收集整理的读懂LaTeX中cls文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。