Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

学会Latex写作

2021/06/15 计算机基础知识
Word count: 4,744 | Reading time: 21min

首先开始的便是文档定义:

1
2
3
4
5
\documentclass[bachelor]{njupthesis}
% \documentclass[option]{class}
% class有article, proc, minimal, book, slides
% option: a4paper(纸张大小)、10pt(字体大小)、fleqn(行间公式对齐方式)、leqno(行间公式的编号对齐方式)、onecolumn(单栏)、titlepage(文档标题后另起一页)
\end{document}

查看: https://blog.csdn.net/wei_love_2017/article/details/86617235

可以看到这边的documentclass是自定义的,原因是因为这个使用的是郭学长做的毕设latex模板, 因此借此机会也学习下Latex的模板制作, 主要是cls文件的编写

cls文件是什么?

LaTex中常见的文件格式有.tex, .bib, .cls, .sty, .bbl等。

  • .tex文件也就是我们写文档内容的文件;
  • .bib是使用bibligraphy方式导入参考文献时,写参考文献的文档;.bbl是其编译之后形成的文件;
  • .sty是包或者风格文件,通常使用\usepackage导;
  • .cls是类文件,通过文档最前面的\documentclass命令导入

一般来说,.cls.sty 文件都是增加 LaTeX 功能的补足文件。它们在我们排版文章是时对应的使用 \documentclass{}\usepackage{} 加载;在包内部则对应的使用 \LoadClass,\LoadClassWithOptions\RequirePackage,\RequirePackageWithOptions 加载。

cls与sty不同点

虽然它们都可以包含任意的 TeX 和 LaTeX 代码,但是它们的使用方式不同。我们必须通过 \documentclass 加载一个类文件,并且在一个 LaTeX 文件中只能出现一次,通常也是第一个出现的命令。而另一方面,包是一个可选项,它可以根据我们的需求加载任意多个(在开始文档之前)。

cls文件怎么写的?

cls文件可以分为四部分,我暂且分别称之为声明、宏定义、输入数据处理以及其他四部分

  1. 所谓声明,只是说明了编译cls文件需要什么样的TeX格式以及本cls文件可以提供什么内容,基本上是万年不变的,如下:

    1
    2
    \ProvidesClass{resume}[Mylatex] % 其中,[ ]中的内容可以随便填写呀~
    \NeedsTeXFormat{LaTeX2e}
  2. 第二部分,宏定义,这部分内容则是各取所需了,如果有需要,可以在此进行简单的定义,我在此定义了两个\newif,用于判断中文简历和英文简历:

    1
    2
    \newif\ifChinese
    \newif\ifEnglish
  3. 第三部分,处理输入数据,也就是上文提到的\documentclass[a4paer,12pt]{article}中的a4paper和12pt这两条数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    ```latex
    \DeclareOption{zh}{\Chinesetrue\Englishfalse}
    \DeclareOption{en}{\Chinesefalse\Englishtrue}
    \DeclareOption*{%
    \PassOptionsToClass{\CurrentOption}{article}
    }
    \ProcessOptions\relax
    \LoadClass{article}
    % 对于zh,我进行的操作是将\Chinese这个变量设为true,\English这个变量设为false,以便在后续使用第二部分定义的\if,
    % 第三条语句为将初zh, en之外的其余参数传至article类,供article类进行处理,最后呢,就是加载继承的article类;——如郭学长njupthesis所做的处理为: \LoadClass[12pt, openany, twoside]{book}
    ```

    4. 第四部分,会先导入需要用到的包,之后将上面的零散语句贴上去。在tex文件中,导入包通常使用\usepackage命令,但是在cls中,一般要使用\RequirePackage的方式将其导入,如:

    ```latex
    % Customize the section headers
    \RequirePackage{titlesec}
    % footnote
    \RequirePackage{fancyhdr}
    % Set the margins
    \RequirePackage[margin=0.5in]{geometry}

    \RequirePackage[T1]{fontenc}
    ```

    最后,在.tex文件中通过`\documentclass{Mylatex}`来使用该cls文件即可

查看:【LaTex】cls文件编写和使用入门

\ProvidesClass

1
2
\ProvidesClass{njupthesis}
\LoadClass[12pt, openany, twoside]{book}
  • ProvidesClass为定义出的模板class名
  • LoadClass为documentclass中原先指定的参数

\DeclareOption

1
2
3
4
5
\DeclareOption{bachelor}{
\renewcommand{\chinesedegreename}{本科}
\renewcommand{\chinesebooktitle}{本科生毕业设计(论文)}
\renewcommand{\englishbooktitle}{Bachelor Thesis}
}

关于\documentclass的option设置

\newcommand

参数说明: \newcommand\cmd[参数个数]{命令的定义}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
% 姓名的字体较大,且加粗,实现方式:
\newcommand{\name}[1]{
\huge {\textbf{#1}}
}
% tex中调用方式为: \name{Zhang San}

\newcommand{\wanted}[1]{
\normalsize {\textbf{申请职位:}} #1
% \textbf 为加粗
% \normalsize 为设置常规字号
}

\newcommand{\address}[3]{
\normalsize
\raisebox{-3pt}{\includegraphics[height=#1]{#2}} #3
% \includegraphics 为插图的命令: \includegraphics[选项]{文件}
% \raisebox: 升高或者降低text盒子: \raisebox{上移量}[高度][深度]{文本}
% #1表示要显示图标的高度
% #2表示图标文件完整路径
% #3表示图标后要显示的文字
}
% tex中调用方式为: \address{12pt}{add.png}{Nanjing, China}

\newcommand{\edusubsection}[3]{
\subsection{\textbf{#1} \hfill #2}
% \sunsection 预设了较大的字体
% \hfill 设置弹性长度
\vspace{-4pt}
% \vspace{宽度大小} 设置垂直间距
{\normalfont\normalsize #3}
\vspace{-10pt}
}

最后一个\edusubsection的效果图

分析下语法:\newcommand为自定义命令: \newcommand{<自命名指令>}[<参数个数>][<首参数默认值>]{<具体的定义行为>}

注:

  • 命令只能由字母组成,不用以\end{}结尾
  • 取参数时,从1开始索引

p.s. \renewcommand重新定义已有命令, 语法跟\newcommand相同


\DeclareCaptionFormat

设置题目标题格式

1
2
3
4
5
6
7
8
\DeclareCaptionFormat{algrule}{%
{\@hangfrom{#1#2}%
\doublespacing
\small
\advance\caption@parindent\hangindent
\advance\caption@hangindent\hangindent
\caption@@par#3\par}%
}

\graphicspath

设置图片路径

1
\graphicspath{{./pic/}}

\titleformat

设置各个title格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\titleformat{\chapter}[block]
{\centering\fontsize{15pt}{15pt}\selectfont\heiti\thispagestyle{fancy}}{\thechapter}{2pc}{}

\titleformat{\section}[block]
{\fontsize{14pt}{14pt}\selectfont\heiti}
{\thesection}{7pt}{}

\titleformat{\subsection}[block]
{\fontsize{14pt}{14pt}\selectfont\heiti}
{\thesubsection}{7pt}{}

\titleformat{\subsubsection}[block]
{\fontsize{12pt}{12pt}\selectfont\heiti}
{\thesubsubsection}{6pt}{}

\newtheorem

\newtheorem{theorem}{Theorem}[Chapter]

引用

\citing

设置引用

1
当代生活\citing{pedregosa2011scikit}是严肃文学大师的作品。

\ref

如图所示

1
2
% 可自动渲染成如图2-1所示
如图\ref{c_s_structure_v2}所示

\bibliography

1
2
\bibliographystyle{IEEEtran}		% 按照IEEEtran.bst的样式引用
\bibliography{cog} % 引用文件制定为cog.bib

\newenvironment

\newenvironment{新环境名称}[参数个数][参数默认值]{开始部分定义}{结束部分定义}\renewenvironment{新环境名称}[参数个数][参数默认值]{开始部分定义}{结束部分定义}

其中参数的用法和\newcommand 相同,最多允许9个参数,顺序使用#1、#2等引用参数。如果没有使用参数,则[0]可以省略。假设myenv环境的调用如下:\begin{myenv}{arg_1}…{arg_k}

则可以在“开始部分定义”中使用#1,…#k来引用参数,这是newenvironment传递参数的方式。需要特别注意的是,newenvironment的参数只有在“开始部分定义”中才能使用,即“结束部分定义”中的代码无法获取参数。因此,如果要在“结束部分定义”中使用新环境的参数,必须在“开始部分定义”中保存到寄存器中,比如通过\newsavebox 和\sbox 等命令。

举例:

先看一个简单的文章“摘要”(Abstract)的例子:假设,摘要的标题—摘要(Abstract)两个字加粗居中显示,正文使用quote格式,完整的示例文件参见2。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{article}
\pagestyle{empty}
\setlength\textwidth{3in}%限制文本宽度使得较少的文字就容易看出断行的效果
\newenvironment{Abstract}{
\begin{center}\normalfont\bfseries Abstract\end{center}
\begin{quote}\par
}%开始部分定义
{\end{quote}}%结束部分定义
\begin{document}
\begin{Abstract}
This abstract explain the approach userd to solve the problems at hand.
\end{Abstract}
Some text following the abstract. Some text following the abstract. Some text following the abstract.
\end{document}

bst文件

Latex: 制作和修改需要的参考文献格式(.bst)
一般的期刊或者会议都会提供参考文献格式模板(.bst),但是如果没有提供的话,你可以选择自己制作一个bst或者寻找类似的再修改bst文件。这是一篇教你制作需要的参考文献格式(.bst)的文章。文章主要包括两方面内容:1、从头制作.bst文件,包括对book,article,proceedings等等进行格式设置;2、根据需要微调做好的bst文件。(建议看下文档A BibTEX Guide via Examples)

如果参考文献格式要求排序按出现顺序,引用方式为数字,作者只出现三个,超过三个用et al 表示。例要求参考文献格式为:
Journal articles
[6] Borwn, L., Thomas, H., James, C., et al.:'The title of the paper, IET Communications, 2012, 6, (5), pp 125-138

bst文件编写

  • write$为输出内容;
  • missing$为缺失一般配合if$使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Entry{
note
...
}

FUNCTION {add.period}
{
". " write$
}

FUNCTION {add.comma}
{
", " write$
}

FUNCTION {online}
{
bibitem.begin
format.title write$ add.period
format.online_url write$ add.period

// 下面表示如果有note则输出 "note ."
note missing$
'skip$
{
note write$ add.period
} if$
newline$
}

njupthesis

\makecover 封面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
\newcommand{\makecover}{
\thispagestyle{empty}
\setlength{\extrarowheight}{36pt}
\begin{center}
\fontsize{36pt}{36pt}\selectfont{\heiti 南京邮电大学 \\ 毕{}业{}设{}计(论{}文)\\}
\vspace{2cm}

\begin{tabular}{>{\fontsize{16pt}{16pt}\kaiti}l
>{\centering\arraybackslash\fontsize{15pt}{15pt} \kaiti}
p{11.53cm}}
题\chinesespace\chinesespace 目{}{} & \thetitle \\
\cline{2-2}
专\chinesespace\chinesespace 业{}{} & \themajor \\
\cline{2-2}
学生姓名{}{} & \theauthor \\
\cline{2-2}
班级学号{}{} & {\large \thestudentid} \\
\cline{2-2}
指导老师{}{} & \theadvisor \\
\cline{2-2}
指导单位{}{} & \theschool \\
\cline{2-2}
\end{tabular}

\vspace{5cm}

\fontsize{16pt}{16pt}\selectfont{\kaiti 日期:\quad \thebegindate {} 至\hspace{.5pc} \thefinishdate \\}
\end{center}

\newpage
\thispagestyle{empty}

\noindent

\begin{center}
\fontsize{16pt}{16pt}\selectfont{\heiti
毕业设计(论文)原创性声明
} \\[48bp]
\end{center}

\begin{spacing}{2.0}
郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。\\ \\

\hspace*{7cm} 论文作者签名:

\hspace*{7cm} 日期:\quad\quad 年\quad\quad 月\quad\quad 日
\end{spacing}


\newpage
\setcounter{page}{0}
\setcounter{pseudopage}{0}
\setlength{\extrarowheight}{5pt}
}

\thesistableofcontents 目录

1
2
3
4
5
6
7
% TODO: 更改目录样式

\newcommand{\thesistableofcontents}{
\pdfbookmark{目录}{toc}
\tableofcontents
\thispagestyle{empty}
}

\thesisappendix 附录

1
2
3
4
5
6
7
8
9
10
11
12
13

\newcommand{\thesisappendix}{
\chapter*{附\chinesespace\chinesespace 录}
\setcounter{section}{0}
% \setcounter{secnumdepth}{4} %增加编号深度
% \setcounter{tocdepth}{4} %增加目录深度
\addcontentsline{toc}{chapter}{附录}
\markboth{附录}{附录}
\thispagestyle{fancy}
\renewcommand{\theequation}{a-\arabic{equation}}
\renewcommand{\thetable}{a-\arabic{table}}
\renewcommand{\thefigure}{a-\arabic{figure}}
}

\thesisacknowledgement 致谢

1
2
3
4
5
6
7
8
9
\newcommand{\thesisacknowledgement}{
\renewcommand\thesection{\arabic{section}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\setcounter{section}{0}
\chapter*{致\chinesespace\chinesespace 谢}
\addcontentsline{toc}{chapter}{致谢}
\markboth{致谢}{致谢}
\thispagestyle{fancy}
}

\thesischapterexordium 章绪论

1
2
3
4
5
6
7
\newcommand{\thesischapterexordium}{
\newpage
\addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
\standardhead
\pagenumbering{arabic}
\setcounter{page}{1}
}

\thesisloadbibliography reference引用

1
2
3
4
5
6
7
8
9
\newcommand{\thesisloadbibliography}[2][]{
\ifthenelse{
\equal{#1}{nocite}
}{
\nocite{*}
}{}
\bibliographystyle{njupthesis}
\bibliography{#2}
}

使用

LaTeX 中列表环境的使用——有序序号和无序序号

图片的插入及排版方法——并排插入图片

1
2
3
4
5
6
\begin{figure}[htbp]
\centering
\includegraphics[scale=0.2]{girl.eps}
\caption{figure title}
\label{figure}
\end{figure}

解释一下每一句的功能:

  • Line 1\begin{figure} ~ \end{figure} 是固定用法,只要插入图片,就需要有这么一对儿;方括号 [] 内是控制参数,控制了整幅图的位置;
    • 图片位置控制参数:\begin{figure}[htbp]
      • [h] 表示当前位置(here),也就是说图片将放在你设置的当前位置,但是如果这一页的空间不足以放下这个图片,此时图片会转到下一页;
      • [t] 顶端(top),此时优先将图片放置在页面的顶部;
      • [b] 底部(bottom)此时优先将图片放置在页面底部;
      • [p] 将图片设置为浮动状态,系统会自动排版图片的位置;
      • 一般推荐这几个参数结合使用,比如:[ht][htbp],此时这几种位置具有优先级。
  • Line 2\centering 表示将图片居中显示;
  • Line 3\includegraphics{} 用于插入一张图片,花括号 {} 内就是图片的名称,方括号 [] 内同样是控制参数,但这里控制的是图片的显示大小;
    • 图片大小控制参数:\includegraphics[scale=0.2]{girl.eps}
      • [scale],表示按原图比例缩放,比如 scale=0.2 表示将原图缩小 5 倍,如果要放大只需要将 scale 设置为大于 1 即可;
      • 还可以直接设置图片宽高,比如 [height = 1cm, width = 2cm]
      • Latex图片旋转 缩放
  • Line 4\caption{} 是这幅图的图例信息;
  • Line 5\label{xxx} 是这幅图的标签,在写论文时需要在正文中引用,这时候用标签直接来引就省去了一些不必要的麻烦;文中通过\ref{xxx}来引用

\table

创建表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\documentclass{article}

\begin{document}

\begin{table}[h!]
\begin{center}
\caption{Your first table.}
\begin{tabular}{l|c|r} % <-- Alignments: 1st column left, 2nd middle and 3rd right, with vertical lines in between
\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\
$\alpha$ & $\beta$ & $\gamma$ \\
\hline
1 & 1110.1 & a\\
2 & 10.1 & b\\
3 & 23.113231 & c\\
\end{tabular}
\end{center}
\end{table}

\end{document}

绘制Latex表格需要用到 tabletabular 环境。其中 table 环境里写表格的标题(caption)、表格的偏移之类的。 tabular 环境则是绘制表格的内容。

首先是 table 环境部分,\begin{center}让表格居中,\caption{Your first table.}写表格的标题。

然后是 tabular 环境部分,\begin{tabular}{l|c|r}这里面的{l|c|r},包含了三个字母,代表了表格总共有三列,第一列靠左偏移,第二列居中,第三列靠右偏移。竖线代表列之间用线分隔开来,如果想要左右两边都用线包围起来,应该改成{|l|c|r|}。接下来就是正式的表格绘制部分。

latex里的表格是一行行来绘制的,每一行里面用&来分隔各个元素,用\来结束当前这一行的绘制。代码中\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\绘制表格的第一行,是三个加粗的字符串。第二行α\alpha & β\beta & γ\gamma \则是三个希腊字符。

接着是\hline,它的作用是画一整条横线,注意如果想画一条只经过部分列的横线,则可以用cline{a-b},代表的是画一条从第a列到第b列的横线。

参数说明:

  • h here 当前位置;将图形放置在 正文文本中给出该图形环境的地方。如果本页所剩的页面不够, 这一参数将不起作用。
  • t top 顶部;将图形放置在页面的顶部。
  • b bottom 底部;将图形放置在页面的底部。
  • p page 浮动页;将图形放置在一只允许有浮动对象的页面上。

ref:

\algorithm

算法流程图-》伪代码

概括版本

  • algorithm - float wrapper for algorithms.
  • algorithmic - first algorithm typesetting environment.
  • algorithmicx - second algorithm typesetting environment.
  • algpseudocode - layout for algorithmicx.
  • algorithm2e - third algorithm typesetting environment.

from : https://zhuanlan.zhihu.com/p/145195565?from_voters_page=true

使用\algorithm编写伪代码流程时,先关注类中使用的package是什么。不然会出现冲突,比如algorithm2ealgorithmicx 就会产生冲突, 报错如下:

1
2
3
4
5
6
7
8
9
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

)

(see the transcript file for additional information)
Output written on main.pdf (24 pages).
SyncTeX written on main.synctex.gz.

Transcript written on main.log.

两者选其一即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
% algorithm2e的模板如下:
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
% algorithmicx
\begin{algorithm}[h]
\caption{An example for format For \& While Loop in Algorithm}
\begin{algorithmic}[1]
\For{each $i\in [1,9]$}
\State initialize a tree $T_{i}$ with only a leaf (the root);
\State $T=T\cup T_{i};$
\EndFor
\ForAll {$c$ such that $c\in RecentMBatch(E_{n-1})$}
\label{code:TrainBase:getc}
\State $T=T\cup PosSample(c)$;
\label{code:TrainBase:pos}
\EndFor;
\For{$i=1$; $i<n$; $i++$ }
\State $//$ Your source here;
\EndFor
\For{$i=1$ to $n$}
\State $//$ Your source here;
\EndFor
\State $//$ Reusing recent base classifiers.
\label{code:recentStart}
\While {$(|E_n| \leq L_1 )and( D \neq \phi)$}
\State Selecting the most recent classifier $c_i$ from $D$;
\State $D=D-c_i$;
\State $E_n=E_n+c_i$;
\EndWhile
\label{code:recentEnd}
\end{algorithmic}
\end{algorithm}

使用: https://blog.csdn.net/lwb102063/article/details/53046265

采坑

字体报错

在CLS类文件中定义了全局字体: ,由于重装系统后字体可能就安装的不全了,导致了编译报错

报错如下:

1
2
3
4
5
6
kpathsea: Running mktexmf SimKai/OT.mf

The command name is E:\texlive\2019\bin\win32\mktexmf
Cannot find SimKai/OT.mf.
name = SimKai/OT, rootname = SimKai/OT, pointsize =
mktexmf: empty or non-existent rootfile!

原因如下:

1
2
3
4
5
6
\ifwindows
\setallmainfonts{Times New Roman}
\setCJKmainfont[AutoFakeBold=true]{SimSun}
\newCJKfontfamily{\heiti}{SimHei}
\newCJKfontfamily{\kaiti}{SimKai}
% \newCJKfontfamily{\kaiti}{KaiTi}

百度之后发现SimKai就是楷体_GB2312,但是fontName并不是文件中规定的SimHei,而又找不到ttf名为SimKai的字体了, 因此直接通过解决CLS文件定义来解决问题。

  1. fc-list | grep sim查找电脑上安装的字体列表,找出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    C:/WINDOWS/fonts/simsun.ttc: 新宋体,NSimSun:style=常规,Regular
    C:/WINDOWS/fonts/simfang.ttf: 仿宋,FangSong:style=Regular,Normal,obyčejné,Standard,Κα
    νονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,
    Arrunta
    C:/WINDOWS/fonts/simsunb.ttf: SimSun\-ExtB:style=Regular,Normal,obyčejné,Standard,Κα
    νονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,
    Arrunta
    C:/WINDOWS/fonts/simhei.ttf: 黑体,SimHei:style=Regular,Normal,obyčejné,Standard,Καν
    ονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Ar
    runta
    C:/WINDOWS/fonts/simsun.ttc: 宋体,SimSun:style=常规,Regular
    C:/WINDOWS/fonts/PERTILI.TTF: Perpetua Titling MT:style=Light,Mager,Fina,Maigre,Chiarissimo
    C:/WINDOWS/fonts/simkai.ttf: 楷体,KaiTi:style=Regular,Normal,obyčejné,Standard,Κανο
    νικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arru
    nta

    因此观察到下载安装的simkai.ttf的英文名叫KaiTi

  2. 修改CLS文件中的定义, 将\newCJKfontfamily{\kaiti}{SimKai}改为\newCJKfontfamily{\kaiti}{KaiTi}

  3. 问题解决

Latex的\cite后面的参考文献显示问号 [?] + 不显示参考文献

referer:

usepackage和requirepackage的区别

"the convention is to use \RequirePackage in a package or class and \usepackage in oa document"l.

1
2
3
4
5
6
7
8
9
% right
\RequirePackage{atbegshi}
\documentclass ....
% wrong
\usepackage{atbegshi}
\documentclass ...
% -->RequirePackage在documentclass之前定义, usepackage在文档中定义

`The only difference is that \usepackage cannot be used before \documentclass. Otherwise there is no functional difference. `

总结:

  • {}中的大多为具体内容, []中的大多为option选项设置
  • \newcommand{\xxx}相当于一个宏定义替换, 在tex中直接使用指令\xxxx即可;\newenvironment{xxx}{}相对而言复杂一点,在tex中需要用\begin{xxx} ... \end{xxx}
  • 横线: rule如\midrule

Author: Mrli

Link: https://nymrli.top/2020/11/28/熟悉Latex写作/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
《漫画机器学习入门》大关真之——读书笔记
NextPost >
深度学习+Pytorch学习笔记
CATALOG
  1. 1. cls文件是什么?
    1. 1.1. cls与sty不同点
  2. 2. cls文件怎么写的?
    1. 2.1. \ProvidesClass
    2. 2.2. \newcommand
    3. 2.3. \DeclareCaptionFormat
    4. 2.4. \graphicspath
    5. 2.5. \titleformat
    6. 2.6. 引用
      1. 2.6.1. \citing
      2. 2.6.2. \ref
      3. 2.6.3. \bibliography
    7. 2.7. \newenvironment
  3. 3. bst文件
    1. 3.1. bst文件编写
  4. 4. njupthesis
    1. 4.1. \makecover 封面
    2. 4.2. \thesistableofcontents 目录
    3. 4.3. \thesisappendix 附录
    4. 4.4. \thesisacknowledgement 致谢
    5. 4.5. \thesischapterexordium 章绪论
    6. 4.6. \thesisloadbibliography reference引用
  5. 5. 使用
    1. 5.1. LaTeX 中列表环境的使用——有序序号和无序序号
    2. 5.2. 图片的插入及排版方法——并排插入图片
    3. 5.3. \table
    4. 5.4. \algorithm
  • 采坑
    1. 1. 字体报错
    2. 2. Latex的\cite后面的参考文献显示问号 [?] + 不显示参考文献
    3. 3. usepackage和requirepackage的区别
  • 总结: