看懂Latex模板(或定制专属模板)

一个简单的latex文档,我们只需要一个tex文件即可,但实际上我们在其中调用了文档类以及宏包。为了不在一个tex文件中将格式与正文堆在一起,我们可以自己设计专属的文档类(当然中间还是得使用人家的文档类),首先对tex中的文件类型进行说明:

文件类型 功能
.cls 模版类文件,自定义的文档类
.cfg 模板配置文件,为文档类服务
.bst 参考文献样式文件,自定义参考文献格式
.bib 参考文献库
.tex 主文件或其他文件
.sty 模板宏包文件,自定义的宏包

迈出第一步,设计cls文件制作自己的文档类。自己设计的文档类中同样也需要使用其他文档类和宏包。要标注一个文档类和宏包的开头,可以使用

ProvidesClass{<文档类名>}[<发布信息>]
ProvidesPackage{<文档类名>}{<发布信息>}

其中发布信息的内容是年/月/日加上空格和进一步的描述。一般地,在此之前,使用命令\NeedsTeXFormat告诉编译器这个宏包是属于LaTeX的哪个版本的。当前LaTeX的版本是LaTeX2e,几乎所有的发行版本都是用这个,实例如下

\NeedsTeXFormat{LaTeX2e}
\ProvideClass{mymodel}[2020/03/06 My custom model for homework]

类文件需要包含很多格式信息和内部设置,以使得LaTeX正常工作,但是我们并不想人工地输入所有的东西。相反地,我们可以调用已有的类文件和宏包。在cls文件中,调用宏包不能再使用\usepackage而是使用\RequirePackage命令。这样,我们的文档类便有了这些已有文档类和宏包的功能了。

对与这些已有的文档类和宏包,我们可以设置使用其全部属性或者只使用其中某些。

%声明一个宏包或类的选项
\DeclareOption{\RequirePackage{htperref}
}%使全部或指定的部分选项生效
\ProcessOptions
\ExecuteOptions{<选项列表>}%使用命令在当前文档类或宏包末尾插入代码
\AtEndOfClass{<代码>}

此后,我们可以将格式设置在之后进行,包括但不限于标题格式、页眉页脚、封面、摘要页等。在cls文件中我们常用以下命令:

% def 为了书写方便
\def \ctitle {\Large \bfseries 这是题目}% 设置新命令
\newcommand {name}{num}{define}
%name为新的命令,num为参数个数, difine为新命令完成的操作,其中参数使用#1 #2表示,其#最大数应为num%重新定义已有命令
\renewcommand{}{}
cls的目的是设置自己的文档类,因此会对已有的格式进行重新设置

我们希望文档类文件在设置好后用户尽量不再更改,但是其中有一些因人而异的内容,如封面的名字,我们希望其格式在cls文件中设置,而参数由tex问件输入,可以使用下面命令

%为了在tex中输入,我们可以定义一个命令,把需要设置的值作为参数
%而我们希望在cls文件中调用这个参数,可以给它def一下,作为简便写法
% cls文件中
\newcommand{\cname}[1]{\def\@cname{#1}}
{\textbf{\@cname}}% tex文件中
\cname{张三}

再说说cfg文件,它是cls的配置文件,因此可以在其中定义一些符号等,在cls文件中输入后即可使用,如

%cfg
\def \cover@cname{学生姓名:}
\def \cover@cmajor{学科专业:}
\def \cover@cinstitute{所在单位:}
\endinput%cls
\begin{tabular}{l@{\extracolsep{0.2em}}c}{\songti \bfseries \cover@cname}    & \fillinblank{23em}{\textbf{\@cname}}\\{\songti \bfseries \cover@cmajor}     & \fillinblank{23em}{\textbf{\@cmajor}}\\{\songti \bfseries \cover@cinstitute}    & \fillinblank{23em}{\textbf{\@cinstitute}}
\end{tabular}
\AtEndOfClass{\input{DLreport.cfg}}
\endinput

最后在tex文件中使用\documentclass{mymodel}即可加载设置,实现干湿分离。当然,记得为正文和图片分别建一个文件夹,这样更美观。
比较复杂的模板如国科大的论文模板,初学者看北京交通大学的论文模板更容易理解,我为了深度学习作业设置了简单模板(pwe3)如下:



参考

[1] 一份不太短的latex教程
[2] 写一个latex类文件
[3] 北交大论文模板

LaTeX入门|(2)定制专属模板相关推荐

  1. LaTeX入门系列之四(LaTeX模板)

    [color=orange][size=x-large]下面是在网上收集到的国内外部分大学及期刊的LaTeX模板,分享一下!请大家下载使用,使用前请先核对是否适合最新格式![/size][/color ...

  2. LaTeX入门教程 Elseiver模板使用

    LaTeX入门教程 & Elseiver模板使用 背景     最近准备向Elseiver期刊投稿,而官网仅提供了LaTeX写作模板,虽然内心有一万个不愿意使用LaTex(是的-我不会用==) ...

  3. LaTeX入门|(1)从Word到LaTeX:LateX排版常用指令

    从word的需要到latex的使用 写在前面 学习latex之前大多数使用word的,甚至精通word排版的,对于latex这种使用代码编程进行论文排版或ppt制作就显得比较费劲,比如平时很简单的居中 ...

  4. grunt从入门到自定义项目模板

    文章还可在我的github上找到,排版更友好一点:grunt从入门到自定义项目模板 一.Grunt入门介绍 1. Grunt是神马 基于任务的命令行构建工具(针对JavaScript项目) 链接:ht ...

  5. latex 中文正文双栏模板_LaTeX学习指南(一)

    关于   的入门,可以参考: <LaTeX环境配置>,和 <LaTeX入门(一)>当然,我不打算继续从 入门(二)开始写起,关于这个新的专题: 学习指南,将会一直写下去,与 R ...

  6. 学术写作利器——LaTeX入门笔记整理(不定期更新,附加使用心得)

    LaTeX入门教程(上) 比Word更适合学术写作的编纂语言 Credit:讲座是敝系的几个技术宅办的,作者只负责记录和整理.后面的更新是个人心得. 写这篇日志的初衷是小圈子分享和个人心得记录,适合完 ...

  7. 一份其实很短的 LaTeX 入门文档

    一份其实很短的 LaTeX 入门文档 优雅的 LaTeX 有很多 Geeks 或者 LaTeX's Fanatical Fans 过分地强调了 LaTeX 的一些并非重点的特性,以至于很多初学者会觉得 ...

  8. LaTeX 入门-语法

    LaTeX 入门 - 语法 一.使用 LaTeX 优点 这里首先说明,并不是因为 Word 排版不好才使用 LaTeX.之所以 Word 排版不美观,很大一部分是因为上手太简单,很少有人在使用 Wor ...

  9. Latex入门篇之论文排版

    Latex入门篇 1. 概述 1.1 Latex作用 1.2 初识Latex 2. Latex模板的使用 3. Latex排版的正经讲解 3.1 关于tex File文件 3.2 关于普通文本 3.3 ...

最新文章

  1. LeetCode中等题之最优除法
  2. 网站服务器可以用虚拟主机吗,做网站虚拟主机可以用服务器吗
  3. 我和美国 AI 博士聊了聊:2020 年,这件事比存钱更重要!
  4. 解决Kali Linux没有声音
  5. memcache nginx
  6. sql distinct多个字段_数据分析|记一“道”难忘的SQL面试题...
  7. 第十四题: 以下代码的输出结果是?
  8. 【转】细说.NET中的多线程 (四 使用锁进行同步)
  9. luoguP1463:反素数ant(打表心得☆)
  10. 程序转制作人——游戏设计课程导论
  11. CentOS7安装KVM、KVM安装CentOS7
  12. DayDayUp:2021年的自我总结
  13. mfc 固定编辑框输入上限和下限_S7200smart的模拟量输入输出
  14. NameNode DataNode
  15. python开发酷q插件gui_Python酷Q应用开发
  16. CMDN Club每周精选(第2期)
  17. 数据透视表mysql_MySQL查询和数据透视表
  18. android studio超级玛丽源码,VR版NES模拟器来了,超级玛丽、魂斗罗都支持
  19. 安装wordpress时Error establishing a database connection
  20. 引导区坏 计算机无法启动,小白告诉你Win10无法正常启动修复引导文件教程

热门文章

  1. 安装SQL Server 2008 及 VS 2008
  2. linux默认端口范围是多少?
  3. 基本:HEX文件格式定义
  4. Java中Scanner类的用法
  5. 公共信息模型(CIM)
  6. 华为机试题:HJ108 求最小公倍数(python)
  7. vue中使用数组方法push
  8. 第4篇 Fast AI深度学习课程——深度学习在回归预测、NLP等领域的应用
  9. Word/Excel 固定表格大小,填写内容时,表格不随单元格内容变化
  10. 自定义View-波浪动效