-
Notifications
You must be signed in to change notification settings - Fork 227
/
chapStyle.tex
executable file
·123 lines (101 loc) · 4.84 KB
/
chapStyle.tex
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
\chapter{样式}
\section{转义字符}
注意“\#\,”是 \TeX 元字符,因此 C\# 要写作 \fn{C\bs\#}。
类似的“\textasciitilde”也是元字符,
要写作\mn{textasciitilde}。
\index{命令!textasciitilde@\mn{textasciitilde}}
这两个字符在URL中也经常出现,要特别小心。
C/C++代码的标识符中经常出现下划线“_”,例如 \fn{boost::shared_ptr}、
\fn{random_\linebreak[0]shuffle} 等。
为了避免每次都转义,可以使用 \fn{underscore} 宏包,
将下划线变为普通字符。
\index{宏包!underscore@\fn{underscore}}
注意这里 \fn{random_\linebreak[0]shuffle} 在行尾断字,
那么下划线之后不应该出现连字号“-”,
因此应写为 \verb|random_\linebreak[0]shuffle|。
\section{斜体}
按照排版规范,数学变量名和(非标准)函数名应该用斜体,
常量、单位、标准函数名应该用正体。
例如:%$\footnote{c是真空中的光速,k是Boltzmann常数。}:
$n$-body 问题、%$E = m \mathrm{c}^2 、
%$V_\mathrm{T} = \frac{\mathrm{k} T}{q}$、
$\sin x = (\mathrm{e}^{\mathrm{i}x} - \mathrm{e}^{-\mathrm{i}x})/2\mathrm{i}$、
5\textmu s。
快速排序 $n$ 个元素的数度的平均时间复杂度是 $O(n \log n)$。
通过 TCP 发送 $n$ 字节的消息,
接收方收到这 $n$ 个字节的事件可能性有 $2^{n-1}$ 种
\footnote{在 $n-1$ 个字节间隙中,依次插入 $0, 1, \ldots, n-1$ 个“隔板”,
一共有 $C_{n-1}^0 + C_{n-1}^1 + \cdots + C_{n-1}^{n-1} = 2 ^ {n-1} $ 种情况。}。
\section{列表}
\LaTeX 默认的列表环境(\fn{itemize} 和 \fn{enumerate})是为多行文字准备的,
因此上下间距较大。我一般使用 \fn{enumitem} 宏包来重新定义列表环境,
并且定义几个简单的命令来使用它(\mn{begindot} 和 \mn{myenddot},\mn{beginnum} 和 \mn{myendnum})。
\index{宏包!enumitem@\fn{enumitem}}
\begin{Code}
\newcommand\begindot{\begin{itemize}
[itemsep=2pt plus 2pt minus 2pt,%
topsep=3pt plus 2pt minus 2pt,%
parsep=0pt plus 2pt minus 2pt]}
\newcommand\myenddot{\end{itemize}}
\end{Code}
\begin{Code}
\newcommand\beginnum{\begin{enumerate}
[itemsep=2pt plus 2pt minus 2pt,%
topsep=3pt plus 2pt minus 2pt,%
parsep=0pt plus 2pt minus 2pt]}
\newcommand\myendnum{\end{enumerate}}
\end{Code}
\section{章节标题}
章节标题无标点,因此 \S \ref{sec:whyTypesetting} 是错的。
\fn{ctex} 宏包默认会把章\mn{chapter} 和节\mn{section} 的标题居中,
这种样式显得很古板,章标题可以靠右,节标题和小节标题均靠左。
参见本文的\fn{format.cls} 文件。
\subsection{编号}
通常单个小节不编号,因此 \S \ref{subsec:noChineseItalic} 和本小节是错的。
应要改用\mn{subsection*} 命令。
\section{图表编号} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我不使用浮动环境,因此自己定义了 \mn{figcaption} 和 \mn{tabcaption} 命令来为图表编号。
图的标题位于下方,按章编号(图1-1、图1-2、图2-1 等等)。
例如
\begin{center}
\includegraphics{sp0.eps}\\
\figcaption{\fn{shared_ptr} 的数据结构}\label{fig:sharedptr}
\end{center}
表的标题位于上方,按章编号(表1-1、表1-2、表2-1 等等)。
例如
\begin{center}
\tabcaption{水平空格命令的长度}
\vspace{1ex}
\begin{tabular}{ccl}
\hline
\textbf{命令} & \textbf{长度} & \textbf{用途}\\
\hline
\mn{quad} & 10pt & 图表编号与图表标题之间的全角空格\\
\mn{,} & 1.67pt & 千分空,例如 65\,536\\
\hline
\end{tabular}
\end{center}
\section{脚注} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{编号}
\LaTeX 默认是按章重置脚注编号,
这么如果重印的时候需要增加一个脚注,
势必会影响后续页码,这是 \mybooktitle 排版的一个教训。
因此我意识到脚注应该是按页重置,但是 \verb|\@addtoreset{footnote}{page}|
无效,必须使用 \fn{footmisc} 宏包的 \fn{perpage} 选项,
例如 \sfn{\bs usepackage[perpage]\{footmisc\}}。
\index{宏包!footmisc@\fn{footmisc}}
\LaTeX 默认的脚注编号是数字,这有时会造成误解。
例如给长度单位pt添加脚注,正文中可能会出现“pt\textsuperscript{2}”,
让人误以为是面积单位,因此可以改用带圈数字。
\subsection{置底}
\LaTeX 默认的脚注位置不是固定置底,而有可能随页面内容而浮动。例如 \myurl{footnote-middle.tex}。
\vspace{1ex}
\centerline{\fbox{\includegraphics[page=1]{footnote-middle.pdf}}%
\quad\fbox{\includegraphics[page=2]{footnote-middle.pdf}}}
使用 \fn{footmisc} 宏包的 \fn{bottom} 选项之后,
脚注置底。见 \myurl{footnote-bottom.tex}。 \nopagebreak
\vspace{1ex}
\centerline{\fbox{\includegraphics[page=1]{footnote-bottom.pdf}}%
\quad\fbox{\includegraphics[page=2]{footnote-bottom.pdf}}}
\section{参考文献}
技术书籍不是学术著作,可不必使用 BibTeX 工具,直接按出版社的格式要求排版参考文献即可。