Files
LaTeX/docs/note-setup-doc-cn.md
2026-01-14 09:57:04 +08:00

276 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# note-setup 配置说明
## 基本配置
导入常用的基础宏包
```latex
\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{mathtools}
\usepackage{mathrsfs}
\usepackage{bm}
\usepackage{extarrows}
\usepackage[a4paper, margin=1in]{geometry}
\usepackage{float}
\usepackage{indentfirst}
\usepackage{anyfontsize}
\usepackage{booktabs,multirow,multicol}
\usepackage[shortlabels,inline]{enumitem}
\usepackage{appendix}
```
导入颜色支持的宏包
```latex
\usepackage[dvipsnames]{xcolor}
```
插入图片以及子图的相关宏包,对图片文件夹路径进行配置
```latex
\usepackage{graphicx}
\graphicspath{
{./figure/}{./figures/}{./image/}{./images/}{./graphic/}
{./graphics/}{./picture/}{./pictures/}
}
\usepackage{subcaption}
```
导入算法环境的宏包
```latex
\usepackage[ruled,linesnumbered,noline]{algorithm2e}
```
导入代码环境的宏包并配置样式
```latex
\usepackage{listings}
\lstdefinestyle{simpleStyle}{
basicstyle=\ttfamily\small,
breaklines=true,
keywordstyle=\color{blue},
identifierstyle=\color{black},
stringstyle=\color{violet},
commentstyle=\color[RGB]{34,139,34},
showstringspaces=false,
numbers=left,
numbersep=2em,
numberstyle=\footnotesize,
frame=single,
framesep=1em,
}
\lstset{style=simpleStyle}
```
导入超链接支持的宏包
```latex
\usepackage{hyperref}
\hypersetup{
colorlinks=true,linkcolor=,urlcolor=cyan
}
```
## 定理环境
修改 proof 环境的引导词为 Proof,样式为加粗无斜体
```latex
\renewcommand*{\proofname}{\normalfont\bfseries Proof}
```
导入 thmtools 宏包,使用 `\declaretheorem` 命令来定义各种定理环境(比`\newtheorem`命令更加方便)
```latex
\usepackage{thmtools}
```
使用的 `\declaretheorem` 命令参数包括:
- `style`: 定理环境样式,amsthm 内置的样式包括
- plain(默认):引导词是正体,内容是斜体
- definition:引导词和内容都是正体
- remark:引导词是斜体,内容是正体
- `name`:显示在正文中的引导词(不等于环境的名称)
- `numbered`:是否开启编号
- `numberwithin`、`sibling`:定义编号规则,例如
- `numberwithin=section`:基于 section 编号
- `sibling=theorem`:共享 `theorem` 环境的编号
具体包括:
- 采用 plain 样式,定义 `theorem`/`theorem*`、`proposition`/`proposition*`、`corollary`/`corollary*`、`lemma`/`lemma*`、`claim`/`claim*` 环境
```latex
%% define environments
\declaretheorem[style=plain, name=Theorem, numbered=yes, numberwithin=section]{theorem}
\declaretheorem[style=plain, name=Theorem, numbered=no]{theorem*}
\declaretheorem[style=plain, name=Proposition, numbered=yes, sibling=theorem]{proposition}
\declaretheorem[style=plain, name=Proposition, numbered=no]{proposition*}
\declaretheorem[style=plain, name=Corollary, numbered=yes, sibling=theorem]{corollary}
\declaretheorem[style=plain, name=Corollary, numbered=no]{corollary*}
\declaretheorem[style=plain, name=Lemma, numbered=yes, sibling=theorem]{lemma}
\declaretheorem[style=plain, name=Lemma, numbered=no]{lemma*}
\declaretheorem[style=plain, name=Claim, numbered=yes, sibling=theorem]{claim}
\declaretheorem[style=plain, name=Claim, numbered=no]{claim*}
```
- 采用 definition 样式,定义 `definition`/`definition*`、`example`/`example*`、`problem`/`problem*` 环境
```latex
\declaretheorem[style=definition, name=Definition, numbered=yes, numberwithin=section]{definition}
\declaretheorem[style=definition, name=Definition, numbered=no]{definition*}
\declaretheorem[style=definition, name=Example, numbered=yes, numberwithin=section]{example}
\declaretheorem[style=definition, name=Example, numbered=no]{example*}
\declaretheorem[style=definition, name=Problem, numbered=yes, numberwithin=section]{problem}
\declaretheorem[style=definition, name=Problem, numbered=no]{problem*}
```
- 采用 remark 样式,定义 `remark`/`remark*` 环境
```latex
\declaretheorem[style=remark, name=Remark, numbered=yes, numberwithin=section]{remark}
\declaretheorem[style=remark, name=Remark, numbered=no]{remark*}
```
- 使用 `\declaretheoremstyle` 命令定义新的 notestyle 样式,类似 remark 环境,但是引导词变成 Note,并且有颜色
```latex
\declaretheoremstyle[headfont=\color{orange!80}\bfseries, bodyfont=\normalfont, spaceabove=3pt, spacebelow=3pt]{notestyle}
```
- 采用新定义的 notestyle 样式,定义 `note`/`note*` 环境
```latex
\declaretheorem[style=notestyle, name=Note, numbered=yes, numberwithin=section]{note}
\declaretheorem[style=notestyle, name=Note, numbered=no]{note*}
```
- 使用 `\declaretheoremstyle` 命令定义新的 solutionstyle 样式,类似 proof 环境,但是引导词变成 Solution
```latex
\declaretheoremstyle[headfont=\bfseries, bodyfont=\normalfont, spaceabove=3pt, spacebelow=3pt, qed=\ensuremath{\square}]{solutionstyle}
```
- 采用新定义的 solutionstyle 样式,定义 `solution`/`solition*` 环境
```latex
\declaretheorem[style=solutionstyle, name=Solution, numbered=yes, numberwithin=section]{solution}
\declaretheorem[style=solutionstyle, name=Solution, numbered=no]{solution*}
```
## 定理环境的美化
导入 tcolorbox 宏包以使用盒子美化现有的定理环境
```latex
\usepackage[most]{tcolorbox}
```
tcolorbox 宏包的功能非常复杂,这里只需要使用 `\tcolorboxenvironment` 命令。
首先封装一个 `\newtcbenvironment` 命令
```latex
\newcommand{\newtcbenvironment}[2]{
\tcolorboxenvironment{#1}{#2, enhanced, breakable, sharp corners, boxrule=1pt}
\tcolorboxenvironment{#1*}{#2, enhanced, breakable, rounded corners, boxrule=1pt}
}
```
它可以同时为 `#1` 以及 `#1*` 这两个环境加上盒子,公共参数:
- `#2`:在定义时传入的参数,这里主要是边框颜色和背景色
- `enhanced`:样式增强
- `breakable`:允许跨页
- `boxrule=1pt`:边框宽度为 1pt
还有不同的参数:
- `#1` 盒子使用直角边框(`sharp corners`)
- `#1*` 盒子使用圆角边框(`rounded corners`)
> 对 `\newtcbenvironment` 内部的公共参数部分进行调整,就可以实现所有盒子只保留左侧边框或者四周无边框等不同的效果。
下面就是为前面的各种定理环境加上盒子,参数是盒子的边框颜色 `colframe` 和背景色 `colback`
```latex
%% define styles
\newtcbenvironment{theorem}{colframe=RoyalPurple, colback=RoyalPurple!8}
\newtcbenvironment{proposition}{colframe=RoyalPurple, colback=RoyalPurple!8}
\newtcbenvironment{corollary}{colframe=NavyBlue, colback=SkyBlue!8}
\newtcbenvironment{lemma}{colframe=NavyBlue, colback=SkyBlue!8}
\newtcbenvironment{claim}{colframe=NavyBlue, colback=SkyBlue!8}
\newtcbenvironment{definition}{colframe=ForestGreen, colback=ForestGreen!5}
\newtcbenvironment{example}{colframe=RawSienna, colback=RawSienna!5}
\newtcbenvironment{problem}{colframe=WildStrawberry!30, colback=WildStrawberry!5}
```
具体颜色如下表
| 环境名 | 盒子边框颜色 | 盒子背景色 |
| :---------------------------: | :---------------: | :--------------: |
| `theorem`, `proposition` | RoyalPurple | RoyalPurple!8 |
| `corollary`, `lemma`, `claim` | NavyBlue | SkyBlue!8 |
| `definition` | ForestGreen | ForestGreen!5 |
| `example` | RawSienna | RawSienna!5 |
| `problem` | WildStrawberry!30 | WildStrawberry!5 |
说明:
- 这里采用 `xcolor` 宏包所提供的标准颜色,`xxx!n`代表将颜色 `xxx` 以 `n%` 比例和白色混合得到的浅颜色。
- 为了避免颜色过多,对语义类似的环境合并采用相同的盒子颜色。
此外,还添加了一个没有标题的简单盒子 `cbox`
```latex
%% cbox
\newtcolorbox{cbox}[1][]{%
enhanced,
breakable,
sharp corners,
leftrule=2pt, rightrule=0pt, toprule=0pt, bottomrule=0pt,
colframe=SkyBlue,
colback=SkyBlue!8,
#1
}
```
## 自定义封面页
自定义封面页(参考 [ElegantBook](https://github.com/ElegantLaTeX/ElegantBook) 以及它的若干衍生模板)
```latex
%% cover
\usepackage{titling}
\newcommand{\extrainfo}{}
\renewcommand{\extrainfo}[1]{\renewcommand{\extrainfocontent}{#1}}
\newcommand{\extrainfocontent}{}
\newcommand{\makecover}[1]{%
\begin{titlepage}
\newgeometry{margin=0in}
\parindent=0pt
\includegraphics[width=\linewidth]{#1} % size = 1280*1024
\vfill
\begin{center}
\parbox{0.618\textwidth}{%
\raggedleft{\bfseries \Huge \thetitle} \\[0.6pt]
\rule{0.618\textwidth}{4pt} \\
}
\end{center}
\vfill
\begin{center}
\parbox{0.618\textwidth}{%
\raggedleft\Large
\begin{tabular}{r}
\theauthor \\
\thedate \\
\end{tabular}%
}
\end{center}
\vfill
\begin{center}
\parbox[t]{0.7\textwidth}{\centering \itshape \extrainfocontent}
\end{center}
\vfill
\end{titlepage}
\restoregeometry
\thispagestyle{empty}
}
% USAGE
% \extrainfo{xxx}
% \makecover{/path/to/cover.png}
```
这里没有选择覆盖`\maketitle`,而是改成新命令`\makecover`,接收的一个必要参数为封面图的路径。
封面图建议尺寸为1280*1024,尤其对于jpg格式的图片,尺寸不同会导致编译报错。