-
Notifications
You must be signed in to change notification settings - Fork 13
/
jluthesis2020.sty
1463 lines (1178 loc) · 45.6 KB
/
jluthesis2020.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
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
% Template Package for Writing Thesis for Jilin University by Ma Xuewei.
% GitHub: https://github.com/maxuewei2/JLUThesisLaTeX
% 吉林大学硕博论文 TeX 模板
%
% 此模板写于 2020 年 3 月 31 日,主要参考 jluthesis
% 及自己在写毕业论文时用 LaTeX 实现的 2020 年吉林大学研究生学位论文撰写及装帧规范。
% 因个人 TeX 能力有限且我自己的实现看起来很乱,所以参考 jluthesis 进行模板化修改产生此模板。
% 感谢实现 jluthesis 并开源的前辈 Zhang Yinhe。
% jluthesis 原档存储于 google code,但已无法下载。
% 此模板参考的 jluthesis 下载于 https://github.com/dartall/jluthesis
%
% 使用 XeTeX 系统处理源文件,方便直接使用系统的 truetype 或 opentype 字体
% 参考了 XJTUthesis.cls, HIT-pluto-PhD,
%
% 可用选项有 debug|ebook|hardcopy, amd|pmd|phdplain|phdfancy, nobox, manualSpine, onlyCover, twoSideCover, noBlankPages.
% debug 生成的PDF带框线,方便调试
% ebook 带彩色文字的PDF
% hardcopy 无彩色文字的PDF
% amd 学硕使用
% pmd 专硕使用
% phdplain 博士论文简装
% phdfancy 博士论文精装
% nobox 输出的封面无框线和书脊
% manualSpine 手动输出书脊,需配合\jluManualSpine命令
% onlyCover 仅输出封面页
% twoSideCover 输出双页封面
% noBlankPages 去掉空白页,主要用于上传到图书馆学位论文系统
% 默认为 hardcopy,amd,且nobox=false,manualSpine=false,onlyCover=false,twoSideCover=false, noBlankPages=false
% 双面印刷需在documentclass选项中声明twoside
% 单面印刷需在documentclass选项中声明oneside
% 选项使用举例如下
% \usepackage[ebook,nobox,amd]{jluthesis2020}%
% \usepackage[hardcopy,phdplain,twoSideCover,onlyCover]{jluthesis2020}%
%
% N.B.
% @: 所有的居中行都需要使用\noindent来消除首行缩进,
% 并且要在变换字号的命令如 \sihao 之后使用,因为\parindent被修改了
% @: {\centering }需要使用\\来断行居中
% @:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{jluthesis2020}[2020/04/03 v0.3 thesis template for jlu]
\newcommand{\jluthesisVersion}{jluthesis2020 v0.3}
\newif\if@jlu@debug
\newif\if@jlu@ebook
\newif\if@jlu@hardcopy
\DeclareOption{debug}{\@jlu@debugtrue\@jlu@ebookfalse\@jlu@hardcopyfalse}
\DeclareOption{ebook}{\@jlu@ebooktrue\@jlu@debugfalse\@jlu@hardcopyfalse}
\DeclareOption{hardcopy}{\@jlu@hardcopytrue\@jlu@debugfalse\@jlu@ebookfalse}
\newif\if@jlu@makebox
\@jlu@makeboxtrue
\DeclareOption{nobox}{\@jlu@makeboxfalse}
\newif\if@jlu@twoSideCover
\@jlu@twoSideCoverfalse
\DeclareOption{twoSideCover}{\@jlu@twoSideCovertrue\@jlu@makeboxfalse}
\newif\if@jlu@amd
\newif\if@jlu@pmd
\newif\if@jlu@phdplain
\newif\if@jlu@phdfancy
\DeclareOption{amd}{\@jlu@amdtrue\@jlu@pmdfalse\@jlu@phdplainfalse\@jlu@phdfancyfalse}
\DeclareOption{pmd}{\@jlu@amdfalse\@jlu@pmdtrue\@jlu@phdplainfalse\@jlu@phdfancyfalse}
\DeclareOption{phdplain}{\@jlu@amdfalse\@jlu@pmdfalse\@jlu@phdplaintrue\@jlu@phdfancyfalse}
\DeclareOption{phdfancy}{\@jlu@amdfalse\@jlu@pmdfalse\@jlu@phdplainfalse\@jlu@phdfancytrue}
\newif\if@jlu@onlyCover
\@jlu@onlyCoverfalse
\DeclareOption{onlyCover}{\@jlu@onlyCovertrue}
\newif\if@jlu@noBlankPages
\@jlu@noBlankPagesfalse
\DeclareOption{noBlankPages}{\@jlu@noBlankPagestrue}
\newif\if@jlu@manualPrintSpine
\@jlu@manualPrintSpinefalse
\DeclareOption{manualSpine}{\@jlu@manualPrintSpinetrue}
\DeclareOption*{\PackageError{jluthesis2020}{Unknown option ‘\CurrentOption’}{
Options allowed:
debug ebook hardcopy amd pmd phdplain phdfancy nobox manualSpine onlyCover twoSideCover
}}
%其它的选项有用的无用的都交给 geometry 宏包处理,为了省事
%\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{geometry}}
\ExecuteOptions{hardcopy,amd} % 默认选项
\ProcessOptions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 吉林大学硕士论文一些格式设定,尽量不要修改,除非学校格式变化了
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\@jlu@degreeTitle{} % 硕士论文封面的『学术学位』或『专业学位』
\def\@jlu@subjectLabel{} % 封面的『专业』或『类别』
\def\@jlu@interestLabel{} % 封面的『研究方向』或『领域(方向)』,博士精装版扉页的『研究方向』
\def\@jlu@subjectLabelScd{} % 扉页的『专业名称』或『领域(方向)』
\def\@jlu@degreeLabel{} % 扉页的『学位类别』或『类别』
\def\@jlu@degreeName{} % 『硕士』或『博士』,用于封面的隶书标题、原创性声明标题、授权声明的论文级别、双面打印时的页眉等处
% 区分硕士或博士的if判断
\newif\if@jlu@md
\newif\if@jlu@phd
\@jlu@mdtrue\@jlu@phdfalse
\if@jlu@amd
% 学硕
\def\@jlu@degreeTitle{学术学位}
\def\@jlu@subjectLabel{专业}
\def\@jlu@interestLabel{研究方向}
\def\@jlu@subjectLabelScd{专业名称}
\def\@jlu@degreeLabel{学位类别}
\def\@jlu@degreeName{硕士}
\else
\if@jlu@pmd
% 专硕
\def\@jlu@degreeTitle{专业学位}
\def\@jlu@subjectLabel{类别}
\def\@jlu@interestLabel{领域(方向)}
\def\@jlu@subjectLabelScd{领域(方向)}
\def\@jlu@degreeLabel{类别}
\def\@jlu@degreeName{硕士}
\else
% 博士
\def\@jlu@subjectLabelScd{专业名称}
\def\@jlu@degreeLabel{学位类别}
\def\@jlu@degreeName{博士}
\def\@jlu@subjectLabel{专业}
\def\@jlu@interestLabel{研究方向}
\@jlu@mdfalse\@jlu@phdtrue
\fi
\fi
% 书脊中文标题,主要用于处理中英混排标题的竖排输出
\long\def\jluCSpineTitle#1{\long\def\@jlu@cSpineTitle{#1}}
\long\def\@jlu@cSpineTitle{}
% 书脊水平位置,用来控制书脊的水平平移,以防更换字体后书脊错位
\def\jluSpineHorizontalPosition#1{\def\@jlu@spineHorizontalPosition{#1}}
\def\@jlu@spineHorizontalPosition{1.45}
% 手动书脊输出,主要用于处理中英混排标题的竖排输出
\long\def\jluManualSpine#1{\long\def\@jlu@manualSpine{#1}}
\long\def\@jlu@manualSpine{}
% 中文标题
\long\def\jluCTitle#1{
\long\def\@jlu@cTitle{#1}
\ifthenelse{\equal{\@jlu@cSpineTitle}{}}{ % 若书脊标题为空,则同时设置书脊标题
\long\def\@jlu@cSpineTitle{#1}
}{}
}
\long\def\@jlu@cTitle{}
% 英文标题
\long\def\jluETitle#1{\long\def\@jlu@eTitle{#1}}
\long\def\@jlu@eTitle{}
% 扉页的『学位类别』或『类别』需填写的内容
\def\jluCDegree#1{\def\@jlu@cDegree{#1}}
\def\@jlu@cDegree{}
% 封面的『专业』或『类别』需填写的内容
\def\jluCSubject#1{\def\@jlu@cSubject{#1}}
\def\@jlu@cSubject{}
% 扉页的『专业名称』或『领域(方向)』需填写的内容
\def\jluCSubjectScd#1{\def\@jlu@cSubjectScd{#1}}
\def\@jlu@cSubjectScd{}
% 学位论文授权说明中的『学科专业』需填写的内容
\def\jluCSubjectTrd#1{\def\@jlu@cSubjectTrd{#1}}
\def\@jlu@cSubjectTrd{}
% 封面的『研究方向』或『领域(方向)』以及博士精装版扉页的『研究方向』需填写的内容
\def\jluCInterest#1{\def\@jlu@cInterest{#1}}
\def\@jlu@cInterest{}
% 培养单位
\def\jluCCollege#1{\def\@jlu@cCollege{#1}}
\def\@jlu@cCollege{}
% 封面的『单位代码』应填的内容
\def\jluCollegeNumber#1{\def\@jlu@collegeNumber{#1}}
\def\@jlu@collegeNumber{}
% 校名,不出意外应填『吉林大学』...
\def\jluCUniversity#1{\def\@jlu@cUniversity{#1}}
\def\@jlu@cUniversity{}
% 作者姓名
\def\jluCAuthor#1{\def\@jlu@cAuthor{#1}}
\def\@jlu@cAuthor{}
% 指导教师姓名
\def\jluCSupervisor#1{\def\@jlu@cSupervisor{#1}}
\def\@jlu@cSupervisor{}
% 指导教师职称
\def\jluCSupervisorPost#1{\def\@jlu@cSupervisorPost{#1}}
\def\@jlu@cSupervisorPost{}
% 指导教师学历,没用到
%\def\jluCSupervisorDegree#1{\def\@jlu@cSupervisorDegree{#1}}
%\def\@jlu@cSupervisorDegree{}
% 日期,没用到
%\def\jluCDate#1{\def\@jlu@cDate{#1}}
%\def\@jlu@cDate{}
% 封面的『分类号』应填的内容
\def\jluClassification#1{\def\@jlu@classification{#1}}
\def\@jlu@classification{}
% 封面的『密级』应填的内容
\def\jluSecurityLevel#1{\def\@jlu@securityLevel{#1}}
\def\@jlu@securityLevel{}
% 授权声明中的『作者联系地址(邮编)』应填的内容
\long\def\jluCAddress#1{\long\def\@jlu@cAddress{#1}}
\long\def\@jlu@cAddress{}
% 授权声明中的『作者联系电话』应填的内容
\def\jluTelphone#1{\def\@jlu@telphone{#1}}
\def\@jlu@telphone{}
% 研究生学号
\def\jluStudentNumber#1{\def\@jlu@studentNumber{#1}}
\def\@jlu@studentNumber{}
% 原创声明作者签名
\def\jluAuthorSignatureOne#1{\def\@jlu@authorSignatureOne{#1}}
\def\@jlu@authorSignatureOne{}
% 授权声明作者签名
\def\jluAuthorSignatureTwo#1{\def\@jlu@authorSignatureTwo{#1}}
\def\@jlu@authorSignatureTwo{}
% 授权声明导师签名
\def\jluSupervisorSignature#1{\def\@jlu@supervisorSignature{#1}}
\def\@jlu@supervisorSignature{}
% 在校时间,没用到
%\def\jluStudyPeriod#1{\def\@jlu@studyPeriod{#1}}
%\def\@jlu@studyPeriod{}
% 项目支持来源,没用到
%\def\jluFunded#1{\def\@jlu@funded{#1}}
%\def\@jlu@funded{}
% 项目基金号,没用到
%\def\jluFundNumber#1{\def\@jlu@fundNumber{#1}}
%\def\@jlu@fundNumber{}
% 封面的日期
\def\@jlu@dateForCoverYear{}
\def\@jlu@dateForCoverMonth{}
\newcommand{\jluDateForCover}[2]{
\def\@jlu@dateForCoverYear{#1}
\def\@jlu@dateForCoverMonth{#2}
}
% 答辩日期
\def\@jlu@defenseYear{}
\def\@jlu@defenseMonth{}
\def\@jlu@defenseDay{}
\newcommand{\jluDefenseDate}[3]{
\def\@jlu@defenseYear{#1}
\def\@jlu@defenseMonth{#2}
\def\@jlu@defenseDay{#3}
}
% 博士论文扉页的『授予学位日期』
\def\@jlu@degreeObtainYear{}
\def\@jlu@degreeObtainMonth{}
\def\@jlu@degreeObtainDay{}
\newcommand{\jluDegreeObtainDate}[3]{
\def\@jlu@degreeObtainYear{#1}
\def\@jlu@degreeObtainMonth{#2}
\def\@jlu@degreeObtainDay{#3}
}
% 原创声明的日期
\def\@jlu@originalStatementYear{}
\def\@jlu@originalStatementMonth{}
\def\@jlu@originalStatementDay{}
\newcommand{\jluOriginalStatementDate}[3]{
\def\@jlu@originalStatementYear{#1}
\def\@jlu@originalStatementMonth{#2}
\def\@jlu@originalStatementDay{#3}
}
% 授权声明的日期
\def\@jlu@contributionStatementYear{}
\def\@jlu@contributionStatementMonth{}
\def\@jlu@contributionStatementDay{}
\newcommand{\jluContributionStatementDate}[3]{
\def\@jlu@contributionStatementYear{#1}
\def\@jlu@contributionStatementMonth{#2}
\def\@jlu@contributionStatementDay{#3}
}
% 博士论文扉页的『答辩委员会』表格
\long\def\jluCommitteeTable#1{\long\def\@jlu@committeeTable{#1}}
\long\def\@jlu@committeeTable{
\begin{tabular}{l@{\hspace{1.5cm}}l@{\hspace{1.5cm}}l@{\hspace{1.5cm}}l}
\multicolumn{4}{l}{答辩委员会组成:}\\
& 姓名 & 职称 & 工作单位 \\
主席 & & & \\
委员 & & & \\
\end{tabular}
}
% 中文摘要
\long\def\jluCAbstract#1{\long\def\@jlu@cAbstract{#1}}
\long\def\@jlu@cAbstract{}
% 中文关键词
\def\jluCKeywords#1{\def\@jlu@cKeywords{#1}}
\def\@jlu@cKeywords{}
% 英文摘要
\long\def\jluEAbstract#1{\long\def\@jlu@eAbstract{#1}}
\long\def\@jlu@eAbstract{}
% 英文关键词
\def\jluEKeywords#1{\def\@jlu@eKeywords{#1}}
\def\@jlu@eKeywords{}
% 参考文件bib文件名
\def\jluReferenceFile#1{\def\@jlu@referenceFile{#1} }
\def\@jlu@referenceFile{}
% 引用风格
\def\jluReferenceStyle#1{\def\@jlu@referenceStyle{#1} }
\def\@jlu@referenceStyle{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{atbegshi}% http://ctan.org/pkg/atbegshi
\RequirePackage[xetex]{geometry}
\newcommand{\@jlu@setGeometry}{
\newgeometry{top=1.02in,bottom=1.3in,right=1.25in,left=1.25in}
}
\@jlu@setGeometry
% 子图
\RequirePackage{subfigure}
%\RequirePackage[subfigure]{tocloft}
%\renewcommand\cftloftitlefont{\sffamily\mdseries}
%\renewcommand\cftlottitlefont{\sffamily\mdseries}
\RequirePackage[style=pdf,useregional=numeric]{datetime2}
\RequirePackage{hyperref}
\newcommand{\@jlu@setHref}{
\hypersetup{
bookmarks=true,
bookmarksopen=true,
pdftitle={\@jlu@cTitle}, % title
pdfsubject={{\@jlu@degreeName}学位论文}, % subject of the document
pdfauthor={\@jlu@cAuthor}, % author
% pdfcreator={}, % creator of the document
% pdfproducer={}, % producer of the document
pdfkeywords={\@jlu@cKeywords}, % list of keywords
% pdfinfo={
% CreationDate={\DTMnow},
% ModDate={\DTMnow},
% },
}
}
\if@jlu@debug
%\RequirePackage{layouts} % test the page layout setup.
\geometry{showframe,showcrop,verbose}
\hypersetup{%
colorlinks=true,citecolor=blue,linkcolor=blue,%
urlcolor=blue,anchorcolor=red,debug=true
}
\else
\if@jlu@ebook
\hypersetup{%
colorlinks=true,citecolor=blue,linkcolor=blue,%
urlcolor=blue,anchorcolor=red
}
\else
\hypersetup{pdfborder={0 0 0}}
\fi
\fi
\if@jlu@noBlankPages
% https://tex.stackexchange.com/a/248879
\renewcommand\cleardoublepage{%
\clearpage
\ifodd\value{page}\else\stepcounter{page}\fi
}
\fi
%\RequirePackage{ctex}
\RequirePackage{xeCJK}
%\RequirePackage[no-math]{fontspec}
\PassOptionsToPackage{no-math}{fontspec}
% 设定中文
\defaultfontfeatures{Mapping=tex-text} % 要在设定字体之前
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
\setCJKmainfont[BoldFont=Source Han Serif SC Heavy]{Adobe Song Std} % 中文缺省字体
\setCJKsansfont[BoldFont=Source Han Sans SC Heavy]{Source Han Sans SC} % 中文无衬线字体Adobe Heiti Std
\setCJKmonofont{Adobe Kaiti Std} % 中文数学字体
% \setmainfont{TeX Gyre Pagella} % 英文缺省字体:替代 Times New Roman
% \setsansfont{TeX Gyre Heros} % 英文无衬线字体: 替代 Arial
% \setmonofont{Courier Std} % 等宽字体:Adobe Courier Std
\setmainfont{Nimbus Roman No9 L} % 英文缺省字体:替代 Times New Roman
\setsansfont{Nimbus Sans L} % 英文无衬线字体: 替代 Arial
\setmonofont{Nimbus Mono} % 等宽字体:Nimbus Mono
% we also define \song \kai for our habit
\setCJKfamilyfont{song}{Adobe Song Std}
\newcommand*{\song}{\CJKfamily{song}}
\setCJKfamilyfont{kaiti}{Adobe Kaiti Std}
\newcommand*{\kai}{\CJKfamily{kaiti}}
% define \li (隶书) \hei (黑体) \fs (仿宋)
\setCJKfamilyfont{lishu}{LiSu}
\newcommand*{\li}{\CJKfamily{lishu}}
\setCJKfamilyfont{heiti}{Source Han Sans SC} % Adobe Heiti Std
\newcommand*{\hei}{\CJKfamily{heiti}}
\setCJKfamilyfont{fs}{Adobe Fangsong Std}
\newcommand*{\fs}{\CJKfamily{fs}}
% 中文字体声明 (cf. ctex.sty),
% ??:现在的设定缩进的方法很笨,等以后再想法改进
% \baselinskip usually is set to 1.2 times of font size by experience
\newcommand{\chuhao}{
\fontsize{42.16}{50.59}\selectfont
\setlength{\parindent}{84.32pt plus 1pt minus 0pt}} % 初号字 42bp
\newcommand{\xiaochu}{
\fontsize{36.14}{43.36}\selectfont
\setlength{\parindent}{72.28pt plus 1pt minus 0pt}} % 小初号 36bp
\newcommand{\yihao}{
\fontsize{26.10}{31.32}\selectfont
\setlength{\parindent}{52.20pt plus 1pt minus 0pt}} % 一号字 26bp
\newcommand{\xiaoyi}{
\fontsize{24.09}{28.91}\selectfont
\setlength{\parindent}{48.18pt plus 1pt minus 0pt}} % 小一号 24bp
\newcommand{\erhao}{
\fontsize{22.08}{26.50}\selectfont
\setlength{\parindent}{44.16pt plus 1pt minus 0pt}} % 二号字 22bp
\newcommand{\xiaoer}{
\fontsize{18.07}{21.68}\selectfont
\setlength{\parindent}{36.14pt plus 1pt minus 0pt}} % 小二号 18bp
\newcommand{\sanhao}{
\fontsize{16.06}{19.27}\selectfont
\setlength{\parindent}{32.12pt plus 1pt minus 0pt}} % 三号字 16bp
\newcommand{\xiaosan}{
\fontsize{15.06}{18.07}\selectfont
\setlength{\parindent}{30.12pt plus 1pt minus 0pt}} % 小三号 15bp
\newcommand{\sihao}{
\fontsize{14.05}{16.86}\selectfont
\setlength{\parindent}{28.10pt plus 1pt minus 0pt}} % 四号字 14bp
\newcommand{\xiaosi}{
\fontsize{12.05}{14.45}\selectfont
\setlength{\parindent}{24.10pt plus 1pt minus 0pt}} % 小四号 12bp
\newcommand{\wuhao}{
\fontsize{10.54}{12.65}\selectfont
\setlength{\parindent}{21.08pt plus 1pt minus 0pt}} % 五号字10.5bp
\newcommand{\xiaowu}{
\fontsize{9.03}{10.84}\selectfont
\setlength{\parindent}{18.06pt plus 1pt minus 0pt}} % 小五号 9bp
\newcommand{\liuhao}{
\fontsize{7.53}{9.03}\selectfont
\setlength{\parindent}{15.06pt plus 1pt minus 0pt}} % 六号字 7.5bp
\newcommand{\xiaoliu}{
\fontsize{6.52}{7.83}\selectfont
\setlength{\parindent}{13.04pt plus 1pt minus 0pt}} % 小六号 6.5bp
\newcommand{\qihao}{
\fontsize{5.52}{6.62}\selectfont
\setlength{\parindent}{11.04pt plus 1pt minus 0pt}} % 七号字 5.5bp
\newcommand{\bahao}{
\fontsize{5.02}{6.02}\selectfont
\setlength{\parindent}{10.04pt plus 1pt minus 0pt}} % 八号字 5bp
%% redefine following font size commands to accompany Chinese
%\let\@normalsize\normalsize
%\def\normalsize{\@normalsize \xiaosi}
%\let\@samll\small
%\def\samll{\@samll \wuhao}
%\let\@footnotesize\footnotesize
%\def\footnotesize{\@footnotesize \xiaowu}
%\let\scriptsize\liuhao
%\let\tiny\xiaoliu
%\let\large\sihao
%\let\Large\xiaosan
%\let\LARGE\sanhao
%\let\huge\xiaoer
%\let\Huge\erhao
%
%% math font size declartion (cf. ctex.sty)
%% \DeclareMathSizes{<t-size>}{<mt-size>}{<s-size>}{<ss-size>}
%\DeclareMathSizes{5.02}{5.02}{5}{5}
%\DeclareMathSizes{5.52}{5.52}{5}{5}
%\DeclareMathSizes{6.52}{6.52}{5}{5}
%\DeclareMathSizes{7.53}{7.53}{5}{5}
%\DeclareMathSizes{9.03}{9.03}{6}{5}
%\DeclareMathSizes{10.54}{10.54}{7}{5}
%\DeclareMathSizes{12.05}{12.05}{8}{6}
%\DeclareMathSizes{14.05}{14.05}{10.54}{7.53}
%\DeclareMathSizes{15.06}{15.06}{12.05}{9.03}
%\DeclareMathSizes{16.06}{16.06}{14.05}{10.54}
%\DeclareMathSizes{18.07}{18.07}{15.06}{12.05}
%\DeclareMathSizes{22.08}{22.08}{16.06}{14.05}
%\DeclareMathSizes{24.09}{24.09}{18.07}{15.06}
%\DeclareMathSizes{26.10}{26.10}{22.08}{16.06}
%\DeclareMathSizes{36.14}{36.14}{24.09}{18.07}
%\DeclareMathSizes{42.16}{42.16}{26.10}{22.08}
% 首行缩进:需根据正文字号微调
%\setlength{\parindent}{24pt plus 1pt minus 0pt}
\def\@jlu@normalStretch{1.6}
% 行间距,\baselinestretch MUST be followed by fontsize change command
\newcommand{\defaultfont}{%
\renewcommand{\baselinestretch}{\@jlu@normalStretch}
\small \normalsize
}
% 段间距
\setlength{\parskip}{0.1em}
% 中文标点模式:banjiao, quanjiao, kaiming, CCT, hangmobanjiao, plain
\punctstyle{quanjiao}
% 假粗体,尽量不要用
\newcommand{\textBF}[1]{%
\special{pdf:literal direct 2 Tr 0.3 w}
#1%
\special{pdf:literal direct 0 Tr 0 w}
}
% 使首段也缩进
\RequirePackage{indentfirst}
% 控制行距段距等
\RequirePackage{setspace}
\RequirePackage{amsmath,amssymb,amsfonts}
% 表格使用booktabs格式
\RequirePackage{booktabs}
% 表格中跨行或列的单元格
\RequirePackage{multirow}
\RequirePackage{tikz}
% 使满足『图的位置应该在相关文字说明之后,随文排』要求
% 不过这样真的不太好看
\RequirePackage{flafter}
% 图题使用悬挂格式
\RequirePackage[format=hang,font=normalsize]{caption}
% 使用黑体
\captionsetup{textfont=sf,labelfont=sf}
% 图题的行距
\captionsetup[figure]{font={stretch=\@jlu@normalStretch}}
\captionsetup[table]{font={stretch=\@jlu@normalStretch}} %% change 1.2 as you like
% 在图号和图题名之间空一个汉字的位置。
\DeclareCaptionLabelSeparator{oneChineseCharacter}{\hphantom{空}}
\captionsetup{labelsep=oneChineseCharacter}
\RequirePackage{algorithm}
\newcommand{\jluRightMark}{{\@jlu@cUniversity}{\@jlu@degreeName}学位论文}
% 设定页眉页脚
\RequirePackage{fancyhdr}
% redefine pagestyle: plain
\fancypagestyle{plain}{%
\fancyhf{}
\fancyhead[CO]{\kai \xiaowu \centering \leftmark}
\fancyhead[CE]{\kai \xiaowu \centering \jluRightMark}%
\fancyfoot{}
\fancyfoot[RO,LE]{\xiaowu \thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
}
%\renewcommand{\sectionmark}[1]{\markboth{}{\emph{\thesection~#1}}}
%\renewcommand{\subsectionmark}[1]{}% Remove \subsection from header
\RequirePackage{ifthen}
\RequirePackage{xstring}
\RequirePackage{calc}
%\RequirePackage[user,abspage]{zref}
\RequirePackage{xassoccnt}
\NewTotalDocumentCounter{totalrealpage}
\NewDocumentCounter{realpage}
\DeclareAssociatedCounters{page}{realpage,totalrealpage}
\AtBeginDocument{%
\setcounter{realpage}{1}
}
\RequirePackage{xspace}
% 设置参考文献引用
\RequirePackage[sort&compress]{gbt7714}
%\RequirePackage{natbib}
\RequirePackage{hypernat} % must be loaded after natbib and hyperref
\RequirePackage{titlesec} % 重定义章节标题
\RequirePackage{titletoc}
\RequirePackage[nottoc,notlot,notlof]{tocbibind}
%\RequirePackage{graphicx}
%\RequirePackage{textcomp}
%\RequirePackage{xcolor}
\RequirePackage{fancybox} % produce box-contained texts
%\RequirePackage[inline]{enumitem}
%\RequirePackage{url}
%\RequirePackage{afterpage}
%\RequirePackage{relsize}
\RequirePackage[titletoc]{appendix}
\renewcommand\contentsname{目\qquad 录}
\renewcommand\listfigurename{插\quad 图\quad 目\quad 录}
\renewcommand\listtablename{表\quad 格\quad 目\quad 录}
\renewcommand\bibname{参考文献}
\renewcommand\indexname{索\qquad 引}
\renewcommand{\figurename}{图}
\renewcommand{\tablename}{表}
\newcommand{\equationname}{公式}
\renewcommand{\ALG@name}{算法}
\renewcommand{\appendixname}{附录}
\newcommand{\CJKprechaptername}{第}
\newcommand{\CJKpostchaptername}{章}
\newcommand{\CJKchaptername}{\CJKprechaptername\;\thechapter\;\CJKpostchaptername}
% 添加定义 \appendix
\let\@appendix\appendix
\renewcommand{\appendix}{\@appendix%
\renewcommand{\CJKprechaptername}{\appendixname}
\renewcommand{\CJKpostchaptername}{\relax}
}
\setcounter{secnumdepth}{5} % 章节深度
\setcounter{tocdepth}{3} % 目录深度
% 重定义章标题,以向目录行写入“第1章”而不是“1”
% redefine \@chapter[#1]#2
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}{%
\protect\numberline{%
\CJKprechaptername\thechapter\CJKpostchaptername} #1
}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
%\chaptermark{#1}%
%直接采用奇页章标题,偶页学校标题
\markboth{\CJKchaptername \hspace{1em}#1}{\jluRightMark}
%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi
}
% end redefine \@chapter
% redefine \tableofcontents to add PDF bookmark
\renewcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\sffamily\mdseries\contentsname}%
% 目录奇偶页页眉皆为“目 录”
\markboth{\contentsname}{\contentsname}%
%
\pdfbookmark[0]{\contentsname}{tableofcontents}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
% end redefine \tableofcontents
% \titleformat{<command>}[<shape>]{<format>}{<label>}{<sep>}{<before>}[<after>]
% format: 标题格式,label:标题号(如第1章),
% sep:标题号与标题文字之间距离,before: 标题文字之前运行的代码
% \titlespacing{command}{<leftskip>}{<beforeskip>}{<afterskip>}
% leftskip:左缩进;beforeskip:标题前垂直空白;afterskip:标题与正文间垂直空白
\titleformat{\chapter}{\centering\rmfamily\bfseries\sanhao}{\CJKchaptername}{1em}{}
\titlespacing{\chapter}{0pt}{8pt}{16pt}
\titleformat{\section}{\rmfamily\bfseries\xiaosan}{\thesection}{0.5em}{}
\titlespacing{\section}{0pt}{13pt}{13pt}
\titleformat{\subsection}{\rmfamily\bfseries\sihao}{\thesubsection}{0.5em}{}
\titlespacing{\subsection}{0pt}{8pt}{7pt}
\titleformat{\subsubsection}{\rmfamily\bfseries\xiaosi}{\thesubsubsection}{0.5em}{}
\titlespacing{\subsubsection}{0pt}{3pt}{2pt}{}
% set up the tableofcontents format
%
% \dottedcontents{<section>}[<left>]{<above>}{<label width>}{<leader width>}
% indent=<left> - <label width>
% <lable width> and space bewteen entries (\vspace) need fine tuning.
\dottedcontents{chapter}[0pt+4.8em]
{\vspace{0.3em}\sihao\noindent}{4.0em}{5pt}
\dottedcontents{section}[18pt+2.0em]
{\vspace{0.3em}\sihao\noindent}{2.0em}{5pt}
\dottedcontents{subsection}[36pt+2.7em]
{\vspace{0.3em}\sihao\noindent}{2.7em}{5pt}
\dottedcontents{subsubsection}[54pt+3.4em]
{\vspace{0.3em}\sihao\noindent}{3.4em}{5pt}
% 重定义方程,图,表的序号为方程2.1、图2.1、表2.1
\renewcommand{\theequation}{%
\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
\renewcommand{\thefigure}{%
\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
\renewcommand{\thetable}{%
\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
% modify \autoref to use Chinese name mark to refer to
\renewcommand{\figureautorefname}{\figurename}
\renewcommand{\tableautorefname}{\tablename}
\renewcommand{\equationautorefname}{\equationname}
\newcommand{\algorithmautorefname}{算法}
% 定义一个公式环境,使公式和标号之间加一串点
\newenvironment{dotsequation}
{
\begin{equation}
\hskip \textwidth minus \textwidth
}
{
\hskip 0.5em \leaders\hbox{.}\hskip \textwidth minus \textwidth
\end{equation}
}
\newlinechar=`\^^J
% 以下是一些输出书脊的命令,但模板中没用到
% 使用举例
%\jluPrintVerticallyOneByOne{2.5cm}{-1em}{吉林大学学位论文模板}{0.2in}{}
%\jluPrintVerticallySentence{2.5cm}{-15.5em}{\rotatebox{-90}{\jluthesisVersion}}
%\jluprintVerticallyOneByOne{2.5cm}{-16.5em}{示例}{0.2in}{}
% 封面上竖向输出书脊,用于手动输出
% 使用tikz控制绝对位置,大概使用textpos也可以达到同样效果?
\newcommand{\jluPrintVerticallySentence}[3]{
\begin{tikzpicture}[remember picture,overlay,shift=(current page.north west)]
\def\xZeroPointTmpVar{#1}
\def\yZeroPointTmpVar{#2}
\node (x) at (\xZeroPointTmpVar, \yZeroPointTmpVar) {#3};
\end{tikzpicture}
}
% 封面上竖向输出书脊,用于手动输出
% 逐字输出,使用#4控制间隔,#5用来控制字体修饰(如粗体)
\newcommand{\jluPrintVerticallyOneByOne}[5]{
\begin{tikzpicture}[remember picture,overlay,shift=(current page.north west)]
\StrLen{#3}[\stringLenTmpVar]
\def\stepTmpVar{#4}
\def\xZeroPointTmpVar{#1}
\def\yZeroPointTmpVar{#2}
\foreach \x in {1,...,\stringLenTmpVar}
{
\node (\x) at (\xZeroPointTmpVar, \yZeroPointTmpVar-\stepTmpVar*\x) {#5 \StrMid{#3}{\x}{\x}};
}
\end{tikzpicture}
}
%\newfontfamily\testfont{Nimbus Sans L}
%\newcommand{\ifchineseelse}[3]{
% \setbox0=\hbox{\testfont #1}
% \ifdim\ht0=0pt #3 \else #2 \fi
%}
%% 中文直接输出,英文旋转-90度
%\newcommand{\jluPrintSpineCharacter}[1]{
% \ifchineseelse{#1}{
% #1
% }{
% \rotatebox{-90}{#1}
% }
%}
%
%
%\newcommand{\jluPrintSpine}[1]{
% \StrLen{#1}[\stringLenTmpVar]
% \foreach \x in {1,...,\stringLenTmpVar}{
% \jluPrintSpineCharacter{ \StrMid{#1}{\x}{\x} }
% }
%}
% 用于在中英混杂的书脊中输出汉字, 逐个汉字输出,每个都逆时针旋转90度
\newcommand{\jluPrintSpineChinese}[1]{
\StrLen{#1}[\stringLenTmpVar]
\foreach \x in {1,...,\stringLenTmpVar}
{\rotatebox[origin=c]{90}{\mdseries \StrMid{#1}{\x}{\x}} }
}
% 输出中英混杂的书脊用,整体顺时针旋转90度,从而使英文输出纵向,同时需逆时针旋转每个汉字输出中文
\newcommand{\jluPrintSpine}[1]{
\rotatebox[origin=c]{-90}{#1}
}
\newcommand{\@jlu@printSpine}{
\linespread{1}\selectfont
%\vspace*{4cm}\par
\vspace*{\fill}\par
% 标题、姓名、校名
\mdseries {\@jlu@cSpineTitle} \par\vfill
\bfseries \@jlu@cAuthor \par\vfill
\if@jlu@phd \song \else\kai\fi
\mdseries \@jlu@cUniversity \par
%\vspace*{3cm}
\vspace*{\fill}\par
}
\RequirePackage{afterpage}
\RequirePackage{typearea}
\@jlu@setGeometry
% 打印双页封面
\newcommand{\@jlu@makeTwoSideCover}{%
%
\afterpage{
\KOMAoptions{paper=460mm:297mm,paper=landscape,pagesize}
\areaset{\paperwidth}{\paperheight}
\newlength{\colpad}
\newcommand{\colwidth}{1em}
\newcommand{\miniwidth}{210mm}
\newcommand{\logowidth}{64mm}
\newcommand{\vertmargin}{\fill}
% 减号前的值为论文厚度。
% 80克的A4纸的厚度是0.104mm
\setlength{\colpad}{(10mm - \colwidth) / 2}
\,
\pagebreak
\centering{
\begin{minipage}[b][\textheight][b]{\miniwidth}
\vspace*{\fill}\par
%\centerline{\includegraphics[width = \logowidth]{logo.png}}\par
\hspace{\logowidth}
\vspace*{\fill}\par
\end{minipage}
\hspace{\colpad}
\begin{minipage}[b][\textheight][b]{\colwidth}
\if@jlu@manualPrintSpine
\,
\@jlu@manualSpine
\else
\@jlu@printSpine
\fi
\end{minipage}
\hspace{\colpad}
\begin{minipage}[b][\textheight][b]{\miniwidth}
\vspace*{\fill}\par
\centering
\begin{minipage}[b][\textheight - 2.32in][b]{\miniwidth - 2.5in}
\@jlu@printCoverPage
\end{minipage}
\vspace*{\fill}\par
\end{minipage}
}
\clearpage
\KOMAoptions{paper=A4,pagesize}
\recalctypearea
}
\@jlu@setGeometry
}
% 定义前言部分
\newcommand{\jluMakeCover}{{%
\@jlu@setHref
\pagestyle{empty}
\if@jlu@twoSideCover
\@jlu@makeTwoSideCover
\else
\if@jlu@md
\@jlu@printCoverPage
\else
\if@jlu@phdplain
\@jlu@printCoverPage
\else
\@jlu@printCoverPage
\fi
\fi
\pagebreak
\fi
%
\begin{titlepage}
\pagestyle{empty}
%\let\cleardoublepage\clearpage
% 扉页
\if@jlu@md
\@jlu@printTitlePage
\else
\if@jlu@phdplain
\@jlu@printTitlePage
\else
\@jlu@printTitlePage
\fi
\fi
% 原创声明
\@jlu@printOriginalStatementPage
% 授权声明
\@jlu@printContributionStatementPage
\cleardoublepage
\pagestyle{plain}
% 摘要
\@jlu@printCAbstract
\cleardoublepage
\@jlu@printEAbstract
\end{titlepage}
}}