0%

本案例可能需要使用到的宏包

方式 1:通过计数器

难点:插入图片之后,Latex 是如何知道这张图片是图 2(而不是图 3,图 4)呢?原因在于计数器。通过 figure 环境添加图片之后,计数器自动加一。

如果我们为图片添加了第二个标题的话,第一个标题(中文标题)为图 1,第二个标题(英文标题)就会变为图 2 了,而这两个标题明明是指同一张图片,此时就需要在添加第二个标题之前将计数器再减掉 1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
\begin{figure}
\centering
\includegraphics[width=1.5in]{fig/cat2}
\vspace{-10pt} %控制标题与图片之间的垂直距离
\caption{这是一只可爱的猫} %使用ctexart文档类,默认图例为中文“图”
\addtocounter{figure}{-1} %使用caption命令后,figure的计数器默认加一,此时再添加英文的标题,计数器就会变成2了,所以计数器减1,中英文标题计数器仍保持一致
\renewcommand{\figurename}{Fig} %将图例改为英文“Fig”
\vspace{-10pt} %控制第二个标题与第一个标题之间的垂直距离
\caption{This is a cute cat}
\renewcommand{\figurename}{图} %将图例的再次改为中文,修改为默认值,以防影响下方图片的图例
\label{Bigcat}
\end{figure}
\end{document}

01-图片双语标题示例.png

每句代码的意思已经写在注释中了,那么在插入第二章图片试一下是否有问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
\begin{figure}
\centering
\includegraphics[width=1.5in]{fig/cat2}
\vspace{-10pt} %控制标题与图片之间的垂直距离
\caption{这是一只可爱的猫} %使用ctexart文档类,默认图例为中文“图”
\addtocounter{figure}{-1} %使用caption命令后,figure的计数器默认加一,此时再添加英文的标题,计数器就会变成2了,所以计数器减1,中英文标题计数器仍保持一致
\renewcommand{\figurename}{Fig} %将图例改为英文“Fig”
\vspace{-10pt} %控制第二个标题与第一个标题之间的垂直距离
\caption{This is a cute cat}
\renewcommand{\figurename}{图} %将图例的再次改为中文,修改为默认值,以防影响下方图片的图例
\label{Bigcat}
\end{figure}

以上是本示例的第一张图片:\ref{Bigcat},接下来插入第二章图片:

\begin{figure}[htbp]
\centering
\includegraphics[width=3in]{fig/QHU}
\vspace{-10pt}
\caption{青海大学美景} %使用ctexart文档类,默认图例为中文“图”
\addtocounter{figure}{-1} %使用caption命令后,figure的计数器默认加一,此时再添加英文的标题,计数器就会变成2了,所以计数器减1,中英文标题计数器仍保持一致
\renewcommand{\figurename}{Fig} %将图例改为英文“Fig”
\vspace{-10pt}
\caption{QHU's grand landscape}
\renewcommand{\figurename}{图} %将图例的再次改为中文,修改为默认值,以防影响下方图片的图例
\label{QHU-landscape}
\end{figure}
\end{document}

02-图片双语标题之插入多图示例.png

图片的图例没有问题,可是为什么图 2 会在那段文字的上方去了呢?原因在于 Latex 排版时会自动为我们排版出尽可能少的页面空白,让页面看起来更美观。这或许也正是 figure 环境为浮动体的体现吧
那么可以在第二章图片的 figure 环境后添加 htbp 参数,让 Latex 按照我们的要求进行排版

1
2
3
4
5
6
7
% ...
以上是本示例的第一张图片:\ref{Bigcat},接下来插入第二章图片:

\begin{figure}[htbp]
\centering
% ...

02-图片双语标题之插入多图示例htbp.png

浮动体中有关插图位置的参数,详细规则见文末参考资料 1

  • h: here 将图片插到此处
  • t: top 将图片插到页顶
  • b: bottom 将图片插到页底
  • p: page 插图独立一页
  • H: 将图片固定在此处

一般参数取 h 或 H 就好了,当然也可以写多个参数,如 htbp, 此时参数会按照顺序执行,首先尝试用 h,如果不行再依次使用其他参数 (其实效果和单独一个 h 差不多)。

方式 2:通过 bicaption 宏包

直接使用 bicaption 宏包就比较简单啦,毕竟宏包的开发作者就是针对这个双语标题开发出来的嘛。

1
2
3
4
5
6
7
8
9
10
11
\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{bicaption} %使用双语标题宏包
\begin{document}
\begin{figure}
\centering
\includegraphics[width=1.5in]{fig/cat2}
\bicaption{这是一种可爱的猫}{This is a cute cat}
\label{Bigcat}
\end{figure}
\end{document}

04-使用bicaption宏包图片示例.png

很遗憾,并没有像我们预想的那样,第二个标题的图例还是中文。宏包作者没有直接为我们定义好第二个标题的图例是有原因的,他不针对中文用户,对于其他需求,比如第一个标题为母语,第二个标题为俄语呢,通过我们自己的需求来设置第二个标题的图例是不是更好一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{bicaption}

\begin{document}
\captionsetup[figure][bi-second]{name=Fig} %设置图的第二标题图例为Fig
\begin{figure}
\centering
\includegraphics[width=1.5in]{fig/cat2}
\bicaption{这是一种可爱的猫}{This is a cute cat}
\label{Bigcat}
\end{figure}

\end{document}

05-使用bicaption宏包设置第二标题图例.png

参考资料:

  1. CSDN: LaTex 论文排版 | (19) LaTex 中的插图问题 @CoreJT
  2. Latex 官方中文文档: 一份(不太)简短的 LATEX2ε 介绍

Latex 图片并排及子图标题设置

以下案例中可能使用到的宏包

  • 需要图片:graphics
  • 需要子图表:subfigure
  • 需要给每个图片定义小标题:subcaption
  • 修改图片的标题样式:caption
  • 案例中使用到的图片: 下载地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{subfigure}
\begin{document}
\begin{figure}
\centering
\subfigure[Small Box with a Long Caption]{
\label{fig:subfig:a} %% 为第一张图片添加标签
\includegraphics[width=1.0in]{figs/cat2}}
\hspace{1in}
\subfigure[Big Box]{
\label{fig:subfig:b} %% 为第二张图片添加标签
\includegraphics[width=1.5in]{figs/cat2}}
\caption{Two Subfigures}
\label{fig:subfig} %% 为整个大图添加标签
\end{figure}
\end{document}

01-不使用minipage并排插图.png

像其它的并列图形一样,子图也可以在小页环境中使用。而且在一些情况下, 这样做还能更方便的得到理想的图形间距。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{subfigure}

\begin{document}
\begin{figure}
\subfigure[Small Box with a Long Caption]{
\label{fig:mini:subfig:a} %% 为第一张图片添加标签
\begin{minipage}[b]{0.5\textwidth}
\centering
\includegraphics[width=1in]{figs/cat2}
\end{minipage}}%
\subfigure[Big Box]{
\label{fig:mini:subfig:b} %% 为第二张图片添加标签
\begin{minipage}[b]{0.5\textwidth}
\centering
\includegraphics[width=1.5in]{figs/cat2}
\end{minipage}}
\caption{Minipages Inside Subfigures}
\label{fig:mini:subfig} %% 为整个大图添加标签
\end{figure}
\end{document}

02-使用minipage并排插图.png

比较可发现
使用 minipage 环境:子标题的长度可以长于图片的长度

03-minipage with non-minipage.png

需求 2:那么如何引用大图当中的子图呢

这就发挥到 label 的作用了,label 标签相当于给子图片打上了一个标记,在引用的地方通过 ref 引用标签名即可

在图片环境的代码后面添加如下文字

1
2
3
4
5
6
%...
\end{figure}
%...

这里有一段文字需要引用图1中子图b。\ref{fig:mini:subfig:b} is a big cat!

04-交叉引用子图.png

需求 3:修改标签分隔符

包含子图的大图标题,图编号与图表题文字之间的分隔符为冒号,如何设置为英文句点,参考 caption 宏包使用文档(但是目前该文档似乎还没有中文翻译)

1
2
3
\usepackage{caption}
使用如下captionsetup命令需要使用到caption宏包
\captionsetup[figure]{labelformat=simple, labelsep=period}% 参数见以下分析

如何查看宏包的帮助文档

  1. 按住 shift,鼠标右键
  2. 使用 Powershell 打开
  3. texdoc 宏包名(比如 texdoc tabular

07-(Latex)查看宏包帮助文档.gif

标签格式设置

格式 说明
default 同 simple
empty 空格式,去除标签编号部分
simple 简单数字格式
brace 数字右括号格式
parens 带括号数字格式

标签分隔符

格式 说明
default 同 colon
none 无间隔
colon 英文分号
period 英文句点
space 空格
quad 一个 em 的间隔
newline 标题另起一行
endash 英文 dash 连接符

同理,对于子图当中标签分隔符的设置,只要将中括号中的 figure 改为 subfigure 即可

1
\captionsetup[subfigure]{...}

需求 4:如何修改交叉引用的图例

比如上图中,引用图 1 的子图 b,但是如何让 1(b) 显示为 图 1(b)
搜了一圈,似乎只能通过文字打上去 (lll¬ω¬)

1
2
3
4
5
6
%...
\end{figure}
%...

这里有一段文字需要引用图1中子图b。图\ref{fig:mini:subfig:b} is a big cat!

05-交叉引用图片格式.png

需求 5:多个子图,但是共享一个大标题,无需为子图添加标题

实际上就是在 figure 环境当中插入多张图片,但是只添加一个 caption

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}
\begin{figure}
\centering
\includegraphics[width=90pt]{figs/cat2} \qquad
\includegraphics[width=90pt]{figs/cat2}
\caption{There are two figure share one caption}
\label{share-one-caption}
\end{figure}

这里有一段文字需要引用图1。图\ref{share-one-caption}有两张子图组成
\end{document}

06-子图共享大标题.png

更高阶的应用

修改子图编号格式

1
2
3
\renewcommand{\thesubfigure}{\arabic{subfigure}}%使子图编号为a的格式
\renewcommand{\thesubfigure}{(\alph{subfigure})}%使子图编号为(a)的格式
\renewcommand{\thesubtable}{(\alph{subtable})} %使子表编号为(a)的格式

修改子图为 图 7.1 的形式

1
2
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}} %使图编号为7.1的格式 %\protect{~}
\renewcommand{\thetable}{\arabic{chapter}.\arabic{table}}%使表编号为7.1的格式

修改子图标题字体格式(详见 Caption 宏包选项和设置)

1
2
3
4
%子标题设置,编号为粗体,左对齐,文本正体
\captionsetup[subfigure]{labelfont=bf,textfont=normalfont,singlelinecheck=off,justification=raggedright}
%主标题设置
\captionsetup[figure]{labelformat=simple, labelsep=none}

参考资料

说明:由于许多学校毕业设计所使用的 LaTeX 模板采用的文档类是 ctexbook,因此本教程针对该文档类进行说明,方便日后同学们自行设计模板。需要使用到的宏包:tocloft

测试 Tex 代码以下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\documentclass[12pt]{ctexbook}
\usepackage{tocloft}

\begin{document}
\tableofcontents
\chapter{引言}
\chapter{这是第一章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{这是第二章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{这是第三章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{结论}
\end{document}

注意:每次编译生成 PDF 之后,若对目录进行了修改,需要清理编译过程中生成的辅助文件(即以下进行的每一步需求操作均需要清理清理一遍辅助文件)。如下图以 TeXstudio 为例:
清理辅助文件

需求 1:修改章节标题格式样式

ctexbook 文档类在生成目录时,自动将 Chater 的章节名设置为 “第某章”,而如果只需要阿拉伯数字就行,如何设置,需求如图所示

\usepackage{tocloft} 的下方添加如下代码

1
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}

以上代码中,name={,} 表示在章节前后插入文本,表如 name={第,章} 就是 ctexbook 章节标题(Chapter)默认的格式
01-修改章节标题格式样式.png

需求 2:设置导引符为垂直居中的小圆点

导引符(标题与页码之间的点点)为什么不能垂直居中显示呢?可不可以设置为垂直居中?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}

\cdot 表示垂直居中的小圆点符号,左右两旁添加 $ 表示位于公式的环境中
02-设置导引符为垂直居中的小圆点.png

需求 3:设置导引符符号间距

这些导引符的间隔太稀疏了,能不能紧密一点?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距

03-设置导引符符号间距.png

需求 4:设置章节与页码之间的导引符

为什么章节标题与页码之间没有导引符(小圆点),能不能也加上?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
4
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距
\renewcommand\cftchapdotsep{2}%设置章节标题与页码间的导引符

04-设置章节与页码之间的导引符.png

需求 5:设置各章节之间的间距

为什么章节标题与二级标题之间间隔比二级标题与二级标题之间的间隔要宽呢,能不能将这几者之间的间隔设为一致?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
4
5
6
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距
\renewcommand\cftchapdotsep{2}%设置章节标题与页码间的导引符
\setlength{\cftbeforechapskip}{0pt}%一级标题(章节标题)间隔
\setlength{\cftbeforesecskip}{0pt}%二级标题间隔

当然,这里只设置了 1,2 级标题之间的间距,若想设置 3 级标题之间的间距,可以设置 \setlength{\cftbeforesubsecskip}{0pt}
05-设置各章节之间的间距.png

需求 6:设置章节标题前后间距

目录当中如何设置显示到几级标题呢?比如我想设置只显示到三级标题就不显示了,可以设置吗?

1
\setcounter{secnumdepth}{3}%设置目录深度至三级标题

除此之外,如何将目录的布局设置得更好看一些,比如将一级标题和二级标题之间的层次更加清晰,可以在章节标题段前段后添加些间隔,如下所示

1
2
\setlength{\cftbeforechapskip}{5pt}%一级标题(章节标题)前间隔
\renewcommand{\cftchapafterpnum}{\vspace{5pt}} %一级标题(章节标题)后间隔

\vspace{5pt} 表示垂直间距 5pt
06-设置章节标题前后间距.png

需求 7:待续

怎么会有那么多需求呢?这里有一些相关资料,或许可以帮助到你 q (≧▽≦q)。

说明:

命令

命令以反斜杠开头,后面可跟花括号加参数,后面跟中括号表示可选参数

1
\documentclass[11pt,twoside,a4paper]{article}
1
2
\documentclass[UTF8]{ctexart}
% 这里的 ctexart,支持简体中文和英文的混排,指定文档的编码类型为 UTF8 格式

UTF8 是 TeXworks 编辑器默认使用的编码类型

中文的文档类为 ctexart(Chinese tex article)

.tex⇒.pdf
英文推荐:pdflatex
中文推荐:xelatex

源代码结构

documentclass 和 begin 之间的内容为导言(前言 preamble)「有点类似 HTML 当中的 head 标签」
介于 begin 和 end 之间的内容为正文「类似于 HTML 中是 body」

格式化命令

加粗:\textbf {要加粗的内容}
说明:bf 也就是 bold font 的缩写
斜体:\textit {要斜体的内容}
下划线:underline {下划线内容}

添加一个段落:输入两个换行符;「单独一个换行符只会生成一个空格」

1
2
3
4
5
6
7
% 章节
\section{章节的名字}
第一个章节中的内容
\subsection{第一个章节的子章节}
\subsubsection{三级章节}
\section{另一章节的名字}
第二个章节中的内容

插入图片

Latex 本身不支持插图功能,需要使用 graphicx 宏包辅助支持
如何控制图片的大小呢?在 graphicx 命令后加可选参数

1
2
\graphicx[width=0.5\textwidth]{这里是图片的名字}
% textwidth 表示当前文本区域的宽度,常用可选参数有:width,height,scale,angle

如果要为图片添加图注信息,则将图片嵌套在 figure 环境当中

1
2
3
4
5
\begin{figure}
\centering % 将图片居中对齐
\includegraphics{图片名字}
\caption{这个是图片的标题}
\end{figure}

列表

有序列表:enumerate
无序列表:itemize

1
2
3
4
5
\begin{itemize}
\item 列表项 1
\item 列表项 2
\item 列表项 3
\end{itemize}

数学公式

行内公式:可以使用 inline equation 直接在段落内添加公式,写在两个美元符号中间
行间公式:使用 equation 环境,「可以将环境简写为」

1
2
3
\[
公式内容
\]

一般符号:α,β……
指数上下标形式:^ and _
分式和根式

推荐:在线 Latex 公式编辑器 Equation Editor

表格

创建环境 tabular

1
2
3
4
5
6
7
\end{itemize}
\begin{tabular}{ c c c}
a11 & a12 & a13 \\
\hline
a21 & a22 & a23 \\
\hline
\end{tabular}

说明:

  • ccc 表示共表格共 3 列,且三列为居中对齐,如果是 CRR,表示第一列居中对齐,第二三列为右对齐
  • 单元格与单元格用 & 隔开
  • 表格一行结束使用两个反斜杠 \
  • 如果在参数 ccc 中插入竖线 | c|c|c|,可为表格添加垂直方向的边框
  • 水平方向的边框通过 \hline 添加
    和图片类似,如果表注,需要将表格添加的表的环境中「开始是 tabular,需要嵌入 table 环境中」,再使用 \caption {} 添加表注

注释

百分号开头,和 matlab 相同

正文文本

一个换行符等同于一个空格,多个空格的效果与一个相同
自然段分段式空一行

标题:title、author、date——maketitle
摘要 / 前言:abstract 环境 /chapter
目录:tableofcontents
章节:chapter,section
附录:appendix+chapter 或 section
文献:bibliography(自动生成参考文献)
索引:printindex

章节层次结构:

  • part:可选的最高层
  • chapter:report,book 类最高层
  • section:article 类最高层
  • subsection
  • subsubsection:默认不编号,不编目录
  • paragraph:默认不编号,不编目录
  • subparagraph:默认不编号,不编目录

正文符号

一些符号被 latex 宏语言占用,需要以命令形式输入:
比如反斜杠:\textbackslash

公式

  • 行内公式
  • 列表(显示公式)公式
    • 简单不编号的公式使用命令 \[ \]
    • 基本的编号的公式用 equation 环境(beq tab 键即可出来)
    • 更复杂的结构,使用 amsmath 宏包…

上标和下标:^ and _
分式:frac{分子}{分母}
根式:sqrt[次数]{根号下}
矩阵:amsmath 宏包提供了专门的矩阵环境,matrix,pmatrix,bmatrix 等

数学符号

  • 数学字母
  • 普通符号
    • 乘号:\times
    • 除号:\div
  • 二元运算符
  • 二元关系符:大于小于等于等
  • 括号
  • 标点:逗号,\colon 冒号,\semicolon 分号
  • 分式使用 \frac {分子}{分母} 形式书写;分式在行间正常大小显示,而如果在行中,则会被压缩
  • 根式使用 \sqrt [n 次]{内容}

数学公式

amsmath 是基本的数学工具包,在包含数学公式的文档中几乎无处不在,mathtools 则对 amsmath 做了一些补充和增强

科技功能

siunitx:数字单位的一揽子解决方案

1
2
\num{-1.2345e95}
\SI{12}{m/s}

编写化学式

chemformula 宏包(\ch 命令)

1
\ch{2 H2 + O2 -> 2 H2O}

使用Latex编辑化学反应式

列表与文本块

抄录代码

\verb | 这里是代码 |
\verbatim 环境

1
2
3
4
\begin{verbatim}
#include <stdio.h>
inputs('hello world!')
\end{verbatim}

使用Latex抄录代码

高级代码:语法高亮

使用 listings 宏包

算法结构

  • clrscode 宏包
  • algorithm2e 宏包

图表与浮动环境

画表图:使用 tabular 环境
表格转换为 latex 代码:https://tablesgenerator.com/latex_tables

在线表格转Latex

功能各异的表格宏包

  • 单元格处理:multirow、makecell
  • 长表格:longtable、xtab
  • 表线控制:booktabs(三线表)、diagbox(斜线表)
  • 综合应用:tabu

插图

graphics 宏包提供 \includegraphics 命令

代码画图

优先使用外部工具绘图,矢量图 Lnkscape(开源),Illustrator,甚至是 powerpoint(保存为 PDF 格式),数学图形使用 matlab 之类

浮动体

  • figure 环境
  • table 环境
    其他环境可以使用 float 宏包得到
    浮动体的标题使用 \caption 命令得到,自动编号

自动化工具

  • 自动目录
  • 交叉引用
  • PDF 的链接与书签(hyperref 宏包)
  • BIBTex
    • .bib 数据库
      • JabRef:管理 bib 数据库
    • \cite 命令引用
    • 末尾 \bibliography {math} 引用

设置文献格式

选用合适的.bst 格式,比如 plainnat,gbt7714-plain
natbib 与作者 - 年格式
利用 custom-bib 产生定制的格式文件
bilatex+biber:文献处理的新方式

设计文档格式

基本原则

格式与内容分离,不要在意细节上 Latex 的一大卖点

使用内容相关的命令与环境

只使用语义相关的的命令
比如推荐 emph,不推荐使用 textit
推荐 caption {流程图},不推荐 textbf {图 1:} 流程图

使用宏包

格式控制功能

字体

rmfamily,textrm
sffamily,textsf
ttfamily,texttt

字号

zihao{5},zihao{-3}

对齐

\centering,\raggedleft,\raggedright

空白间距

\hspace{2cm},vspace{3cm}

版面布局

geometry 宏包
fancyhdr 宏包(设置页眉页脚)

分页断行

linebreak、\\(一般表格的时候使用)
pagebreak,newpage,clearpage,cleardoublepage

盒子

\mbox {内容}
\parbox {4em}{内容},minipage

格式应用于文档

使用在导言区单独设置格式

直接设置相关参数:如 parindent,parskip,linespread(几倍行距),pagestyle(页眉页脚)
修改部分命令定义:thesection,labelenumi,descriptionlabe1,figurename
利用工具宏包完成设置:toclof 宏包设置目录格式

利用自定义命令和环境

例如,为程序名定义一个命令

1
2
\newcommand\prg[1]{\textsf{#1}}
程序 \prg{sort} 很有用

此后,如果想要修改 sort 的样式,那么直接修改我们自定义的命令,比如

1
2
\newcommand\prg[1]{\textbf{\huge #1}}
% huge 可以将 sort 字体变大

章节标题

ctex 宏包及文档类,用 \ctexset 定制,西文用 titlesec 等

浮动标题

caption 宏包
texdoc caption

列表环境的定制

enumitem 宏包

如设置列表不设置多倍行距

1
2
\usepackage{enumerate}
\setlist{nosep}

参考资料

初衷: 技术文章配图指南
参考视频: sketch 教程壹天上手
参考视频教程: 冷门但好用的 SKETCH 高频技巧
参考视频: Sketch Symbols 控件功能 - 善用组件 早点下班 - 新像素 UI 设计培训

为什么是 sketch

  1. 上手快,操作简单(让我想起了 sketchup 草图大师)
  2. 矢量图软件,可轻松到处不同倍率的图片
  3. 比 Adobe illustrator 体积更小,使用更流畅
  4. 软件稳定,没有碰到软件崩溃的情况,且没有保存按钮(软件会给我们自动保存)
  5. 有大量的第三方插件

常用快捷键

  1. 切片:S;切片时双击编组,可以快速选中编组进行导出
  2. 旋转:command+shift+R,按住 shift 键也可以整数旋转;按住 command 键拖动角点也可以实现旋转
  3. 选中形状吸取颜色:control+C
  4. 锁定:command+shift+L
  5. 隐藏:command+shift+H
  6. 导入图片:command+shift+K
  7. 快速复制:按住 option 拖动,command+D 可重复上一步移动复制变换
  8. 上移一层:command+]
  9. 下移一层:command+[
  10. 切换图层:Tab
  11. 连续缩放视图:command+ 滚轮键
  12. 微调形状尺寸:选中形状之后,按住 command+ 上下左右箭头移动 1px;可以加上 shift 移动 10px
  13. 复制样式:command+option+C
  14. 粘贴样式:command+option+V
  15. 注意:文字效果复制到形状是无效的,形状效果复制到文本是可以的。
  16. 调节图片透明度:选中图层,直接按数字键可以调整(比如按 10,设置透明度为 10%)
  17. 显示 / 隐藏除绘图区域的所有界面:command+.
  18. 穿透选择:按住 Command ,鼠标点击该元素,可以穿透编组进行选择

来做个小练习吧:)

sketch常用快捷键.png

如何连接两条线段

图层 –> 路径 –> 接合【layer –> paths –> join】

02-连接两条线段.png

如何获取封闭图形中的某条线段

02-连接两条线段.png

钢笔工具

钢笔工具可能是绘图中最常用和最实用的工具了
钢笔工具:V
闭合路径:钢笔右侧窗口的功能按钮
结束编辑:Enter

四种绘制模式,快捷键分别为数字键 1,2,3,4

  • 直线角模式:没有调节把手,
  • 镜像(对称模式):两边的把手的变化是一样的
  • 断开:左右把手不相关联
  • 不对称模式:两个锚点到主点之间的距离是独立的,但依然会有联系

移动节点:选中多个节点后(shift 可以加选),拖动节点可以移动节点
删除节点:选择节点,delete/backspace 即可
选择节点:可以通过节点框选工具,或者直接 shift 加选

快速复制(阵列)元素

按住 Alt 键拖拽复制一个相同元素,你可以继续按住 Command + D 复制更多的相同元素。

元素像素尺寸变成整数

不光适用于单个元素,当我们对一组元素进行缩放后,组内元素间距、大小、字号都不再是像素的整数倍时,只要选中组,点一下 Round To Pixel(对齐到像素)即可使所有元素尺寸、间距都恢复为像素的整数倍。在对齐形状时特别有用

02-对齐到像素.png

圆角半径

方法 1:点击形状进入选中模式,快速双击进入路径模式,可以选择需要圆角的角点进行圆角设置
方法 2:点击形状进入选中模式,在圆角半径框中输入 5;5;0;0 即可给不同点设置不同圆角数值

(sketch)设置圆角半径.png

高级应用

自适应布局

参考视频教程: 冷门但好用的 SKETCH 高频技巧

比方说可以实现的功能:保持元素间隔不变;拖拽后保持位置和大小;保持元素间隔不变
方法 1:通过创建控件时调整
方法 2:直接调整相对位置和固定大小,调整完之后可以在创建控件。一个是相对位置,一个是上下左右方向是否固定大小(对组合控件都是有效果的)

控件的使用

参考视频: Sketch Symbols 控件功能 - 善用组件 早点下班 - 新像素 UI 设计培训

组件化:UI 设计稿标准化
重点:如何给组件命名,斜杠的用处;斜杠就相当于多了一个层级,加上斜杠之后,(比如 card/default 和 card/clone)default 和 clone 属于一个层级,都在 card 之下。且斜杠的使用可以无限嵌套
如果组件套组件,如何将被套的组件做出控件
可以先将组件中需要做成组件的复制出来,然后创建组件,将原先的删除,将新创建的组件放进去
比如 button/wechat 和 button/alipay
控件(相当于 sketchup 中的组件)的用处

  • 在控件编辑区,直接在控件中添加文本,图形等都会直接影响到绘图区的所有控件
  • 命名逻辑:控件中可以手动更改的地方,在命名的时候可以加上一个符号等,后期复用控件的时候,一目了然知道这个控件哪些地方可以自定义修改
  • 比如想要更改组件的主体颜色,可以将背景设置成控件,然后将这个控件的名字命名好

(sketch)控件的层级关系.png

复用样式 & 复用符号

复用样式

也就相当于 word 中创建一个标题样式;与之相似,修改了应用了这个样式的属性,刷新一遍,所有应用了这个样式的元素都会跟着变化(就相当于 word 中将选中文字的样式赋予到标题样式中去了)

(sketch)复用样式.png

复用符号

双击复用符号,会跳转到复用符号的编辑界面,编辑完之后,可以返回实例(通过类创建的实例)
复制多个控件,当我们编辑其中一个控件时,其他的都会跟着变化;但是当我们修改了控件中的文字,不会都跟着变哦!!!【相当于整个框架没有变】
比如一个圆形里面填充了一张图片,将这个圆形创建控件之后,复制一个出来,此时就可以自己更改这个圆形里面的图片了,而不会影响到其他复制的控件
控件的意思是不是:创建了一个框架,使得框架中的内容变得可 “ 控 “

待续

或许可以转至 Figma 阵营,但是似乎有些 “不幸”,Adobe 同意以约 200 亿美元收购 Figma,以后可能就是 “Adobe Figma” 了

推荐工具

  • Caesium:可批量、图形化界面、不可压缩 gif
  • Compress-images:可批量、可压缩 gif,其他格式的图片当然也可以压缩
  • 以下的内容可以不用看了:)

Imagine 本地图片压缩

Github 项目名称:Imagine; GitHub 仓库

Imagine is a desktop app for compression of PNG and JPEG, with a modern and friendly UI.

优点:UI 界面,参数可视化可调;开源免费;支持中文;支持转为 webp 格式图片;本地
缺点:无法处理 gif 图片

ImagineUI界面

Compressio.app

在线 GIF 压缩 [Compressio.app]: 开源网址
github 仓库: 网址

优点:开源免费;跨设备运行;免安装;可自行搭建服务器
缺点:可能会涉及到隐私问题
Compressio.app界面

本地图片压缩 Compress-images

GitHub 仓库: Compress-images

命令行安装以下依赖:

1
2
3
4
5
6
7
npm install compress-images --save

npm install pngquant-bin@6.0.1 --save
npm install gifsicle@5.2.1 --save

注意不要升级随便升级版本,比如下面这段代码,升级之后报错(不知道为什么,可能识别不了)
npm install gifsicle --save

1、使用方法

请查阅下载的文档中的 example 示例的 Manual.txt

  1. 从 GitHub 仓库下载项目:
1
git clone git@github.com:semiromid/compress-images.git   
  1. 删除所有文件夹,除了 example 文件夹
  2. 在 example 文件夹打开命令行工具(vscode 打开),如下命令安装依赖
1
npm install compress-images --save
  1. 如遇到一下情况的报错,可能是不适合运行在某些系统上,可能需要对 example 文件中的 compress_images.js 做修改。
    PS: win7 测试,在压缩 png 图片时,需要将 pngquant 参数改为 pngcrush

pngquant2pngcrush

1
2
3
4
5
6
[1] "npm install pngquant-bin@6.0.1 --save" (It does not work properly on some OS). If you get error, you need edit './compress_images.js' and replace 'pngquant' on other PNG engine, as example on "pngcrush".
{png: {engine: 'pngcrush', command: false}},

[2] "npm install gifsicle@5.2.1 --save" (It does not work properly on some OS). If you get error, you need edit './compress_images.js' and replace 'gifsicle' on other GIF engine, as example "gif2webp"
{gif: {engine: 'gif2webp', command: false}}

  1. 运行 minify_Img.bat,如果报错缺少什么依赖,继续在命令行中安装

2、可能会遇到的问题

  1. 如果图片名太长,可能不能压缩处理,可先重命名在压缩
  2. 安装依赖可能会出现网络问题
  3. 最常见的错误就是上方第四点 pngquant|pngcrush;gifsicle|gif2webp 可能需要切换

3、自定义配置

  1. 下载的示例库已经创建好了输入文件夹和输出文件夹,层级关系已经设置好了。其实我们也可以自定义设置 input 和 output 文件夹

compress_images.js自定义设置界面

  1. 自定义配置参考文档:GitHub 仓库给了 7 中实例, 点击查看
    举例其中的集中方式:
    [1] 系数默认配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const compress_images = require("compress-images"),
INPUT_path_to_your_images,
OUTPUT_path;

INPUT_path_to_your_images = "src/img/**/*.{jpg,JPG,jpeg,JPEG,png,svg,gif}";
OUTPUT_path = "build/img/";

compress_images(INPUT_path_to_your_images, OUTPUT_path, { compress_force: false, statistic: true, autoupdate: true }, false,
{ jpg: { engine: "mozjpeg", command: ["-quality", "60"] } },
{ png: { engine: "pngquant", command: ["--quality=20-50", "-o"] } },
{ svg: { engine: "svgo", command: "--multipass" } },
{ gif: { engine: "gifsicle", command: ["--colors", "64", "--use-col=web"] } },
function (error, completed, statistic) {
console.log("-------------");
console.log(error);
console.log(completed);
console.log(statistic);
console.log("-------------");
}
);

[2]jpg⇒webp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const compress_images = require('compress-images');

// We will be compressing images [jpg] with two algorithms, [webp] and [jpg];

//[jpg] ---to---> [webp]
compress_images(
"src/img/**/*.{jpg,JPG,jpeg,JPEG}",
"build/img/",
{ compress_force: false, statistic: true, autoupdate: true },
false,
{ jpg: { engine: "webp", command: false } },
{ png: { engine: false, command: false } },
{ svg: { engine: false, command: false } },
{ gif: { engine: false, command: false } },
function (err) {
if (err === null) {
//[jpg] ---to---> [jpg(jpegtran)] WARNING!!! autoupdate - recommended to turn this off, it's not needed here - autoupdate: false
compress_images(
"src/img/**/*.{jpg,JPG,jpeg,JPEG}",
"build/img/",
{ compress_force: false, statistic: true, autoupdate: false },
false,
{ jpg: { engine: "jpegtran", command: false } },
{ png: { engine: false, command: false } },
{ svg: { engine: false, command: false } },
{ gif: { engine: false, command: false } },
function () {}
);
} else {
console.error(err);
}
}
);

[3] jpg (webp)+gif (gifsicle)+png (webp)+svg (svgo),括号中的为压缩算法 / 格式转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const compress_images = require('compress-images');

//[jpg+gif+png+svg] ---to---> [jpg(webp)+gif(gifsicle)+png(webp)+svg(svgo)]
compress_images('src/img/source/**/*.{jpg,JPG,jpeg,JPEG,gif,png,svg}', 'build/img/', {compress_force: false, statistic: true, autoupdate: true}, false,
{jpg: {engine: 'webp', command: false}},
{png: {engine: 'webp', command: false}},
{svg: {engine: 'svgo', command: false}},
{gif: {engine: 'gifsicle', command: ['--colors', '64', '--use-col=web']}}, function(){
//-------------------------------------------------
//[jpg] ---to---> [jpg(jpegtran)] WARNING!!! autoupdate - recommended to turn this off, it's not needed here - autoupdate: false
compress_images('src/img/source/**/*.{jpg,JPG,jpeg,JPEG}', 'src/img/combine/', {compress_force: false, statistic: true, autoupdate: false}, false,
{jpg: {engine: 'jpegtran', command: ['-trim', '-progressive', '-copy', 'none', '-optimize']}},
{png: {engine: false, command: false}},
{svg: {engine: false, command: false}},
{gif: {engine: false, command: false}}, function(){
//[jpg(jpegtran)] ---to---> [jpg(mozjpeg)] WARNING!!! autoupdate - recommended to turn this off, it's not needed here - autoupdate: false
compress_images('src/img/combine/**/*.{jpg,JPG,jpeg,JPEG}', 'build/img/', {compress_force: false, statistic: true, autoupdate: false}, false,
{jpg: {engine: 'mozjpeg', command: ['-quality', '75']}},
{png: {engine: false, command: false}},
{svg: {engine: false, command: false}},
{gif: {engine: false, command: false}}, function(){
//[png] ---to---> [png(pngquant)] WARNING!!! autoupdate - recommended to turn this off, it's not needed here - autoupdate: false
compress_images('src/img/source/**/*.png', 'build/img/', {compress_force: false, statistic: true, autoupdate: false}, false,
{jpg: {engine: false, command: false}},
{png: {engine: 'pngquant', command: ['--quality=30-60', '-o']}},
{svg: {engine: false, command: false}},
{gif: {engine: false, command: false}}, function(){
});
});
});
//-------------------------------------------------
});

4、压缩效果

图片压缩效果:文件从11M->2.2M

程序激活:搜索 HEU_KMS_Activator

表格篇

中断表格

将鼠标定位至某行表格结束位置,快捷键 Ctrl+Shift+Enter 中断表格
Ctrl_Shift_Enter中断表格

表格内容无法居中显示

原因:表格段落样式中,没有清除缩进(将左右缩进设置为 0,特殊格式设置为无)

制作三线表

文字总结:将表格的所有边框去除;给表格首行添加上边框和下边框,给表格尾行添加下边框;注意三线表格横线的粗细是否要特殊要求(如最上边和最下边的横线要粗一些,第二条横线要细一些)

制作三线表格

符号篇

乘号

长按 ALT 键不松,接着按数字键 0215 即可输入乘号
输入乘号alt0215

带圈数字

输入需要带圈的数字,选中这个数字;插入菜单栏⇒编号⇒找到带圈的样式
插入带圈的数字编号

插入商标注册符号

插入 ⇒ 符号 ⇒ 其他符号 ⇒ 特殊字符

(Word)插入注册商标特殊符号.gif

图像篇

文档设置不压缩图片

文字说明:对于 office 2010,新创建的文档默认设置是会压缩图像的

文档设置不压缩图片

刷新题注

选择图注域代码(或者全选文档),快捷键 F9 刷新

F9刷新题注

图片显示问题

文字说明:如果图片为嵌入型(默认的),在段落中只显示一部分,很有可能是因为段落行间距的问题,此时需要将图片的行间距设置为单倍行距。
插入图片显示不全,对图片进行单倍行距设置

为什么会这样:整段文字的行间距都是固定的 20 磅,插入图片后,上一行与下一行的行间距仍然只是 20 磅,因此只能看到 20 磅高度的图片

配置篇

快速访问工具栏

1、将指定功能按钮添加到快速访问工具栏
将指定功能按钮添加到快速访问工具栏

2、长按 Alt 键配合数字键🔢调用快速访问工具栏功能按钮
长按ALT键+数字按键可以实现快速访问工具栏工具的使用

文档设置不压缩图片

文档设置不压缩图片

排版篇

双栏文档插入跨栏图片(或表格或公式)

  • 连续插入两个 “连续分节符” 将双栏文档分为三段,将两个分节符中间那段的 “页面布局” 改为单栏页面,随后在这部分页面中插入图片即为跨栏形式。
  • 选中图片,选择 “页面布局” ⇒ “分栏” ⇒ “更多分栏”,设置单栏模式并将该设置应用于 “所选文字” 即可(实际上是系统自动完成了方法 1 的过程)。

参考资料:Word 2010 双栏文档插入跨栏图片(或表格或公式)后的文字阅读顺序问题

修改公式大小

当将公式转化为 mathtype 后,有时 mathtype 字体会与文中的字体不符合(mathtype 默认 12pt),因此在此基础上,有可能我们需要进一步更改字体大小

公式复制到另一个文档中变成图片

参考资料: word 公式复制到另一个 word 当中出现图片解决方案

PPT

PPT 中如何插入页码

母板中的 <#> 符号表示页码

01-PPT母板中的页码.png

![[Pasted image 20240206154302.png]]

![[Pasted image 20240206154314.png]]

然后会出来一串域代码,复制这个域代码到想要的为止即可

平滑动画

平滑动画需要的 OFFICE 版本为 office2019,因此 Win7 上就不用再折腾平滑动画了,因为 Win7 上不支持安装 office2019

Excel

转置数据

02-转置数据.gif

  1. 首先创建一个专门的文件夹
  2. 创建 imgs,PDFs 等子文件夹用于存储资源文件
  3. 注意所截取的图片一定要保存下来,在到 word 中插入图片【过程虽然比直接复制截图繁琐,但是这个图片以后如果用得到呢?难道还要在打开 PDF 进行截图吗】
  4. 截图的图片命名好名字,不要按照默认的时间命名
  5. 给图片添加题注,顺手的事情,因为图片的名字可以作为图片的图注
  6. 将图片和图注复制到其他文档中后,选择图注的域代码,按下 F9 即可更新图注,所以说前面给图片添加题注是一个好习惯,后期省的给图片添加图注
  7. 保存一份带有标题样式的 Word 模板
  8. 保存好使用到的 pdf 文件和图片,方便后期直接压缩包打包
    最后,一定要注意,文章中插入的信息要标注来源!!!

  1. 在线库依赖网络,网络不好的情况基本上用不了
  2. 笔记格式不通用,复制笔记到其他软件调格式麻烦
  3. 笔记一多,文档内容一多就明显感到不流畅了
  4. 搜索,中文搜索太拉胯了,通常是搜索框中输入了四个中文,结果匹配结果里面匹配到 1 个字,2 个字的也被搜出来了
  5. 对图片的支持不友好,且本身服务器加载图片很慢
  6. 在 Mac 端,中文输入法的情况下,敲了一串英文,enter 回车会出现问题
  7. 插件系统基本上等于没有,社区也还没有什么插件
  8. 同步机制做的还不行,remnote 客户端和 PWA 应用两者不同步,有点像两个账户了;遇到客户端更新同步就更慢了
  9. remnote 不支持表格,或者通过 HTML 实现该功能过于难用
  10. PDF 功能也不好用,一个是较大一点的 PDF 都不敢放 remnote 当中,加载慢;第二个是自带的 pin 和链接功能,选择 PDF 文字的时候,没有格式处理,导致选择的文字字与字之间存在多余的空格
  11. 复习机制比较拉胯,卡片操作还是远远不如 anki
  12. 删除文档之后,笔记库中出现一大堆的 untitled,这些文档有些甚至都删不去
  13. 待续…

系统超级大BUG之无法彻底删除文件

研一上

不知道大家对复习周感觉如何?个人认为期末考试那段时间是非常轻松愉悦的。那一两个星期里,可以完全放下科研(而且有正当理由拒绝其他令人烦恼的事情😄),然后一边干着自己这后半学期非常想干的东西,一边准备期末复习。

学习过程可以是和实验室的同学交流讨论,也可以和室友们彻夜漫谈,亦或刷着慕课上的视频,借阅师兄师姐往年的试题笔记;

遇到一个人解决不过来的问题,我们可以想办法分工合作,分工精确到试题当中哪位同学具体做哪些题,并将这些题给其他人讲清楚,最后相互讨论,相互补充,将一套题弄懂为止。备考的这段时间里,尽管有些对未来考题未知的恐惧,但更多的是那种满足感,那种将题目给旁边同学讲明白的自豪感,这种感觉尤其体现在自己对这道题的理解或心得传授给其他同学的过程。通过讨论、做题与讲授,这不比听老师讲课来的更快些嘛,嘿嘿😋!

学习金字塔

当然,除了单打独斗,我们其中也总会有消息情报员,负责统计历年考题,从师兄师姐那里打听资料;资料整理员,负责整理这门课程的考试重点;小抄出版员,负责制作简短精良的小纸条;每个人可能承担着多种不同的角色,目标非常明确:通过考试。

再回到考试周这个问题上:试题也都有标准答案,大家也都做着相同的一套题,奔着一个共同的目标,过或不能过,其实自己心里非常清楚。这种 “可以预见” 的结果,与生活中其他事情相比,怎么会不觉得轻松呢?

研一下

说快也挺快,研究生已经过完三分之一了

对于上课,比上学期更是没有心思听课了。说实在的,有一门专业课直到考试我也不知道这门课的名字是什么,直到考前的一两天看看之前发的 PPT,还有考后整理课程资料才发现学的这门课,原因可能有以下:

  • 课程内容基本与我的研究方向毫不相关,也不能提高通识水平,光这一点就很难激起学习兴趣;
  • 尽管老师讲的很认真,但课程内容较为老旧,老师也都是按照他们很久之前的认知在讲的,听得出来;
  • 自己太浮躁,上课期间刷别人的博客、找找 Github 上面有趣的项目、订阅一些 RSS 等。只不过还好,研究生上课的课程形式不像本科,上课期间也可以打开电脑;

课程内容其实也并不是很难理解,可是有的老师还是喜欢像本科那样教学,非得让我们把这门课的知识点全弄会 (〃>皿<)。暂时 “学会” 了又有什么用,隔不到一两星期就全忘光还给您了,这就是浪费我们共同的时间了