Latex 学习笔记(一)

前言

如果不想折腾,可以去网站下载相关书籍的模板比如: latex template,overleaf, 实践是学习这个工具的最好方法。 这主要是方便自己以后看的,所以也没有好好的整理,等到积累到一定程度的时候,再好好的整理一下。 现在纠结一个问题,要不要好好学习下tikz的,学习好了自然对于美化样式有极大的帮助,但是似乎又偏离了自己的初衷—尽量的节省时间。这篇文章会记录一些自己认为有用的相关知识,便于查阅,所以对新手来说是相当的不友好。。。。。不过网络上的教程那么多,自己感觉也没什么必要另写一份教程了,最好的学习方式,就是去用。

知识点

1,利用 \hfill 容易使单行文本左对齐、右对齐或居中对齐。

2,\dotfill,\hrulefill 分别用点线和实线填充空白。

3,段落首行缩进的距离由长度\parindent决定,对于中文, 命令 \setlength{\parindent}{2em}可使每段首行缩进两个汉字的距离, 若使首行不缩进,可在开始放上命令 \noindent. 但是每一节的第一段的首行并不会缩进,可在第一段的开始放上命令 \usepackage{indentfirst}即可

4,按照输入的文本原样输出, 可以使用verbatim环境.

5,\input 命令可以把整体划分为各个单元,这样在写比较长的的文章,比如毕业论文的时候就非常的有用了,而且结构清晰,方便自己理清写作思路,也方便自己将一些收集出来的资料进行分类,所以还是挺有用处的。

6,\let指令的作用相当于给现有的指令起一个别名以避免的死循环, 可以用在一个单元或章节重新计数用。

7,LaTex内部有一批计数器,储存当前的章节号,它们的名称就是相应的章节,如果想改变章节计数器的初始值,可用如下形式的命令

\setcounter{章节计数器的名称}{数}

这个命令应放在章节命令之前,新的章节的序号值是这个初始值加 1

8, 有的时候将图片放在一个文件夹中显得有一些混乱,可以使用如下指令将图片放在名字为figure的文件夹下(windows的目录斜杆正好是反着来的)。

\graphicspath{{./figure/}}

9, 如果感觉目录显示的太少,想将一些目录的深度和编号都加一级,实现的方式就是在导言前加入如下命令

\setcounter{seecnumdepth}{4}
\setcounter{tocdepth}{4}

10,如果可以,尽量选择安装texlive而不是miktex作为LaTex的包管理器,虽然texlive比miktex要大的多的多,不过总不想因为安装包的缘故,而导致心情的不畅吧,另外想说的是,尽管texlive里面的包已经非常非常多了,可有的时候还是不能够满足我们的需求,这个时候还是得安装一些在texlive中没有安装的那些包,可以通过借助texlive的包管理工具 tlmgr 来安装一些没有的包,具体的使用如下

tlmgr install somePackage

注意而不是 somePackage.sty

11, hyperref 宏包提供了一些超链接功能。给文档内部的交叉引用和参考文献自动加上了超链接。

遇到的困难

在定义页眉页脚时遇到了些困难,并记录一些笔记。在一个页面上排放文本的区域分成 4 部分:页眉(Header)、页芯(Body)、页脚(footer)和边注(Margin Notes)2, 在它们的外部是页边空白区域,各部分的尺寸以及相互之间的距离参见下一页的图形。该图形显示的是在 A4 纸上排版 article 类文章时的页面布局,对于 book 类或 report 类的页面,除了各部分的尺寸与 article 类有所不同外,边注区的位置还与奇偶页码有关,使得装订成书后边注总是在外侧控制页面版式的命令通常放在导言区,命令格式为

\pagestyle{板式}

其中版式有如下几种(默认下的)

1, plain 这是默认的页面版式,即当导言区没有\pagestyle时,相当于在导言区放上了命令\pagestyle{plain}。排版输出时页面的页眉区是空的,页码居中放在页脚区。

2, empty 页面的页眉和页脚都是空的,并且不显示页码。

3, headings 页眉由页码和页眉标题组成,对于 book 类和 report 类,页眉标题含有章和节的标题,对于 article 类,只有节标题,这些标题是从当前页自动提取的,但每一章的第一页不显示页眉

4, 页码的编号可以用阿拉伯数字、罗马数字或拉丁字母,指定页码样式的命令是

\pagenumbering{数字形式}

系统内部有一个页码计数器,记录当前页的页码。每生成一页,计数器就自动加 1, 这个新值就是新页的页码。如果想使起始页码不从 1 开始,或者使当前页从新的值开始计数,可使用如下命令重置计数器的值:

\frontmatter

把页码切换成罗马数字格式,并且不再对章进行自动编号,这个命令通常放在前言和目录前面。命令

\mainmatter

把页码切换成阿拉伯数字,并对章进行自动编号,这个命令通常放在正文主体前面命令

\backmatter

通常放在参考文献和索引前面,它不再对章进行自动编号,但不改变页码数字格式,不重设页码计数器。

自定义页眉与页脚

\usepackage{fancyhdr}
\pagestyle{fancy}

这个宏包把页面分为奇数页(Odd page)和偶数页(Even page)。把页眉和页脚都分成三个区域,分别称为左区(Left field)、中区(Center field)和右区(Right field),这三个区域之间没有分界线,放在左区的内容对齐在页眉(脚)的左边界,放在右区的内容对齐在页眉(脚)的右边界,中区的内容则在页眉(脚)的整个区域里居中放置,各区中的内容不可过长,以避免发生重叠现象。 设置页眉(header)和页脚(footer)的命令分别是

\fancyhead
\fancyfoot

命令

\headrulewidth
\footrulewidth

分别表示页眉和页脚与正文之间装饰性分隔线的粗细,默认值分别是 0.4pt 和0pt 改变其值需要使用\renewcommand。命令而不是\setlength 命令。在单独成页的 chapter 这一页。会自动应用 plain 风格。因此如果希望改变章首页的样式,则应该定义 plain 样式(这句话是重点,如果发现改动不了单独成页的那栏,可以好好考虑这一句话。

指定页眉内容

对于页面版式myheadings,可用下面的命令来指定页眉标题内容:

\markright{rightMark}
\markboth{leftMark}{rightMark}

给封面加图片

具体的图片大小格式,就自己调整吧。。。。首先在\begin{document}前写下

\usepackage{eso-pic}
\newcommand\BackgroundPic{
\put(0, 0){
\parbox[t]{\textwidth}{
\includegraphics[scale=1,keepaspectratio]{Logo.jpg}
}
}
}

如果想给图片加一点文字,可以这么操作

\usepackage{overpic}  %% 用于给图片添加文字的
\usepackage{eso-pic} %% 用于给封面添加图片的
\newcommand\BackgroundPic{
\put(0, 0){
\parbox[t]{\textwidth}{
\begin{overpic}[scale=1, keepaspectratio]{Logo.jpg}
\put(60,5){ \color{orange}{\bf yorQuote}}
\end{overpic}
%\includegraphics[scale=1,keepaspectratio]{eftLogo.jpg}%
}
}
}

注:这里面的\put是起摆放位置的作用 然后在\begin{document}后写上

\AddToShipoutPicture\*{\setlength{\unitlength}{1cm}\BackgroundPic}

表格

LaTex的表格写起来还是有些费劲的,个人一般先去https://www.tablesgenerator.com/自动生成表格,然后再手动调整下,要不就太费时了。下面就详细的说明下表格的语法,对照着网站,自然就一目了然,不需要举例。内容摘选了包太雷的《LaTex Notes》,也是早期接触到LaTex看的书了。

简单表格

tabular环境提供了最简单的表格功能。它用\hline 命令表示横线,|表示竖线;用 & 来分列,用 \ 来换行;每列可以采用居中、居左、居右等 横向对齐方式,分别用 l、c、r 来表示。不过\hline的线条都是一样粗的,可以使用 \toprule、\midrule 、\bottomrule 指令改善这一情况。tabular 环境中的行可以采用居顶、居中、居底等纵向对齐方式,分别用 t、c、b 来表示,缺省的是居中对齐。列之间的分隔符也可以改用其他符 号,比如用 || 来画双竖线。

宽度控制

有时我们需要控制某列的宽度,可以将其对齐方式参数从 l、c、r 改为p{宽度}。这时纵向对齐方式是居顶,t、c、b 等参数失效。使用宽度控制参数之后,表格内容缺省居左对齐。可以用列前置命令 >{} 配合 \centering、\raggedleft 命令来把横向对齐方式改成居中或 居右。列前置命令仅对紧邻其后的一列有效,其语法为::>{命令}列参数

跨行跨列

有时表格某单元格需要横跨几列,我们可以使用 \multicolumn 命令,同时使用 booktabs 宏包的 \cmidrule 命令来画横跨几列的横线。语法如下:

\multicolumn{横跨列数}{对齐方式}{内容} 
\cmidrule{起始列-结束列}

跨行表格可以使用 multirow 宏包的 \multirow 命令,其语法如下,

\multirow{竖跨行数}{宽度}{内容}

彩色表格

若想给表格增加点色彩,可以使用 Carlisle 的 colortbl 宏包。它提供
的 \columncolor、\rowcolor、\cellcolor 命令可以分别设置列、行、单 元格的颜色。这三个命令的基本语法相似:

columncolor 需要放到列前置命令里,rowcolor、cellcolor 分别放到行、单元格之前。colortbl 宏包可以使用 xcolor 宏包的色彩模型;两 者同时,前者不能直接加载,需要通过后者的选项 table 来加载。三个命令 同时使用时,它们的优先顺序为:单元格、行、列。。xcolor 宏包的 rowcolors 命令 (需要 colortbl 宏包的支持) 可以 分别设置奇偶行的颜色,语法如下:

{beginRow}{oddRowColor}{evenRowColor} 

计数器

含有计数器的比如有

part subsection subparagraph footnote chapter 
subsubsection page section paragraph equation

如果我们需要改变计数器的值,可以用如下指令

\seccounter{name}{number}
\addtocounter{name}{number}
\stepcounter{name}

这里的名字没有转义,其中\seccounter是给计数器赋值,\addtocounter是把指定的值加到计数器上,\stepcounter则把指定计数器值加1,同时使下属计数器的值置0,例如执行\setpcounter{section}后,section计数器的值增加1,同时它下面的计数器subsection, paragraph等都被置零。 可以自定义一些新的计数器,命令为

\newcounter{newName}[counterName]

文档分类处理

对于短文章,单独处理是比较容易的,但是对于写一本书而言,放在一个文件里就会显得结构不是那么清晰,而且处理起来也很慢。可以分成几个文件来分别处理,最后再结合起来。 \input{fileName}可以把名未fileName的文件内容读取到当前文档中,默认的拓展名是tex.这里有一点不好的就是当在一个文件中修改了一点,但是所有的文件都需要被重新的编译,这个时候使用\include{fileName}就可以只重新处理被修改的那个文件。

小技巧

1,\usepackage不能在\documentclass之前使用,而\RequirePackage可以。

2,\NeedsTeXFormat告诉编译器这个宏包是属于LaTeX的哪个版本的。

3,\ProvidesClass提供宏包的一些信息。第一个参数为自定义的cls文件,第二个参数是可选的,这个将出现在日志或者其他地方。

4,边注可以使用\marginpar 命令。单面排版时, 边注缺省排在页面右边空白处;双面排版时,边注在外侧,也就是左页的左边或右页的右边;双栏页面的边注排在最近的页边。如要切换边注的方向,可以使用\reversemarginpar 和 \normalmarginpar 命令。

5,对于大段注释,可以是使用verbatim 宏包的comment 环境。

6,设置文字的颜色可以使用 \textcolor 命令 语法: \textcolor{名称}|[模式]{代码}{文字}。

7,可以用 \pagestyle 和 \thispagestyle 命令来设置整个文档或单独某页的样式。

8,保持文本的原样输出,可以使用verbatim指令。对于不超过一行的文本,可以简化成\verb|文本|。

9,在页边上的注释可用命令\marginpar命令生成

10,主控文档中引用子文档可以用\include命令。注意 \include 命令会新起一页,如果不想要新页可以改用 \input 命令。

11,表格某列的宽度,可以将其对齐方式参数从 l、c、r 改为p{宽度}。这时纵向对齐方式是居顶,t、c、b 等参数失效。

12,latex设置页面边距,比如 \geometry{a4paper,left=2cm,right=2cm,top=1cm,bottom=1cm}

13,行距的设置:使用最多的是setspace宏包,举一个例子:设置行间距为22pt,就可以这样设置 \usepackage{setspace}

自定义命令\newcommand格式:

\newcommand{新命令}[参数数量][默认值]{定义内容}

使用这个命令遇到过一次问题,就是当定义内容里含有lstlisting时候会报错,错误如下! Missing \endcsname inserted. ,目测是和其他的包冲突了,所以导致折腾了好一会都没解决掉。 利用宏包 geometry设置上、下、左、右的页边距以及标题和正文之间的间距(梅木秀雄)

\usepackage[paperwidth =100mm,paperheight=150mm,margin=20mm]{geometry}

显示目录:

\tableofcontents

另外说明下,这个命令放在哪里,目录就会出现在哪里。和交叉引用相同的一个特点就是需要编译两次。类似地,可以使用 \listoffigures 和 \listoftables 命令来生图目录和表目录。 在文章中间位置修改链接格式(颜色):

\hypersetup{linkcolor=red}

部分Latex命令简介

\" 产生重音号
# 在用户自定义命令或环境时被用作变量替换符
\| 产生 ||
~ 产生单词间的正常空格,但是禁止在这里换行

参考

[1] 《LaTex 入门与提高》 陈志杰等

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议