-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathGUET-Thesis.cls
1861 lines (1549 loc) · 87.7 KB
/
GUET-Thesis.cls
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
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%
% =======================================================================
% ·······································································
% ·······································································
% ····Y88b···d88P················888b·····d888·d8b·······················
% ·····Y88b·d88P·················8888b···d8888·Y8P·······················
% ······Y88o88P··················88888b·d88888···························
% ·······Y888P··8888b···88888b···888Y88888P888·888·88888b·····d88b·······
% ········888······"88b·888·"88b·888·Y888P·888·888·888·"88b·d88P"88b·····
% ········888···d888888·888··888·888··Y8P··888·888·888··888·888··888·····
% ········888··888··888·888··888·888···"···888·888·888··888·Y88b·888·····
% ········888··"Y888888·888··888·888·······888·888·888··888··"Y88888·····
% ·······························································888·····
% ··························································Y8b·d88P·····
% ···························································"Y88P"······
% ·······································································
% =======================================================================
%
% -----------------------------------------------------------------------
% Author : 焱铭
% Date : 2025-02-24 22:56:46 +0800
% LastEditTime : 2025-03-02 19:52:13 +0800
% Github : /~https://github.com/YanMing-lxb/
% FilePath : /GUET_Thesis_LaTeX/GUET-Thesis.cls
% Description :
% -----------------------------------------------------------------------
%
\ProvidesClass{GUET-Thesis}
\LoadClass[ % 加载文档类并设置选项
12pt, % 字号为12pt
a4paper, % 纸张大小为A4
openany, % 允许在任意页面开始新的章节
oneside % 设置为双面打印模式
]{book} % 使用book文档类
\RequirePackage[
dvipsnames, % 允许使用64种扩展颜色名称,例如RoyalBlue、OliveGreen等
svgnames, % 允许使用150种SVG命名颜色,例如DarkOrange、MediumPurple等
table % 允许在表格中使用颜色
]{xcolor} % 使用xcolor宏包,并加载颜色选项
% ===============图片相关宏包===============
\RequirePackage{graphicx} % 用于插入图片
\RequirePackage{float} % 提供浮动环境和浮动对象的控制
\RequirePackage[labelformat=simple]{subcaption} % 用于生成子图表和子标题,labelformat=simple 表示子标题的标签格式为简单的形式
\RequirePackage[
font={onehalfspacing, small}, % 设置字体为onehalfspacing(1.5倍行距)和small(小号字体)
labelsep=space, % 设置标签和标题之间的间距为一个空格
skip=6pt, % 设置标题与上下文之间的间距为6pt
figurewithin=none, % 禁止图表编号受章节影响
tablewithin=none % 禁止表格编号受章节影响
]{caption} % 用于自定义浮动环境(如图表)的标题格式和样式
% figurewithin=none 和 tablewithin=none 取消书籍类中对图表目录所添加的 10pt 间距命令,使得图表目录中的章节编号连续
% 需要在对应的计数器中进行每章重置以保证连续编号
% ===============TiKz相关宏包===============
\RequirePackage{tikz} % 用于绘制矢量图形
\RequirePackage{tikzscale} % 用于调整TiKz图形的大小
\RequirePackage{pgfplots} % 用于绘制二维和三维图形
\pgfplotsset{width=0.8\textwidth, compat=1.17} % 设置pgfplots图形的宽度为文本宽度的0.8倍,兼容性设置为1.17
%pgfplots
\tikzset{
global scale/.style={scale=#1,every node/.append style={scale=#1}}
} % 设置全局缩放样式
% \RequirePackage{pgfplotstable} % 用于绘制表格
% \RequirePackage{pgf-pie} % 用于绘制饼图
% \RequirePackage{pgf-umlcd} % 用于绘制UML类图
% \RequirePackage{pgf-umlsd} % 用于绘制UML时序图
% ===============表格相关宏包===============
\RequirePackage{array} % 用于增强表格的功能和格式
\RequirePackage{tabularray} % 提供更灵活和功能强大的表格环境
\RequirePackage{booktabs} % 用于生成漂亮的三线表格样式
\RequirePackage{longtable} % 提供了一个可分页的长表格环境,用于跨页显示表格内容
\RequirePackage{multirow} % 允许在表格中合并多行
\RequirePackage{threeparttable} % 用于在表格中添加脚注
% ===============盒子相关宏包===============
\RequirePackage[most]{tcolorbox} % 加载 tcolorbox 宏包,并使用 most 库
\RequirePackage[absolute,overlay]{textpos} % 用于绝对定位文本框,用于排版封面
% \RequirePackage{showframe} % 显示排版框架
% \TPshowboxestrue % 显示textblock 框架,方便调整位置
\RequirePackage{adjustbox} % 用于调整盒子的大小和位置,直白的说就是将超宽表格居中放置
% ===============公式相关宏包===============
% \RequirePackage[
% n, % 或 lambda
% advantage, % 优势
% operators, % 操作符
% sets, % 集合
% adversary, % 对手
% landau, % 朗道符号
% probability, % 概率
% notions, % 概念
% logic, % 逻辑
% ff, % 函数
% mm, % 矩阵
% primitives, % 原语
% events, % 事件
% complexity, % 复杂度
% oracles, % 预言机
% asymptotics, % 渐近分析
% keys % 密钥
% ]{cryptocode} % 用于排版密码学算法
% \createprocedurecommand{procedure}{}{}{} % 解决cryptocode宏包中和原有默认center环境的\procedure命令冲突
% \createpseudocodeblock{pseudocodeblock}{}{}{}{} % 解决cryptocode宏包中和原有默认center环境的\pseudocodeblock命令冲突
% \createprocedureblock{procedureblock}{}{}{}{} % 解决cryptocode宏包中和原有默认center环境的\procedureblock命令冲突
\RequirePackage{stix2} % 数学字体和英文字体采用stix2字体(类Times字体)已包含 amssymb 宏包, 并且需要同时加载mathspec,否则部分符号会出现错误
\RequirePackage{amsmath} % 提供数学公式环境和命令
\RequirePackage{amsthm} % 用于定义和排版定理、引理等数学定理结构
\RequirePackage{mathspec} % 用于在数学环境中选择自定义的字体
\RequirePackage{stmaryrd} % 映入符号的引入\mapsfrom, 秘密分享份额符号\llbracket,\rrbracket无法在符号说明引入
\RequirePackage{mathrsfs} % 引入花体\mathscr{E},可尝试\usepackage[mathscr]{euscript},\usepackage[scr]{rsfso},\usepackage[mtpscr]{mtpro2}
% ===============目录相关宏包===============
\RequirePackage[titles]{tocloft} % 用于设置目录、图表目录和表格目录的格式,titles 表示可以让 tocloft 宏包不改变章节标题的格式,而只改变目录中的格式
% ===============符号说明相关宏===============
\RequirePackage{multicol} % 提供多栏环境
\RequirePackage[intoc]{nomencl} % 用于生成符号说明 参数 intoc 表示将符号说明加入目录
% ===============字体相关宏包===============
\RequirePackage{xeCJK} % 用于设置全局的中日韩文字体
% \xeCJKsetup{ % 影响封面字体对齐,如果启用该命令 \quad 将不能代表两个汉字间距
% CJKglue = {\hskip 0.08em plus 0.02em minus 0.02em}, % 中文字间距调整
% CJKecglue = {\hskip 0.08em plus 0.02em minus 0.02em} % 中英文间间距调整
% }
\RequirePackage{xeCJKfntef} % 用于提供更多的字体效果设置选项,兼容ulem宏包
\RequirePackage{zhnumber} % 用于将数字转换为大写中文数字的表示
\RequirePackage{pifont} % 提供了许多符号和图标的命令
\RequirePackage{datetime2} % 提供了日期和时间格式控制功能,包括 \today 命令
% ===============链接相关宏包===============
\RequirePackage[hyphens]{xurl} % 允许在长网址中断行,避免超出边界
\RequirePackage[
unicode, % 设置是否使用 Unicode 字符集
pdfencoding=auto, % 设置 PDF 编码格式
bookmarks=true, % 设置 PDF 文件是否生成书签
hyperfootnotes=false, % 设置是否给脚注添加链接
bookmarksnumbered=true, % 设置 PDF 书签是否带编号
bookmarksdepth=4 % 设置书签的深度
]{hyperref} % 用于设置书签和超链接
\RequirePackage{cleveref} % 用于引用和交叉引用的格式设置(需要放在hyperref后面)
% ===============排版相关宏包===============
\RequirePackage{geometry} % 用于设置页面尺寸和布局
\RequirePackage{setspace} % 提供调整行距的命令和环境
\RequirePackage{fancyvrb} % 提供了更灵活的抄录环境和定制选项
\RequirePackage[twoside]{fancyhdr} % 用于设置页眉和页脚的样式
\RequirePackage{titlesec} % 用于自定义章节标题的样式
\RequirePackage{indentfirst} % 用于在章节标题后自动缩进第一段落
\RequirePackage{appendix} % 用于生成附录并对附录标题进行格式设置
\RequirePackage{lastpage} % 用于统计总页数(本科页码中使用)
\RequirePackage{ifoddpage} % 用于判断页码是否为奇数(用于判断打印版中空白页的添加)
\RequirePackage{pdfpages} % 用于插入外部 PDF 文档的页面,已签名的独创性声明
\RequirePackage{etoolbox} % 提供逻辑判断、列表循环遍历、patch、hook、计数器、布尔变量等操作
% \RequirePackage{stfloats} % 提供了双栏排版中的浮动体环境
\RequirePackage{verbatim} % 提供了更灵活的抄录环境和定制选项,对简短的抄录,可使用\verb|文字|和\verb*|文字|命令,原样输出一些特殊字符,如\、{}、$、#、%、_、&、~、^、\和空格,或原样输出命令
% \RequirePackage{listings} % 用于排版代码,支持多种编程语言
\RequirePackage{microtype} % 提供了更好的微调字距、字间距和连字等功能
% \RequirePackage{makecell} % 用于生成复杂表格的单元格
% \RequirePackage{ulem} % 提供了各种下划线、波浪线、删除线等效果
\RequirePackage{siunitx} % 提供了国际单位制的数字和单位的排版
% ===============算法相关宏包===============
% 下面的两套算法宏包二选一,希望作者可以保留
% algorithmicx的风格和语法会现代很多
% 更合适作为学术论文
\newcommand{\theAlgoSetIn}[1]{
\ifthenelse{\equal{#1}{algorithm2e}}
{
% 第一套:algorithm2e宏包
\RequirePackage[
algochapter, % 将算法放在章节中,并以章节编号
boxruled, % 给算法添加边框
linesnumbered % 给算法添加行号
]{algorithm2e} % 用于排版算法和伪代码
}
{
\ifthenelse{\equal{#1}{algorithmicx}}
{
% 第二套:algorithmicx宏包
\RequirePackage{algorithm} % 用于排版算法和伪代码
\RequirePackage{algorithmicx} % 用于排版算法和伪代码,考虑到 algorithm2e 宏包的一些问题,这里使用 algorithmicx 宏包,同时考虑是否去掉此宏包
\RequirePackage[noend]{algpseudocode} % 用于排版算法和伪代码,是 algorithmicx 的扩展,algpseudocode 是 algorithmicx 的一种呈现方式,其中包含algorithmicx的所有功能
\RequirePackage[linewidth=1pt]{mdframed} % 用于生成带边框的文本框
% ===============算法格式相关定制===============
\algnewcommand\algorithmicinput{\textbf{INPUT: }} % 定义算法输入关键字
\algnewcommand\Input{\item[\algorithmicinput]} % 定义算法输入关键字
\algnewcommand\algorithmicoutput{\textbf{OUTPUT: }} % 定义算法输出关键字
\algnewcommand\Output{\item[\algorithmicoutput]} % 定义算法输出关键字
\algrenewcommand\algorithmicwhile{\textbf{Upon}} % 定义算法while关键字
% ===============算法相关宏包定制结束===============
}
{
\typeout{无效的输入,请使用algorithm2e或algorithmicx参数。}
}
}
}
% ===============列表相关宏包===============
\RequirePackage{enumitem} % 用于定制列表环境的样式和标签
% ===============参考文献相关宏包===============
\RequirePackage[
backend=biber, % 设置后端程序为biber
doi=false, % 不显示doi
url=false, % 不显示url
defernumbers=true, % 解决refsection环境中 \printbibliography 筛选和 notice* 一起使用导致的编号错乱
bibstyle=gb7714-2015, % 参考文献样式
citestyle=gb7714-2015,
gbmedium=false, % 载体标识符不显示OL
% gbpub=true, % 显示出版信息
% gbnamefmt=lowercase, % 姓名小写,这个在最新版本的模板中还是需要大写的,因此需要关闭
% gbpunctin=false, % 关闭inbook,incollection,inproceedings中析出来源文献前//符号,这个在最新版本模板中还是需要的,因此需要关闭
gbstrict=true, % 避免输出 bib 文件中多余的域信息
gbalign=center, % 标签中括号对齐
gbannote=true, % 显示annote域,使得完成对于thesisauthor和corresponding的显示
]{biblatex}
% \DefineBibliographyStrings{english}{in={}} % 去掉英文in,避免会议中的in:出现,这行是不需要的,不使用gbpunctin或注释即可
% ===============条件判断宏包宏包===============
\RequirePackage{ifxetex} % 判断是否使用 XeLaTeX 编译,以决定后续的包和设置的使用
\RequirePackage{ifplatform} % 用于判断当前的操作系统平台
\RequirePackage{ifthen} % 提供了 \ifthenelse 命令,用于条件判断和分支控制
\RequireXeTeX % 指定必须用 XeTeX 引擎进行编译
\RequirePackage[l2tabu, orthodox]{nag} % 检查是否有已被淘汰或过时的宏包
% ===============PDF文件相关宏包===============
\hypersetup{ % 文中链接设置
% pdfauthor = {\TheAuthor}, % 设置作者名称;
% pdftitle = {\zh@TheTitle}, % 设置文档的标题;
% pdfsubject = {\DisplayHeader}, % 设置文档主题;
% pdfkeywords = {}, % 设置文档中关键词
colorlinks=true, % 指定是否给链接添加颜色;
citecolor=black, % citecolor链接颜色设置;
linkcolor=black, % linkcolor引用颜色设置;
urlcolor=black % urlcolor网址颜色;
}
% //////////////////////////////////////// 打印与盲审定义 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
% ===============打印选项设置===============
\newboolean{@pversion} % 新定义一个名为 @pversion 的布尔值
\setboolean{@pversion}{false} % 设定布尔值的默认值为 false
\DeclareOption{pversion}{\setboolean{@pversion}{true}} % 当设定选项为pversion时 @pversion 为 true
\ProcessOptions\relax % 通常放在类或包文件的可选项声明和处理部分的最后,用来执行用户提供的可选项对应的代码
\newcommand{\ifpversion}[2]{ \ifthenelse{\boolean{@pversion}}{#1}{#2}} % 定义命令 \ifpversion 如果 @pversion 为true 则执行 #1 否则 执行 #2
% ==============盲审选项设置===============
\newboolean{@bversion} % 新定义一个名为 @bversion 的布尔值
\setboolean{@bversion}{false} % 设定布尔值的默认值为 false
\DeclareOption{bversion}{\setboolean{@bversion}{true}} % 当设定选项为bversion时 @bversion 为 true
\ProcessOptions\relax
\newcommand{\ifbversion}[2]{ \ifthenelse{\boolean{@bversion}}{#1}{#2}} % 新定义一个命令 \ifbversion 如果 @bversion 为true 则执行 #1 否则 执行 #2
% ===============定义空白页命令===============
\newcommand{\blankpage@number}{\newpage\null\newpage} % 带页眉页脚
\newcommand{\blankpage}{\newpage\thispagestyle{empty}\null\newpage} % 没有页眉页脚
% //////////////////////////////////////// 页边距设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ifpversion{ % 打印版,内侧页边距大,外侧小👇
\geometry{inner=3cm, outer=2cm, top=3cm, bottom=2cm}
}{ % 电子版页边距相同👇
\geometry{left=2.5cm, right=2.5cm, top=3cm, bottom=2cm, headsep=0.3cm, footskip=0.7cm}
}
% //////////////////////////////////////// 字体设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ifwindows
\setCJKmainfont[AutoFakeBold=2.5,AutoFakeSlant =true]{SimSun} % 在Windows平台上设置中文字体为SimSun
\setCJKmonofont[AutoFakeBold=2.5,AutoFakeSlant =true]{SimSun} % 使用宋体作为等宽字体
\newCJKfontfamily{\kaiti}[AutoFakeBold=2.5]{KaiTi} % 设置楷体字体为KaiTi
\newCJKfontfamily{\heiti}[AutoFakeBold=2.5,AutoFakeSlant =true]{SimHei} % 设置黑体字体为SimHei
\setmainfont{Times New Roman} % 设置英文字体为Times New Roman
\else
\ifmacosx
\setCJKmainfont[AutoFakeBold=2.5,AutoFakeSlant =true]{Songti SC} % 在macOS平台上设置中文字体为Songti SC
\setCJKmonofont[AutoFakeBold=2.5,AutoFakeSlant =true]{Songti SC} % 使用宋体作为等宽字体
\newCJKfontfamily{\kaiti}[AutoFakeBold=2.5]{KaiTi} % 设置楷体字体为KaiTi
\newCJKfontfamily{\heiti}[AutoFakeBold=2.5,AutoFakeSlant =true]{STHeiti} % 设置黑体字体为STHeiti
\setmainfont{Times New Roman} % 设置英文字体为Times New Roman
\else
% 在其他平台设置中文和英文字体
\newcommand{\setFont}[3]{%
\IfFileExists{./Fonts/#2}{%
#1[AutoFakeBold=2.5, AutoFakeSlant=true, Path=./Fonts/]{#2}%
}{%
\IfFileExists{./Fonts/#3}{%
#1[AutoFakeBold=2.5, AutoFakeSlant=true, Path=./Fonts/]{#3}%
}{%
\ClassError{请下载 #2 或者 #3 并放置在./Fonts/ 目录下 (运行 ./Fonts/download_fonts.sh 脚本下载)}
}
}
}
\setFont{\setCJKmainfont}{方正书宋简体.ttf}{FZ-ShuSong.ttf} % 设置中文主字体
\setFont{\setCJKmonofont}{方正书宋简体.ttf}{FZ-ShuSong.ttf} % 使用宋体作为等宽字体
\setFont{\newCJKfontfamily{\kaiti}}{方正楷体简体.ttf}{FZ-KaiTi.ttf} % 设置楷体
\setFont{\newCJKfontfamily{\heiti}}{方正黑体简体.ttf}{FZ-HeiTi.ttf}
\setmainfont[ % 英文字体应用 stixfonts 字体 (Times New Roman 风格)
BoldFont=STIXTwoText-Bold.otf, % 粗体字体
ItalicFont=STIXTwoText-Italic.otf, % 斜体字体
BoldItalicFont=STIXTwoText-BoldItalic.otf, % 指定字体文件路径为./Fonts/
]{STIXTwoText-Regular.otf}
\fi
\fi
% ================定义数学字体设置===============
% 定义数学字体 \mathbf
% \DeclareMathAlphabet{\mathbf}{\eu@enc}{\eu@mathrm}{\bfdefault}{it}
% 参数解释:
% - \eu@enc: 字体编码,可以是任意有效的字体编码
% - \eu@mathrm: 字母字体,通常为欧拉字体
% - \bfdefault: 字体系列,通常为默认粗体系列
% - it: 字体形状,通常为斜体形状
% 定义数学字体 \mathbd
% \DeclareMathAlphabet{\mathbd}{\eu@enc}{\eu@mathrm}{\bfdefault}{n}
% 参数解释:
% - \eu@enc: 字体编码,可以是任意有效的字体编码
% - \eu@mathrm: 字母字体,通常为欧拉字体
% - \bfdefault: 字体系列,通常为默认粗体系列
% - n: 字体形状,通常为正常字形状
% 定义数学命令 \bm,其效果为使用 \mathbf 字体
% \newcommand{\bm}{\mathbf}
% \bm: 数学命令,用于使用 \mathbf 字体
% 注:\bm 可以替代 \mathbf 使用,提供更简洁的输入方式。
% ================定义高亮命令设置===============
\newcommand{\hl}{\CJKsout*[thickness=2.5ex,format=\color{yellow}]} % 新定义高亮命令\gl 用来高亮显示中文
% //////////////////////////////////////// 封面设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
% ===============设置时间格式===============
\renewcommand{\today}{\number\year 年 \number\month 月 \number\day 日}
% ===============封面信息引用定义===============
\newcommand{\zh@TheTitle}{\quad} % 中文标题
\newcommand{\en@TheTitle}{\quad} % 英文标题
\newcommand{\TheAuthor}{\quad} % 作者
\newcommand{\TheAdvisor}{\quad} % 导师姓名
\newcommand{\TheProtitle}{\quad} % 导师职称
\newcommand{\TheSchool}{\quad} % 学院
\newcommand{\TheMajor}{\quad} % 专业
\newcommand{\TheResearchDirection}{\quad} % 研究领域
\newcommand{\TheDegreeCategories}{\quad} % 申请学位门类
\newcommand{\TheStudentNumber}{\quad} % 学号
\newcommand{\TheSecrets}{\qquad} % 密级
\newcommand{\TheDate}{\quad} % 论文答辩日期
% ===============封面信息定义===============
\newcommand{\Title}[2]{
\renewcommand{\zh@TheTitle}{#1} % 中文标题
\renewcommand{\en@TheTitle}{#2} % 英文标题
}
\newcommand{\Author}[1]{\renewcommand{\TheAuthor}{#1}} % 作者
\newcommand{\Advisor}[1]{\renewcommand{\TheAdvisor}{#1}} % 导师
\newcommand{\Protitle}[1]{\renewcommand{\TheProtitle}{#1}} % 导师职称
\newcommand{\School}[1]{\renewcommand{\TheSchool}{#1}} % 学院
\newcommand{\Major}[1]{\renewcommand{\TheMajor}{#1}} % 专业
\newcommand{\ResearchDirection}[1]{\renewcommand{\TheResearchDirection}{#1}} % 研究领域
\newcommand{\DegreeCategories}[1]{\renewcommand{\TheDegreeCategories}{#1}} % 申请学位门类
\newcommand{\StudentNumber}[1]{\renewcommand{\TheStudentNumber}{#1}} % 学号
\newcommand{\Secrets}[1]{\renewcommand{\TheSecrets}{#1}} % 密级
\newcommand{\Date}[1]{\renewcommand{\TheDate}{#1}} % 论文答辩日期
\newcommand{\removeAmpersand}[1]{ % 定义新命令 \removeAmpersand 用于去掉中文题目中的 \\& 命令
\expandafter\StrSubstitute\expandafter{#1}{\\&}{}[\result]%
\result
}
% ====================本硕博选项声明====================
%\DeclareOption{选项}{代码}其中的选项就是选项的名称,而代码就是选项要执行的指令集。
\DeclareOption{bachelor}{
\def\DegreeName{本科}
\def\BookTitle{本科毕业设计(论文)}
\def\DisplayHeader{桂林电子科技大学本科生学位论文}
}
\DeclareOption{master}{
\def\DegreeName{硕士}
\def\BookTitle{硕\enspace 士\enspace 学\enspace 位\enspace 论\enspace 文}
\def\DisplayHeader{桂林电子科技大学硕士学位论文}
}
\DeclareOption{promaster}{
\def\DegreeName{专业硕士}
\def\BookTitle{硕\enspace 士\enspace 学\enspace 位\enspace 论\enspace 文}
\def\DisplayHeader{桂林电子科技大学硕士学位论文}
}
\DeclareOption{ojmaster}{
\def\DegreeName{在职硕士}
\def\BookTitle{硕\enspace 士\enspace 学\enspace 位\enspace 论\enspace 文}
\def\DisplayHeader{桂林电子科技大学硕士学位论文}
}
\DeclareOption{ptmaster}{
\def\DegreeName{非全硕士}
\def\BookTitle{硕\enspace 士\enspace 学\enspace 位\enspace 论\enspace 文}
\def\DisplayHeader{桂林电子科技大学硕士学位论文}
}
\DeclareOption{doctor}{
\def\DegreeName{博士}
\def\BookTitle{博\enspace 士\enspace 学\enspace 位\enspace 论\enspace 文}
\def\DisplayHeader{桂林电子科技大学博士学位论文}
}
\ExecuteOptions{master} % 默认值为硕士
\ProcessOptions\relax
% ===============判断学位类别的命令定义===============
\newcommand{\ifbachelor}[2]{\ifthenelse{\equal{\DegreeName}{本科}}{#1}{#2}} % 如果学位名是本科则执行#1命令,否执行#2命令
\newcommand{\ifpromaster}[1]{\ifthenelse{\equal{\DegreeName}{专业硕士}}{#1}{}} % 如果学位名是专业硕士则执行#1命令
\newcommand{\ifmaster}[1]{\ifthenelse{\equal{\DegreeName}{硕士}}{#1}{}} % 如果学位名是硕士则执行#1命令
\newcommand{\ifojmaster}[1]{\ifthenelse{\equal{\DegreeName}{在职硕士}}{#1}{}} % 如果学位名是在职硕士则执行#1命令
\newcommand{\ifptmaster}[1]{\ifthenelse{\equal{\DegreeName}{非全硕士}}{#1}{}} % 如果学位名是非全硕士则执行#1命令
\newcommand{\ifdoctor}[1]{\ifthenelse{\equal{\DegreeName}{博士}}{#1}{}} % 如果学位名是博士则执行#1命令
\newcommand{\ifpro}[2]{\ifthenelse{\equal{\DegreeName}{专业硕士} \or \equal{\DegreeName}{非全硕士}}{#1}{#2}} % 判断是否是专业硕士或非全硕士
% ==============封面设置=============== 定义封面命令
\newcommand{\MakeCover}
{
\thispagestyle{empty} % 没有页眉页脚,空白页
\setlength{\extrarowheight}{9pt}
\pdfbookmark{封面}{cover}
\setlength{\TPHorizModule}{1cm} % 设置textblock环境的水平单位
\setlength{\TPVertModule}{1cm} % 设置textblock环境的垂直单位
% ================设置密级格式================
\ifbachelor{ % 本科无密级👇
}{ % 硕博密级👇
\begin{textblock}{5}(12.6,2.1)
% \textblockcolour{red!30} % 设置背景颜色
\begin{flushright}
密\enspace 级 \underline{\makebox[7em][c]{\TheSecrets}}
\end{flushright}
\end{textblock}
}
% ================设置LOGO================
\ifbachelor{ % 本科LOGO👇
\begin{textblock}{15}(3,3.2)
\centering
\ifpversion{
\includegraphics[width=0.95 \textwidth]{./Pictures/Guet-logo-black.pdf}
}{
\includegraphics[width=0.95 \textwidth]{./Pictures/Guet-logo.pdf}
}
\end{textblock}
}{ % 硕博LOGO👇
\begin{textblock}{15}(3,4.4)
\centering
\ifpversion{
\includegraphics[width=0.95 \textwidth]{./Pictures/Guet-logo-black.pdf}
}{
\includegraphics[width=0.95 \textwidth]{./Pictures/Guet-logo.pdf}
}
\end{textblock}
}
% ================设置学位类别================
\begin{textblock}{10}(5.5,7.85)
\centering
\ifbachelor{% 本科👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle}\\
}{}
\end{textblock}
\begin{textblock}{10}(5.5,7.85)
\centering
\ifpromaster{ % 专硕👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle} \\
\fontsize{18pt}{26pt}\selectfont{\bfseries(全日制专业学位硕士)}\\
}
\ifojmaster{ % 在职学硕👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle} \\
\fontsize{18pt}{26pt}\selectfont{\bfseries(在职研究生)}\\
}
\ifptmaster{ % 非全专硕👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle} \\
\fontsize{18pt}{26pt}\selectfont{\bfseries(非全日制专业学位硕士)}\\
}
\ifmaster{ % 学硕👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle}\\
}
\ifdoctor{ % 博士👇
\fontsize{26pt}{26pt}\selectfont{\heiti\bfseries\BookTitle}\\
}
\end{textblock}
% ================设置题目================
\NewExpandableDocumentCommand\zh@TheTitle@tb{}{\zh@TheTitle} % 创建外部参数,导入题目表格中
\NewExpandableDocumentCommand\en@TheTitle@tb{}{\en@TheTitle}
\ifbachelor{ % 本科题目 👇
\begin{textblock}{15}(2.8,11.3)
\centering
\begin{tblr}[expand=\expanded]
{
stretch=1.2, % 单元格文本行距拉伸系数
colspec = {c c}, % 设置列对齐方式
column{1} = {1.4cm}, % 设置第一列宽度
column{2} = {11.4cm,font =\bfseries\fontsize{16pt}{16pt}\selectfont}, % 设置第二列的宽度、字体大小粗细
hline{2-Z} = {2}{1pt}, % 从第二行到最后一行(Z)存在横线(hline{2-Z}),第二列横线宽1.5pt({2}{1.5pt})
belowsep = {-4pt} % 单元格底线向上偏移4pt
}
\bfseries\fontsize{16bp}{16bp}\selectfont 题目: & \expanded{\zh@TheTitle@tb{}}
\end{tblr}
\end{textblock}
}{ % 硕博题目👇
\ifbversion{ % 盲审封面👇
}{ % 非盲审封面👇
\begin{textblock}{15}(2.9,9.6)
\centering
\ifpromaster{\vspace{0.9cm}} % 专硕
\ifojmaster{\vspace{0.9cm}} % 在职学硕
\ifptmaster{\vspace{0.9cm}} % 非全专硕
\begin{tblr}[expand=\expanded]
{
stretch=2, % 单元格文本行距拉伸系数
colspec = {c c}, % 设置列对齐方式
column{1} = {1.5cm}, % 设置第一列宽度
column{2} = {12.6cm,font =\bfseries\fontsize{14bp}{26bp}\selectfont}, % 设置第二列的宽度、字体大小粗细
hline{2-Z} = {2}{1.25pt}, % 从第二行到最后一行(Z)存在横线(hline{2-Z}),第二列横线宽1.5pt({2}{1.5pt})
belowsep = {-8pt} % 单元格底线向上偏移8pt
}
\bfseries\fontsize{16bp}{16bp}\selectfont 题目 & \expanded{\zh@TheTitle@tb{}} \\
\bfseries\fontsize{14bp}{14bp}\selectfont (英文) & \expanded{\en@TheTitle@tb{}}
\end{tblr}
\end{textblock}
}
}
% ================设置信息格式================
\ifbachelor{ % 本科封面信息 👇
\begin{textblock}{16}(2.4,16.9)
\centering
\begin{tblr}
{
stretch=1.9, % 单元格文本行距拉伸系数
colspec = {c c}, % 设置列对齐方式
column{1} = {4cm, font = \bfseries\fontsize{15pt}{15pt}\selectfont}, % 设置第一列宽度
column{2} = {9.6cm, font = \fontsize{14bp}{26bp}\selectfont}, % 设置第二列的宽度、字体大小粗细
hline{2-Z} = {2}{1pt}, % 从第二行到最后一行(Z)存在横线(hline{2-Z}),第二列横线宽1.5pt({2}{1.5pt})
belowsep = {-7pt} % 单元格底线向上偏移7pt
}
学\hspace{0.36cm} \qquad \qquad 号: & \TheStudentNumber \\
姓\hspace{0.36cm} \qquad \qquad 名: & \TheAuthor \\
学\hspace{0.36cm} \qquad \qquad 院: & \TheSchool \\
专\quad \hspace{0.36cm} \qquad \quad 业: & \TheMajor \\
指\hspace{0.38cm} 导\hspace{0.38cm} 教\hspace{0.38cm} 师: & \TheAdvisor \\
指\hspace{0.1pt} 导\hspace{0.1pt} 教\hspace{0.1pt} 师\hspace{0.1pt} 职\hspace{0.1pt} 称: & \TheProtitle
\end{tblr}
\end{textblock}
\begin{textblock}{8}(6,26.9) % 日期居中
\centering\fontsize{16pt}{16pt}\selectfont \TheDate
\end{textblock}
}{ % 硕博封面信息 👇
\ifbversion{ % 盲审封面👇
\begin{textblock}{16}(2.5,14.8)
\bfseries\fontsize{16bp}{16bp}\selectfont
\centering
\begin{tblr}[expand=\expanded]
{
stretch=1.9, % 单元格文本行距拉伸系数
colspec = {ll}, % 设置列对齐方式
column{1} = {4.5em}, % 设置第一列宽度
column{2} = {22em}, % 设置第二列的宽度、字体大小粗细
leftsep=0pt, % 设置单元内容的左边距为零
}
题\qquad 目: & \expanded{\zh@TheTitle@tb{}} \\
专\qquad 业: & \TheMajor \\
研究方向: & \TheResearchDirection
\end{tblr}
\end{textblock}
}{ % 非盲审封面👇
\begin{textblock}{15}(2.9,16.3) %
\centering
\ifpro{ % 专硕或非全专硕的封面信息 👇
\begin{tblr}
{
stretch=2.2, % 单元格文本行距拉伸系数
colspec = {c c}, % 设置列对齐方式
column{1} = {5cm, font = \bfseries\fontsize{15pt}{15pt}\selectfont}, % 设置第一列宽度
column{2} = {6.5cm, font = \bfseries\fontsize{15pt}{15pt}\selectfont}, % 设置第二列的宽度、字体大小粗细
hline{2-Z} = {2}{1.25pt}, % 从第二行到最后一行(Z)存在横线(hline{2-Z}),第二列横线宽1.5pt({2}{1.5pt})
belowsep = {-11pt} % 单元格底线向上偏移11pt
}
研\quad 究\quad 生\quad 学\quad 号: & \TheStudentNumber \\
研\quad 究\quad 生\quad 姓\quad 名: & \TheAuthor \\
指导教师姓名、职称: & \TheAdvisor \enspace \TheProtitle \\
申\enspace 请专业学位类别\enspace : & \TheDegreeCategories \\
专\hspace{1.5em}业\hspace{1.5em}名\hspace{1.5em}称\enspace : & \TheMajor \\
论\enspace 文\enspace 答\quad 辩\enspace 日\enspace 期: & \TheDate
\end{tblr}
}{ % 博士、学硕、在职硕士的封面信息 👇
\begin{tblr}
{
stretch=2.2,
colspec = {c c},
column{1} = {5cm, font = \bfseries\fontsize{15pt}{15pt}\selectfont},
column{2} = {6.5cm, font = \bfseries\fontsize{15pt}{15pt}\selectfont},
hline{2-Z} = {2}{1.25pt},
belowsep = {-11pt}
}
研\quad 究\quad 生\quad 学\quad 号: & \TheStudentNumber \\
研\quad 究\quad 生\quad 姓\quad 名: & \TheAuthor \\
指导教师姓名、职称: & \TheAdvisor \enspace \TheProtitle \\
申请学位学科门类\quad : & \TheDegreeCategories \\
学\quad 科(专\qquad 业): & \TheMajor \\ %使用box可以更好地均分空间,推荐将其他几个参数也进行合适的修改
论\enspace 文\enspace 答\quad 辩\enspace 日\enspace 期: & \TheDate
\end{tblr}
}
\end{textblock}
}
}
~\\ % 在当前位置插入一个不可断行的空格,并开始新的一行
\setcounter{page}{1}
\setlength{\extrarowheight}{2pt}
%判断是否为打印
\ifpversion{\blankpage}{}
}
% ------ 由于已经开发了盲审封面,该功能暂时没有用处,所以注释掉 ------
% % ====================导入封面PDF文件设置==================== |
% \newcommand{\bindpdfcover}[1]{ |
% \pdfbookmark{封面}{cover} |
% \includepdf[pages=-]{#1} |
% \newpage\setcounter{page}{0} |
% } |
% ---------------------------------------------------------------
% //////////////////////////////////////// 独创性(或创新性)声明设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\newcommand{\OriginalityDeclaration}{
\ifbversion{ % 盲审不显示授权声明👇
}{ % 非盲审显示独创性声明👇
\newpage
\thispagestyle{empty} %没有页眉页脚,空白页
\begin{spacing}{1.5}
\pdfbookmark{独创性(或创新性)声明}{OriginalityDeclaration}
\ifbachelor{ % 本科独创性声名👇
\begin{center}
\fontsize{14pt}{21pt}\selectfont\bfseries 本科生毕业设计(论文)独创性声名
\end{center}
本人声明所呈交的毕业设计(论文)是我个人在指导老师指导下进行的工作及取得的成果。
尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,文中不包含其他人或其它机构已经发表或撰写过的成果;
也不包含为获得桂林电子科技大学或其他教育机构的学位或证书而使用过的材料。
其他同志对本工作的启发和所做的任何贡献均已在毕业设计(论文)中做了明确的说明并表示了谢意。
\vspace{0.5cm}毕业设计(论文)若有不实之处,本人承担一切相关责任。
\vspace{1.5cm}本人签名:\hspace{7em}日期:\vspace{2cm}
\begin{center}
\fontsize{14pt}{21pt}\selectfont\bfseries 本科生毕业设计(论文)使用授权说明
\end{center}
桂林电子科技大学有权保留并向国家有关部门或机构送交毕业设计说明书(论文)的复印件,允许毕业设计(论文)被查阅和借阅。
本人授权桂林电子科技大学可以公布毕业设计(论文)的全部或部分内容,可以采用影印、缩印或其它复制手段保存、汇编毕业设计(论文)
\vspace{1.5cm}本人签名:\hspace{7em}日期:
\vspace{1cm}导师签名:\hspace{7em}日期:
}{ % 硕博独创性声名👇
\begin{center}
\fontsize{14pt}{21pt}\selectfont\bfseries 独创性声明
\end{center}
本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;
也不包含为获得桂林电子科技大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。
\vspace{0.5cm}申请学位论文与资料若有不实之处,本人承担一切相关责任。
\vspace{0.5cm}本人签名:\hspace{7em}日期:
\vspace{1.5cm}
\begin{center}
\fontsize{14pt}{21pt}\selectfont\bfseries 关于论文使用授权的说明
\end{center}
本人完全了解桂林电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属桂林电子科技大学。
本人保证毕业离校后,结合学位论文研究成果完成的论文、发明专利等成果,署名单位仍然为桂林电子科技大学。
学校有权保留送交论文的复印件,允许查阅和借阅论文;
学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。
(保密的论文在解密后遵守此规定)
\vspace{1.9cm}本人签名:\hspace{7em}日期:
\vspace{0.5cm}导师签名:\hspace{7em}日期:
}
\end{spacing}
\ifpversion{\blankpage}{}
}
}
% ====================导入独创性声明定义PDF文件设置====================
\newcommand{\SignatureDeclaration}[1]
{
\includepdf[pages=-]{#1}
\newpage\setcounter{page}{0}
\ifpversion{\blankpage}{}
}
% //////////////////////////////////////// 不太明白的设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\urlstyle{rm}
\raggedbottom % 将当前页面的底部对齐方式设置为“不齐平”
% //////////////////////////////////////// 摘要关键词设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
%=========================中文摘要环境定义=========================
\newenvironment{ChineseAbstract}
{
% 设置目录和标题内容
\ifbachelor{ % 本科摘要格式设置 👇
\renewcommand{\BachelorChapterFormat}{\centering} % 标题临时居中,因本科摘要标题要求居中
\chapter*{\texorpdfstring{\textbf{摘\quad 要}}{摘 要}} % 本科摘要标题加粗
\renewcommand{\BachelorChapterFormat}{} % 标题恢复全局设置
}{ % 硕博摘要格式设置 👇
\chapter*{\texorpdfstring{\heiti 摘\quad 要}{摘 要}} % 硕博摘要标题黑体
\addcontentsline{toc}{chapter}{\texorpdfstring{摘\quad 要}{摘 要}} % 设置在目录显示摘要
}
% 设置页眉页脚
\fancyhf{} % 初始化页码页脚布局
\setcounter{page}{1} % 定义为第一页
\pagenumbering{Roman} % 设置页码显示为罗马数字
\ifbachelor{ % 本科摘要页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont 桂林电子科技大学毕业设计(论文)} % 设置页眉
\fancyhead[RE,RO]{\fontsize{10.5pt}{12.6pt}\selectfont 第\thepage 页\enspace 共 \pageref{page:tableofcontents} 页} % 设置页脚
}{ % 硕博摘要页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont 摘\quad 要} % 设置页眉
\fancyfoot[CE,CO]{\fontsize{9pt}{10.8pt}\selectfont\thepage} % 罗马页码居中显示
}
}{
\ifpversion{
\checkoddpage
\ifoddpage
\blankpage
\else
\newpage
\fi
}{
\newpage
}
}
%=========================中文关键字=========================
\newcommand{\ChineseKeyword}[1]{
\vspace{\baselineskip}
\@hangfrom{\makebox[48pt][l]{\textbf{关键词:}}}#1
}
%=========================英文摘要环境定义=========================
\newenvironment{EnglishAbstract}
{
% 设置目录和标题内容
\ifbachelor{ % 本科英文摘要格式设置 👇
\renewcommand{\BachelorChapterFormat}{\centering}
\chapter*{\bfseries\selectfont\heiti Abstract} % 本科英文摘要标题首字母大写
\renewcommand{\BachelorChapterFormat}{}
}{ % 硕博英文摘要格式设置 👇
\chapter*{\bfseries ABSTRACT}
\addcontentsline{toc}{chapter}{\bfseries ABSTRACT} % 设置在目录显示
}
\fancyhf{}
\ifbachelor{ % 本科英文摘要页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont 桂林电子科技大学毕业设计(论文)}
\fancyhead[RE,RO]{\fontsize{10.5pt}{12.6pt}\selectfont 第\thepage 页\enspace 共 \pageref{page:tableofcontents} 页}
}{ % 硕博英文摘要页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont ABSTRACT}
\fancyfoot[CE,CO]{\fontsize{9pt}{10.8pt}\selectfont\thepage}
}
}{
\ifpversion{
\checkoddpage
\ifoddpage
\blankpage
\else
\newpage
\fi
}{
\newpage
}
}
%=========================英文关键字=========================
\newcommand{\EnglishKeyword}[1]
{
\vspace{\baselineskip}
\@hangfrom{\makebox[2.1cm][l]{\textbf{Keywords:}}}#1
}
% //////////////////////////////////////// 目录设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
% ====================目录标题格式设置==================== 定义插入目录命令
\ifbachelor{ % 本科目录标题使其居中 👇
\newcommand{\ThesisContents}
{
\renewcommand{\BachelorChapterFormat}{\centering} % 目录标题居中
\begin{spacing}{2} % 本科目录两倍行距
\tableofcontents
\end{spacing}
\renewcommand{\BachelorChapterFormat}{} % 还原初始设置
\label{page:tableofcontents} % 设置pageref获取页码数的标记
\ifpversion{ % 打印版本切换
\checkoddpage
\ifoddpage
\blankpage@number
\else
\newpage
\fi
}{}
}
}{ % 硕博目录标题统一居中无需更改 👇
\newcommand{\ThesisContents}{
\tableofcontents
\ifpversion{ % 打印版本切换
\checkoddpage
\ifoddpage
\blankpage@number
\else
\newpage
\fi
}{}
}
}
% ====================目录标题内容设置====================
\renewcommand{\contentsname}{目\quad 录} % 使默认的Contents改为目 录显示
% =========================目录页眉页脚设置=========================
\pretocmd{\tableofcontents}{
\newpage
\fancyhf{}
\ifbachelor{ % 本科目录页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont 桂林电子科技大学毕业设计(论文)}
\fancyhead[RE,RO]{\fontsize{10.5pt}{12.6pt}\selectfont 第\thepage 页\enspace 共 \pageref{page:tableofcontents} 页}
}{ % 硕博目录页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont 目\quad 录}
\fancyfoot[CE,CO]{\fontsize{9pt}{10.8pt}\selectfont\thepage}
}
\pdfbookmark{目录}{toc}
}{}{}
% ====================目录深度设置====================
\setcounter{tocdepth}{2} % 设置目录深度
% =========================目录样式设置=========================
\tocloftpagestyle{fancy} % 设置目录页码样式为fancy
\renewcommand{\cftchappagefont}{\normalfont} % 设置目录章节页码字体为正常字体
\renewcommand\cftchapleader{\cftdotfill{\cftdotsep}} % 设置目录章节页码连接线为点线
\renewcommand{\cftdotsep}{0.4} % 设置目录页码连接点之间的距离为0.4em
% =========================目录内页码宽度设置=========================
\AddToHook {shipout/background}{\addtocontents{toc}{\protect\cftsetpnumwidth{\widthof{\thepage}-1pt}}}
% \cftsetpnumwidth 命令用于设置页码宽度的值,\widthof{\thepage} 命令用于计算页码的宽度
% =========================目录缩进设置=========================
\ifbachelor{ % 本科目录格式 👇
\cftsetindents{chapter}{0pt}{20pt} % 一个中文空格约为5磅
\cftsetindents{section}{0pt}{25pt}
\cftsetindents{subsection}{0pt}{30pt}
\cftsetindents{subsubsection}{0pt}{41pt}
% 本科目录字体大小
\renewcommand\cftchapfont{\fontsize{15pt}{15pt}\selectfont\heiti}
\renewcommand\cftsecfont{\fontsize{14pt}{14pt}\selectfont\heiti}
\renewcommand\cftsubsecfont{\fontsize{14pt}{15pt}\selectfont\kaiti}
}{ % 硕博目录格式 👇
\addtolength{\cftchapnumwidth}{25pt}
% 注释掉,目录中每个条目的缩进与编号和内容之间距离使用默认设置
% \cftsetindents{section}{21pt}{22pt}
% \cftsetindents{subsection}{44pt}{31pt}
% \cftsetindents{subsubsection}{76pt}{41pt}
\renewcommand{\cfttoctitlefont}{\fontsize{15pt}{15pt}\selectfont\heiti}
\renewcommand\cftchapfont{\heiti}
}
% ====================目录行距设置====================
\setlength{\cftbeforetoctitleskip}{0pt} % 设置目录标题前的垂直距离为0pt
\setlength{\cftaftertoctitleskip}{18pt} % 设置目录标题后的垂直距离为18pt
\setlength{\cftbeforechapskip}{0pt} % 设置章节标题前的垂直距离为0pt
% //////////////////////////////////////// 插图索引设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
% =========================插图索引标题格式设置========================= 定义插图索引命令
\ifbachelor{ % 定义本科插图索引 👇
\newcommand{\ThesisFigureList}
{
\renewcommand{\BachelorChapterFormat}{\centering} % 设置标题居中
\setstretch{2.0} % 设置二倍行距
\listoffigures
\setstretch{1.389} % 行距设置回20磅
\renewcommand{\BachelorChapterFormat}{} % 还原初始设置:左对齐
}
}{ % 定义硕博插图索引命令 👇
\newcommand{\ThesisFigureList}{\listoffigures} % 自定义调用\listoffigures的命令
% =========================插图索引页眉页脚设置=========================
\pretocmd{\listoffigures}
{ % 图目录是存放在.lof目录的文件下
\newpage % 新建一页
\fancyhf{} % 初始化页码页脚布局
\ifbachelor{ % 本科插图索引页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont{桂林电子科技大学毕业设计(论文)}}
\fancyhead[RE,RO]{\fontsize{10.5pt}{12.6pt}\selectfont 第\thepage 页\enspace 共 \pageref{page:tableofcontents} 页}
}{ % 硕博插图索引页眉页码设置 👇
\fancyhead[C]{\fontsize{10.5pt}{12.6pt}\selectfont{插图索引}}
\fancyfoot[CE,CO]{\fontsize{9pt}{10.8pt}\selectfont\thepage}
}
\addtolength{\cftfignumwidth}{12pt} % 设置长度命令,使命令\cftfignumwidth的长度设置为12pt,条目编号与条目内容之间占用的宽度, 例如:图 1-2 [\cftfignumwidth] 电子战飞机
\renewcommand{\cftfigpresnum}{图} % 条目编号前内容
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}} % 将目录深度设置为0 就会在目录中显示
\addcontentsline{toc}{chapter}{\texorpdfstring{\heiti 插图索引}{插图索引}} % 设置在目录显示插图索引
}{}{}
% ====================插图索引标题内容设置====================
\renewcommand{\listfigurename}{插图索引} % 修改插图索引名称
% =========================插图索引内页码宽度设置=========================
\AddToHook {shipout/background}{\addtocontents{lof}{\protect\cftsetpnumwidth{\widthof{\thepage}-1pt}}}
}
% //////////////////////////////////////// 插表索引设置 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\