-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSYSUdaily.tex
executable file
·370 lines (333 loc) · 11.1 KB
/
SYSUdaily.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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
\documentclass{SYSUDaily}
\usepackage{listings}
\usepackage{fbox}
\usepackage{multicol}
\usepackage{cleveref}
\RequirePackage[a4paper, centering]{geometry}
\lstset{
basicstyle=\small\ttfamily,
keywordstyle=\color{black}\bfseries\underbar,
stringstyle=\ttfamily,
showstringspaces=false,
basewidth=.525em,
tabsize=4,
}
\ctexset{
section/format += \raggedright,
}
\title{中山大学数学学院「每日一题」模板}
\author{Innocent, Panadol, \emph{v2.1}}
\makeatletter
\renewenvironment{abstract}[1][\abstractname]{
\small
\begin{center}
{\bfseries #1\vspace {-.5em}\vspace {\z@ }}
\end {center}
\begin{quotation}
}{\end{quotation}}
\makeatother
\begin{document}
\maketitle
\begin{abstract}[简介]
此文档类 \verb|SYSUdaily.cls| 旨在建立一个简单易用的中山大学数学学院「每日一题」计划的排版渠道。
\end{abstract}
\begin{abstract}[免责声明]
此文档类仅仅为了处理中山大学数学学院「每日一题」计划而编写,勿作他图,任何将此模板用于非中山大学数学学院「每日一题」计划排版而导致的纠纷与本模板作者无关。
\end{abstract}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\section{介绍}
最早的一版用于中山大学数学学院「每日一题」计划排版的 \LaTeX{} 模板由 Innocent 编写,在 2023 年 10 月投入最初的使用。2024年3月,Panadol重构了整个模板的代码,现在代码托管在GitHub\footnote{\url{https://github.com/Arcanadol/SYSUdaily}}上,由Innocent和Panadol共同维护。
\section{使用方法}
\subsection{\texttt{daily}环境}
\texttt{daily}环境是本模板主要实现的功能,使用方法为:
\begin{lstlisting}
\begin{daily}[参数]
正文
\end{daily}
\end{lstlisting}
方括号 \verb|[]| 中的参数的顺序不影响结果。参数列表如下:
\paragraph{类型}
仅需输入类型命名即可确定 \verb|SYSUdaily| 的类型。所有类型定义及颜色如下:
\begin{quote}
\makeatletter
\newcommand\TestColour[1]{{\fboxsep0pt\fbox{\colorbox{#1}{\phantom{XX}}}}}
\makeatother
\linespread{1}\selectfont
\ExplSyntaxOn
\begin{multicols}{2}
\begin{itemize}
\seq_map_inline:Nn \c_math_styles_seq {
\item[\TestColour{#1color}]
\texttt{#1}
}
\end{itemize}
\end{multicols}
\ExplSyntaxOff
\end{quote}
因为 \verb|proposition| 很容易拼错,类型未设置时,默认为命题,\verb|\SYSUDailySetDefaultMathStyle| 可以设置默认的数学样式,此处我们将默认设置为 \verb|theorem|。
\SYSUDailySetDefaultMathStyle{theorem}
\begin{multicols}{2}
\begin{lstlisting}
\begin{daily}
默认情况下,这是一个定理。
\end{daily}
\end{lstlisting}
\small
\begin{daily}
默认情况下,这是一个定理。
\end{daily}
\end{multicols}
\SYSUDailySetDefaultMathStyle{proposition}然后再切换回命题。此外提供一个禅盒子
\begin{multicols}{2}
\begin{lstlisting}
\begin{daily}[empty]
最少的,就是最多的。
\end{daily}
\end{lstlisting}
\small
\begin{daily}[empty]
最少的,就是最多的。
\end{daily}
\end{multicols}
\paragraph{日期}
日期为8、6、4位整数:\verb|20101225|、\verb|101225|、\verb|1225| 分别代表三种不同的日期输入风格。
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\begin{daily}[19111225]
那是一个遥远的圣诞夜。
\end{daily}
\end{lstlisting}
\small
\begin{daily}[19111225]
那是一个遥远的圣诞夜。
\end{daily}
\end{multicols}
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\begin{daily}[111225]
我忘不了那年的圣诞节。
\end{daily}
\end{lstlisting}
\small
\begin{daily}[111225]
我忘不了那年的圣诞节。
\end{daily}
\end{multicols}
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\begin{daily}[1225]
今年的圣诞节,还要多久?
\end{daily}
\end{lstlisting}
\small
\begin{daily}[1225]
今年的圣诞节,还要多久?
\end{daily}
\end{multicols}
一个会被识别为日期的数字,但是格式错误时,将不会显示任何东西:
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\begin{daily}[125]
今天是 1 月 25 日?异或 12 月 5 日?
\end{daily}
\end{lstlisting}
\small
\begin{daily}[125]
今天是 1 月 25 日?异或 12 月 5 日?
\end{daily}
\end{multicols}
请不要把它当做关闭日期显示的开关,我们提供 \verb|\SYSUDailyNoShowDate| 来关闭日期显示,也可以用 \verb|\SYSUDailyDoShowDate| 来恢复开启。
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\SYSUDailyNoShowDate
\begin{daily}
今天几月几号,我也不知道。
\end{daily}
\end{lstlisting}
\small
\SYSUDailyNoShowDate
\begin{daily}
今天几月几号,我也不知道。
\end{daily}
\SYSUDailyDoShowDate
\end{multicols}
日期未设置时,默认为当天日期 \verb|\today|:
\begin{multicols}{2}
% \footnotesize
\begin{lstlisting}
\begin{daily}
今天是\today{},不是么?
\end{daily}
\end{lstlisting}
\small
\begin{daily}
今天是\today{},不是么?
\end{daily}
\end{multicols}
\paragraph{初步筛选功能}
我们引入所谓的``日期筛选功能'',通过 \verb|\SYSUDailyEnableDateCheck| 和 \verb|\SYSUDailyDisableDateCheck| 开启或关闭日期检查,通过\verb|\SYSUDailySetGlobalDate| 设置全局日期,如果日期不符合要求,将不会显示任何内容,此外我们默认提供\verb|solution|环境,如果日期不符合要求,将会不显示解答。
\begin{multicols}{2}
\begin{lstlisting}
\SYSUDailyEnableDateCheck
\SYSUDailySetGlobalDate{20250101}
\begin{daily}[20250101, 新年快乐!]
这个日期会被挑选出来。
\end{daily}
\begin{solution}
\[2025 = \sum_{n=1}^9 n^3\]
\end{solution}
\end{lstlisting}
\small
\SYSUDailyEnableDateCheck\SYSUDailySetGlobalDate{20250101}
\begin{daily}[20250101, 新年快乐!]
这个日期会被挑选出来。
\end{daily}
\begin{solution}
\[2025 = \sum_{n=1}^9 n^3\]
\end{solution}
\end{multicols}
\begin{multicols}{2}
\begin{lstlisting}
\begin{daily}[20241231, 该和过去说再见了]
这里写什么都没用。
\end{daily}
\begin{solution}
这里也一样。
\end{solution}
\end{lstlisting}
\small
\begin{daily}[20241231, 该和过去说再见了]
这里写什么都没用。
\end{daily}
\begin{solution}
这里也一样。
\end{solution}
\vspace*{3cm}
\end{multicols}
\SYSUDailyDisableDateCheck
\paragraph{难度}
难度为1--4的整数,否则不会识别为难度。
\begin{lstlisting}
\begin{daily}[解析函数的刻画, theorem, 20101010, 4]
……
\end{daily}
\end{lstlisting}
\begin{daily}[解析函数的刻画, theorem, 20101010, 4]
令$\mathbb I$是$\mathbb R$中的某开区间,令$f\in \mathscr{C}^\infty(\mathbb I)$,称其在$x_0$处解析,若在$x_0$某邻域内下式成立:
\[
f(x) = \sum_{n\geqslant0} a_n(x-x_0)^n.
\]
记为$f\in \mathscr{C}^\omega(x_0)$。任给$E\subset \mathbb I$,定义$\mathscr{C}^\omega(E)=\bigcap_{x\in E}\mathscr{C}^\omega(x)$。
现在证明:
$f\in \mathscr{C}^\omega(\mathbb I)$当且仅当任给$[\alpha,\beta]\in \mathbb I$,均有
\[
\sup\biggl\{~\biggl| \frac{f^{(n)}(x)}{n!} \biggr|^{1/n}\!;~n\geqslant 1, x\in [\alpha,\beta] ~\biggr\} <\infty.
\]
\end{daily}
难度未设置时,默认为 \verb|0|。
\paragraph{标题}
除去满足上面条件的参数,其余参数均视为标题,若识别到多个标题,则以第一个为准。
若想要输入与时间,难度,类型重复的标题,可以在使用 \verb|\mbox{}| 解决:
\begin{multicols}{2}
\begin{lstlisting}
\begin{daily}[\mbox{theorem}]
正文
\end{daily}
\end{lstlisting}
\small
\begin{daily}[\mbox{theorem}]
正文
\end{daily}
\end{multicols}
标题未设置时,默认为 \verb|\relax|。
\subsection{字体}
\verb|SYSUDaily.cls| 默认使用 \textsf{fandol} 字库,因此不支持 pdf\LaTeX{},同时,
在检测到存在时,会调用Resource Han Rounded作为中文等宽字体。
当使用 \verb|unimath=true| 预设时,会使用方正新书宋、方正粗雅宋、方正新楷体、Noto Sans CJK SC作为中文字体,且使用 Minion Pro 作为西文字体,除去Noto Sans CJK SC外,以上字体均是商业字体。
\subsection{数学字体}
\label{ssec:math_fonts}
\verb|SYSUdaily.cls| 默认使用以下宏包作为字体调用库:
\begin{itemize}[parsep=0pt,itemsep=0pt]
\item
\textsf{amsfonts}
\item
\textsf{amssymb}
\item
\textsf{mathrsfs}
\item
\textsf{dsfont}
\item
\textsf{eucal}
\end{itemize}
当使用 \verb|unimath=true| 预设时,会使用 Minion Math 作为主要数学字体,这款字体也是商业字体。
\section{宏包依赖}
在任何情况下,文档类都会显式调用以下宏包或文档类:
\begin{itemize}[parsep=0pt,itemsep=0pt]
\item
\textsf{ctexart}。中文排版的通用框架;
\item
\textsf{xcolor}。提供色彩支持,默认按 \verb|svgnames| 载入;
\item
\textsf{amsmath}、\textsf{amsthm}。数学框架;
\item
\textsf{fontspec}。调整字体,因此不支持 pdf\LaTeX{};
\item
\textsf{geometry}。用于调整页面尺寸;
\item
\textsf{eucal}。调整手写数学字体样式;
\item
\textsf{fixdif}、\textsf{mathtools}。\textsf{amsmath}的扩展;
\item
\textsf{kvoptions}。设置关键词之用;
\item
\textsf{graphicx}。提供图形插入的接口;
\item
\textsf{enumitem}。设置列表环境格式。
\end{itemize}
\verb|unimath=true| 预设会调用相关的字体宏包,具体调用细节已在第 \ref{ssec:math_fonts} 小节中列出。
\section{更新历史与展望}
\setlist[itemize]{parsep=0pt,itemsep=0pt}
\begin{flushleft}
\footnotesize
\textbf{目前计划}
\begin{itemize}
\item 强化日期检查功能,例如支持更多格式或是优化性能。
\item 统一目前的代码风格和命令名称。
\end{itemize}
\textbf{v2.3}~(2024/10/26--2024/12/31)
\begin{itemize}
\item 添加日期检查功能,可通过 \verb|\SYSUDailySetGlobalDate| 设置全局日期,通过 \verb|\SYSUDailyEnableDateCheck| 和 \verb|\SYSUDailyDisableDateCheck| 开启或关闭日期检查;
\item 优化 \verb|solution| 环境,支持根据日期检查结果控制内容的显示;
\item 添加 \verb|SYSUDailySetDefaultMathStyle| 命令,支持设置默认的数学样式。
\end{itemize}
\textbf{v2.2}~(2024/04/10--2024/10/26)
\begin{itemize}
\item 微调水印样式
\end{itemize}
\textbf{v2.1}~(2024/04/04--2024/04/10)
\begin{itemize}[parsep=0pt,itemsep=0pt]
\item
更精确的日期检测(大于100的4、6、8 位整数),添加了开启和关闭日期显示的功能。
\end{itemize}
\textbf{v2.0}~(2024/03/20--2024/04/04)
\begin{itemize}[parsep=0pt,itemsep=0pt]
\item
应用\LaTeX{3}重构代码;
\item
添加 \verb|unimath| 文档类选项;
\item
将原来的 \verb|theorem| 等环境简化为 \verb|daily| 环境;
\item
使用 \textsf{l3seq} 处理 \verb|daily| 环境的可选参数,利用更合理的判断机制实现输入上的简化;
\item
去除随机图标。
\end{itemize}
\end{flushleft}
\end{document}