LaTeX教程(三)——文档格式排版

news2024/10/6 14:26:49

文章目录

  • 1. 章节目录
    • 1.1 生成章节
    • 1.2 生成目录
  • 2. 交叉引用和脚注
    • 2.1 交叉引用
    • 2.2 脚注
  • 3. 特殊环境
    • 3.1 列表
    • 3.2 文本对齐
    • 3.3 引用环境
    • 3.4 代码环境

1. 章节目录

1.1 生成章节

写文章或者论文的时候,章节目录可谓是必不可少的,下面我们来聊聊LaTeX怎么处理章节。

LaTeX中的章节,从上到下一般由如下几个层级的划分:

  1. \chapter{⟨title⟩}
  2. \section{⟨title⟩}
  3. \subsection{⟨title⟩}
  4. \subsubsection{⟨title⟩}
  5. \paragraph{⟨title⟩}
  6. \subparagraph{⟨title⟩}

其中 \chapter 层级是 report、book 才有的,article 中并不存在。

LaTeX中的章节章节命令都是自动编号的,如果不需要自动编号,则可以使用 * 命令,如 \section*{⟨title⟩}

此外,对于一些比较大的文章,还可以使用 \part 命令将其分为几个独立的部分,每一个部分是相互独立的,每一个部分中的章节重新编号。示例如下

\documentclass[12pt, a4paper, oneside,titlepage]{report}
\usepackage{ctex, ulem} %导入中文包
\title{LaTex教程}
\author{Suppose}
\date{\today}
\begin{document}
	\maketitle
	\chapter{绪论}
	\section{引言}
	单单从字面上理解,知识图谱应该是一种更加结构化的知识库,将散乱的知识有效的组织起来,方便人们的查阅,而不是像普通的信息一样全部由文字组成。
	
	伴随着web技术的不断演进与发展,人类先后经历了以文档互联为主要特征的“web 1.0”时代,以数据互联为特征的“web 2.0”时代,正在迈向基于知识互联的崭新“Web 3.0”时代。
	
	\section{实验方法}
	\part{正文}
	\section{实验结果}
	\subsection{数据}
	\subsection{图表}
	\subsubsection{实验条件}
	\subsubsection{实验过程}
	\subsection{结果分析}
	\section{结论}
	\section{致谢}
\end{document}

输出如下

项目Value在这里插入图片描述

1.2 生成目录

LaTeX中生成目录的方法十分简单,只需要在合适的地方插入命令 \tableofcontents 即可。

默认会插入一页新页作为目录,如在上述代码的 \maketitle 后添加 \tableofcontents 后,可以得到下面的一页新页。不过这样添加后,目录会变成第一页,但是很多情况下目录是不要页码的,所以还需要在 \tableofcontents 后面添加下面三行代码。

\thispagestyle{empty} %去除目录的页码
\newpage %断页
\setcounter{page}{1}%新页从1开始编号

显示的目录如下
https://img-blog.csdnimg.cn/12a1e794277a404db19aefba23768178.png

2. 交叉引用和脚注

2.1 交叉引用

LaTeX一个很强大的功能就是交叉引用。

在行文过程中,我们可能需要引用自己前面写过的结果。比如“在第一章第5节我们提到……”“请参见我在第327页做的推导……”之类的。在这种情况下,自动化的需求是非常高的。如果说我手动输入了这些数字,那么一旦文档结构有变动,产生的工作量将非常可观。这些东西你还不能不改,因为你不改的话完全就是错的,本来想引用第3节结果写的是“见第2节”。但这在 LaTeX 中完全不是问题。我们可以用标签(label)和交叉引用来解决这个问题。

标签和交叉引用的基本思路是这样的。首先把我需要引用的章节用 \label{标签名称} 进行标记,然后在需要引用它的时候用 \ref{标签名称} 进行引用。这样一来,引擎在进行编译的时候就需要编译两次:第一次生成所有章节的编号,第二次再把这些编号填充到相应的位置。下面我们来看一个使用的例子:

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	\section{引言}
	\section{实验方法}
	\section{实验结果}\label{sec:shi}
	\subsection{数据}
	我在第 \ref{sec:shi} 节中提到过
	\section{结论}
	\section{致谢}
\end{document}

在这里插入图片描述

2.2 脚注

使用 \footnote 命令可以在页面底部生成一个脚注,实例如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	\section{引言}
	\section{实验方法}
	\section{实验结果}\label{sec:shi}
	\subsection{数据}
	我在第 \ref{sec:shi} 节中提到过 \footnote{我根本没提到过}
	\section{结论}
	\section{致谢}
\end{document}

在这里插入图片描述

3. 特殊环境

3.1 列表

LATEX 提供了基本的有序和无序列表环境 enumerateitemize,两者的用法很类似,都用\item 标明每个列表项。enumerate 环境会自动对列表项编号。基本用法如下

\begin{enumerate}
\item . . .
\end{enumerate}

其中 \item 可带一个可选参数,将有序列表的计数或者无序列表的符号替换成自定义的符号。列表可以嵌套使用,最多嵌套四层。

关键字环境 description 的用法与以上两者类似,不同的是 \item 后的可选参数用来写关键字,以粗体显示,一般是必填的。示例如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	
	\begin{enumerate}
		\item 第一
		\item[*] 第二
		\item 第三
	\end{enumerate}

	\begin{itemize}
		\item 第一
		\item[*] 第二
		\item 第三
	\end{itemize}

	\begin{description}
		\item[Enumerate] Numbered list.
		\item[Itemize] Non-numbered list.
	\end{description}
\end{document}

在这里插入图片描述

3.2 文本对齐

centerflushleftflushright 环境分别用于生成居中、左对齐和右对齐的文本环境。除此之外,还可以用 \centering\raggedright\raggedleft 命令直接改变文字的对齐方式。正文区内容如下

	\begin{center}
		Centered text using a
		center environment.
	\end{center}
	\begin{flushleft}
		Left-aligned text using a
		flushleft environment.
	\end{flushleft}
	\begin{flushright}
		Right-aligned text using a
		flushright environment.
	\end{flushright}

	\centering
	Centered text paragraph.
	
	\raggedright
	Left-aligned text paragraph.
	
	\raggedleft
	Right-aligned text paragraph.

在这里插入图片描述
从上述可以看出,center 等环境会在上下文产生一个额外间距,而 \centering 等命令不产生,只是改变对齐方式。

3.3 引用环境

LaTex常用的引用环境有三种, quotequotationversequote 用于引用较短的文字,首行不缩进;quotation 用于引用若干段文字,首行缩进。引用环境较一般文字有额外的左右缩进。verse 用于排版诗歌,与 quotation 恰好相反,verse 是首行悬挂缩进的。

	Francis Bacon says:
	\begin{quote}
		Knowledge is power.
	\end{quote}

	《木兰诗》:
	\begin{quotation}
		万里赴戎机,关山度若飞。
		朔气传金柝,寒光照铁衣。
		将军百战死,壮士十年归。
		归来见天子,天子坐明堂。
		策勋十二转,赏赐百千强。⋯⋯
	\end{quotation}

	Rabindranath Tagore’s short poem:
	\begin{verse}
		Beauty is truth’s smile
		when she beholds her own face in
		a perfect mirror.
	\end{verse}

在这里插入图片描述

3.4 代码环境

代码块
使用 \usepackage{listings} 宏包,并使用 \lstset{} 进行基础设置,然后使用 \begin{lstlisting}[language=xxx]\end{lstlisting} 插入代码块。

基础设置包括行号,不显示字符串空格,代码块边框,不包含颜色等设置,要设置颜色和字体请见下文的高级用法。

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, listings} %导入中文包

% 代码块基础设置
\lstset{
	numbers=left,                          	% 在左侧显示行号
	showstringspaces=false,        			% 不显示字符串中的空格
	frame=single,                         	% 设置代码块边框
	columns=flexible,%不随便添加空格,只在已经有空格的地方添加空格
	breaklines,%自动换行
}


\begin{document}
	\maketitle
\begin{lstlisting}[   % 进行参数设置
		language=c,gobble = 4,tabsize=4]  
	#include <stdio.h>
	
	// main function
	int main() {
		printf("Hello World!");
		return 0;
		if (a == 1){
			c = 2
		}
	}
\end{lstlisting}
\end{document}

显示如下
在这里插入图片描述
实际上,在使用\usepackage{listings} 宏包时,可以在导言中对所有的代码块进行全局设置,也可以在每一个环境引用中进行单独的设置,常用的设置如下:

设置含义可选值
breaklines代码过长时是否自动换行true,false
numbers在哪里显示每行的编号leftrightnone
stepnumber每隔多少行显示行号整数即可
firstnumber行号起始数字整数或 last:起始行数为上一段lstlisting环境结尾的行数
tabsize缩进的空格数整数
showstringspaces是否显示程序中的空格true,false

此外还可以设置字符串颜色、关键字颜色、背景色、边框样式等等,这里提供一个比较好的设置模板,大家可以直接拿来用。

\usepackage[dvipsnames]{xcolor}  % 更全的色系

% 代码块基础设置
\lstset{
	backgroundcolor = \color{yellow!10},    % 背景色:淡黄
	basicstyle = \small\ttfamily,           % 基本样式 + 小号字体
	rulesepcolor= \color{gray},             % 代码块边框颜色
	breaklines = true,                  % 代码过长则换行
	numbers = left,                     % 行号在左侧显示
	numberstyle = \small,               % 行号字体
	keywordstyle = \color{blue},            % 关键字颜色
	commentstyle =\color{green!100},        % 注释颜色
	stringstyle = \color{red!100},          % 字符串颜色
	frame = shadowbox,                  % 用(带影子效果)方框框住代码块
	showspaces = false,                 % 不显示空格
	columns = fixed,                    % 字间距固定
	morekeywords = {as},                % 自己添加新的关键字
	tabsize=4,
}

将其加入导言后,正文引用环境时只需要设置 language 参数即可。

伪代码

需要使用 \usepackage{algorithm2e} 宏包,其一个例子如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, listings} %导入中文包
\title{LaTex教程}
\author{Suppose}
\date{\today}
\usepackage[ruled,linesnumbered]{algorithm2e}

\begin{document}
	\maketitle
	\begin{algorithm}
		\caption{Simulation-optimization heuristic}\label{algorithm}
		\KwData{current period $t$, initial inventory $I_{t-1}$, initial capital $B_{t-1}$, demand samples}
		\KwResult{Optimal order quantity $Q^{\ast}_{t}$}
		$r\leftarrow t$\;
		$\Delta B^{\ast}\leftarrow -\infty$\;
		\While{$\Delta B\leq \Delta B^{\ast}$ and $r\leq T$}{$Q\leftarrow\arg\max_{Q\geq 0}\Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})$\;
			$\Delta B\leftarrow \Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})/(r-t+1)$\;
			\If{$\Delta B\geq \Delta B^{\ast}$}{$Q^{\ast}\leftarrow Q$\;
				$\Delta B^{\ast}\leftarrow \Delta B$\;}
			$r\leftarrow r+1$\;}
	\end{algorithm}
\end{document}

输出为
在这里插入图片描述
在导言区引用的时候,可以进行一些设置,参数如下

参数含义
linesnumbered显示行号
ruled标题显示在上方,不加就默认显示在下方
vlined代码段中用线连接
boxed将算法插入在一个盒子里

其使用规则如下

在这里插入图片描述

如果需要使用if-elseif-elseif-else这样的形式,可以使用如下的格式

\uIf {condition 1} {
    code 1;
} \ElseIf {condition 2} {
    code 2;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux——安装和使用vmtools

实验1 Linux系统初识 一、安装和使用vmtools vmware tools是虚拟机VMware Workstation自带的一款工具&#xff0c;现在介绍ubuntu linux安装VMare tools。它的作用就是使用户可以从物理主机直接往虚拟机里面拖文件。如果不安装它&#xff0c;我们是无法进行虚拟机和物理…

【火电机组、风能、储能】高比例风电电力系统储能运行及配置分析附Matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法…

第十三章ThreadLocal

文章目录什么是ThreadLocal基本使用常用方法使用ThreadLocal来解决使用sychronized解决ThreadLocal与synchronized的区别运用场景_事务案例场景构建引入事务JDBC中关于事务的操作的api常规解决方案常规方案的弊端ThreadLocal解决方案ThreadLocal方案的好处ThreaLocal的内部结构…

Java堆排序和代码实现详解

堆的定义 堆是计算机科学中一类特殊的数据结构的统称&#xff0c;堆通常可以被看做是一棵完全二叉树的数组对象。 堆的特性 1.它是完全二叉树&#xff0c;除了树的最后一层结点不需要是满的&#xff0c;其它的每一层从左到右都是满的&#xff0c;如果最后一层结点不是满的&…

Hadoop(入门)

一、Hadoop概述 1.1 Hadoop是什么 1&#xff09;Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2&#xff09;主要解决&#xff0c;海量数据的存储和海量数据的分析计算问题。 3&#xff09;广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念—Hadoop生态圈。…

[Vue3]自定义指令实现组件元素可拖拽移动

实现思路&#xff1a; 元素移动设计思路 1.在光标按下的时刻记录下光标的绝对位置坐标&#xff08;以视窗左上角为原点&#xff09;&#xff08;const {clientX, clientY} evt&#xff09; clientX / clientY 事件属性返回当事件被触发时光标指针相对于浏览器页面当前 body …

flutter系列之:移动端手势的具体使用

文章目录简介赋予widget可以点击的功能会动的组件可删除的组件总结简介 之前我们介绍了GestureDetector的定义和其提供的一些基本的方法&#xff0c;GestureDetector的好处就是可以把任何一个widget都赋予类似button的功能。 今天将会通过几个具体的例子来讲解一下GestureDet…

用ChatGPT写一段嵌入式代码

已剪辑自: https://mp.weixin.qq.com/s/uKkUwXx32LPkUYQK44z1lw 废话不多说&#xff0c;开整&#xff01; ChatGPT: Optimizing Language Models for Dialogue&#xff0c;即优化对话的语言模型&#xff0c;它以对话的方式进行交互。对话形式使ChatGPT能够回答后续问题&#…

性能测试---LoadRunner

目录 1.LoadRunner对比Jmeter的优势 2.LoadRunner三个组件之间的关系 3.学习VUG的使用 3.1创建性能测试脚本并进行录制 第一步:打开VUG,创建一个新的性能测试的脚本 第二步:对新建的脚本进行设置 第三步:启动WebTours服务 第四步:回到VUG中,点击录制按钮并设置录制选项…

学习编程的五个关键点!你需要get它,并运用!

总体来说&#xff0c;学习如何编程是一件较难的事情。我最近发现大学里的计算机课程和各种编程训练营错过了编程的一些重要因素&#xff0c;对新手的教学用了不太恰当的方法。于是&#xff0c;我准备分享一个成功的编程课程应该具备的五大基本支柱。 菜鸟的目标是掌握编程的基…

form表单发送put、delete、patch请求的实现过程

关于发送put、delete、patch请求底层实现过程 对于put这些请求&#xff0c;我们无法直接通过form表单发送&#xff0c;form表单仅支持get和post请求&#xff1b; 虽然我们无法直接通过form表单发送这些请求&#xff0c;但我们可以以form表单为载体做二次请求&#xff1a;使用f…

[附源码]计算机毕业设计Node.js宠物商店管理系统(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

48数据流中的中位数 49表达式 50两数之和

48数据流中的中位数 第一次没看到要求排序&#xff0c;还以为题目答案写错了&#xff0c;用排序的内置函数也正好是nlogn import java.util.ArrayList;public class Solution {ArrayList<Integer> list new ArrayList<>();public void Insert(Integer num) {list…

小满nestjs(第二十七章 nestjs typeOrm关系)

在我们开始的过程中&#xff0c;肯定不会把数据存在一个表里面&#xff0c;我们会进行分表&#xff0c;把数据分开存&#xff0c;然后通过关联关系&#xff0c;联合查询。 typeOrm 文档 一对一 | TypeORM 中文文档 前端代码还是复用上一章的 增加了一个添加Tag <template…

腾讯安全联合发布《2022游戏安全白皮书》:外挂对抗仍然激烈

2022年以来&#xff0c;各类游戏安全事件的发生给不断影响着游戏生态的健康发展。同时&#xff0c;随着游戏行业数字化进程的加快&#xff0c;以及游戏全球化布局的不断推进&#xff0c;游戏厂商对于游戏安全的投入越来越大&#xff0c;掌握最新的行业安全态势有利于其安全防护…

外汇天眼:WiKiEXPO亮相香港亚洲博览馆,史上最强大咖阵容坐镇

凛冬已至&#xff0c;在这个寒冷的冬天&#xff0c;WikiGlobal将于2022年12月16日至17日早9:00--晚18:00在香港的亚洲国际博览馆举办为期两天的“Wiki Finance EXPO Asia 2022”。目前展会已拉开帷幕。  此次展会展厅面积高达5000多平方米&#xff0c;经过WiKiEXPO科学的规划和…

【数据结构】线性表之单链表

目录 一、链表的概念 1、概念 2、分类 3、重点 二、单链表模拟实现 1、准备 2、头插法 3、尾插法 4、指定下标插入 5、遍历 6、删除第一次出现的元素key 7、删除所有的key 8、双指针删除所有的key 一、链表的概念 1、概念 是一种物理存储结构上非连续的存储结构&a…

PS-历史记录

目录 哪里能找到【历史记录】面板 1、窗口→历史记录 2、编辑→清理→历史记录 还原 1、点击【历史记录】面板 快捷键 【ctrlz】 【shiftctrlz】 从当前状态创建新文档 创建新快照 给快照起名 1、右击你要创建快照的步骤 2、点击面板菜单 3、先按住alt不动&#…

Java 对象和类

Java作为一种面向对象语言。支持以下基本概念&#xff1a; 多态继承封装抽象类对象实例方法重载 本节我们重点研究对象和类的概念。 对象&#xff1a;对象是类的一个实例&#xff08;对象不是找个女朋友&#xff09;&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对…

猿如意|chat GPT测评

文章目录猿如意猿如意传送门猿如意个人使用感受好的一面&#xff1a;可以改进的一面:什么是猿如意chat GPT测评chat GPT使用过程使用场景描述&#xff1a;问题1问题2问题3问题4&#xff1a;问题5&#xff1a;主观感受&#xff1a;认为此功能不足的地方&#xff1a;对此功能的期…