用 Ti𝑘Zlings 画萌萌哒的页码。


# 初识 TikZlings

上个月底读 TikZlings(opens new window) 说明文档的时候,我觉得 TikZlings 手册(opens new window) 中的页码很有趣,是一些萌萌哒的动物举着标有页码的牌子,于是就想看看生成这种页码风格的源码是什么样子的。

哦 😯,还忘记了介绍 TikZlings 是什么。tikzlings-doc.pdf 开篇是这样介绍的:

The TikZlings are a collection of little animals (and beings) drawn in TikZ. It is the next evolutionary phase of the tikzmarmots package extending it with further animals (and beings) and also adding the ability to natively use many of the accessories known from the TikZducks package.

简单来说,TikZlings 就是基于 TikZ 绘制了一些动物的形象,包括土拨鼠、鼹鼠、企鹅、河马、雪人等等,让使用者可以很方便地调用。实际上它和我之前用 TikZ 绘制的 scu-logo(opens new window) (值得一提的是,中科大的向禹将国内部分高校校徽用 TikZ 绘制并写成了 cnlogo 宏包(opens new window) )是一样的,不同的是,作者将其封装成了一个宏包,提供了一些命令选项,变得更有趣和更实用。

尽管 TikZlings 的说明文档已经很详细了,但通篇没有提到这种页码的设置方式,无奈我只好到 CTAN(opens new window) 上去下载整个代码包。经过我在 tikzlings-doc.tex 中 1000 多行代码的探索,终于找到了文档中设置页码的代码:

\usepackage{tikzlings}
.
.
.
\cfoot{\thepage} 
\pagestyle{scrheadings}
.
.
.
\cfoot{
	\begin{tikzpicture}[scale=0.5] 
	    \tikzling[signpost={\thepage}]
	\end{tikzpicture}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

经过简单移植,做成一个页码设置模板:

\documentclass[12pt, a4paper]{article}
\usepackage[scheme=plain]{ctex}
\linespread{1.3}
\usepackage[margin=2.5cm]{geometry}
\usepackage{microtype, setspace}
\setCJKmainfont[BoldFont=SimHei, ItalicFont=KaiTi]{SimSun}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{lipsum, zhlipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand\headrulewidth{0pt}
\usepackage{tikzlings}
\cfoot{
  \begin{tikzpicture}[scale=0.5] 
      \tikzling[signpost={\thepage}]
  \end{tikzpicture}
}
\setlength{\footskip}{1.5cm}
\begin{document}
\zhlipsum[1-10]
\lipsum[1-100]
\end{document}
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

生成的页码效果截图如下,也可 点击下载 PDF(opens new window) 查看完整版。

# 惊现 Bug

过了差不多半个月,我再一次打开原来写的 page_number.tex 文件编译了一下,结果发现和半个月前不一样了,页码数字的位置发生了偏移,没有在标牌的正中间。

一开始我以为是 发行版的问题,甚至都想卸了 MacTeX 2019 后重新安装,但是想想代价太大了,不如先上网搜索一下吧,然而并没有在网上搜索到相关解决方法,于是干脆联系作者 samcarter 吧:

  • tikzlings-doc.pdf 中找作者的联系方式,发现他并没有留下邮箱。
  • tex.stackexchange(opens new window) 上求助作者,发现他已经离开了,留言说有问题上法国 论坛上找他,可是我不懂法语啊。。。
  • 到作者 GitHub 主页(opens new window) 上找联系方式,也没有。。。。。。

真是应了 tex.stackexchange 上这句话:

Apparently, this user prefers to keep an air of mystery about them.

没有办法,我只好在 TikZlings 仓库(opens new window) 下提了一个 issue: Wrong place of page number(opens new window) 。庆幸的是,作者在一天后回复了,指出这个 bug 是由于 pgf-tikz 仓库(opens new window) 一次错误提交(opens new window) 导致的,并且把我提交的 issue 引用到了 pgf-tikz 的 issue#708(opens new window) 。很快,pgf-tikz 宏包的维护者 hmenke(opens new window) 回复已修复 bug,重新提交到了 CTAN,将在提交后约 24 小时内通过更新宏包得到解决。

由于国内镜像网站存在延迟,前天下午,我终于通过 清华大学开源软件镜像站(opens new window) 更新了 pgf-tikz 宏包(opens new window) ,又可以愉快地画图了✌️

# 玩转 TikZlings

# 中文数字页码

加上 zhnumber 宏包(opens new window) 中的命令 \pagenumbering{zhnum},可实现中文格式输出页码数字。

\documentclass[12pt, a4paper]{article}
\usepackage[scheme=plain]{ctex}
\pagenumbering{zhnum}
\linespread{1.3}
\usepackage[margin=2.5cm]{geometry}
\usepackage{microtype, setspace}
\setCJKmainfont[BoldFont=SimHei, ItalicFont=KaiTi]{SimSun}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{lipsum, zhlipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand\headrulewidth{0pt}
\usepackage{tikzlings}
\cfoot{\small
  \begin{tikzpicture}[scale=0.6]
      \tikzling[signpost={\thepage}]
  \end{tikzpicture}
}
\setlength{\footskip}{1.5cm}
\begin{document}
\zhlipsum[1-10]
\lipsum[1-88]
\end{document}
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

输出效果如下,下载 PDF(opens new window) 查看完整版。

# 可爱的鼹鼠

为鼹鼠、土拨鼠和猫头鹰加一些修饰:

\documentclass[12pt, a4paper]{article}
\usepackage[scheme=plain]{ctex}
\linespread{1.3}
\usepackage[margin=2.5cm]{geometry}
\usepackage{microtype, setspace}
\setCJKmainfont[BoldFont=SimHei, ItalicFont=KaiTi]{SimSun}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{lipsum, zhlipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand\headrulewidth{0pt}
\usepackage{tikzlings}
\cfoot{
  \begin{tikzpicture}
      \moles[signpost={\thepage},
      speech={cute},
      rotate=-5,
      scale=0.6,
      graduate=blue!40!black,
      tassel=red!60!blue,
      bubblecolour=gray!30!white,
      umbrellaclosed=cyan,
      icecream=brown!60!gray, 
      flavoura=brown!50!black,
      flavourb=white!70!brown,
      flavourc=red!50!white,
      ]
  \end{tikzpicture}
}
\lfoot{
 \begin{tikzpicture}
      \owl[scale=0.6,
      rotate=-10,
      cricket=purple!60!blue,
      ]
 \end{tikzpicture}
}
\rfoot{
 \begin{tikzpicture}
      \marmot[scale=0.6,
      rotate=10,
      football=white,
      ]
 \end{tikzpicture}
}
\setlength{\footskip}{1.5cm}
\begin{document}
\zhlipsum[1-10]
\lipsum[1-88]
\end{document}
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

下载 PDF(opens new window) 查看完整版。

可爱的鼹鼠马上就要毕业了,戴上了毕业的帽子准备去参加毕业典礼,嘴里还不忘念叨自己很 cute,可他自己却看不见牌子上写着的「2」。鼹鼠知道毕业季正逢雨季,特意带了把雨伞拿在左手,加上标牌的重量,把它的身子压得向左微倾。也许是刚刚吃下的冰淇淋在肚子里还没有消化,鼹鼠闭着眼睛,还在回味着美味。喜欢玩板球的猫头鹰学妹和爱踢足球的土拨鼠学弟,一左一右,前来庆祝鼹鼠学长即将毕业,他们三个高兴地向前走,一同奔向充满希望的未来。

下载上图 鼹鼠 PDF 版本(opens new window)