读懂LaTeX中cls文件

2023-10-31

读懂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文件中,一般是各种格式的定义。这里记录比较困惑的常见命令格式:

  1. \makeatletter & \makeatother
    这两条命令括起来的内容中,@符号是一个普通的字符,不需要转义或者进行其他处理,就和a~z等其他字符一样。这是为了处理一些含有@符号的命令而设计的。

  2. \@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中的两条命令包起来。

  3. 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 simple
                   but 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,本人测试,没有任何问题,完美输出。如下图:

  4. \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怎么配置使其正常支持中文文件名,目前没搜到好的解决方案,如果有人知道,求教。网络上有很多人说有图片但提示图片找不到,可以看看图片路径或名称中是否有中文。

         

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读懂LaTeX中cls文件 的相关文章

  • R:如何从数据框中获取正确的乳胶回归表?

    考虑下面的例子 inds lt c var1 var2 model1 lt c 10 2 0 00 0 02 0 3 model2 lt c 11 2 0 01 0 02 0 023 df df data frame inds model1
  • MathJax `\\` 换行符不渲染。简单地显示`\\`

    我使用 MathJax CDN 当我将其放入我的网页时 Say P k n is the probability of By definition 所有数学都正确呈现 但是 显示为 而不是换行符 并且没有换行符 它只是在同一条线上继续 所以
  • 带有特定乳胶模板的 bookdown

    我非常相信 Rmarkdown 和 bookdown 是内容出版的未来 但是一些出版商使用特定的 LaTeX 模板 并且为了提交手稿 他们需要在该精确的模板中使用它 例如 请参阅此施普林格手稿模板 http resource cms spr
  • OSX 10.8 中 usetex 的问题

    我最近升级到 OSX 10 8 Mountain Lion 如果我尝试在绘图标签中使用乳胶标记 我的 python 安装现在会出现错误 下面的代码可以完美运行 plt figure plt plot rand 51 rand 51 plt
  • 如何在 R markdown 中生成没有前导码的 LaTeX 文件?

    我有一个 LaTeX 文档 它被分割成多个 tex files 我正在使用 R markdown 生成图形和表格 是否可以从 Rmd 生成没有前导码的 tex 文件 以便我能够在文档中使用输出 目前 我需要手动将部分输出复制到我的 tex
  • R Stargazer 报告系数、置信区间和精确 p 值

    我正在运行一个国家固定效应模型 进一步包括一个虚拟变量 我正在使用 Stargazer 包 但似乎无法弄清楚如何报告置信区间和确切的 p 值 如果我运行我的模型 stargazer dummy CPP title xx align TRUE
  • 如何在 \leq 上方添加问号?

    如何在小于或等于符号上方添加问号 leq 在乳胶中 您可以使用stackrel begin equation 2 stackrel le 3 end equation end document 或者 如果您使用amsmath包 你可以使用o
  • Latex:列表前后的垂直空间

    我无法摆脱列表前后的垂直空间 我有如下代码 begin list setlength itemsep 0pt setlength parskip 0pt setlength parsep 0pt item First item item S
  • Rmarkdown 和 PDF 输出:评估 Latex 部分中的 Markdown

    如何才能评估 Latex 代码中使用的 markdown 代码 带有 PDF Latex 输出的 Rmarkdown 非常简单的最小示例 begin center should be bold text end center 使用knitr
  • 幻灯片中并排显示目录和图表

    我想将图形和目录并排放在一张幻灯片中 看起来像 目录图 我尝试将它们分别包含在一个小页面中 然后将它们都放入图形环境中 但结果看起来不太好 因为目录被格式化为段落 而不是逐项列出的外观 那么 有人有更好的解决方案吗 提前致谢 PS 我使用投
  • 插件 (vim-latex) 在启动时导致 gVim 崩溃

    我正在尝试使用在 Windows XP 上使用 gVim 但是一旦我打开 tex 文件 或者一旦我set ft tex gVim 崩溃且没有可见的错误消息 控制台 vim 中不会发生崩溃 我已经按照设置说明进行了操作 据我所知 并且我尝试禁
  • 在 LaTeX 中自动将新句子中第一个单词的第一个字母大写

    我知道 LaTeX 的吹嘘点之一是它没有这种微软式的行为 尽管如此 它有时还是有用的 LaTeX 已经在您键入 非反斜杠 句点后添加了一个额外的空格 因此应该可以使其自动将后面的字母大写 是否有一个明显的方法来编写一个宏来执行此操作 或者是
  • 如何在 Matplotlib 中编写自己的 LaTeX 序言?

    我正在尝试创建一个数字matplotlib插入我的LaTeX文档 我需要粗体 i and j 没有圆点和帽子的符号 我一直在使用代码 mathbf hat textnormal bfseries i 在我的文档中 但由于这使用了amsmat
  • Pandoc Markdown 分页符

    最近我开始使用 Pandoc markdown 它似乎是 LaTeX 的一个很好的替代品 因为我的文档没有很多数学公式 而且我没有任何使用 LaTeX 的经验 再加上不到 2 周的提交截止日期 这使它成为一个很好的解决方案 我无法解决的一件
  • LaTeX 报告章节样式

    如何更改 LaTeX 报告类中的章节样式 我发现了一些关于 makechapterstyle 但它似乎不适用于报告 或者至少不适用于my报告 我很确定一定有某种方法可以改变这一点 我知道 LaTeX 不太适合编程 但我不知道有什么更好的地方
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • LaTeX 仅打印文档的前两页

    我正在 LaTeX 中工作 当我创建 pdf 文件 使用 LaTeX 按钮或 pdfLaTeX 按钮或使用 yap 时 pdf 仅包含前两页 没有错误 它就停止了 如果我通过添加文本使第一页更长 它仍然会停在第二页末尾 有任何想法吗 好的
  • 如何在sphinx中启用数学?

    我在用sphinx http sphinx pocoo org index html与pngmath http sphinx pocoo org ext math html module sphinx ext pngmath扩展来记录我的代
  • 将 Beamer 方程大小与动画 Manim 方程相匹配

    我正在尝试使用 Beamer 演示文稿中的几个方程进行动画处理Manim https www manim community 图书馆 生成动画后 我想将它们包含在演示文稿中 其大小与我只是在 LaTex 中生成方程式一样大小完全相同 例如

随机推荐

  • MapReduce运行流程

    MapRecude运行流程 1 客户端提交代码 job watiforcompletion 开始运行 2 请求到ResourceManager 经理 请求运行 ResourceManager返回jobId 和让客户端提交资源的路径 3 客户
  • 【黑马点评】达人探店

    黑马点评 达人探店 1 发布探店笔记 探店笔记类似点评网站的评价 往往是图文结合 对应的表有两个 tb blog 探店笔记表 包含笔记中的标题 文字 图片等 tb blog comments 其他用户对探店笔记的评价 具体发布流程 根据找到
  • STM32CubeProg 下载及安装教程

    先点赞 再看博客 顺便点个关注鼓励一下 如果文章看完 觉得不错的话可以点个收藏 日后不迷路 STM32CubeProg 下载及安装教程 1 前言 1 1 基本介绍 1 2 主要特点 1 3 准备工作 2 软件下载 2 1 Java 官网下载
  • 字符串转base64,base64转字符串

    JavaScript原生提供两个Base64相关方法 btoa 字符串或二进制值转为Base64编码 atob Base64编码转为原来的编码 注意 base64转码为 号的后台存储问题 可遍历将 号转换为其他字符 备注 利用这两个原生方法
  • 用 visio 2013 绘制倾斜立方体

    依次点击 形状 更多形状 常规 方块 2 选择 三维框 形状即可 后续可根据需求对其进行缩放 变形 反转等操作
  • Centos 7配置网络文件及命令

    1 查看网络配置文件 命令行执行ip addr或ifconfig可以知道为ens33 然后cd 到目录 etc sysconfig network scripts 可以看到ifcfg ens33就是我们要找的文件 然后进入编辑 配置ip d
  • Thread & Timer

    Thread Timer 待续
  • element v-loading 文字描述 icon颜色 字体颜色

    v loading mapInfoLoading element loading text 数据加载中 class loading map icon颜色和字体颜色
  • windows CE初次接触(一次升级长安致尚XT高德导航的经历)

    以前不知道windows 操作系统在车载导航方面也有应用 即windows CE 帮忙升级一个 长安致尚XT 汽车上的windows CE下的 高德导航 注意到这是 百度收购 了的 提供免费地图的品牌 现在这篇文章应该用不上了 高德导航是被
  • Shortest Prefixes

    http poj org problem id 2001 Description A prefix of a string is a substring starting at the beginning of the given stri
  • SpringCloud使用ribbon做负载均衡时报错,无法根据服务名查找相应的服务

    SpringCloud使用ribbon做负载均衡时报错 无法根据服务名查找相应的服务 报错信息 报错原因 解决方案 第一种 第二种 报错信息 jjava lang IllegalStateException Request URI does
  • Neo4j数据建模优化:双向关系

    原文链接 http graphaware com neo4j 2013 10 11 neo4j bidirectional relationships html 我们通常会将现实生活中的关系型数据 通过一定的方式 转化为图形化的结构存储起来
  • 深层次分析字符数组和字符串的区别是什么?

    前言 1 休闲时刻刷B站 看到一个卖课的 发视频问 char arr1 H E L L O 和char arr2 HELLO 区别是什么 2 看那个卖课博主一顿分析 最后成功得出 字符串比字符数组末尾多一个 0 3 很好 成功浪费我生命的3
  • Linux(CentOS7)下载并安装Python 3教程及创建虚拟环境

    CentOS7安装Python 1 查看当前python版本 centos自带python2 7 5 python V 2 打开 usr local目录 在Linux系统下 路径 usr local相当于C Progrem Files 通常
  • Zabbix快速入门与实践:构建强大的企业级资源监控系统

    关注回复 学习交流群 加入 安全开发运维 答疑交流群 请朋友们 多多点击文中的广告 支持作者更新更多文章 目录 0x00 Zabbix介绍 0x01 Zabbix安装 0x02 Zabbix配置 0x03 Zabbix Web配置与使用 0
  • Docke + Jenkins 实现自动化部署

    Docker Jenkins 实现自动化部署 一 常规场景部署项目 1 1 正常情况部署项目 1 2 Docker 部署项目 1 3 提出疑问 二 Jenkins 是啥 2 1 Jenkins 简要介绍 2 2 Jenkins 解决的问题
  • 【状态估计】变分贝叶斯近似的递归噪声自适应卡尔曼滤波(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文献 1 概述 文献来源 本文研究了变分贝叶斯方法在线性
  • 近日学习7.9

    发现了一个可以线上图片转表格的网站 图片转Excel表格在线 表格文字识别 照片转换成Excel 白描网页版 baimiaoapp com 可以导出识别后的文本数据或者xlsx表 很方便 由于近期也是反复接触到数据爬取工作 beautifu
  • IDEA2020版开启内存指示器,并调整内存配置

    今天运行项目的时候出现了一个如下图的问题 The IDE is running low on memory and this might affect performance Please consider increasing avail
  • 读懂LaTeX中cls文件

    读懂LaTeX中cls文件 cls文件都以 NeedsTeXFormat LaTeX2e ProvidesClass selfbook 2019 11 11 v0 1 Book Template for Self Use LoadClass