努力地往前飞,再累也无所谓
本书的重排项目本来是由github的re-book项目组于2019年4月份发起, 原本是每人一章分工合作,但是中间陆续有人退出,大量排版工作没有完成,还有巨多的图要画,我完成了分配给自己的第五章,但是其他很多的章节落下了太多,后来就干脆变成了一个烂尾的项目。如今时隔两年,我觉得这本书还是有完成的必要,于是自己重操旧业,准备来完成这本书的剩余部分,然后制作附录表格,并将所有的图重新用TikZ绘制,相信这本书将来会对很多人的学习产生帮助。
由于这本书是分工完成的,不同人代码风格差异很大,文字是用OCR识别的,也有所缺失。很多公式都是机器代码,我也没有精力再去一一修改。如果读者在阅读过程中发现了排版错误的,欢迎致邮勘误.
声明,本人以及rebook项目组只排版此书和分享,无任何个人版权。
整个书籍的完整代码我放在了github上,
在LaTeX
中有三种基本的列表环境,即enumerate
、itemize
和description
环境,这其中最常用的自然是enumerate
环境,本文则针对enumerate
环境的使用来实现一些常见的需求。
编号是需要计数器的,在标准的计数器中,只有\roman
、\Roman
、\arabic
、\alph
、\Alph
以及\fnsymbol
,其输出格式分别为i,ii
、I,II
、1,2
、a,b
、A,B
、花体符号
,现在如果需要输出一、二
这种类型的编号,可以使用enumitem
包提供的\AddEnumerateCounter
命令,同时利用ctex
包提供的\chinese
命令即可,一个minimal working example
如下:1
2
3
4
5
6
7
8
9
10
11
12
13\documentclass{ctexart}
\usepackage[showframe]{geometry}
\usepackage{enumitem}
\AddEnumerateCounter{\chinese}{\chinese}{}
\begin{document}
\begin{enumerate}[label = \chinese*、]
\item 第一行
\item 第二行
\end{enumerate}
\end{document}
在默认的情况下,列表的每一个条目是悬挂缩进的,但有时候希望条目从第二行开始无缩进,也就是整体格式类似于一个段落,此时enumitem
包添加inline
选项以后,会有三个带星号的环境enumerate*
、itemize*
和description*
,譬如1
2
3
4
5
6
7
8
9
10
11\documentclass{ctexart}
\usepackage[inline]{enumitem}
\usepackage{xcolor}
\begin{document}
\begin{enumerate*}[label =\color{red} (\arabic*)]
\item 这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长
\item 这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长
\end{enumerate*}
\end{document}
编译出来的结果如下:
可以发现第二个label
也跑到段落中去了,为此可以使用itemjion
参数,看这个参数的单词就能猜出是连接两个item
的代码,代码改为1
2
3
4
5
6
7
8
9
10
11\documentclass{ctexart}
\usepackage[inline]{enumitem}
\usepackage{xcolor}
\begin{document}
\begin{enumerate*}[label =\color{red} (\arabic*),itemjoin=\\]
\item 这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长
\item 这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长这是很长
\end{enumerate*}
\end{document}
编译出来为
如果希望第二个label
跟第一个label
一样的缩进,可以设置itemjoin=\\\hspace*{\parindent}
.
不过enumerate*
由于是inline
环境,所以不能这个环境里面加入行间公式,下面的代码就会报错1
2
3
4
5
6
7
8
9
10
11\documentclass{ctexart}
\usepackage[inline]{enumitem}
\begin{document}
\begin{enumerate*}[label = (\arabic*)]
\item 不支持行间公式
\[ a + b + c \]
\item 怎么办
\end{enumerate*}
\end{document}
可以用下面这种很笨的方法,需要使用行间公式的时候离开列表环境,然后再次使用列表环境,同时为了编号保持一致,还需要使用resume
参数或者重新设置计数器的值.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15\documentclass{ctexart}
\usepackage[inline]{enumitem}
\begin{document}
\begin{enumerate*}[label = (\arabic*)]
\item 不支持行间公式
\end{enumerate*}
\[ a + b + c \]
\begin{enumerate*}[label = (\arabic*),resume]
\item 怎么办
\end{enumerate*}
\end{document}
不过比起这种方法,更好的不如使用paralist
包相应的inline
环境,asparaenum
和inparaenum
环境,这两个环境的输出格式稍有不同,它们是直接支持行间公式的,并且还有一个可选的设置label
的参数,下面的示例代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20\documentclass{ctexart}
\usepackage{paralist}
\usepackage{hyperref}
\begin{document}
\begin{asparaenum}[{item} a]\renewcommand\theenumi{(\alph{enumi})}
\item\label{item1} 行间公式
\[ a + b = c \]
\item 行间公式
\end{asparaenum}
\ref{item1} 引用label
\begin{inparaenum}[\quad(a)]
\item 行间公式
\[ a = b \]
\item 行间公式
\end{inparaenum}
\end{document}
而且paralist
包与enumitem
包是不冲突的,可以同时使用.
TikZ
与animate
包实现几个pdf
动画效果animate
包可以调用Javascript
来在pdf
上实现一些动画效果,不过这个动画效果需要支持Javascript
的pdf
阅读器才能看到。这一期我们就来分别做几个物理动画:弹簧振子,单摆和圆锥摆的运动,代码需要编译两次,最好是pdflatex
编译,然后用Adobe Reader
就能看到动画效果了。
https://zhuanlan.zhihu.com/p/338402487
动画效果可以在我的知乎主页查看
1 | \documentclass{beamer} |
1 | \documentclass{standalone} |
1 | \documentclass{standalone} |
1 | \documentclass{standalone} |
1 | \documentclass{standalone} |
1 | \documentclass{standalone} |
tikz
封面设计最近接了哈工大出版社一个活,要翻译一本1962-2009年的越南数学奥林匹克。然后我就除了内容之外,顺便把原书的封面也画了一个,封底和封面以及代码如下
1 | \documentclass{ctexart} |
其中的五环图ring1.pdf
的代码为
1 | \begin{tikzpicture} |
这是我几个月前设计的一个书籍封面,自己比较喜欢这个格式,现在放在博客,需要编译两次。
1 |
|
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true