-
Notifications
You must be signed in to change notification settings - Fork 54
/
nsfc.sty
executable file
·354 lines (321 loc) · 12.7 KB
/
nsfc.sty
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
% -------------------------------------------------
% NSFC 官方只有 Word 模版,民间有南开大学程明明教授的 LaTeX [模版](http://www.latexstudio.net/archives/9308)和南京航空航天大学戴一冕博士的 [iNSFC](https://github.com/YimianDai/iNSFC)模版。
% 本模版即修改自 2019 年的 iNSFC 模版,原来 iNSFC 已经许久不更新,貌似也没有继续更新计划了【2024年又进行了更新】。
% 经历 3 年的使用和打磨,特别为 macOS 系统做适配,同时应同行鼓励,对windows系统做适配,这里公布出来给潜在用户做参考。
% -------------------------------------------------
%------------------------
%xeCJK包的命令;要放到最前
%------------------------
\defaultfontfeatures{Mapping=tex-text}%连字符
%特殊符号的宽度
\xeCJKsetwidth{、,。;}{1.08em}%符号宽度,可添加‘’“”
\xeCJKsetwidth{()}{1em}%符号宽度,可添加‘’“”
\xeCJKsetup{%中英文间空格的宽度
CJKecglue = \hspace{0.3em},}
%------------------------
%字体设置
%------------------------
\usepackage{fontspec}
%注意,只有字体本身有粗斜体,或都是粗体斜体都是fake的,才能输出粗斜体
\DeclareOption{windows}{%windows
%微软楷体字
\setCJKfamilyfont{WINkai}[%中文
Path=./fonts/,
AutoFakeSlant=0.3,
AutoFakeBold=3,
Scale = 0.98%微调字体胖瘦
]{Kaiti.ttf}
\newfontfamily{\WINkai}[%英文
Path=./fonts/,
AutoFakeSlant=0.3,
AutoFakeBold=3,
]{Kaiti.ttf}
%微软宋体
\setCJKfamilyfont{WINsong}[%中文
Path=./fonts/,
AutoFakeSlant=0.3,
AutoFakeBold=3,
]{SimSun.ttf}
\newfontfamily{\WINsong}[%英文
Path=./fonts/,
AutoFakeSlant=0.3,
AutoFakeBold=3,
]{TimesNewRoman.ttf}
\newfontfamily\wingdingsfont{Wingdings.ttf}[Path=./fonts/]
%设置模版字体
\newcommand{\zhkai}{\CJKfamily{WINkai}}
\newcommand{\enkai}{\WINkai}
%
\newcommand{\zhsong}{\CJKfamily{WINsong}}
\newcommand{\ensong}{\WINsong}
}
\DeclareOption{macos}{%macos
%本机楷体
\setCJKfamilyfont{MACkai}[%中文
BoldFont = * Black,%
AutoFakeSlant=0.3,
Scale = 0.97%微调字体胖瘦
]{Kaiti SC}
\newfontfamily{\MACkai}[%英文
]{Cambria}
%本机宋体
\setCJKfamilyfont{MACsong}[%中文
UprightFont = * Light,
BoldFont = * Bold,
AutoFakeSlant=0.3,
]{Songti SC}
\newfontfamily{\MACsong}[%英文
]{Cambria}%Times New Roman
\font\symWingdings = "Wingdings"%
%本机指开发者自己的macOS电脑
%- [ ] 系统自带字体:
%/System/Library/Fonts/
%/Library/Fonts/
%- [ ] 随系统更新会更换的字体:
%/System/Library/Assets类似/com_apple_MobileAsset_Font5类似
%-若要使用这个字体,需要及时更新MiKTeX字体配置文件~/Library/Application Support/MiKTeX/texmfs/config/fontconfig/config/localfonts2.conf文件内容
%设置模版字体
% 默认是macOS系统,使用本机自带字体
\newcommand{\zhkai}{\CJKfamily{MACkai}}
\newcommand{\enkai}{\MACkai}
%
\newcommand{\zhsong}{\CJKfamily{MACsong}}
\newcommand{\ensong}{\MACsong}
}
\ProcessOptions\relax
%查看本机字体的方式
%打开程序“字体册.app”,看看本机都有什么字体,修改成对应的字体名称即可。
%\setCJKsansfont[BoldFont=* Medium]{Heiti SC}
%\setCJKfamilyfont{zhsong}[
% UprightFont = * Light,
% BoldFont = * Bold,
%]{Songti SC}
%\setCJKfamilyfont{zhhei}[BoldFont=* Medium]{Heiti SC}
%\setCJKmainfont[
% Path=./fonts/,%系统自带Songti SC
% UprightFont = * Light,
% BoldFont = * Bold,
% AutoFakeSlant=0.3,
% BoldItalicFont = Kaiti SC Bold,
%]{Songti SC}
%字号
%初号42pt,小初36pt,一号26pt,小一24pt,二号22pt,小二18pt
%三号16pt,小三15pt,四号14pt,小四号 12pt,五号 10.5pt
%小五9pt,六号 7.5pt ,小六6.5pt,七号 5.5pt ,八号5pt
%------------------------
%xcolor命令
%------------------------
%颜色
\usepackage{xcolor}
\definecolor{YSFblue}{RGB}{0, 112, 192}
\definecolor{HighLight}{RGB}{0,31,141}
%------------------------
%一些排版的间距
%------------------------
%段间距
\setlength{\parskip}{0.1\baselineskip}
%自动段落的行间距微调
\usepackage{setspace}
\setstretch{1.6} % 22 bp / 14 pt = 1.571
%------------------------
%模版部分
%------------------------
% For the chapter name like (一)立项依据与研究内容(4000-8000字)
\let\origchapter\chapter
\renewcommand\chapter{\@ifstar{\starchapter}{\nostarchapter}}
\newcommand\nostarchapter[1]{%
\begingroup
\vspace{6pt}\stepcounter{chapter}
\color{YSFblue}\zhkai\enkai\fontsize{14pt}{22pt}\selectfont%
\setlength{\baselineskip}{22pt}%最后设置,防止被fontsize中的覆盖
\par\indent\textbf{(\chinese{chapter})}#1\par
\vspace{0pt}
\endgroup}
\newcommand\starchapter[1]{\vspace{-1em}\origchapter*{#1}\vspace{-0em}}
% For the section name like 2.项目的研究内容、研究目标,以及拟解决的关键科学问题(此部分为重点阐述内容);
\let\origsection\section
\renewcommand\section{\@ifstar{\starsection}{\nostarsection}}
\newcommand\nostarsection[1]{%
\begingroup
% \vspace{0pt}
\stepcounter{section}
\color{YSFblue}\zhkai\enkai\fontsize{14pt}{22pt}\selectfont%
\setlength{\baselineskip}{22pt}%最后设置,防止被fontsize中的覆盖
\par\indent\arabic{section}.#1\par
% \vspace{11pt}
\endgroup}
\newcommand\starsection[1]{\origsection*{#1}}
%------------------------
%正文部分的标题
%------------------------
\let\origsubsection\subsection
\renewcommand\subsection{\@ifstar{\starsubsection}{\nostarsubsection}}
\newcommand\nostarsubsection[1]{%
\begingroup\color{HighLight}
\vspace{6pt}
\stepcounter{subsection}
\zhkai\enkai\fontsize{13pt}{22pt}\selectfont\bfseries%
\setlength{\baselineskip}{22pt}%最后设置,防止被fontsize中的覆盖
\par\noindent\arabic{section}.\arabic{subsection}#1\par
\vspace{2pt}
\endgroup}
%\newcommand\nostarsubsection[1]{\vspace{-1em}\origsubsection*{#1}\vspace{-0em}}
\newcommand\starsubsection[1]{%
\begingroup\color{HighLight}
\vspace{6pt}
%\stepcounter{subsection}
\zhkai\enkai\fontsize{13pt}{22pt}\selectfont\bfseries%
\setlength{\baselineskip}{22pt}%最后设置,防止被fontsize中的覆盖
% \par\noindent\arabic{section}.\arabic{subsection}#1\par
\par\noindent#1\par
\vspace{2pt}
\endgroup}
%\renewcommand\thesection{\arabic{section}.}
%\renewcommand\thesubsection{\arabic{section}.\arabic{subsection}}
\let\origsubsubsection\subsubsection
\renewcommand\subsubsection{\@ifstar{\starsubsubsection}{\nostarsubsubsection}}
\newcommand\nostarsubsubsection[1]{%
\begingroup\color{HighLight}
% \vspace{0pt}
\stepcounter{subsubsection}
\zhkai\enkai\fontsize{13pt}{22pt}\selectfont%
\setlength{\baselineskip}{22pt}%最后设置,防止被fontsize中的覆盖
\par\indent(\arabic{subsubsection})#1\par%(1)样式三级标题
% \par\noindent\arabic{section}.\arabic{subsection}.\arabic{subsubsection}#1\par%1.1.1样式三级标题
% \vspace{11pt}
\endgroup}
\newcommand\starsubsubsection[1]{%
\begingroup\color{HighLight}
\vspace{2pt}
\stepcounter{subsubsection}
\zhkai\enkai\fontsize{12.5pt}{22pt}\selectfont%
\setlength{\baselineskip}{20pt}%最后设置,防止被fontsize中的覆盖
\par\indent#1\par
%\vspace{-1pt}
\endgroup}
%------------------------
%正文段落
%------------------------
\newenvironment{MS}%
{%\begingroup\zhsong\ensong\fontsize{12.5pt}{22pt}\selectfont%
\begingroup\zhkai\ensong\fontsize{12.5pt}{23pt}\selectfont%
\setlength{\baselineskip}{22.1pt}}
{\endgroup}
%CTEX包自动引用xeCJK包,文档查看xeCJK
%CJKunderdot,CJKunderline,CJKunderdblline,CJKunderwave
\newcommand\underwave{\CJKunderwave[format=\color{blue},depth=0.35em]}
%在Word中我们只要选中孤行控制,Word就不会将一段的第一行或者最后一行放在不同的页面。Latex中好像没有相应的命令。Latex只是尽量防止孤行,当避免孤行会导致大量的页面空白的时候,Latex会放弃避免孤行。我们可以改变孤行的惩罚权重来告诉Latex我们更在乎孤行。有两个参数控制这些:
%\widowpenalty=4000
%\clubpenalty=4000
%其中\widowpentalty是出现尾行分页所产生的惩罚值,\clubpenalty是出现首行分页的惩罚值。默认是150。我把他们都设成4000,就是告诉latex要更努力的减少孤行。如果设定惩罚为10000,就会完全的避免孤行,但是排版会很难看,因为latex会放弃一切的去排除孤行。
%\widowpenalty=8000
%\clubpenalty=8000
%------------------------
%公式、图、表
%------------------------
\usepackage{amsmath}
\usepackage{amssymb}
% Size of the math equations
\DeclareMathSizes{10}{10}{7}{5}
\DeclareMathSizes{11}{11}{7.7}{5.5}
\DeclareMathSizes{12.5}{11}{8.4}{6}
\DeclareMathSizes{13}{13}{9.1}{6.5}
\DeclareMathSizes{14}{14}{9.8}{7}
\usepackage{graphicx}
\usepackage[subrefformat=parens,labelformat=parens]{subfig} %
\usepackage{booktabs}
% \usepackage[citebordercolor = white]{hyperref}
\usepackage[hidelinks]{hyperref}
\usepackage{cleveref}%须在hyperref后边
\crefformat{table}{表~#2#1#3}
\crefformat{figure}{图~#2#1#3}
\crefformat{equation}{式~(#2#1#3)}
\usepackage[figurewithin=none]{caption}
%图题、表头;若想取消加粗,去掉\bfseries
\DeclareCaptionFont{capfont}{\zhkai\enkai\fontsize{11pt}{22pt}\selectfont\bfseries} % Caption font
\DeclareCaptionFont{subfont}{\zhkai\enkai\fontsize{11pt}{22pt}\selectfont\bfseries} % Sub-caption font
\captionsetup{font = capfont}
\captionsetup[subfigure]{font = subfont}
\captionsetup[figure]{labelsep=period}
\captionsetup[table]{labelsep=space}
%\numberwithin{figure}{section}%关联图号和章节,应该是每一个section重置一下图号计数器
%\renewcommand {\thefigure}{\arabic{figure}}%图1
%\renewcommand {\thefigure}{\thesection{}-\arabic{figure}}%图1.1-1
%如果想修改图中的数字字体,就在对应部分添加\ensong\selectfont\arabic{figure},或者\enkai\selectfont\arabic{figure}。
%公式计数器
\renewcommand{\theequation}
{\arabic{equation}}%样式:(1)
%{\thesection{}-\arabic{figure}}%样式:(1.1-1)
%{\thechapter{}-\arabic{figure}}%样式:(1-1),注意(一)立项依据里的所有节都是第一章
%------------------------
%列表
%------------------------
%带圈数字
%latex自带\textcircled,但是效果很差
%\usepackage{tikz}
%\usepackage{etoolbox}
%\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
% circle (.5em) node {\makebox[1em][c]{\small #1}};}}
%\robustify{\circled}
%\begin{enumerate}[label=\circled{\arabic*}]
%\end{enumerate}
%\renewcommand{\labelitemi}{\color{HighLight}\symWingdings\XeTeXglyph153}%第一层
\usepackage{enumitem}%有序列表
\setenumerate[1]{itemsep = 0pt, parsep = 0pt, topsep = 2bp}
\setitemize[1]{itemsep = -2pt, parsep = 0pt, topsep = 2bp}
%------------------------
%程序代码
%------------------------
\usepackage{listings}
%------------------------
%脚注
%------------------------
%脚注分割横线
\makeatletter
\newskip\@footindent
\@footindent=1em
\renewcommand\footnoterule{\vspace{6pt}\kern-3\p@ \hrule height 0.8pt width 0.4\columnwidth \kern 2.6\p@\vspace{2pt}}
%脚注引用数字
\renewcommand\thefootnote{\textcircled{\enkai\fontsize{9pt}{15pt}\selectfont\arabic{footnote}}}
%脚注字体
\let\oldfootnotesize\footnotesize
\renewcommand*{\footnotesize}{\oldfootnotesize\zhkai\enkai\fontsize{11pt}{15pt}\selectfont}
%------------------------
%高亮、参考文献
%------------------------
\newcommand{\highlight}[1]{
\textcolor{HighLight}{{\bfseries#1}}}
\usepackage[square,numbers,sort&compress]{natbib}
%上标引用
\newcommand{\citess}[1]{\textsuperscript{\cite{#1}}}
\setlength{\bibsep}{5pt plus 0.3ex}%bib条目间距
\renewcommand\bibsection{\section*{%
{\zhkai\enkai\fontsize{12pt}{22pt}\selectfont%
\setlength{\baselineskip}{20pt}}}}%参考文献}}}
\newenvironment{REF}%
{\begingroup
\zhkai\ensong\fontsize{12pt}{22pt}\selectfont
\setlength{\baselineskip}{15pt}}
{\endgroup}
\renewcommand{\bibfont}{%
\zhkai\ensong\fontsize{11.5pt}{18pt}\selectfont%
\setlength{\baselineskip}{15pt}}
\renewcommand{\ttfamily}{\ensong\selectfont}%参考文献中的链接字体用的是texttt
% \setlength{\baselineskip}{22pt}
%
%% Prof. Mingming Chen's definition on subsection
%\def\cvprsubsection{\@startsection {subsection}{2}{\z@}
% {11pt plus 2pt minus 2pt}{6pt} {\indent \bfseries \songti}}
%\def\cvprssubsect#1{\cvprsubsection*{#1}}
%\def\cvprsubsect#1{\cvprsubsection{\hskip -1em.~#1 \vspace{-0.2em}}}
%\def\subsection{\@ifstar\cvprssubsect\cvprsubsect}
%------------------------
%微调部分文字中字体的胖瘦
%------------------------
\newcommand{\ps}[2][0.95]{\scalebox{#1}[1]{#2}}%#1默认取0.95等
\newcommand{\kg}[1]{\kern#1}%-0.1em
%\excludecomment{MS}%用来对比模版有无变化
%或者下边这种方法
%\renewcommand{\input}[1]{\vspace{\baselineskip}}%用来对比模版有无变化
%查看命令的定义
%\meaning\cite等