Skip to content

Commit a3a7b7d

Browse files
authored
Merge pull request #174 from BITNP/dev-fky
docs update.
2 parents 5026f2b + 61b2df1 commit a3a7b7d

File tree

9 files changed

+3068
-1894
lines changed

9 files changed

+3068
-1894
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ _订阅更新,询问问题,提出需求……请加入北理 BIThesis 官方
109109
## 特别感谢
110110

111111
- [ biblatex-gb7714-2015 ](https://github.com/hushidong/biblatex-gb7714-2015):提供了易用的国标引用格式和细心指导。
112-
- [北京理工大学硕士(博士)学位论文 $LaTeX$ 模板](https://github.com/BIT-thesis/LaTeX-template):提供了研究生论文样式的代码参考。
112+
- [北京理工大学硕士(博士)学位论文 LaTeX 模板](https://github.com/BIT-thesis/LaTeX-template):提供了研究生论文样式的代码参考。
113113
- [fduthesis(复旦大学论文模板)](https://github.com/stone-zeng/fduthesis):提供了包编写的最佳实践。
114114
- [ThuThesis(清华大学论文模板)](https://github.com/tuna/thuthesis):提供了 dtx 样式的参考。
115115

bithesis.dtx

Lines changed: 1412 additions & 530 deletions
Large diffs are not rendered by default.

templates/graduate-thesis/bithesis.cls

Lines changed: 376 additions & 304 deletions
Large diffs are not rendered by default.

templates/lab-report/bitreport.cls

Lines changed: 74 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,20 @@
2727
%%
2828
\RequirePackage{expl3,l3keys2e}
2929
\ProvidesExplClass{bitreport}
30-
{2022-09-29}{3.0.3}{BIT Thesis Templates}
31-
32-
30+
{2022-09-30}{3.0.4}{BIT Thesis Templates}
3331
\int_new:N \g__bithesis_report_type_int
34-
3532
\clist_const:Nn \c__bithesis_report_type_clist
3633
{ common, undergraduate_proposal}
37-
3834
\seq_new:N \l__bithesis_right_seq
3935
\seq_new:N \l__bithesis_left_seq
40-
4136
\PassOptionsToPackage{AutoFakeBold,AutoFakeSlant}{xeCJK}
42-
4337
\keys_define:nn { bitreport }
4438
{
4539
option .meta:nn = {bitreport / option } {#1},
4640
cover .meta:nn = { bitreport / cover } {#1},
4741
info .meta:nn = { bitreport / info } {#1},
4842
misc .meta:nn = { bitreport / misc } {#1}
4943
}
50-
5144
\keys_define:nn { bitreport / option }
5245
{
5346
type .choice:,
@@ -60,20 +53,6 @@
6053
type .initial:n = common,
6154
ctex .tl_set:N = \l__bithesis_options_to_ctex_tl,
6255
}
63-
64-
\DeclareOption*{
65-
\PassOptionsToClass{\l__bithesis_options_to_ctex_tl}{ctexart}
66-
}
67-
\ProcessOptions\relax
68-
\LoadClass[zihao=-4]{ctexart}
69-
70-
\RequirePackage[a4paper,left=3cm,right=2.4cm,top=2.6cm,bottom=2.38cm,includeheadfoot]{geometry}
71-
\RequirePackage{fancyhdr}
72-
\RequirePackage{setspace}
73-
\RequirePackage{caption}
74-
\RequirePackage{booktabs}
75-
\RequirePackage{pdfpages}
76-
7756
\keys_define:nn { bitreport / cover }
7857
{
7958
imagePath .tl_set:N = \l_bit_coverimagepath_tl,
@@ -93,7 +72,6 @@
9372
underlineOffset .dim_set:N = \l__bithesis_cover_underline_offset_dim,
9473
underlineOffset .initial:n = { -10pt },
9574
}
96-
9775
\keys_define:nn { bitreport / info }
9876
{
9977
title .tl_set:N = \l__bithesis_value_title_tl,
@@ -105,21 +83,27 @@
10583
externalSupervisor .tl_set:N = \l__bithesis_value_external_supervisor_tl,
10684
studentId .tl_set:N = \l__bithesis_value_student_id_tl,
10785
}
108-
10986
\keys_define:nn { bitreport / misc }
11087
{
11188
reviewTable .tl_set:N = \l_bit_reviewtable_tl,
11289
}
113-
90+
\DeclareOption*{
91+
\PassOptionsToClass{\l__bithesis_options_to_ctex_tl}{ctexart}
92+
}
93+
\ProcessOptions\relax
94+
\LoadClass[zihao=-4]{ctexart}
95+
\RequirePackage[a4paper,left=3cm,right=2.4cm,top=2.6cm,bottom=2.38cm,includeheadfoot]{geometry}
96+
\RequirePackage{fancyhdr}
97+
\RequirePackage{setspace}
98+
\RequirePackage{caption}
99+
\RequirePackage{booktabs}
100+
\RequirePackage{pdfpages}
114101
\ProcessKeysOptions { bitreport / option }
115-
116102
\cs_generate_variant:Nn \tl_if_empty:nTF {x}
117103
\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx}
118-
119104
\cs_new:Npn \__bithesis_dunderline:nnn #1#2#3 {
120105
{\setbox0=\hbox{#3}\ooalign{\copy0\cr\rule[\dimexpr#1-#2\relax]{\wd0}{#2}}}
121106
}
122-
123107
\cs_new:Npn \__bithesis_render_cover_entry:nn #1#2 {
124108
\makebox[\l__bithesis_cover_label_max_width_dim][\l__bithesis_cover_label_align_tl]{
125109
\tl_if_blank:VTF #1 {} {#1\l__bithesis_cover_dilimiter_tl}
@@ -129,14 +113,12 @@
129113
\makebox[\l__bithesis_cover_value_max_width_dim][\l__bithesis_cover_value_align_tl]{#2}
130114
}\par
131115
}
132-
133116
\cs_new:Npn \__bithesis_get_text_width:Nn #1#2
134117
{
135118
\hbox_set:Nn \l_tmpa_box {#2}
136119
\dim_set:Nn #1 { \box_wd:N \l_tmpa_box }
137120
}
138121
\cs_generate_variant:Nn \__bithesis_get_text_width:Nn { NV }
139-
140122
\cs_new:Npn \__bithesis_get_max_text_width:NN #1#2
141123
{
142124
\group_begin:
@@ -150,7 +132,6 @@
150132
}
151133
\group_end:
152134
}
153-
154135
\cs_new:Npn \__bithesis_parse_entry #1 #2 {
155136
\seq_set_split:Nnx \l__bithesis_tmp_right_seq {//} {#2}
156137
\seq_clear:N \l__bithesis_tmp_left_seq
@@ -160,21 +141,33 @@
160141
\seq_put_left:Nn \l__bithesis_tmp_left_seq {#1}
161142
\seq_pop_right:NN \l__bithesis_tmp_left_seq \g__bithesis_trashcan_tl
162143
}
163-
164144
\cs_new:Npn \__bithesis_render_cover_entry:n #1 {
145+
% 左边是标签,右边是值。
146+
% 形如:
147+
% { {label_1} {value_1}, {label_2} {value 2} }
148+
% 首先转换成 seq 类型。
165149
\seq_set_from_clist:NN \l__bithesis_input_seq #1
166-
% parse newline //
167150
\seq_map_inline:Nn \l__bithesis_input_seq {
151+
% 然后对于每一对 label 和 value,首先查找
152+
% value 中是否含有 // 字符,如果有,则将其分割成多个
153+
% label - value 对。
154+
% 比如 {label_1} {value // 1} 会被转换成
155+
% { {label_1} {value}, {} {1} }
168156
\__bithesis_parse_entry ##1
157+
% 然后将这些 label - value 对添加到 \l__bithesis_right_seq
158+
% 或者 \l__bithesis_left_sql 中。
159+
% left 就是 label,right 就是 value。
169160
\seq_concat:NNN \l__bithesis_right_seq \l__bithesis_right_seq \l__bithesis_tmp_right_seq
170161
\seq_concat:NNN \l__bithesis_left_seq \l__bithesis_left_seq \l__bithesis_tmp_left_seq
171162
}
172163

164+
% 如果用户选择自动计算最大宽度,则计算最大宽度。
173165
\bool_if:NT \l__bithesis_cover_auto_width_bool {
174166
\__bithesis_get_max_text_width:NN \l__bithesis_cover_label_max_width_dim \l__bithesis_left_seq
175167
\__bithesis_get_max_text_width:NN \l__bithesis_cover_value_max_width_dim \l__bithesis_right_seq
176168
}
177169

170+
% 最后,根据宽度渲染 label 和 value 对。
178171
\group_begin:
179172
\bool_until_do:nn { \seq_if_empty_p:N \l__bithesis_left_seq }
180173
{
@@ -186,7 +179,6 @@
186179
}
187180
\group_end:
188181
}
189-
190182
\DeclareDocumentCommand \BITSetup { m }
191183
{ \keys_set:nn { bitreport } { #1 }}
192184
\DeclareDocumentCommand \MakeCover {}
@@ -196,29 +188,39 @@
196188
{1} {
197189
\begin{titlepage}
198190
\centering
191+
199192
\vspace{23mm}
193+
200194
\tl_if_empty:NF \l_bit_coverimagepath_tl {
201195
\includegraphics[width=.5\textwidth]{\l_bit_coverimagepath_tl}\\
202196
}
197+
203198
\vspace{10mm}
199+
204200
\heiti\fontsize{24pt}{24pt}\selectfont{\l__bithesis_value_title_tl}\\
201+
205202
\vspace{67mm}
206-
\begin{spacing}{2.2}
207-
\songti\zihao{3}
208-
\clist_set:Nn \l__bithesis_input_clist {
209-
{\textbf{\qquad 院:}} {\l__bithesis_value_school_tl},
210-
{\textbf{\qquad 业:}} {\l__bithesis_value_major_tl},
211-
{\textbf{\qquad 级:}} {\l__bithesis_value_class_tl},
212-
{\textbf{\qquad 号:}} {\l__bithesis_value_student_id_tl},
213-
{\textbf{\qquad 名:}} {\l__bithesis_value_author_tl},
214-
{\textbf{任课教师:}} {\l__bithesis_value_supervisor_tl},
215-
}
216203

217-
\__bithesis_render_cover_entry:n \l__bithesis_input_clist
204+
\begin{spacing}{2.2}
205+
\songti\zihao{3}
206+
207+
\clist_set:Nn \l__bithesis_input_clist {
208+
{\textbf{\qquad 院:}} {\l__bithesis_value_school_tl},
209+
{\textbf{\qquad 业:}} {\l__bithesis_value_major_tl},
210+
{\textbf{\qquad 级:}} {\l__bithesis_value_class_tl},
211+
{\textbf{\qquad 号:}} {\l__bithesis_value_student_id_tl},
212+
{\textbf{\qquad 名:}} {\l__bithesis_value_author_tl},
213+
{\textbf{任课教师:}} {\l__bithesis_value_supervisor_tl},
214+
}
215+
216+
\__bithesis_render_cover_entry:n \l__bithesis_input_clist
217+
218+
\end{spacing}
218219

219-
\end{spacing}
220220
\vspace*{\fill}
221+
221222
\centering
223+
222224
\songti\fontsize{12pt}{12pt}\selectfont{
223225
\tl_if_empty:NTF \l__bithesis_cover_date_tl {
224226
\today
@@ -234,11 +236,15 @@
234236
\topskip=0pt
235237
\vspace*{-16mm}
236238
\centering
237-
\hspace{-6mm}\songti\fontsize{22pt}{22pt}\selectfont{北京理工大学}\par
239+
\hspace{-6mm}
240+
\songti\fontsize{22pt}{22pt}
241+
\selectfont{北京理工大学}\par
238242

239243
\vspace{13mm}
240244

241-
\hspace{-6mm}\heiti\fontsize{24pt}{24pt}\selectfont{本科生毕业设计(论文)开题报告}\par
245+
\hspace{-6mm}
246+
\heiti\fontsize{24pt}{24pt}
247+
\selectfont{本科生毕业设计(论文)开题报告}\par
242248

243249
\vspace{53mm}
244250

@@ -251,7 +257,7 @@
251257
{\textbf{\qquad 名:}} {\l__bithesis_value_author_tl},
252258
{\textbf{指导教师:}} {\l__bithesis_value_supervisor_tl},
253259
{\textbf{校外指导教师:}} {\l__bithesis_value_external_supervisor_tl},
254-
}
260+
}
255261

256262
\__bithesis_render_cover_entry:n \l__bithesis_input_clist
257263

@@ -261,12 +267,12 @@
261267

262268
\centering
263269
\hspace{-6mm}\songti\fontsize{12pt}{12pt}\selectfont{\today}
270+
264271
\end{titlepage}
265272
}
266273
}
267274
\group_end:
268275
}
269-
270276
\DeclareDocumentCommand \MakeReviewTable {}
271277
{
272278
\group_begin:
@@ -275,54 +281,55 @@
275281
\end{titlepage}
276282
\group_end:
277283
}
278-
279284
\DeclareCaptionFont{kaiticaption}{\kaishu \normalsize}
280-
281285
\renewcommand{\thefigure}{\thesection-\arabic{figure}}
282286
\captionsetup[figure]{font=small,labelsep=space,skip=10bp,labelfont=bf,font=kaiticaption}
283-
284287
\renewcommand{\thetable}{\thesection-\arabic{table}}
285288
\captionsetup[table]{font=small,labelsep=space,skip=10bp,labelfont=bf,font=kaiticaption}
286-
287289
\ctexset{today=big}
288-
289290
\setromanfont{Times~New~Roman}
290-
291-
%% 将中文楷体设置为 SIMKAI.TTF(如果需要)
292-
293291
\setcounter{tocdepth}{3}
294292
\setcounter{secnumdepth}{3}
295-
296-
%%
297293
\ctexset{section={
298-
format={\raggedright \bfseries \songti \zihao{-3}},
294+
format={
295+
\raggedright \bfseries \songti \zihao{-3}
296+
},
299297
beforeskip = 24bp plus 1ex minus .2ex,
300298
afterskip = 24bp plus .2ex,
301299
fixskip = true,
302300
name = {,.\quad}
303301
}
304302
}
305303
\ctexset{subsection={
306-
format = {\bfseries \songti \raggedright \zihao{4}},
304+
format = {
305+
\bfseries \songti \raggedright \zihao{4}
306+
},
307307
beforeskip = 24bp plus 1ex minus .2ex,
308308
afterskip = 24bp plus .2ex,
309309
fixskip = true,
310310
}
311311
}
312312
\fancyhf{}
313313
\int_case:nn {\g__bithesis_report_type_int} {
314-
{1} {\fancyhead[R]{\fontsize{10.5pt}{10.5pt}\selectfont{\l__bithesis_value_title_tl}}}
315-
{2} {\fancyhead[R]{\fontsize{10.5pt}{10.5pt}\selectfont{北京理工大学本科生毕业设计(论文)开题报告}}}
314+
{1} {
315+
\fancyhead[R]{
316+
\fontsize{10.5pt}{10.5pt}
317+
\selectfont{\l__bithesis_value_title_tl}
318+
}
319+
}
320+
{2} {
321+
\fancyhead[R]{
322+
\fontsize{10.5pt}{10.5pt}
323+
\selectfont{北京理工大学本科生毕业设计(论文)开题报告}
324+
}
325+
}
316326
}
317327
\fancyfoot[R]{\fontsize{9pt}{9pt}\selectfont{\thepage}}
318328
\renewcommand{\headrulewidth}{1pt}
319329
\renewcommand{\footrulewidth}{0pt}
320-
321330
\pagestyle{fancy}
322331
\setcounter{page}{1}
323-
324332
\cs_set:Npn \baselinestretch {1.53}
325-
326333
\endinput
327334
%%
328335
%% End of file `bitreport.cls'.

0 commit comments

Comments
 (0)