Beamer 入门 之 彩色文本框
本节内容给大家分享如何绘制彩色表格,大致的效果如下:
该节的内容主要包括(链接可跳至B站视频链接):
最终效果如下:
创建彩色文本框
本文介绍的彩色文本框的方法主要是使用 tcolorbox 宏包定义的。且仅是该宏包最基础的使用方法,更多关于该宏包的用法,可查看宏包说明,或评论区一起探讨。
tcolorbox 宏包
在导言区使用该宏包后,为什么提供了一个tcolorbox 环境,可以生成一个基本的文本框,方法如下:
\documentclass{ctexart}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}
文本框文本内容
\end{tcolorbox}
\end{document}
使用技巧及文本框简元素介绍
节使用到的最基本的文本框,包括三个部分的内容:文本,文本框背景,和边框。
文本框,边框为 深灰(或者灰黑,笔者色弱不太能分辨颜色);字体为黑色;而字体背景为浅灰色。
文本框可以加标题, tcolorbox 环境不管是添加标题还是对样式进行设置都要在可填参数方括号内进行添加。
另外文本框可分为上下两部分。 使用\tcblower 来分割上下两部分内容。若使用了次方式,则其对应的样式的控制,需单独控制。且分割线默认为虚线。详细设置不再赘述,因为本文介绍的是只含有一部分的文本框。
含标题及上下两部分文本框代码如下:
\documentclass{ctexart}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}[title=文本框标题]
文本框文本上部分内容
\tcblower
文本框文本下部分内容
\end{tcolorbox}
\end{document}
加入了标题之后,文本框包含的元素就增加了。 除了前面出现的正文文本,背景和边框之外,还包含标题的 文本 及背景。对其外观元素进行简单的设置,了解这些内容就可以了。
更改彩色文本框外观样式
如何把默认的最基础的文本框改成本文开始的图片中的那个样子呢?需要更改以下几个元素:
- 标题字体字号
- 标题背景颜色
- 标题位置
- 字体背景颜色
- 正文字体字号
- 边框颜色及样式
预定义样式
设置小技巧,虽然我们可以直接在tcolorbox 环境后的方括号内添加相关参数,但是这样一来,我们每次使用这样的文本框都要复制可填参数的内容,比较繁琐,而且使正文的代码区域的篇幅变得又臭又长。
因此个人建议我们如果需要多次使用相同的文本框样式的话可以在导言区提前定义其样式。除此之外,预定义还有另一个好处:在我们键入关键词的时候,texstudio 的补全功能可以为我们提供更多参数设置的参考。即时有些参数不太清楚,看了这些乱七八糟的提示之后,也会心中有数。
预定义的方法:
使用tcolorbox 宏包之后在导言区使用 命令 \tcbset{}
即可对相关参数进行设置,且与 tcolorbox 环境中 的方括号内添加可选参数的方式无异。
标题
字体字号
字体参数,使用font 这一关键词,键入font之后 texstduio 会给我们可以设置的选项。 标题字体参数即为: fonttitle
将其设置为黑体,字号小四 则如: fonttitle= \heiti \large
标题颜色
因为都是颜色设置,因此关键词使 col
。
标题颜色:coltitle
标题背景颜色:colbacktitle
其中back 代表背景。
因此将标题字体设置为白色,背景设置为黑色则如:colbacktitle=black,coltitle=white
位置
字体位置
现在我们的 标题是和文本框一样占据了整个文本框的长度,但是当我们的文本框不需要这么多空间的时候,后面的空白就会使 这个标题看起来很空旷。
我们当然可以让标题中的内容居中显示。使用align title = center
显然,右对齐可以使用right。
标题框位置
那如何达到本文刚开始的效果呢, 其实可以借助tcolorbox 宏包提供的library (下文就成为样式库,具体标准的翻译笔者不清楚,如有问题,请多指正。)
该包含有很多样式库,当然可以根据自己的需要去使用这些样式库,但是也有一个偷懒的方法,笔者本文使用的就是这种偷懒的方法,也就是使用most 加载几乎所有的 样式库,这样在使用很多乱七八糟的参数设置的时候不至于各种报错。如果你已经熟悉了各种样式库的使用方法和相关参数,还是建议用到什么就添加什么,省内存,运行速度也会更快。
那我们今天要用到的就是skins 这个样式库,调整标题位置,需要用到enhanced 参数。该参数可依然我们在原有的基础上对样式做一些简单的更改。为达成效果图中标题在上方靠左的位置,相关设置如下:
\usepackage[skins]{tcolorbox}
\tcbset{enhanced,attach boxed title to top left}
正文
正文部分设置与标题部分类似;最终要求: 字体为黑色楷书,背景为白色,
设置字体颜色的时候需要注意,因为我们没有使用 \tcblower
因此我们的正文文本其实是 upper 的文本。所以字设置为 fontupper = \kaishu, colback = white,
边框
边框形状
现在的效果有一个小问题,就是我们的 标题的边框和 文本框的边框的四角都是平滑有弧度的。因此相连的地方会有一个缺口,消除这个缺口有如下两种方法:
方法一:边框变直角
- 消除正文边框弧度,用直角代替。参数设置:
arc=0pt
- 标题框需要单独设置,因为我们使用了 box 放 title 。所以,对齐进行设置我们可以使用:
boxed title style={arc=0pt}
这样的好处是,不用进行太多的设置,缺点是,直角对于一部分人来说可能并不美观,可能还是想保留有弧度的角。因此可以看方法二。
方法二:标题框下移
让标题框下移,只需要在attach box 的命令后面加入向下移动的数值,纵向移动负距离,本文就是用 -5pt 如: attach boxed title to top left = {yshift = -5pt},
这样设置的好处是,更方便不要太多的命令。
边框颜色
现在的边框和主题颜色并不统一,设置边框颜色,需要使用到命令 colframe=black
。
边框外观
现在和最终的效果只插最后一步,将上面和右边的两条边框取消掉,这需要使用到要给设置边框粗细的命令 toprule
和 rightrule
让其等于具体数值可以用来设置边框的粗细,如果想取消这两条线,其实可以将其粗细设置为 0pt。如:toprule = 0pt,rightrule=0pt
。但是这个时候可能会看到一条若隐若现的线条。因此取消这两个线条可以将 0pt 改为 -1pt ,其实只要是负值就可以大小无所谓,如果是小于1可能还是会若隐若现,因此笔者就使用1 了。
现在只剩最后一个问题,我们的正文文本由于标题框下一,因此和标题框的具体太过于接近,因此将这个距离设置大一点,可以使用 top 参数,我们将其参数设置成 10pt 。如:top = 10pt
任何建议,希望可以批评指正,该文内容相关视频可去 B 站 搜索用户 joefsong 查看。
附录代码及拓展:
将这样的环境定义成一个新的环境,用起来更方便,使用tcolorbox 提供的命令:
\newtcolorbox{环境名}[可填参数][默认参数]{具体参数设置,即tcbset 中的内容}
例如我们可以将标题名称设置为可选参数:环境名为 joebox ,完整代码如下:
\documentclass{ctexart}
\usepackage[skins]{tcolorbox}
\newtcolorbox{joebox}[1][]{enhanced,
%------标题部分-----------
fonttitle = \heiti \large,% 标题字体设置
colbacktitle =black,% 标题背景颜色
coltitle=white,% 标题字体颜色
% halign title=center,% 标题对齐方式
attach boxed title to top left = {yshift = -5pt},
% 将标题以box 形式放在文本框左上角,并向下移动5pt
%----------正文字体--------
fontupper = \kaishu,%正文字体设置
colback = white,%正文背景颜色设置
%---------边框设置---------
% arc = 0pt,%正文边框边角弧度
% boxed title style={arc=0pt},%标题框边角弧度
colframe=black,%边框颜色设置
toprule = -1pt,%取消上边框
rightrule = -1pt,%取消下边框
%---------调整字体位置------
top = 10pt,%增大正文文本与上边框距离
%---------设置标题为默认参数,不影响其他参数的设置
title=#1
}
\usepackage{zhlipsum}%生成随机文本的宏包
\begin{document}
\begin{joebox}[文本框标题]%这里可直接填写标题内容,也可在此设置更多参数
\zhlipsum[2]%生成随即文本中的第二段内容
\end{joebox}
\end{document}