欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2024/3/26 编程问答 71 豆豆
生活随笔 收集整理的这篇文章主要介绍了 LaTeX教程(三)——文档格式排版 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

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

1. 章节目录

1.1 生成章节

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

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

  • \chapter{⟨title⟩}
  • \section{⟨title⟩}
  • \subsection{⟨title⟩}
  • \subsubsection{⟨title⟩}
  • \paragraph{⟨title⟩}
  • \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}

    输出如下

    1.2 生成目录

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

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

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

    显示的目录如下

    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 提供了基本的有序和无序列表环境 enumerate 和 itemize,两者的用法很类似,都用\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 文本对齐

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

    \begin{center}Centered text using acenter environment.\end{center}\begin{flushleft}Left-aligned text using aflushleft environment.\end{flushleft}\begin{flushright}Right-aligned text using aflushright environment.\end{flushright}\centeringCentered text paragraph.\raggedrightLeft-aligned text paragraph.\raggedleftRight-aligned text paragraph.


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

    3.3 引用环境

    LaTex常用的引用环境有三种, quote 、quotation 、verse。quote 用于引用较短的文字,首行不缩进;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 smilewhen she beholds her own face ina 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 functionint main() {printf("Hello World!");return 0;if (a == 1){c = 2}} \end{lstlisting} \end{document}

    显示如下

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

    设置含义可选值
    breaklines代码过长时是否自动换行true,false
    numbers在哪里显示每行的编号left、right、none
    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; }

    总结

    以上是生活随笔为你收集整理的LaTeX教程(三)——文档格式排版的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。