Latex学习1

本文教程为个人对https://www.latexstudio.net/LearnLaTeX/教程的个人笔记 LaTeX 文档是==文本==和==命令==的混合体。 命令以反斜线开始,有时在大括号里有参数(或有时在方括号中有可选参数) 基础 文档导言区、主体 每个 LaTeX 文档都有一个 \beg

本文教程为个人对https://www.latexstudio.net/LearnLaTeX/教程的个人笔记

LaTeX 文档是==文本==和==命令==的混合体。
命令以反斜线开始,有时在大括号里有参数(或有时在方括号中有可选参数)

基础

文档导言区、主体

每个 LaTeX 文档都有一个 \begin{document} 和一个匹配的 \end{document}

%% 文档导言区 %%
\begin{document}
%% 主体 %%
\end{document}

环境

环境:其他 \begin{...} 和\end{...}

\begin{x}
	\begin{y}
		%% 可以嵌套但需一一匹配 %%
	\end{y}
\end{x}

注释

% xxx or %% xxxx %%

空格、不换行空格(硬空格)

latex多个空格被当作一个空格处理,用 ~ 来创建不换行空格,把两段文字「绑」在一起

特殊字符

以 \ 起始是 LaTeX 指令表示一个「命令」
大括号字符 { 和 } 用于显示强制性参数即命令需要的信息。

逻辑结构

斜体

\emph\textit

\emph{aaa\emph{aaa}} %% \emph可以嵌套使用 %%
\textit{aa\textit{bb}} %% \textit不可以嵌套使用 %%

加粗

\textbf

目次命令

LaTeX 可以将文档分成好几个层级:

  • \chapter (启用它需要 \documentclass{book} 或者 \documentclass{report}
  • \section
  • \subsection
  • \subsubsection
  • \paragraph
  • \subparagraph

列表

参数不同分有序(参数:enumerate)无序(参数:itemize)
可以嵌套,至多可以在标准的 LaTeX 中嵌套四层

Ordered 
\begin{enumerate} 
	\item
		\begin{enumerate} 
			\item An entry 
			\item Another One 
			\item Wow! Three entries 
		\end{enumerate}  
	\item Another One 
	\item Wow! Three entries 
\end{enumerate} 

Unordered 
\begin{itemize} 
	\item An entry 
	\item Another One 
	\item Wow! Three entries 
\end{itemize}

效果如下:

1. (a) An entry
   (b) Another One
   (c) Wow! Three entries
1. Another One
2. Wow! Three entries
Unordered
• An entry
• Another One
• Wow! Three entries

文档类

文档类用于设置文档的一般布局,比如:

  • 边距、字体、间隔……
  • 是否有章\chapter
  • 标题是否另起一页
    文档类也可以添加新的命令:比如创建幻灯片时
    文档类这一行也可以设置一些全局选项——对整个文档起作用的选项
    这些选项在方括号中给出:\documentclass[<选项>]{<文档类>}

基本文档类

\documentclass{文档类}

  • article
    不包含章的短文档
  • report
    含有章的长文档,单面印刷
  • book
    含有章的长文档,双面印刷,包含正文前材料(front-matter)和正文后材料(back-matter,比如索引)
  • letter
    不包含目次信息
  • slides
    幻灯片(详见后文)
    标准的 articlereportbook 文档类接受 10pt11pt12pt 选项用于更改字体大小,使用 twocolumn 选项用于制作双栏文档
    例:\documentclass[10pt,twocolumn]{article}

富功能文档类

先给基本的玩明白再说吧doge🤣

拓展Latex

声明文档类后,
在导言区中可以添加一个或多个「宏包(package)」来修改相关功能。
宏包可以:

  • 改变 LaTeX 某些部分的功能
  • 向 LaTeX 添加新的命令
  • 更改文档的设计

改变排版方式(断字、标点符号、引文、本地化……)

通过 babel 宏包
\usepackage[语言]{babel}
例:\usepackage[french]{babel}

改变设计

使用 geometry 宏包
\usepackage[样式]{geometry}
例:\usepackage[margin=1in]{geometry}

添加新功能

要啥功能就加啥包呗

自定义命令

\newcommand\自定义命令[参数个数]{命令内容 #参数n}
最多可以设置 9 个参数
例:\newcommand\kw[1]{\textbf{\itshape #1}}

图片

使用 graphicx 宏包

\usepackage{graphicx}

%% `\includegraphics` 命令 %%
\includegraphics[height=2cm]{example-image}

更改图片外观

图片的宽度和高度,通常被设定为 \textwidth(或 \linewidth) 和 \textheight 的相对值

\textwidth 是一整页的文本区域宽度,而 \linewidth 是当前行的宽度

例:\includegraphics[width = 0.5\textwidth]{example-image}
 scale 命令缩放图片,或者指定 angle 角度以旋转图片,亦可通过 clip 和 trim 裁切图片
 例:\includegraphics[scale = 0.5,clip, trim = 0 0 50 50]{example-image}

浮动图片

Test location. 
\begin{figure}[ht] 
	\centering 
		\includegraphics[width=0.5\textwidth]{example-image-a.png} 
	\caption{An example image} 
\end{figure}

这里 LaTeX 将图片和题注从 Test location 处移动
ht 选项影响了 LaTeX 在何处放置浮动体
这两个字母的意思是,浮动体可以在原来的地方(Test location 旁边),或者是一页的顶部。
最多可以使用四种位置描述符:

  • h Here 这里(如果可以的话)
  • t Top 页面顶部
  • b Bottom 页面底部
  • p Page 浮动体专页

使用 \centering 而不是 center 环境来水平居中图片
避免浮动环境和 center 环境都会增加纵向间隔的局面

表格

使用 tabular 环境构建表格,
使用array 宏包添加更多功能

基础

可选的列格式如下:

类型描述
l列左对齐
c列居中对齐
r列右对齐
p{width}固定列宽;文字会被自动折行并两端对齐
m{width}和 p 类似,但垂直居中对齐
b{width}和 p 类似,但垂直底部对齐
w{align}{width}固定列宽,如果太长会稍稍出界。你可以选择水平对齐(align)选项 lc 或 r
W{align}{width}和 w 类似, 但是如果出界的话会收到警告
其他的导言符
类型描述
*{num}{string}在表格导言中重复 string 引导符 num 次。你可以通过这种方式定义相同的列
>{decl}在当前列的每个单元格前都添加 decl(很有用,比如需要对整列设定一个不同的字体时)
<{decl}会在前一列的每个单元格后添加 decl
``
@{decl}将两列之间的空隙替换为 decl
!{decl}在两列之间的空隙中央添加 decl
被 lcr 标识的列将会根据最宽的单元格自动决定列宽。
每一列都需要被声明。
如果需要三个居中列,你可以在表格导言使用 ccc
表格主体中,列都是通过 & 和号来分隔的,行是通过 \\ 来另起的。
例:
\begin{tabular}{lll} 
	Animal & Food & Size \\ 
	dog & meat & medium \\ 
	horse & hay & large \\ 
	frog & flies & small \\ 
\end{tabular}

行分割线

使用booktabs\usepackage{booktabs}
几种分割线:\toprule\midrule\bottomrule\cmidrule(参数){列号-列号}(绘制仅占用指定列、而不占整行的分割线)参数用来缩短分割线的任意一端( r 、lrl 是分别缩短分割线端和端。)
\addlinespace 来插入一个小的间隙

合并单元格

\multicolumn 命令接受三个参数:(默认合并两个单元格)

  1. 需要合并多少个单元格
  2. 合并后单元格的对齐方式
  3. 合并后单元格的内容
    例:\multicolumn{2}{c}{unknown}
    LaTeX 不支持纵向单元格的合并。
    通常通过将单元格留空的方式,来告诉读者单元格是跨行的。

交叉引用

\label{key}\ref{key}
例:

\begin{document}
	Hey world! This is a first document. 
	\section{Title of the first section} Text of material for the first section. 
		\subsection{Subsection of the first section} 
\label{subsec:labelone} Text of material for the first subsection. 
	\begin{equation} 
		e^{i\pi}+1 = 0 
		\label{eq:labeltwo} 
	\end{equation} 
	In subsection~
	\ref{subsec:labelone} is equation~
	\ref{eq:labeltwo}. 
\end{document}

这里的subsec: 和 eq:只是为了记下来在这个标签之前最近的位置在处理什么内容。并没什么特殊含义

label 添加在想引用的东西后面
特别注意浮动体\label 应该跟在 \caption 命令后面(或者更好的方式是在里面)并处于浮动体环境内部。

字体和间距

段间距

段落首行没有缩进,但要在段落之间插入空行
使用 parskip 宏包\usepackage[parfill]{parskip}

强制断行(很少用)

下述情况使用 \\ 来另起一行而不另起一段:

  • 在表行的结尾处
  • 在 center 环境中
  • 诗歌(verse 环境)
    如果不属于这些情况,那就别用!😒

添加间距

使用 \, 添加一个小的间距(大概半个空格宽度)
在数学模式中,还可以使用:\.\:\;,以及用于添加负间隙的 \!

极少情况下,比如在做一个标题页的时候,需要显式地添加水平间距或垂直间距。对于这种情形使用 \hspace 和 \vspace
例:

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
Some text \hspace{1cm} more text.

\vspace{10cm}

Even more text.
\end{document}

设置文本样式

对字体做加粗、斜体、等宽等等的处理。
有两种命令可用:一种用于小段,一种用于大段。
对于小段而言,可以使用 \textbf\textit\textrm\textsf\texttt 以及 \textsc
例:

Let's have some font fun: \textbf{bold}, \textit{italic}, \textrm{roman}, \textsf{sans serif}, \texttt{monospaced} and \textsc{small caps}.

对于大段来说,使用能够更改字体设置的命令:
比如说 \bfseries 和 \itshape
这些命令设置完毕后不会复原,所以需要定义一个「组(group)」防止这些设置作用于整个文档。LaTeX 环境是一个组,表格单元格也是一个组,使用 {...} 来显式地定义一个组。

{\itshape
This text is italic.
So it this: the effect is not limited to a paragraph.
}

字体大小

采用类似方式设置字体大小——这些命令也会影响其他设置
常见的有 \huge\large\normalsize\small 以及 \footnotesize
注意要在改回字体大小之前添加 \par结束该段。
例:

{\itshape\large Some text\par}
Normal text
{\bfseries\small Much smaller text\par}

设置字体

使用 fontspec 宏包
例:

\usepackage{fontspec} 
\setmainfont{texgyretermes-regular.otf}

字体目录:The LaTeX Font Catalogue – Front Page

引用和参考文献

引用数据库

引用数据库「BibTeX 文件」扩展名 .bib
包含一条或多条记录,每条记录对应一个引用,每条记录中都会有一系列的域(field)。

@article{Thomas2008,
  author  = {Thomas, Christine M. and Liu, Tianbiao and Hall, Michael B.
             and Darensbourg, Marcetta Y.},
  title   = {Series of Mixed Valent {Fe(II)Fe(I)} Complexes That Model the
             {H(OX)} State of [{FeFe}]Hydrogenase: Redox Properties,
             Density-Functional Theory Investigation, and Reactivity with
             Extrinsic {CO}},
  journal = {Inorg. Chem.},
  year    = {2008},
  volume  = {47},
  number  = {15},
  pages   = {7009-7024},
  doi     = {10.1021/ic800654a},
}
@book{Graham1995,
  author    = {Ronald L. Graham and Donald E. Knuth and Oren Patashnik},
  title     = {Concrete Mathematics},
  publisher = {Addison-Wesley},
  year      = {1995},
}

大部分域都以键值对的格式给出
但与「主键」(key)相区别:「主键」是引用名。可以用任意一个名字
上面的例子使用「作者名+年份」的格式(通常都是这么做的)。
在 author 域,每一个作者都以 and 分开。这很重要输出格式需要了解哪一块是这个作者。
文章标题中有些部分还会被大括号包裹——以避免被作用任何大小写更正规则。

从引用数据库获取信息(两种方法)

使用 natbib 宏包

\usepackage[numbers]{natbib}

\begin{document}
The mathematics showcase is from \citet{Graham1995}, whereas
there is some chemistry in \citet{Thomas2008}.

Some parenthetical citations: \citep{Graham1995}
and then \citep[p.~56]{Thomas2008}.

\citep[See][pp.~45--48]{Graham1995}

Together \citep{Graham1995,Thomas2008}

\bibliographystyle{plainnat}
\bibliography{learnlatex}
\end{document}

natbib 宏包提供了文本和括号的引用样式:分别是 \citet 和 \citep
参考文献样式是通过 \bibliographystyle 选择的,这里使用了 plainnat 样式。
参考文献通过 \bibliography 插入的同时也选择了使用的数据库(多个数据库采用逗号分隔数据库名)。
页码引用可以通过一个可选参数添加。
如果提供了两个可选参数,第一个可选参数就被当作引用前的小标记,第二个可选参数就被当作引用标签后的页码引用。
上述设定使用了作者—年份(author-year)样式。但是也可以采用数字编码的引用方式。这可以通过向 natbib 行添加 numbers 选项来实现。

使用biblatex 宏包

biblatex 宏包和 natbib 运作方式稍有不同,主要体现在导言区内选择数据库和文档正文内的排印上。

\usepackage[style=authoryear]{biblatex}
\addbibresource{learnlatex.bib} % 引用文件

\begin{document}
The mathematics showcase is from \autocite{Graham1995}.

Some more complex citations: \parencite{Graham1995} or
\textcite{Thomas2008} or possibly \citetitle{Graham1995}.

\autocite[56]{Thomas2008}

\autocite[See][45-48]{Graham1995}

Together \autocite{Thomas2008,Graham1995}

\printbibliography
\end{document}

 \addbibresource 需要数据库文件名的全称

引用前后的文字通过可选参数插入。注意,这里的页码不需要添加 p.~ 或者 pp.~ 前缀,biblatex 可以自动添加合适的前缀。

在 biblatex 里,加载宏包时文献样式就被选择了。这里\usepackage[style=authoryear]{biblatex}使用了 authoryear,当然也可以用 numeric 数字编码和其他许多样式。

选哪个

一般来讲,biblatex 被称为是比 BibTeX 工作流更容易定制化的一种方案。

biblatex 可以更加容易地实现许多精心设计的引用样式。
大致来讲,许多理工科(STEM)科目不太需要关注这种样式设定,但是对于一些人文学科领域的许多复杂样式来讲,这就变得非常重要。

BibTeX 只能对美式 ASCII 字符正确排序
biblatex 提供了完整的 Unicode 排序能力。

实际上,BibTeX 工作流比 biblatex 更容易建立
许多出版社和期刊都希望通过 BibTeX 工作流生成参考文献,一般不期望 biblatex 的提交。

简单来说:

  1. 看出版社要求
  2. 看你要简单的还要复杂的
LICENSED UNDER CC BY-NC-SA 4.0
评论