0%

语法

1
2
3
4
5
\begin{thebibliography}{widest label}
%\bibitem[item number]{citation}...
\bibitem[1]{citation}参考文献内容
%\bibitem[2]{...}...
\end{thebibliography}

参数说明

  • widest label :参考文献序号的最大宽度。添加参考文献数量的一个宽度,当有两位数的参考文献时可以使用任意的两位数(比如文献小于 100 篇时,可以使用 99、10 等任意两位数字,习惯写 99);超过 100 时,则任意填写一个三位数
  • item number :可选参数,该条目的序号,如果省略,则按自然排序给定序号
  • citation :与 \cite{} 命令中的标签匹配。和图、表环境中所使用的 \label 作用相同

完整示例

1
2
3
4
5
6
7
8
9
10
11
\documentclass{ctexart}

\begin{document}
text text text text text text text\cite{ref1} text text text text text text text text text text text text text text text text text text text text text text text\cite{Coffeelize} text text text text text text text text text text text text text text text text text text text\cite{02} text text text text text text text text text text text text text text text text text text text text text text

\begin{thebibliography}{99} % 添加参考文献数量的一个宽度,当有两位数的参考文献时可以使用任意的两位数;超过100时,则任意填写一个三位数
\bibitem{ref1}KOVACIC I, BRENNAN M J, WATERS T P. A study of a nonlinear vibration isolator with a quasi-zero stiffness characteristic[J]. Journal of Sound and Vibration, 2008,315(3):700-711.
\bibitem{02}CARRELLA A, BRENNAN M J, WATERS T P. Static analysis of a passive vibration isolator with quasi-zero-stiffness characteristic[J]. Journal of Sound and Vibration, 2007, 301(3):678-689.
\bibitem{Coffeelize}这里是智朋的个人博客:\verb|https://coffeelize.top|
\end{thebibliography}
\end{document}

01-thebibliography环境插入参考文献.png

查看 tex 原文件和输出的 PDF 可知

  1. 该示例中使用的是 article(ctexart)文档类,thebibliography 环境生成不带编号的一节或一章(report、book 文档类)
  2. 尽管文献 3 插入在文献 2 的前面,但是其编号是按照 bibitem 的顺序自动排序的,而不是按照文献的插入顺序进行排序的
  3. 输出的参考文献列表中:并没有出现期刊名斜体,卷期号什么加粗,如果需要调整格式,需要在 tex 中手动调整╮(╯▽╰)╭

其他说明

在 article 文档类中的节标题为 “Reference”,而在 report、book 等文档类中章节标题默认为 “Bibliography”

ctexart、ctexbook 等文档类对中文进行了适配,节标题均为 “参考文献”(如上图所示)

上角标编号

Q:想一想,在 word 中,将 [1] 转变为上角标的 [1] 需要几步?
A:一步,选中 [1],点击一下 “上标” 即可

01-Word中编号设置为上标.png

在 LaTeX 中同样如此,即将原来的 “cite 命令” 和 “上标命令” 封装一下

1
\newcommand{\upcite}[1]{\textsuperscript{\cite{#1}}} 

通过在导言区添加如上命令,需要添加引用的时候直接使用 \upcite 命令即可

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass{ctexart}
\newcommand{\upcite}[1]{\textsuperscript{\cite{#1}}}
\begin{document}
\begin{itemize}
\item 参考文献非上标编号\cite{ref1}
\item 参考文献上标编号\upcite{Coffeelize}
\end{itemize}

\begin{thebibliography}{9}
\bibitem{ref1}参考文献1
\bibitem{Coffeelize}这里是智朋的个人博客
\end{thebibliography}
\end{document}

03-LaTeX参考文献上标标注.png

参考资料

使用 BIBTeX 排版参考文献

  1. 准备一份 BIBTeX 数据库,假设数据库文件名为 books.bib,和 LaTeX 源代码一般位于同一个目录下。
  2. 在源代码中添加必要的命令。假设源代码名为 demo.tex
    1. 首先需要使用命令 \bibliographystyle 设定参考文献的格式。
    2. 其次,在正文中引用参考文献。BIBTeX 程序在生成参考文献列表的时候,通常只列出用了 \cite 命令引用的那些。如果需要列出未被引用的文献,则需要 \nocite{ ⟨ citation ⟩ } 命令;而 \nocite{*} 则让所有未被引用的文献都列出。
    3. 再次,在需要列出参考文献的位置,使用 \bibliography 命令代替 thebibliography 环境:\bibliography{ ⟨ bib-name ⟩ },其中 ⟨ bib-name ⟩ 是 BIBTeX 数据库的文件名,不要带 .bib 扩展名。
    4. 注意:\bibliographystyle\bibliography 这两个命令缺一不可,否则使用 BIBTeX 生成参考文献列表的时候会报错
  3. 开始编译
    1. 使用 xelatex 或 pdflatex 编译源代码 demo.tex
    2. 使用 bibtex 命令(处理一些 aux、bbl 文件,不需要我们管)
    3. 在使用 xelatex 或 pdflatex 编译两遍(读入参考文献并正确,生成引用。)

整个过程使用的命令如下(可以略去扩展名):

1
2
3
4
xelatex demo
bibtex demo
xelatex demo
xelatex demo

关于 bibliographystyle

参考文献的写法在不同文献里千差万别,包括作者、标题、年份等各项的顺序和字体样式、文献在列表中的排序规则等。BIBTeX 用样式(style)来管理参考文献的写法。BIBTeX 提供了几个预定义的样式,如 plain, unsrt, alpha 等。如果使用期刊模板的话,可能会提供自用的样式。样式文件以 .bst 为扩展名。
使用样式文件的方法是在源代码内(一般在导言区)使用 \bibliographystyle 命令:

1
\bibliographystyle{⟨ bst-name ⟩}

这里 ⟨ bst-name ⟩ 为 .bst 样式文件的名称,不要带 .bst 扩展名。

比如说如下的 plain 样式和 GB/T 7714—2015 样式

  • plain

[1] Alice Axford, Bob Birkin, Charlie Copper, and Danny Dannford. Demostration of bibliography items. Journal of TeXperts, 36(7):114–120, Mar 2013.

  • gbt7714-numerical

[1] 陈登原。国史旧闻:第 1 卷 [M]. 北京:中华书局,2000:29.

案例分析

1
2
3
4
5
6
7
8
9
\documentclass{ctexart}
% 指定参考文献的样式
\bibliographystyle{plain}
\begin{document}
登斯楼也,则有去国怀乡,忧谗畏讥\cite{rentoumis2016implementation},满目萧然,感极而悲者矣\cite{孟炎2021交变温度场对光伏组件性能的影响研究}。

%使用\bibliography命令替代原先的thebibliography环境
\bibliography{mybib} %引入自己的bib库,不要带bib扩展名
\end{document}

比如使用 plain 样式的 bibliographystyle,然后随机插入两条文献,编译结果如下图所示:

02-使用plain样式生成的参考文献.png

从上图可看出,对于多个作者:“等”、“.et.al” 还需要进行相应的设置。其原因在于 bibliographystyle 使用的是 plain 样式。plain 的中文翻译点击此可查看:海词词典,大致意思是 “朴素的,纯的”,也就是说参考文献样式按照 “正文文本” 一样处理,而不会对齐进行一些额外的操作。

而如过我们使用的是 gbt7714-numerical 样式,注:使用 gbt7714-numerical 样式需要使用 gbt7714 宏包

1
2
3
4
%...在导言区添加如下两行内容
\usepackage[sort&compress]{gbt7714}
\bibliographystyle{gbt7714-numerical}
%\begin{document}

输出结果如下,已经对参考文献的样式进行了符合 gbt-7714 标准形式的输出

04-使用gb7714输出参考文献.png

完整案例如下

1
2
3
4
5
6
7
8
9
10
\documentclass{ctexart}
% 指定参考文献的样式
\usepackage[sort&compress]{gbt7714}
\bibliographystyle{gbt7714-numerical}
\begin{document}
登斯楼也,则有去国怀乡,忧谗畏讥\cite{rentoumis2016implementation},满目萧然,感极而悲者矣\cite{孟炎2021交变温度场对光伏组件性能的影响研究}。

%使用\bibliography命令替代原先的thebibliography环境
\bibliography{mybib} %引入自己的bib库,不要带bib扩展名
\end{document}

拓展

更多添加参考文献的方案

除了使用 BIBTeX 添加参考文献之外,实际上 Latex 还有其他几种添加参考文献的方案,以下为三种插入参考文献方式比较:

03-三种插入参考文献方式比较.png

如何选择

  • 有现成的样式文件可以用就用
  • BIBTeX 和 biber 都可以用,选自己熟悉的或者编译速度快的,我还是喜欢使用 BIBTeX
  • 假设投稿中遇到以下情景
情景 选择
无样式文件提供 自己开发样式文件难度大,只能用 thebibliography 环境
提供 BIBTeX 或 biber 样式之一 有工具可以用就用
BIBTeX 或 biber 两者均提供了 两者都行,我倾向于编译速度较快的 BIBTeX

通过下载 BibTeX 样式文件输出符号 GBT7714-2005 标准的 BibTeX Style

可参考如下两链接中的任意一种

参考资料

  • LaTeX 官方入门手册:一份(不太)简短的 LaTeX2ε 介绍
  • LaTeX 工作室:LaTeX 中参考文献的处理.pdf

记录一个 “无实际意义” 的宏包:shapepar,宏包名由 “shape” 和 “par” 构成,见名之意,该宏包和形状有关。
01-文本以心形的方式输出.png

由 Donald Arseneau 开发的宏包 shapepar 定义了命令 \shapepar , 它可以按预定义的形状排版段落。段落的尺寸自动被调整,以使得整个造型中都添满了文本。但是被排版的段落中应不含有显示公式或 \vadjust 内容,因为其中含有 \vspace 命令.

LaTeX 中常见的图文混排的宏包有 picinpar、wrapfigure 和 cutwin 等,它们的功能大致相当,都是实现图表和文字的混排。这里要讲的 shapepar 宏包非常有意思,可以将一段文字排成一些有趣的图案,已经预定义的有 \circlepar(圆形)、\CDlabel (CD 光盘)、\heartpar (心形)、\starpar (五角形) 等等。下面以 \heartpar 为例。

02-宏包预定义好的形状.png

案例分析

1
2
3
4
5
\documentclass{ctexart}
\usepackage{shapepar}
\begin{document}
\heartpar{壬戌之秋,七月既望,苏子与客泛舟,游于赤壁之下。清风徐来,水波不兴,举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间,白露横江,水光接天;纵一苇之所如,陵万顷之茫然。浩浩乎如凭虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。}
\end{document}

01-文本以心形的方式输出.png

另外,其他已经预定义好的形状(不太常用的形状),可通过 ∗shape.def 在电脑中搜索,但是需要 include 来引入

拓展应用

宏包作者提供了自定义形状的一些命令,比如如下形状 ,具体请参阅宏包手册,这里暂时没有需求就不做深入研究了。
关于这个自定义形状,有兴趣的同学可自行搜索 ShapePatch by Christian Gollwitzer

03-自定义形状.png

参考资料

前言

本教程不涉及 Anki 的安装、制卡、牌组设置和自定义牌组模板(样式)等具体操作。这里仅列举了作为一个 Anki 的 3 年老用户学习 / 使用过程中的一些优秀资源,以下的一些链接中或许包含本人之前发布的一些内容,虽部分过时但仍推荐看一看。

如果个人记忆系统 (这里指 Anki) 这么好,为什么人们没有广泛地使用他们呢?
这个问题类似于两个经济学家的老笑话,当他们中的一个人看到地上一张 20 美元的钞票时,他说:“看,地上有 20 美元!” 另一个回答:“不可能,如果真的有,早就有人捡到了。” ——Anki 看起来就像是躺在地上的 20 美元

推荐阅读

Anki 插件

推荐阅读

推荐插件

Anki 制卡

视频制卡

阅读制卡

  • (Win/Mac):浏览器插件 在线词典助手 使用
    • 浏览器插件 Anki 划词制卡助手 用起来没有上面这款流畅,推荐使用上面的在线词典助手,两个插件都是同一个开发者
  • (Android):Anki 划词助手,可以从酷安应用市场上下载

了解更多

一些个人建议

阅读了上面的一些链接,假设你已经对 Anki、Supermemo、Remnote 等间隔重复 (Spaced Repetition) 软件有了一些了解。但是在这里,作为 Remnote 使用半年的用户,这里不是很推荐使用 Remnote 这款工具,具体可查阅本博客之前的文章: 为什么放弃使用 remnote 。但是作为最近几年新开发的软件,这款软件可能仍处于快速更新迭代的状态,最近半年本人已经完全弃用了这款产品,因此这篇文章的可靠性可能还需要读者自行判断。

其次,下载 Anki 推荐从其官网 ankiweb 上下载,而不是从 ankichina 上进行下载。由于 Anki 是开源软件 (其他平台免费,但 IOS 系统上的 APP 是付费的),免费提供同步服务,但由于服务器不在国内的缘故,同步过程可能稍有些慢,但是相信我,相比于前几年前 Anki 2.0 版本时的同步,速度已经是快很多很多了,如果不是一次性同步大量媒体资源(比如导入一个几十兆的卡包),同步过程也是挺快的。
而 ankichina 组织 针对这个同步问题,对其进行了二次开发,虽然在同步速度上占优势,但却对 Anki 的某些使用场景 / 功能上启用了收费。
我想说的是,原生的 Anki 已经完全够用了,同步速度稍慢也正好是对我们滥用媒体资源(比如笔记中插入图片、视频、音频等)的克制。这里也极度不推荐自己搭建 Anki 同步服务器、将 Anki 装机 U 盘等行为,毕竟数据无价,谨慎操作。

附上 LaTeX 排版好的文档

前言

minipage 环境在 LaTeX 官方入门手册(一份(不太)简短的 LaTeX2ε 介绍 V6.03)中的介绍的较少,和 \parbox 命令一个案例就过去了,其实这样安排是挺好的,毕竟这本书的定位和一些宏包的使用手册是不一样的。对于读者来说,可能看起来很模糊,一个环境带有三个可选参数和一个必选参数,且可选参数中还有两个是涉及到和盒子位置相关的参数,不仔细看难理解。我自己也是看了好久才明白过来,如果能有对比更加鲜明的案例和可视化的图片讲解啥的最好不过了,因此,写下了本文,希望对读者们有用。

需要注意的是先了解 minipage 环境的定位:该环境在入门手册中位于 垂直盒子 这一小节。在以下的案例中,希望读者们将它作为一个盒子看待

基本语法

1
2
3
\begin{minipage}[位置][高度][内容位置]{宽度}
盒子内容
\end{minipage}

minipage 环境带有一个必要参数:宽度,内容超过盒子宽度就会自动换行

以下内容摘自刘海洋编著的《LaTeX 入门》。这里我们只讨论 minipage,而不讨论 \parbox 命令,这两者都是垂直盒子,故经常放在一起进行讲解,请自动忽略有关 \parbox 的内容。

\parbox 和 minipage 环境还可以带三个可选参数,分别表示盒子的基线位置、盒子的高度以及(指定高度后)盒子内容在盒子内的位置。位置参数可以使用 c(居中)、t(顶部)、b(底部),默认为居中。内容位置参数可以使用 c、t、b、s(垂直分散对齐)。其中 s 参数只有有弹性间距时生效。而 t 选项指按第一行的基线对齐,而不是盒子顶端。

是不是看晕了…

案例分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\documentclass{ctexart}
\begin{document}
正文内容正文内容正文内容正文内容正文内容正文内容正文内容正文内容正文内容正文内容

\vspace{2ex}
这里也是正文
\begin{minipage}[c][4cm][t]{2em}
上下天光
\end{minipage}
\qquad
\begin{minipage}[c][4cm][c]{2em}
一碧万顷
\end{minipage}
\qquad
\begin{minipage}[c][4cm][b]{2em}
沙鸥翔集
\end{minipage}
这里也是正文
\end{document}

输出如下
03-minipage参数讲解.png

标注如下
05-做好标注的minipage.png

案例讲解

配合如上的标注图片,以第一个盒子说明

1
\begin{minipage}[t][4cm][t]{2em} 

前两个参数 [t][4cm]:表示盒子的基线(顶线)与盒子当前所处环境的基线(也就是 “这里也是正文” 的基线)之间的距离为 4cm
第三个参数 [t]:表示盒子内容在盒子中垂直方向的对齐方式,此处为顶部对齐(2 盒子则为垂直居中对齐,3 盒子为底部对齐)
第四个参数 {2em}:表示盒子宽度就 2 个字符宽度,超出则自动换行(“上下天光” 共 4 个字符宽度,故超盒子宽度自动换行)
第二、三两个盒子可以对照着盒一的标注进行分析,这里就不在赘述了。

PS:标注图当中是 \qquad 表示水平间距,常见的命令如 \quad\qquad 相当于两个 \quad 长度

拓展

如果在 minipage 里使用 \footnote 命令,生成的脚注会出现在盒子底部,编号是独立的,并且使用小写字母编号。这也是 minipage 环境之被称为 “迷你页”(Mini-page)的原因。

01-minipage中插入脚注png.png

参考资料

  • 刘海洋:LaTeX 入门
  • Latex 的官方入门手册:一份(不太)简短的 LaTeX2ε 介绍

说明

本文中所述的链接都是在解决实际问题中自己一个个积累下来的。发布在博客中做一个网址目录,配合博客的搜索全文的功能,希望能对学习 LaTeX 的我们有些帮助,后期也会随时更新此处的链接。最后,如果你也有相关的优秀资源,可以再评论区发一下呀 (^▽^),在这里提前谢谢你哦!

格式转换

Excel - LaTeX - HTML - Markdown 转换工具

图片压缩

矢量绘图工具

  • Drawio (Win,Mac, 浏览器;免费)
  • Sketch(Mac)
  • Figma (Win,Mac, 浏览器)
  • Visio(Win)
  • Inkscape (Win,Mac; 免费)

字体

LaTeX 技术博客

LaTeX 实用资源

待续

宏包

注:本文内容的主体结构转载自博客园 LaTeXmath:LaTeX 中列表环境的使用,本人仅对案例中的一些代码、图片及一些宏包的使用做了一些补充,

列表就是将所要表达的内容分为若干个条目并按一定的顺序排列,达到简明、直观的效果。在论文的写作中会经常使用到列表。LaTeX 中常见的列表环境有 enumerate、itemize 和 description。这三种列表环境的主要区别是列表项标签的不同:

有序列表和无序列表无需在进行介绍,对于 description 列表来说,可指定其标签

1
2
3
4
5
6
7
8
9
\documentclass{ctexart}
\usepackage{pifont}
\begin{document}
\begin{description}
\item[\ding{47}] This is the first item
\item[\ding{47}] This is the second item
\item[\ding{47}] This is the third item
\end{description}
\end{document}

01-指定description标签.png

了解关于 pifont 宏包的更多信息,请参考:pifont – Access to PostScript standard Symbol and Dingbats fonts,如下为 pifont 的一些字符

02-pifont的一些字符.png

或者参阅以下的简要信息快速了解 pifont 宏包

The package provides commands for Pi fonts (Dingbats, Symbol, etc.); all commands assume you know the character number within the font of the symbol within the font.

列表环境也可以互相嵌套,默认情况下不同层级的标签不同,以体现分级层次。
上述三种列表都是基于 list 列表环境 定制的,也就是说 list 环境是功能最强大的列表环境,只是由于它使用起来比较麻烦,所以很少被使用。其实上述的三种列表在通过一定的扩展后可以产生许多样式的列表,这些基本就可以满足平时的需要了。下面说一下怎么进行功能扩展。enumitem 宏包可以对 enumerate、itemize 和 description 环境进行功能扩展,并且提供了简便的语法。enumitem 宏包允许用户在上述三种列表中通过 key=value 的键值方式进行设置。可选的设置项包括:

  • 垂直距离
1
2
3
4
topsep  
partopsep
parsep
itemsep
  • 水平距离
1
2
3
4
5
6
leftmargin  
rightmargin
listparindent
labelwidth
labelsep
itemindent

这些距离的含义可以从图示中反映出来,更详细的说明可以参看 enumitem 宏包的说明文档,或可参考:enumitem 宏包中的长度设置 @无锤乙醇(再次感谢这些中文独立博客做出的巨大贡献,凭借一己之力节省了大家不知多少时间ヾ (❀^ω^) ノ゙)

03-list环境中的水平参数.png

以如下代码对自定义列表环境进行案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass{ctexart}
\usepackage{enumerate}
\usepackage{enumitem}
\setlist[enumerate,1]{label=(\arabic*).,font=\textup,
leftmargin=7mm,labelsep=1.5mm,topsep=0mm,itemsep=-0.8mm}
\setlist[enumerate,2]{label=(\alph*).,font=\textup,
leftmargin=7mm,labelsep=1.5mm,topsep=-0.8mm,itemsep=-0.8mm}
\begin{document}
\begin{enumerate}
\item 这是一个一级列表
\item 看我在嵌套一个二级列表
\begin{enumerate}
\item 这是一个二级列表
\end{enumerate}
\end{enumerate}
\end{document}

 \setlist[enumerate,1] 表示对一级列表进行设置,\setlist[enumerate,2] 表示对二级列表进行设置。这样一级列表的标签就是括号加阿拉伯数字加点,二级标签是括号加小写英文字母加点。输出效果为:

04-自定义修改列表样式.png

font=\textup 表示使用直立体(可参考官方入门手册)

05-字体命令.png

参考资料

速览

本节的主体内容摘自:一份不太简短的 LaTeX2e 介绍(版本 5.01),根据自己的理解为该内容补充了一些案例和代码注释。本文将主要介绍一下几个命令

1
2
3
4
5
\hspace{length}
\hspace{\stretch{n}}
\setlength{parameter}{length}
\addtolength{parameter}{length}
\usepackage{layout}

水平间距

hspace 命令

语法

1
2
\hspace{length}
\hspace*{length} %如果这个水平间距在行首或者行末也需要保持的话,可以使用带星的命令

案例 1:单行文字中设置水平间距

1
2
3
4
5
6
7
8
9
\documentclass{ctexart}
\usepackage{zhlipsum} %中文假文宏包

\begin{document}
\zhlipsum[1]
\vspace{60pt} %增加垂直间距
\noindent 本人签名:\underline{\hspace{3.5cm}} %填充3.5cm的下划线
\hspace{2cm}日期:\underline{\hspace{3.5cm}} %与“本人签名”之间水平间距2cm
\end{document}

01-hspace命令增加水平间隔.png

关于以上代码中的 zhlipsum 中文假文宏包的使用:可参考 Latex 之 zhlipsum 中文假文宏包使用说明

stretch 命令

stretch 将产生一个可变长的长度(弹性长度),产生一个能把行内剩余所有空隙填满的空白,如果多个 \hspace{\stretch{n}} 命令位于同一行,那么它们将根据伸缩参数分配空间,非常类似于 HTML 当中的 flex 布局(分蛋糕)

语法

1
2
\stretch{n} %这是一个长度,可嵌在\hspace命令中使用
\hspace{\stretch{n}}

案例 2

1
2
3
4
5
6
\documentclass{ctexart}
\begin{document}
\noindent 居庙堂之高则忧其民 \hspace{\stretch{1} }处江湖之远则忧其君%只分一块蛋糕,行内所有的空余空间全部都分给了\stretch{1}

\noindent 而或长烟一空 \hspace{\stretch{1} } 皓月千里 \hspace{\stretch{1} } 浮光跃金 \hspace{\stretch{1} } 静影沉璧 \hspace{\stretch{1} } 渔歌互答 \hspace{\stretch{1} } 此乐何极!
\end{document}

02-stretch弹性长度.png

同样,对于垂直间距,也存在水平间距对应的命令:hspace ⇒ vspace

垂直间距

在页面中,段落、章节标题、行间公式、列表、浮动体等元素之间的间距是 latex 预设的。比如 \parskip,默认设置为 0pt plus 1pt(弹性长度)。

什么是 “弹性长度”:如 12pt plus 2pt minus 3pt 表示基础长度为 12pt,可以伸展到 14pt,也可以收缩到 9pt。也可只定义 plus 或者 minus 的部分,如 0pt plus 5pt

如果我们想要人为地增加段落之间的垂直间距,可以在两个段落之间的位置使用 \vspace 命令:

1
2
3
A paragraph.
\vspace{2ex}
Another paragraph.

\vspace 命令生成的垂直间距在一页的顶端或底端可能被 “吞掉”,对应地,\vspace* 命令产生不会因断页而消失的垂直间距。

更有趣的长度

setlength:给参数一个固定的值

语法

1
\setlength{parameter}{length} 

addtolength:给参数增加一个长度

语法

1
\addtolength{parameter}{length}

第二个命令实际上比 \setlength 更为实用,因为可以相对于现有的设置来获得所需的结果。比如,为了将文本的宽度增加 1cm,我将如下的命令放置在文档导言区

1
2
\addtolength{\hoffset}{-0.5cm} %页面左右两侧均有hoffset,两边减小的空隙等于版心增加的间隙,页面总宽度不变
\addtolength{\textwidth}{1cm}

比如使用默认的 ctexart 文档类,其默认的布局参数如下所示:
PS:按住 Ctrl 键或 Command 键 + 滚动鼠标中键可进行放大,亦可全屏观看

如何查看文档的页面布局参数

1
2
3
\usepackage{layout} %在导言区使用Layout宏包
%...
\layout %在正文区使用layout命令

比如

1
2
3
4
5
6
\documentclass{ctexart}
\usepackage{layout}

\begin{document}
\layout
\end{document}

输出文档布局参数如下

03-页面相关的所有距离参数.png

只要可能,就应该避免在 Latex 文档中使用绝对长度。比如说通过 \textwidth 可作为图片的宽度,使其恰好充满整个页面
下面的三个命令允许你获得一个文本串的宽度、高度以及深度

1
2
3
\settoheight{variable}{text} %获取text的宽度,将其值传给variable变量
\settodepth{variable}{text}
\settowidth{variable}{text}
1
2
3
4
5
6
7
8
9
\documentclass{ctexart}

\begin{document}
\settowidth{\parindent}{666666} %修改段落缩进值,将缩进值设为6个数字字符长度(3个汉字宽度)传给\parindent

壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。

于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉;余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。
\end{document}

05-通过settowidth获取文本的宽度.png

06-settowidth的实际应用.png

待续

参考资料

前言

在用 LaTeX 排版文章、书籍时,缺省定义了四种页眉页脚的格式:

参数 说明
empty 没有页眉和页脚
plain 没有页眉,页脚中部放置页码。
headings 没有页脚,页眉包含章节的标题和页码。
myheadings 没有页脚,页眉页码和使用者所定义的信息。

article 缺省使用 plain 格式,而 book 则使用 headings 格式。 也可用 \pagestyle 命令在你的文档中设定所用的格式,例如在文档中使用 \pagestyle{empty} 则使得此后的页面没有页眉和页脚。 一般情况下,这四种格式基本可满足排版的要求。但在某些情况下,特别是使用者想定义自己的页眉和页脚格式时,就会遇到很多限制和麻烦。这时, 使用 fancyhdr 宏包可以很容易地达到目的。

利用 fancyhdr 宏包提供的命令,可以方便的作到:

  • 自定义页眉和页脚。
  • 为页眉和页脚加上装饰性的横线。
  • 页眉和页脚的宽度可以超过正文文本的宽度。
  • 多行的页眉和页脚。
  • 奇偶页使用不同格式的页眉和页脚。
  • 每章的首页使用不同格式的页眉和页脚。
  • 浮动对象页使用不同格式的页眉和页脚。
  • 控制页眉和页脚的字体,包括字形,字族,大小写等。

基本用法

单面排版

由 fancyhdr 所定义的页眉和页脚的形式与位置如图所示:

06-奇数页样式.png

上述六个区域的内容和两条装饰线可由用户自己定义。

1
2
3
4
5
6
7
8
\lhead{left head}
\chead{center head}
\rhead{right head}
\lfoot{left foot}
\cfoot{center foot}
\rfoot{right foot}
\renewcommand{\headrulewidth}{0pt} %设置页眉横线宽度为0
\renewcommand{\footrulewidth}{0pt} %设置页脚横线宽度为0

如果想在文档中改用其它形式,比如在第一页不要页眉和页脚,则可在 \begin{document} 和 \maketitle 后使用命令

1
\thispagestyle{empty}

缺省情况下,\maketitle 命令会自动设置其所在页的格式为 plain 。因此,如果你想在该页使用 fancy 格式的话,应该在 \maketile 后面使用命令 \thispagestyle{fancy}

双面排版

下面是一个双面页版式下的例子(book、ctexbook 等文档类默认为双面排版):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{ctexbook}  
\usepackage{zhlipsum} %用于生成假文
\usepackage{fancyhdr}
\fancyhead{} %清空所有页眉页脚设置
\fancyhead[RO,LE]{\bfseries 作者:原装咖啡}
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[LO,CE]{From: Coffeelize.top}
\fancyfoot[CO,RE]{To: Latex User}
\renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\pagestyle{fancy} %非常关键的一句命令
\section{第一章}
\zhlipsum[1-3]
\end{document}

对于奇数页
06-奇数页样式.png
对于偶数页
07-偶数页样式.png

这里方括号中字母代表的意义为:

符号 说明
E 偶数页
O 奇数页
L 页眉或页脚的左边部分
C 页眉或页脚的中间部分
R 页眉或页脚的右边部分
H 页眉
F 页脚

设置页眉页脚横线的宽度

1
2
\renewcommand{\headrulewidth}{0.4pt} % 设置页眉横线宽度为0.4
\renewcommand{\footrulewidth}{0.4pt} % 设置页脚横线宽度为0.4

拓展应用

修改页码的颜色

还记得以上案例中的这句代码吗

1
\pagestyle{fancy} %非常关键的一句命令

这句代码的意思是使用 fancy 这个样式(我们并没有对其进行定义,可能是文档类已经对其进行了预定义)
实际上我们也是可以自定义这个 pagestyle 的,如下代码中定义了一个新的 pagestyle:fancy-note

1
2
3
4
5
6
7
8
9
10
11
12
%语法\fancypagestyle{style name}{definitions} 
\fancypagestyle{fancy-note}{
\fancyhf{} %同时清空页眉页脚
%语法\fancyfoot[places]{footer}
\fancyfoot[c]{\footnotesize\textcolor{mycolor}{\thepage}}
}
% 正文开始
\begin{document}
%...
\pagestyle{fancy-note} %调用自定义的pagestyle
%...
\end{document}

最终输出为

092-调整页脚字体颜色.png

以上代码中
\textcolor 需要使用 xcolor 宏包(用于自定义颜色名称,可以参考博客之前的文章:Latex 之字体颜色篇
\footnotesize 则是已经预定于好的页脚字体的字号

09-预定于的字号.png

标准文档类中的字号大小

091-标准文档类中的字号大小.png

字号 10pt 选项(默认) 11pt 选项 12pt 选项
\tiny 5pt 6pt 6pt
\scriptsize 7pt 8pt 8pt
\footnotesize 8pt 9pt 10pt
\small 9pt 10pt 10.95pt
\normalsize 10pt 10.95pt 12pt
\large 12pt 12pt 14.4pt
\Large 14.4pt 14.4pt 17.28pt
\LARGE 17.28pt 17.28pt 20.74pt
\huge 20.74pt 20.74pt 24.88pt
\Huge 24.88pt 24.88pt 24.88pt

参考资料

常规的交叉引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{ctexart}
\usepackage{graphicx}
%\usepackage{hyperref}
%\def\figureautorefname{图}%
%\def\tableautorefname{表}%
\begin{document}
\section{第一章}

\begin{figure} [htbp]
\centering
\includegraphics{example-image-duck}
\caption{This is a duck image}
\label{duck}
\end{figure}

这是一段正文,这里需要交叉引用这张图片。由\ref{duck}可知,图片当中是一只鸭子。
\end{document}

01-autoref命令使用.png

从输出的图片可以看出,通过标签的形式实现图片的交叉引用,交叉引用中只会出现交叉引用的序号 “1”,而不是输出 “图 1”,如果要实现输出 “图 1” 的效果,需要在 tex 中手动添加,如:

1
由图 \ref{duck}可知,图片当中是一只鸭子。

那么每次交叉引用图、表、公式等都需要手动去敲这个 “前缀”,有没有更人性化一些的工具或宏包呢?
引出今天的主角:hyperref 宏包

hyperref 宏包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{hyperref}
\def\figureautorefname{图}%将默认的“figure”改为“图”
\def\tableautorefname{表}%

\begin{document}
\section{第一章}

\begin{figure} [htbp]
\centering
\includegraphics{example-image-duck}
\caption{This is a duck image}
\label{duck}
\end{figure}

这是一段正文,这里需要交叉引用这张图片。由\autoref{duck}可知,图片当中是一只鸭子。
\end{document}

02-默认的ref引用格式.png

简要步骤如下

  1. 使用 hyperref 宏包(可修改引用时的 “前缀”)
  2. 需要交叉引用的位置打上标签
  3. 正文中通过使用 \autoref{mylabel} 实现交叉引用

但是,也引出了一个新问题,存在交叉引用的地方有红色的边框

如何去除 hyperref 带来的红边框

解决方案 1

1
\usepackage[hidelinks]{hyperref}

解决方案 2

1
2
3
4
\hypersetup{
colorlinks=true,
linkcolor=black
}

推荐解决方案 1,也就是 hyperref 宏包提供的参数设置中的可选参数 hidelinks

03-hyperref宏包提供的参数设置.png

hyperref 宏包提供的更多参数设置可查阅 Latex 的官方入门手册:一份(不太)简短的 LaTeX2ε 介绍

拓展

1
2
3
4
5
6
\usepackage{hyperref}
\def\figureautorefname{图}%
\def\tableautorefname{表}%
%对于以上3句代码中的后两句下,如下命令可等效
%\renewcommand{\figureautorefname}{图}
%\renewcommand{\tableautorefname}{表}

除了图和表之外,对于其他如定理环境的交叉引用汇总如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\def\equationautorefname{式}%
\def\footnoteautorefname{脚注}%
\def\itemautorefname{项}%
\def\figureautorefname{图}%
\def\tableautorefname{表}%
\def\partautorefname{篇}%
\def\appendixautorefname{附录}%
\def\chapterautorefname{章}%
\def\sectionautorefname{节}%
\def\subsectionautorefname{小小节}%
\def\subsubsectionautorefname{subsubsection}%
\def\paragraphautorefname{段落}%
\def\subparagraphautorefname{子段落}%
\def\FancyVerbLineautorefname{行}%
\def\theoremautorefname{定理}%

参考资料