嗯,我消失好几天了。那么,我都在做什么呢?没错,就是写这篇文章了。这篇文章写起来着实有些费神了。于是,如果你觉得这篇文章对你有帮助,不妨扫描文末的二维码,适量赞助一下哦~!
tcolorbox
宏包是 Thomas F. Sturm 开发的一个用于绘制彩色文本框的宏包。tcolorbox
底层基于 pgf
,功能也是十分强大。
一个月前,有群友在群里问到如何制作下面这样的蓝色边框,于是这里借着实现这一边框的时机,简单讲讲 tcolorbox
的用法。
概述:安装与调用
和大多数宏包一样,tcolorbox
被 MiKTeX 和 TeX Live 都收录其中。因此,通常情况,你只需要用相应的宏包管理器安装就好。
使用起来,也很简单。和其他宏包一样,你需要在导言区,使用 \usepackage
命令调用这个宏包。
1 |
\usepackage{tcolorbox} |
你可以在调用宏包时,用可选参数指明需要加载哪些程序库;也可以在调用 tcolorbox
之后,显式地使用 \tcbuselibrary
来调用 tcolorbox
提供的丰富程序库。比如,下面的代码调用了 skins, breakable, theorems
三个程序库。
1 |
\usepackage{tcolorbox} |
每个程序库,都对应着一个 tcbXXX.code.tex
文件。实际上,使用 \tcbuselibrary
命令,就是调用了一个个这样的文件。以下是常见可用的 tcolorbox
程序库:
skins
: 调用tikz
宏包,提供丰富的文本框样式;vignette
: 提供一些装饰性的样式;raster
: 用以调整若干tcolorbox
的排布样式listings
/listingsutf8
/minted
: 用以和对应的宏包联用,实现好看的代码清单theorems
: 用以生成定理类环境breakable
: 实现自动分页的文本框magazine
: 实现类似杂志的分段文本fitting
: 实现字体大小和文本框大小的自适应
tcolorbox
基础
基础环境和基础命令
tcolorbox
宏包提供了与宏包同名的环境,是整个宏包的基础环境,用于生成段落间的文本框。与之对应,宏包还提供了 \tcbox
命令,用于生成行内的文本框。
1 |
\begin{tcolorbox}[⟨options⟩] |
tcolorbox
环境和 \tcbox
命令都可以接收一组选项,用来控制文本框的样式。我们来看看下面的代码,及其相应的效果。
1 |
\documentclass{article} |
7 – 9 行是一个最朴素的 tcolorbox
环境。我们看到,在默认情况下,tcolorbox
输出了一个深灰色圆角边框、浅灰底色的文本框。
11 – 15 行则在上述最朴素的 tcolorbox
环境的基础上,增加了一条虚线。这条虚线由 \tcblower
控制,它将 tcolorbox
中的内容分成了上下两部分。
17 – 21 行则第一次指定了 tcolorbox
环境的选项。tcolorbox
环境和 \tcbox
都可以接受一串 key-value 的参数列表。这里,我们给 tcolorbox
环境传入了一个名为 title
的参数,它的值是 I Love Sophia
。顾名思义,这给 tcolorbox
输出的文本框起了一个名字。默认情况下,这个名字会显示在文本框的头部。
23 – 25 行引入了一个新的命令——\tcbset
。显而易见,tcb
是宏包名字的缩写,而 set
自然是「设置」的意思。\tcbset
也可以接受一串 key-value 参数列表,这些参数将对(同一个分组内) \tcbset
之后的所有 tcbcolorbox
环境和 \tcbox
命令生效。这里引入了一些参数,我们在此不深究它们的含义,且先看效果再说。
在 27 行,我们遇到了第一个 \tcbox
命令。在先前 \tcbset
设置的选项之外,这个 \tcbox
还显式地引入了 tcbox raise base
这一参数。结合效果,不难猜出这个选项调整了 \tcbox
生成盒子的基线(baseline)。
29 行和 40 行开头的两个 \tcbox
命令,一方面说明 tcolorbox
宏包提供了相当多的控制选项,因此文本框的样式是高度可定制的;另一方面说明了 \tcbox
内里可以装各种类型的文本——包括表格和图档。
定义和重定义新的 box
tcolorbox
宏包提供了 4 个命令,分别用来定义和重定义 tcolorbox
环境和 \tcbox
命令制作的文本框样式。
1 |
\newtcolorbox[⟨init options⟩]{⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩} |
\newtcolorbox
类似 LaTeX 的 \newenvironment
命令,能够基于 tcolorbox
环境创建一个新的 box 环境;\renewcolorbox
则类似 LaTeX 的 \renewenvironment
。\newtcbox
类似 LaTeX 的 \newcommand
命令,能够基于 \tcbox
命令创建一个新的 box 命令;\renewtcbox
则类似 LaTeX 的 \renewcommand
命令。
在这里
⟨init options⟩
通常是用来控制计数器的,具体可以参见tcolorbox
宏包说明手册的第 5 章⟨name⟩
是环境或命令的名字⟨number⟩
是环境或命令参数的个数⟨default⟩
是环境或命令可选参数的默认值⟨options⟩
接受类似\tcbset
的 key-value 参数列表
1 |
\documentclass{article} |