├── Biblio ├── gb7714-2015.bbx ├── gb7714-2015.cbx ├── gb7714-2015ay.bbx ├── gb7714-2015ay.cbx ├── gbt7714-author-year.bst ├── gbt7714-numerical.bst └── ref.bib ├── Img ├── c06h06.png ├── oaspl_a.pdf ├── oaspl_b.pdf ├── oaspl_c.pdf ├── oaspl_d.pdf └── ucas_logo.pdf ├── README.md ├── Style ├── artracom.sty ├── artratex.sty ├── ucasthesis.cfg └── ucasthesis.cls ├── Tex ├── Appendix.tex ├── Backmatter.tex ├── Chap_Guide.tex ├── Chap_Intro.tex ├── Frontinfo.tex ├── Frontmatter.tex ├── Mainmatter.tex └── Prematter.tex ├── Thesis.tex ├── artratex.bat ├── artratex.sh └── 模板使用说明.pdf /Biblio/gb7714-2015.cbx: -------------------------------------------------------------------------------- 1 | %% 2 | %% --------------------------------------------------------------- 3 | %% biblatex-gb7714-2015 --- A biblatex implementation of the 4 | %% GBT7714-2015 citation style,numerical sequence 5 | %% Maintained by huzhenzhen 6 | %% E-mail: hzzmail@163.com 7 | %% Released under the LaTeX Project Public License v1.3c or later 8 | %% --------------------------------------------------------------- 9 | %% 10 | \def\versionofgbtstyle{2020/07/21 v1.0v} 11 | \ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style] 12 | 13 | % 14 | % 加载标准样式 15 | % 16 | \RequireCitationStyle{numeric-comp} %numeric 17 | 18 | 19 | % 20 | % 选项设置 21 | % 22 | \ExecuteBibliographyOptions{ 23 | autocite = superscript , 24 | autopunct = true , 25 | %sorting = none , 26 | maxcitenames=1, 27 | mincitenames=1, 28 | } 29 | 30 | %textcite标注命令中的标点设置 31 | %\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}% 32 | 33 | % 34 | %将连续3篇文献压缩改为连续2篇文献压缩 35 | % 36 | %该宏的目的是抛弃压缩内部的编号,而仅输出最后一个编号,主要通过cbx@tempcnta来控制 37 | %一般情况下cbx@tempcnta为0,所以该宏不输出任何内容。当cbx@tempcnta在cite:comp:comp宏中更改变大后 38 | %说明开始进入需要压缩的范围,当到压缩终点时,cbx@tempcnta必然大于1,则输出内容。 39 | %修改第二行的数字1为0即可将默认的3个开始压缩变为2个开始压缩。 40 | \renewbibmacro*{cite:dump}{% 41 | \ifnumgreater{\value{cbx@tempcnta}}{0}% 42 | {\ifnumgreater{\value{cbx@tempcnta}}{0}%1改为0,可以将压缩起始3个编号改为2个编号 43 | {\bibrangedash}% 44 | {\multicitedelim}% 45 | \bibhyperref[\cbx@lastkey]{% 46 | \ifdef\cbx@lastprefix% 47 | {\printtext[labelprefix]{\cbx@lastprefix}}% 48 | {}% 49 | \printtext[labelnumber]{\cbx@lastnumber}}}% 50 | {}% 51 | \setcounter{cbx@tempcnta}{0}% 52 | \global\undef\cbx@lastprefix} 53 | 54 | % 55 | % 定义一个上标方括号wrapper 56 | % 57 | \newcommand*\mkbibsuperbracket[1]{% 58 | \mkbibsuperscript{\mkbibbrackets{#1}}% 59 | } 60 | 61 | % 修改postnote的输出格式 62 | \DeclareFieldFormat{postnote}{#1} 63 | 64 | % 65 | % 重定义cite命令 66 | % 67 | % 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} 68 | % v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 69 | \DeclareCiteCommand{\cite}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 70 | {[\usebibmacro{cite:init}% 71 | \usebibmacro{prenote}} 72 | {\usebibmacro{citeindex}% 73 | \usebibmacro{cite:comp}} 74 | {} 75 | {\usebibmacro{cite:dump}]% 76 | \printfield{postnote}} 77 | % v1.0p 以前用的方式 78 | %\DeclareCiteCommand{\cite}[\mkbibsuperbracket]%利用mkbibsuperbracket添加方括号 79 | % {\usebibmacro{cite:init}% 80 | % \usebibmacro{prenote}} 81 | % {\usebibmacro{citeindex}% 82 | % \usebibmacro{cite:comp}} 83 | % {} 84 | % {\usebibmacro{cite:dump}% 85 | % \usebibmacro{postnote}} 86 | 87 | % 88 | % 定义upcite命令 89 | % 20180604,v1.0l,hzz 90 | % 20190409,v1.0r,hzz 91 | % 方法:对supercite增加[] 92 | \newrobustcmd*{\upcite}{% 93 | \cite} 94 | 95 | % 96 | % 重定义parencite命令,以满足标签带页码的国标要求 97 | % 98 | \DeclareCiteCommand{\parencite}%[\mkbibbrackets] 99 | {[\usebibmacro{cite:init}%] 100 | \usebibmacro{prenote}}% 101 | {\usebibmacro{citeindex}% 102 | \usebibmacro{cite:comp}} 103 | {} 104 | {%[ 105 | \usebibmacro{cite:dump}]% 106 | \mkbibsuperscript{\printfield{postnote}}} 107 | 108 | % 109 | % 新定义pagescite命令,以满足标签带页码的国标要求 110 | % 111 | % 原理方法: 112 | % 1.新增页码输出宏 113 | \newbibmacro*{postpages}{% 114 | \iffieldundef{postnote} 115 | {\printfield[postnote]{pages}} 116 | {\printfield{postnote}}} 117 | % 2.新增\pagescite引用命令 118 | \DeclareCiteCommand{\pagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 119 | {[\usebibmacro{cite:init}%]直接添加方括号 120 | \usebibmacro{prenote}% 121 | } 122 | {\usebibmacro{citeindex}% 123 | \usebibmacro{cite:comp}} 124 | {} 125 | {\usebibmacro{cite:dump}]% 126 | \usebibmacro{postpages}} 127 | 128 | % 129 | % 定义yearpagescite,为与ay样式兼容,等同于\pagescite 130 | % 131 | \DeclareCiteCommand{\yearpagescite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 132 | {[\usebibmacro{cite:init}%]直接添加方括号 133 | \usebibmacro{prenote}% 134 | } 135 | {\usebibmacro{citeindex}% 136 | \usebibmacro{cite:comp}} 137 | {} 138 | {\usebibmacro{cite:dump}]% 139 | \usebibmacro{postpages}} 140 | 141 | % 142 | % 定义\yearcite命令,为与ay样式兼容,且提供不输出页码的标签格式, 143 | % 144 | % 原理方法:等同于\pagescite,但不要页码 145 | \DeclareCiteCommand{\yearcite}[\mkbibsuperscript]%\mkbibbrackets,仍然用上标 146 | {[\usebibmacro{cite:init}%]直接添加方括号 147 | \usebibmacro{prenote}% 148 | } 149 | {\usebibmacro{citeindex}% 150 | \usebibmacro{cite:comp}} 151 | {} 152 | {\usebibmacro{cite:dump}]} 153 | 154 | % 155 | % 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 156 | % 20180427,v1.0k,增加,hzz 157 | % gb7714样式新定义的命令都把cite放到最后,比如前面的pagescite,yearcite,这里的\authornumcite 158 | % 区别于biblatex定义的命令都把cite放到前面,比如citeauthor等。 159 | %见numeric.CBX 160 | \newbibmacro*{cite}{% 161 | \printtext[bibhyperref]{% 162 | \printfield{labelprefix}% 163 | \printfield{labelnumber}% 164 | \ifbool{bbx:subentry} 165 | {\printfield{entrysetcount}} 166 | {}}} 167 | %见numeric.CBX,\DeclareCiteCommand{\cite}, 168 | \DeclareCiteCommand{\authornumcite}%[\mkbibsuperscript] 169 | {\usebibmacro{prenote}} 170 | {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace 171 | {\renewcommand*{\andothersdelim}{\addspace}}% 172 | \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% 173 | \usebibmacro{cite}}}} 174 | {\multicitedelim} 175 | {\mkbibsuperscript{\printfield{postnote}}} 176 | 177 | 178 | % 179 | % 增加如下多个命令 180 | % 20190409,v1.0r,hzz 181 | % 方法:利用newcommand或newrobustcmd命令进行定义 182 | % 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 183 | %\DeclareCiteCommand{\citet}% 184 | % {\usebibmacro{prenote}} 185 | % {\iffieldequalstr{userf}{cn}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace 186 | % {\renewcommand*{\andothersdelim}{\addspace}}% 187 | % \printnames{labelname}\mkbibsuperscript{\mkbibbrackets{\usebibmacro{citeindex}% 188 | % \usebibmacro{cite}}}} 189 | % {\multicitedelim} 190 | % {\mkbibsuperscript{\printfield{postnote}}} 191 | 192 | % 193 | % 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 194 | % 20200721,v1.0v,hzz 195 | % 方法:利用textcite命令进行定义 196 | % 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的上标和页码形式 197 | \newbool{cbx:incitet} 198 | \global\booltrue{cbx:incitet} 199 | 200 | \newbibmacro*{citet}{% 201 | \iffieldequals{namehash}{\cbx@lasthash}% 202 | {\usebibmacro{cite:comp}}% 203 | {\usebibmacro{cite:dump}% 204 | \ifbool{cbx:parens}% 205 | {\mkbibsuperscript{\printtext{\bibclosebracket}}\global\boolfalse{cbx:parens}}% 206 | {}% 207 | \iffirstcitekey 208 | {} 209 | {\textcitedelim}% 210 | \usebibmacro{cite:init}% 211 | \ifnameundef{labelname} 212 | {\printfield[citetitle]{labeltitle}} 213 | {\printnames{labelname}}% 214 | \setunit*{\printdelim{namelabeldelim}}% 215 | \mkbibsuperscript{\printtext{\bibopenbracket}\global\booltrue{cbx:parens}% 216 | \ifnumequal{\value{citecount}}{1} 217 | {\usebibmacro{prenote}}% 218 | {}% 219 | \usebibmacro{cite:comp}% 220 | \stepcounter{textcitecount}% 221 | \savefield{namehash}{\cbx@lasthash}}}} 222 | 223 | \DeclareCiteCommand{\cbx@textcite}% 224 | {\usebibmacro{cite:init}}% 225 | {\usebibmacro{citeindex}% 226 | \ifbool{cbx:incitet}{\usebibmacro{citet}}{\usebibmacro{textcite}}% 227 | }% 228 | {}% 229 | {\ifbool{cbx:incitet}{\mkbibsuperscript{\usebibmacro{cite:dump}\usebibmacro{postnote}}}% 230 | {\usebibmacro{cite:dump}\usebibmacro{postnote}}% 231 | \ifbool{cbx:parens}% 232 | {\ifbool{cbx:incitet}{\mkbibsuperscript{\bibclosebracket}}{\bibclosebracket}% 233 | \global\boolfalse{cbx:parens}}% 234 | {}} 235 | 236 | \newrobustcmd{\cbx@citet@init}[2]{% 237 | \global\booltrue{cbx:incitet}% 238 | \setcounter{textcitetotal}{0}% 239 | \setcounter{textcitecount}{0}% 240 | \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} 241 | 242 | \renewrobustcmd{\cbx@textcite@init}[2]{% 243 | \global\boolfalse{cbx:incitet}% 244 | \setcounter{textcitetotal}{0}% 245 | \setcounter{textcitecount}{0}% 246 | \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} 247 | 248 | \DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] 249 | {\gdef\cbx@savedkeys{}% 250 | \citetrackerfalse% 251 | \pagetrackerfalse% 252 | \DeferNextCitekeyHook% 253 | \usebibmacro{cite:init}} 254 | {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} 255 | {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% 256 | \global\clearfield{multipostnote}} 257 | {}% 258 | \xappto\cbx@savedkeys{\thefield{entrykey},}% 259 | \iffieldequals{namehash}{\cbx@lasthash} 260 | {} 261 | {\stepcounter{textcitetotal}% 262 | \savefield{namehash}{\cbx@lasthash}}} 263 | {} 264 | {\protected@xappto\cbx@savedcites{% 265 | [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} 266 | 267 | 268 | 269 | \DeclareCiteCommand{\citep}[\mkbibsuperscript]%利用mkbibsuperbracket添加方括号 270 | {[\usebibmacro{cite:init}% 271 | \usebibmacro{prenote}} 272 | {\usebibmacro{citeindex}% 273 | \usebibmacro{cite:comp}} 274 | {} 275 | {\usebibmacro{cite:dump}]% 276 | \printfield{postnote}} 277 | 278 | \newrobustcmd*{\citetns}% 279 | {\textcite} 280 | 281 | \newrobustcmd*{\citepns}% 282 | {\parencite} 283 | 284 | \newrobustcmd*{\inlinecite}% 285 | {\parencite} 286 | 287 | % 288 | % 增加如下复数的命令,以符合biblatex的复数命令习惯 289 | % 20190430,v1.0r,hzz 290 | % citec和citecs命令是实现了[1]-[3]这样的压缩形式。 291 | % authornumcites是常用命令authornumcite的复数形式 292 | \DeclareFieldFormat{labelbracket}{\mkbibbrackets{#1}} 293 | 294 | \newbibmacro*{citec:comp:comp}{% 295 | \ifboolexpr{ 296 | ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) 297 | or 298 | test {\iffieldequals{labelprefix}{\cbx@lastprefix}} 299 | } 300 | {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} 301 | {\savefield{entrykey}{\cbx@lastkey}% 302 | \savefield{labelnumber}{\cbx@lastnumber}% 303 | \addtocounter{cbx@tempcnta}{1}} 304 | {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1} 305 | {} 306 | {\usebibmacro{citec:dump}% 307 | \ifnumgreater{\value{cbx@tempcntb}}{-1} 308 | {\multicitedelim} 309 | {}% 310 | \printtext[bibhyperref]{% 311 | \printfield{labelprefix}% 312 | \printtext[labelbracket]{\printfield{labelnumber}}}}}} 313 | {\usebibmacro{cite:comp:end}}% 314 | \setcounter{cbx@tempcntb}{\thefield{labelnumber}}% 315 | \savefield{labelprefix}{\cbx@lastprefix}} 316 | 317 | \newbibmacro*{citec:comp}{% 318 | \addtocounter{cbx@tempcntb}{1}% 319 | \iffieldundef{shorthand} 320 | {\ifbool{bbx:subentry} 321 | {\iffieldundef{entrysetcount} 322 | {\usebibmacro{citec:comp:comp}} 323 | {\usebibmacro{cite:comp:inset}}} 324 | {\usebibmacro{citec:comp:comp}}} 325 | {\usebibmacro{cite:comp:shand}}} 326 | 327 | \newbibmacro*{citec:dump}{% 328 | \ifnumgreater{\value{cbx@tempcnta}}{0} 329 | {\ifnumgreater{\value{cbx@tempcnta}}{1} 330 | {\bibrangedash} 331 | {\multicitedelim}% 332 | \bibhyperref[\cbx@lastkey]{% 333 | \ifdef\cbx@lastprefix 334 | {\printtext[labelprefix]{\cbx@lastprefix}} 335 | {}% 336 | \printtext[labelbracket]{\cbx@lastnumber}}}%labelnumber 337 | {}% 338 | \setcounter{cbx@tempcnta}{0}% 339 | \global\undef\cbx@lastprefix} 340 | 341 | %\DeclareCiteCommand{\citec}[\mkbibsuperscript]%[\mkbibbrackets] 342 | % {\usebibmacro{cite:init}% 343 | % \usebibmacro{prenote}} 344 | % {\usebibmacro{citeindex}% 345 | % \usebibmacro{citec:comp}} 346 | % {} 347 | % {\usebibmacro{citec:dump}% 348 | % \usebibmacro{postnote}} 349 | 350 | %上面这个用于非压缩情况,这里考虑了压缩的情况 351 | \DeclareCiteCommand{\citec}[\mkbibsuperscript]% 352 | {\ifnumless{\value{multicitecount}}{2} 353 | {\usebibmacro{cite:init}% 354 | \usebibmacro{prenote}} 355 | {\iffieldundef{prenote} 356 | {\iffieldundef{postnote} 357 | {} 358 | {\usebibmacro{citec:dump}% 359 | \usebibmacro{cite:init}% 360 | \setunit{\multicitedelim}}} 361 | {\usebibmacro{citec:dump}% 362 | \usebibmacro{cite:init}% 363 | \setunit{\multicitedelim}% 364 | \usebibmacro{prenote}}}} 365 | {\usebibmacro{citeindex}% 366 | \usebibmacro{citec:comp}} 367 | {} 368 | {\ifboolexpr{ test {\ifnumequal{\value{multicitecount}}{\value{multicitetotal}}} 369 | or not test {\iffieldundef{postnote}}} 370 | {\usebibmacro{citec:dump}% 371 | \usebibmacro{postnote}} 372 | {}} 373 | 374 | \DeclareMultiCiteCommand{\citecs}[\mkbibsuperscript]{\citec}{} 375 | 376 | \DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} 377 | -------------------------------------------------------------------------------- /Biblio/gb7714-2015ay.cbx: -------------------------------------------------------------------------------- 1 | %% 2 | %% --------------------------------------------------------------- 3 | %% biblatex-gb7714-2015 --- A biblatex implementation of the 4 | %% GBT7714-2015 citation style,author year sequence 5 | %% Maintained by huzhenzhen 6 | %% E-mail: hzzmail@163.com 7 | %% Released under the LaTeX Project Public License v1.3c or later 8 | %% --------------------------------------------------------------- 9 | %% 10 | \def\versionofgbtstyle{2020/07/21 v1.0v} 11 | \ProvidesFile{gb7714-2015ay.cbx}[\versionofgbtstyle biblatex citation style] 12 | 13 | % 14 | % 加载标准样式 15 | % 16 | \RequireCitationStyle{authoryear-comp} 17 | 18 | \ExecuteBibliographyOptions{ 19 | %autocite = superscript , 20 | %autopunct = true , 21 | %sorting = none , 22 | maxcitenames=1, 23 | mincitenames=1, 24 | uniquename=init,%因为使用了名字缩写选项,所以需要设置uniquename=init而不是full避免冲突 25 | uniquelist=minyear 26 | } 27 | 28 | % 29 | % 选项设置,针对3.7以下版本 30 | % 31 | % 原理方法:labeldate用于控制是否给引用标签提供日期的成分 32 | \defversion{3.4}{cbxopt}{ 33 | \ExecuteBibliographyOptions{ 34 | labeldate=true 35 | } 36 | } 37 | 38 | % 39 | % 选项设置,针对3.7以上版本 40 | % 41 | % 原理方法:labeldateparts用于控制是否给引用标签提供日期的成分 42 | \defversion{3.7}{cbxopt}{ 43 | \ExecuteBibliographyOptions{ 44 | labeldateparts=true 45 | } 46 | } 47 | 48 | \ifboolexpr{%选择选项设置 49 | test {\iftoggle{iftlfive}}%biblatex<=3.2 50 | or 51 | test {\iftoggle{iftlsix}}%3.3<=biblatex<=3.6 52 | }{\switchversion{3.4}{cbxopt}}{\switchversion{3.7}{cbxopt}}%else: biblatex>=3.7 53 | 54 | 55 | \ifboolexpr{%兼容cite:labelyear+extrayear 56 | test {\iftoggle{iftlfive}}%biblatex<=3.2 57 | or 58 | test {\iftoggle{iftlsix}}%3.3<=biblatex<=3.6 59 | or 60 | test {\iftoggle{iftlseven}}%3.7=biblatex 61 | }{\newbibmacro{cite:labeldate+extradate}{\usebibmacro{cite:labelyear+extrayear}}}{}%else: biblatex>3.7 62 | 63 | %textcite标注命令中的标点设置,注意只针对textcite命令。 64 | % v-old 65 | % v1.0t,20200320,hzz,修改如下 66 | % 在cbx中增加标注中的nameyeardelim标点定义,避免bbx使用其它样式时出现问题 67 | % 同时设置textcite的nameyeardelim为一个短空格,似乎原来直接连上去的不够美观 68 | \DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\addcomma\space}%\addcomma\space 69 | \DeclareDelimFormat[textcite]{nameyeardelim}{\addthinspace}%\addcomma\space 70 | \DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% 71 | \AtEveryCitekey{% 72 | \iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace 73 | {\renewcommand*{\andothersdelim}{\addspace}}% 74 | } 75 | 76 | 77 | % 78 | % 重定义cite:label,针对biblatex3.8以上版本set条目集的标注(引用)标签 79 | % 80 | % 原理方法:当条目是set时,v3.8以上版本,都没有有用的信息(区别于3.7以下版本set复制第一个成员的信息), 81 | % 于是利用entrykey来给出标签,那么就要set的条目关键字是需要的字符串,注意字符串中间不能有空格 82 | \renewbibmacro*{cite:label}{% 83 | \iffieldundef{label}% 84 | {\iffieldundef{labeltitle}{\printtext[bibhyperref]{\printfield{entrykey}}}%entrykey 85 | {\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}}}}% 86 | {\printtext[bibhyperref]{\printfield{label}}}} 87 | 88 | % 89 | % 重定义cite命令 90 | % 91 | % 方法:\DeclareCiteCommand{\cite}[\mkbibparens]{precode}{loopcode}{sepcode}{postcode} 92 | % v1.0p版后将cite的处理方式修改为类似pagescite,而不再使用biblatex的标准方式 93 | \DeclareCiteCommand{\cite} 94 | {\usebibmacro{cite:init}% 95 | \renewbibmacro*{postnote}{% 96 | \iffieldundef{postnote}% 97 | {}% 98 | {\thefield{postnote}}}% 99 | (\usebibmacro{prenote}}%) 100 | {\usebibmacro{citeindex}% 101 | \usebibmacro{cite}} 102 | {} 103 | {%( 104 | )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} 105 | } 106 | 107 | % 108 | % 定义upcite命令 109 | % 20180604,v1.0l,hzz 110 | % 20190409,v1.0r,hzz 111 | % 方法:与cite命令相同 112 | \newrobustcmd*{\upcite}{% 113 | \cite} 114 | 115 | % 116 | % 重定义parencite命令 117 | % 118 | %\DeclareCiteCommand{\parencite} 119 | % {\usebibmacro{cite:init}% 120 | % \renewbibmacro*{postnote}{% 121 | % \iffieldundef{postnote}% 122 | % {}% 123 | % {\nopunct% 124 | % \printfield{postnote}}}% 125 | % (\usebibmacro{prenote}}%) 126 | % {\usebibmacro{citeindex}% 127 | % \usebibmacro{cite}} 128 | % {} 129 | % {%( 130 | % )\mkbibsuperscript{\usebibmacro{postnote}}} 131 | 132 | 133 | % 134 | % 新定义pagescite命令,以满足标签带页码的国标要求 135 | % 136 | % 原理方法: 137 | % 新增\pagescite引用命令 138 | \DeclareCiteCommand{\pagescite} 139 | {\usebibmacro{cite:init}% 140 | \renewbibmacro*{postnote}{% 141 | \iffieldundef{postnote}% 142 | {\thefield{pages}}% 143 | {\thefield{postnote}}}% 144 | (\usebibmacro{prenote}%) 145 | }% 146 | {\usebibmacro{citeindex}% 147 | \usebibmacro{cite}} 148 | {} 149 | {%( 150 | )\mkbibsuperscript{\usebibmacro{postnote}}} 151 | 152 | % 153 | % 定义yearpagescite,用于当文中作者已经存在,需要页码和年份的情况 154 | % 155 | % 原理:增加一个命令yearpagescite 156 | % 参考biblatex.DEF中的\DeclareCiteCommand*{\citeyear}命令 157 | \DeclareCiteCommand{\yearpagescite} 158 | {\usebibmacro{cite:init}% 159 | \renewbibmacro*{postnote}{% 160 | \iffieldundef{postnote}% 161 | {\thefield{pages}}% 162 | {\thefield{postnote}}}% 163 | \printtext{(}\usebibmacro{prenote}}% 164 | {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} 165 | {\multicitedelim}% 166 | {\printtext{)}\textsuperscript{\usebibmacro{postnote}}} 167 | 168 | % 169 | % 定义yearcite,用于当文中作者已经存在,仅需要年份的情况 170 | % 171 | % 原理:增加一个命令yearcite 172 | \DeclareCiteCommand{\yearcite}%仅输出年份,不要页码 173 | {\usebibmacro{cite:init}% 174 | \printtext{(}\usebibmacro{prenote}}% 175 | {\usebibmacro{cite:labeldate+extradate}}%\printfield{year}\printfield{extrayear} 176 | {\multicitedelim}% 177 | {\printtext{)}} 178 | 179 | % 180 | % 定义\authornumcite命令,输出作者信息,然后在后面带上顺序编码 181 | % 20180427,v1.0k,增加,hzz 182 | % 20190409,v1.0r,hzz 183 | % 为与顺序编码制兼容,增加了命令,定义与citet相同 184 | \newbibmacro*{citeta}{% 185 | \iffieldundef{shorthand} 186 | {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} 187 | {\usebibmacro{cite:label}% 188 | \setunit{\printdelim{nonameyeardelim}}% 189 | \usebibmacro{cite:labeldate+extradate}% 190 | \usebibmacro{cite:reinit}} 191 | {\iffieldequals{namehash}{\cbx@lasthash} 192 | {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND 193 | \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)} 194 | {\setunit{\addcomma}% 195 | \usebibmacro{cite:extradate}} 196 | {\setunit{\compcitedelim}% 197 | \usebibmacro{cite:labeldate+extradate}% 198 | \savefield{labelyear}{\cbx@lastyear}}} 199 | {\printnames{labelname}% 200 | %\setunit{\printdelim{nameyeardelim}}% 201 | (\usebibmacro{cite:labeldate+extradate})% 202 | \savefield{namehash}{\cbx@lasthash}% 203 | \savefield{labelyear}{\cbx@lastyear}}}} 204 | {\usebibmacro{cite:shorthand}% 205 | \usebibmacro{cite:reinit}}% 206 | \setunit{\multicitedelim}} 207 | 208 | \DeclareCiteCommand{\authornumcite}% 209 | {\usebibmacro{cite:init}% 210 | \renewbibmacro*{postnote}{% 211 | \iffieldundef{postnote}% 212 | {}% 213 | {\thefield{postnote}}}% 214 | \usebibmacro{prenote}}% 215 | {\usebibmacro{citeindex}% 216 | \usebibmacro{citeta}} 217 | {} 218 | {\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} 219 | } 220 | 221 | % 222 | % 增加如下多个命令 223 | % 20190409,v1.0r,hzz 224 | % 方法:利用newcommand或newrobustcmd命令进行定义 225 | % 注意\citet和\citep命令之所以不用newrobustcmd,是为避免加载natbib模块后产生冲突 226 | 227 | %同\authornumcite 228 | %\DeclareCiteCommand{\citet}% 229 | % {\usebibmacro{cite:init}% 230 | % \renewbibmacro*{postnote}{% 231 | % \iffieldundef{postnote}% 232 | % {}% 233 | % {\thefield{postnote}}}% 234 | % \usebibmacro{prenote}}% 235 | % {\usebibmacro{citeindex}% 236 | % \usebibmacro{citet}} 237 | % {} 238 | % {%( 239 | % )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} 240 | % } 241 | 242 | 243 | % 244 | % 重定义citet,因为前面与\authornumcite同定义的命令无法正确处理多个bibtexkey同时给出的压缩情况 245 | % 20200721,v1.0v,hzz 246 | % 方法:利用textcite命令进行定义 247 | % 基本利用textcite命令来写citet,仅利用bool{cbx:incitet}做判断,进而处理不同的页码形式 248 | \newbool{cbx:incitet} 249 | \newbibmacro*{citet:postnote}{% 250 | \ifthenelse{\value{multicitecount}=\value{multicitetotal}} 251 | {\setunit{}% 252 | \printtext{% 253 | \ifbool{cbx:parens} 254 | {\bibcloseparen\global\boolfalse{cbx:parens}} 255 | {}}} 256 | {\setunit{% 257 | \ifbool{cbx:parens} 258 | {\bibcloseparen\global\boolfalse{cbx:parens}} 259 | {}% 260 | \textcitedelim}}% 261 | \renewbibmacro*{postnote}{% 262 | \iffieldundef{postnote}% 263 | {}% 264 | {\thefield{postnote}}}% 265 | \mkbibsuperscript{\usebibmacro{postnote}}% 266 | } 267 | 268 | \DeclareCiteCommand{\cbx@textcite} 269 | {\usebibmacro{cite:init}} 270 | {\usebibmacro{citeindex}% 271 | \usebibmacro{textcite}} 272 | {} 273 | {\ifbool{cbx:incitet}{\usebibmacro{citet:postnote}}{\usebibmacro{textcite:postnote}}} 274 | 275 | \newrobustcmd{\cbx@citet@init}[2]{% 276 | \global\booltrue{cbx:incitet}% 277 | \setcounter{textcitetotal}{0}% 278 | \setcounter{textcitecount}{0}% 279 | \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} 280 | 281 | \renewrobustcmd{\cbx@textcite@init}[2]{% 282 | \global\boolfalse{cbx:incitet}% 283 | \setcounter{textcitetotal}{0}% 284 | \setcounter{textcitecount}{0}% 285 | \def\cbx@savedcites{#1}#2\cbx@savedcites\empty} 286 | 287 | \DeclareCiteCommand{\citet}[\cbx@citet@init\cbx@textcite] 288 | {\gdef\cbx@savedkeys{}% 289 | \citetrackerfalse% 290 | \pagetrackerfalse% 291 | \DeferNextCitekeyHook% 292 | \usebibmacro{cite:init}} 293 | {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0} 294 | {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}% 295 | \global\clearfield{multipostnote}} 296 | {}% 297 | \xappto\cbx@savedkeys{\thefield{entrykey},}% 298 | \iffieldequals{namehash}{\cbx@lasthash} 299 | {} 300 | {\stepcounter{textcitetotal}% 301 | \savefield{namehash}{\cbx@lasthash}}} 302 | {} 303 | {\protected@xappto\cbx@savedcites{% 304 | [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}} 305 | 306 | \let\cbx@citets@init\cbx@citet@init 307 | \pretocmd{\cbx@citets@init}{\UseNextMultiCiteHook}{}{} 308 | \DeclareMultiCiteCommand{\citets}[\cbx@citets@init\cbx@textcites]{\citet}{} 309 | 310 | %同cite 311 | \DeclareCiteCommand{\citep} 312 | {\usebibmacro{cite:init}% 313 | \renewbibmacro*{postnote}{% 314 | \iffieldundef{postnote}% 315 | {}% 316 | {\thefield{postnote}}}% 317 | (\usebibmacro{prenote}}%) 318 | {\usebibmacro{citeindex}% 319 | \usebibmacro{cite}} 320 | {} 321 | {%( 322 | )\mkbibsuperscript{\usebibmacro{postnote}}%\usebibmacro{postnote} 323 | } 324 | 325 | \newrobustcmd*{\citetns}% 326 | {\textcite} 327 | 328 | \newrobustcmd*{\citepns}% 329 | {\parencite} 330 | 331 | \newrobustcmd*{\inlinecite}% 332 | {\parencite} 333 | 334 | 335 | % 336 | % 增加如下复数的命令,以符合biblatex的复数命令习惯 337 | % 20190430,v1.0r,hzz 338 | % citec和citecs命令是为了兼容顺序编码制。 339 | % authornumcites是常用命令authornumcite的复数形式 340 | \newrobustcmd*{\citec}% 341 | {\cite} 342 | 343 | \DeclareMultiCiteCommand{\citecs}[]{\cite}{\multicitedelim} 344 | 345 | \DeclareMultiCiteCommand{\authornumcites}[]{\authornumcite}{\multicitedelim} 346 | -------------------------------------------------------------------------------- /Biblio/gbt7714-numerical.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-numerical.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,numerical') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/06/08 v2.0.2 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | INTEGERS { 24 | citation.et.al.min 25 | citation.et.al.use.first 26 | bibliography.et.al.min 27 | bibliography.et.al.use.first 28 | uppercase.name 29 | terms.in.macro 30 | year.after.author 31 | period.after.author 32 | sentence.case.title 33 | link.title 34 | title.in.journal 35 | show.mark 36 | space.before.mark 37 | show.medium.type 38 | slash.for.extraction 39 | in.booktitle 40 | short.journal 41 | italic.journal 42 | bold.journal.volume 43 | show.missing.address.publisher 44 | only.start.page 45 | show.urldate 46 | show.url 47 | show.doi 48 | show.preprint 49 | show.note 50 | show.english.translation 51 | } 52 | 53 | FUNCTION {load.config} 54 | { 55 | #2 'citation.et.al.min := 56 | #1 'citation.et.al.use.first := 57 | #4 'bibliography.et.al.min := 58 | #3 'bibliography.et.al.use.first := 59 | #0 'uppercase.name := 60 | #1 'terms.in.macro := 61 | #0 'year.after.author := 62 | #1 'period.after.author := 63 | #1 'sentence.case.title := 64 | #0 'link.title := 65 | #1 'title.in.journal := 66 | #1 'show.mark := 67 | #1 'space.before.mark := 68 | #1 'show.medium.type := 69 | #1 'slash.for.extraction := 70 | #0 'in.booktitle := 71 | #0 'short.journal := 72 | #0 'italic.journal := 73 | #0 'bold.journal.volume := 74 | #0 'show.missing.address.publisher := 75 | #0 'only.start.page := 76 | #1 'show.urldate := 77 | #1 'show.url := 78 | #1 'show.doi := 79 | #0 'show.preprint := 80 | #0 'show.note := 81 | #0 'show.english.translation := 82 | } 83 | 84 | ENTRY 85 | { address 86 | archivePrefix 87 | author 88 | booktitle 89 | date 90 | doi 91 | edition 92 | editor 93 | eprint 94 | eprinttype 95 | howpublished 96 | institution 97 | journal 98 | journaltitle 99 | key 100 | langid 101 | language 102 | location 103 | mark 104 | medium 105 | note 106 | number 107 | organization 108 | pages 109 | publisher 110 | school 111 | series 112 | shortjournal 113 | title 114 | translation 115 | translator 116 | url 117 | urldate 118 | volume 119 | year 120 | } 121 | { entry.lang entry.is.electronic is.pure.electronic entry.numbered } 122 | { label extra.label sort.label short.list entry.mark entry.url } 123 | 124 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 125 | 126 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 127 | 128 | INTEGERS { charptr len } 129 | 130 | FUNCTION {init.state.consts} 131 | { #0 'before.all := 132 | #1 'mid.sentence := 133 | #2 'after.sentence := 134 | #3 'after.block := 135 | #4 'after.slash := 136 | #3 'lang.zh := 137 | #4 'lang.ja := 138 | #1 'lang.en := 139 | #2 'lang.ru := 140 | #0 'lang.other := 141 | } 142 | 143 | FUNCTION {bbl.anonymous} 144 | { entry.lang lang.zh = 145 | { "佚名" } 146 | { "Anon" } 147 | if$ 148 | } 149 | 150 | FUNCTION {bbl.space} 151 | { entry.lang lang.zh = 152 | { "\ " } 153 | { " " } 154 | if$ 155 | } 156 | 157 | FUNCTION {bbl.and} 158 | { "" } 159 | 160 | FUNCTION {bbl.et.al} 161 | { entry.lang lang.zh = 162 | { "等" } 163 | { entry.lang lang.ja = 164 | { "他" } 165 | { entry.lang lang.ru = 166 | { "идр" } 167 | { "et~al." } 168 | if$ 169 | } 170 | if$ 171 | } 172 | if$ 173 | } 174 | 175 | FUNCTION {citation.and} 176 | { terms.in.macro 177 | { "{\biband}" } 178 | 'bbl.and 179 | if$ 180 | } 181 | 182 | FUNCTION {citation.et.al} 183 | { terms.in.macro 184 | { "{\bibetal}" } 185 | 'bbl.et.al 186 | if$ 187 | } 188 | 189 | FUNCTION {bbl.colon} { ": " } 190 | 191 | FUNCTION {bbl.wide.space} { "\quad " } 192 | 193 | FUNCTION {bbl.slash} { "//\allowbreak " } 194 | 195 | FUNCTION {bbl.sine.loco} 196 | { entry.lang lang.zh = 197 | { "[出版地不详]" } 198 | { "[S.l.]" } 199 | if$ 200 | } 201 | 202 | FUNCTION {bbl.sine.nomine} 203 | { entry.lang lang.zh = 204 | { "[出版者不详]" } 205 | { "[s.n.]" } 206 | if$ 207 | } 208 | 209 | FUNCTION {bbl.sine.loco.sine.nomine} 210 | { entry.lang lang.zh = 211 | { "[出版地不详: 出版者不详]" } 212 | { "[S.l.: s.n.]" } 213 | if$ 214 | } 215 | 216 | FUNCTION {not} 217 | { { #0 } 218 | { #1 } 219 | if$ 220 | } 221 | 222 | FUNCTION {and} 223 | { 'skip$ 224 | { pop$ #0 } 225 | if$ 226 | } 227 | 228 | FUNCTION {or} 229 | { { pop$ #1 } 230 | 'skip$ 231 | if$ 232 | } 233 | 234 | STRINGS { s t } 235 | 236 | FUNCTION {output.nonnull} 237 | { 's := 238 | output.state mid.sentence = 239 | { ", " * write$ } 240 | { output.state after.block = 241 | { add.period$ write$ 242 | newline$ 243 | "\newblock " write$ 244 | } 245 | { output.state before.all = 246 | 'write$ 247 | { output.state after.slash = 248 | { bbl.slash * write$ 249 | newline$ 250 | } 251 | { add.period$ " " * write$ } 252 | if$ 253 | } 254 | if$ 255 | } 256 | if$ 257 | mid.sentence 'output.state := 258 | } 259 | if$ 260 | s 261 | } 262 | 263 | FUNCTION {output} 264 | { duplicate$ empty$ 265 | 'pop$ 266 | 'output.nonnull 267 | if$ 268 | } 269 | 270 | FUNCTION {output.after} 271 | { 't := 272 | duplicate$ empty$ 273 | 'pop$ 274 | { 's := 275 | output.state mid.sentence = 276 | { t * write$ } 277 | { output.state after.block = 278 | { add.period$ write$ 279 | newline$ 280 | "\newblock " write$ 281 | } 282 | { output.state before.all = 283 | 'write$ 284 | { output.state after.slash = 285 | { bbl.slash * write$ } 286 | { add.period$ " " * write$ } 287 | if$ 288 | } 289 | if$ 290 | } 291 | if$ 292 | mid.sentence 'output.state := 293 | } 294 | if$ 295 | s 296 | } 297 | if$ 298 | } 299 | 300 | FUNCTION {output.check} 301 | { 't := 302 | duplicate$ empty$ 303 | { pop$ "empty " t * " in " * cite$ * warning$ } 304 | 'output.nonnull 305 | if$ 306 | } 307 | 308 | FUNCTION {fin.entry} 309 | { add.period$ 310 | write$ 311 | show.english.translation entry.lang lang.zh = and 312 | { ")" 313 | write$ 314 | } 315 | 'skip$ 316 | if$ 317 | newline$ 318 | } 319 | 320 | FUNCTION {new.block} 321 | { output.state before.all = 322 | 'skip$ 323 | { output.state after.slash = 324 | 'skip$ 325 | { after.block 'output.state := } 326 | if$ 327 | } 328 | if$ 329 | } 330 | 331 | FUNCTION {new.sentence} 332 | { output.state after.block = 333 | 'skip$ 334 | { output.state before.all = 335 | 'skip$ 336 | { output.state after.slash = 337 | 'skip$ 338 | { after.sentence 'output.state := } 339 | if$ 340 | } 341 | if$ 342 | } 343 | if$ 344 | } 345 | 346 | FUNCTION {new.slash} 347 | { output.state before.all = 348 | 'skip$ 349 | { slash.for.extraction 350 | { after.slash 'output.state := } 351 | { after.block 'output.state := } 352 | if$ 353 | } 354 | if$ 355 | } 356 | 357 | FUNCTION {new.block.checka} 358 | { empty$ 359 | 'skip$ 360 | 'new.block 361 | if$ 362 | } 363 | 364 | FUNCTION {new.block.checkb} 365 | { empty$ 366 | swap$ empty$ 367 | and 368 | 'skip$ 369 | 'new.block 370 | if$ 371 | } 372 | 373 | FUNCTION {new.sentence.checka} 374 | { empty$ 375 | 'skip$ 376 | 'new.sentence 377 | if$ 378 | } 379 | 380 | FUNCTION {new.sentence.checkb} 381 | { empty$ 382 | swap$ empty$ 383 | and 384 | 'skip$ 385 | 'new.sentence 386 | if$ 387 | } 388 | 389 | FUNCTION {field.or.null} 390 | { duplicate$ empty$ 391 | { pop$ "" } 392 | 'skip$ 393 | if$ 394 | } 395 | 396 | FUNCTION {italicize} 397 | { duplicate$ empty$ 398 | { pop$ "" } 399 | { "\textit{" swap$ * "}" * } 400 | if$ 401 | } 402 | 403 | INTEGERS { byte second.byte } 404 | 405 | INTEGERS { char.lang tmp.lang } 406 | 407 | STRINGS { tmp.str } 408 | 409 | FUNCTION {get.str.lang} 410 | { 'tmp.str := 411 | lang.other 'tmp.lang := 412 | #1 'charptr := 413 | tmp.str text.length$ #1 + 'len := 414 | { charptr len < } 415 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 416 | byte #128 < 417 | { charptr #1 + 'charptr := 418 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 419 | { lang.en 'char.lang := } 420 | { lang.other 'char.lang := } 421 | if$ 422 | } 423 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 424 | byte #224 < 425 | { charptr #2 + 'charptr := 426 | byte #207 > byte #212 < and 427 | byte #212 = second.byte #176 < and or 428 | { lang.ru 'char.lang := } 429 | { lang.other 'char.lang := } 430 | if$ 431 | } 432 | { byte #240 < 433 | { charptr #3 + 'charptr := 434 | byte #227 > byte #234 < and 435 | { lang.zh 'char.lang := } 436 | { byte #227 = 437 | { second.byte #143 > 438 | { lang.zh 'char.lang := } 439 | { second.byte #128 > second.byte #132 < and 440 | { lang.ja 'char.lang := } 441 | { lang.other 'char.lang := } 442 | if$ 443 | } 444 | if$ 445 | } 446 | { byte #239 = 447 | second.byte #163 > second.byte #172 < and and 448 | { lang.zh 'char.lang := } 449 | { lang.other 'char.lang := } 450 | if$ 451 | } 452 | if$ 453 | } 454 | if$ 455 | } 456 | { charptr #4 + 'charptr := 457 | byte #240 = second.byte #159 > and 458 | { lang.zh 'char.lang := } 459 | { lang.other 'char.lang := } 460 | if$ 461 | } 462 | if$ 463 | } 464 | if$ 465 | } 466 | if$ 467 | char.lang tmp.lang > 468 | { char.lang 'tmp.lang := } 469 | 'skip$ 470 | if$ 471 | } 472 | while$ 473 | tmp.lang 474 | } 475 | 476 | FUNCTION {check.entry.lang} 477 | { author field.or.null 478 | title field.or.null * 479 | get.str.lang 480 | } 481 | 482 | STRINGS { entry.langid } 483 | 484 | FUNCTION {set.entry.lang} 485 | { "" 'entry.langid := 486 | language empty$ not 487 | { language 'entry.langid := } 488 | 'skip$ 489 | if$ 490 | langid empty$ not 491 | { langid 'entry.langid := } 492 | 'skip$ 493 | if$ 494 | entry.langid empty$ 495 | { check.entry.lang } 496 | { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or 497 | { lang.en } 498 | { entry.langid "chinese" = 499 | { lang.zh } 500 | { entry.langid "japanese" = 501 | { lang.ja } 502 | { entry.langid "russian" = 503 | { lang.ru } 504 | { check.entry.lang } 505 | if$ 506 | } 507 | if$ 508 | } 509 | if$ 510 | } 511 | if$ 512 | } 513 | if$ 514 | 'entry.lang := 515 | } 516 | 517 | FUNCTION {set.entry.numbered} 518 | { type$ "patent" = 519 | type$ "standard" = or 520 | type$ "techreport" = or 521 | { #1 'entry.numbered := } 522 | { #0 'entry.numbered := } 523 | if$ 524 | } 525 | 526 | INTEGERS { nameptr namesleft numnames name.lang } 527 | 528 | FUNCTION {format.name} 529 | { "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 530 | t "others" = 531 | { bbl.et.al } 532 | { t get.str.lang 'name.lang := 533 | name.lang lang.en = 534 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 535 | uppercase.name 536 | { "u" change.case$ } 537 | 'skip$ 538 | if$ 539 | t #1 "{, jj}" format.name$ * 540 | } 541 | { t #1 "{ll}{ff}" format.name$ } 542 | if$ 543 | } 544 | if$ 545 | } 546 | 547 | FUNCTION {format.names} 548 | { 's := 549 | #1 'nameptr := 550 | s num.names$ 'numnames := 551 | "" 552 | numnames 'namesleft := 553 | { namesleft #0 > } 554 | { s nameptr format.name bbl.et.al = 555 | numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or 556 | { ", " * 557 | bbl.et.al * 558 | #1 'namesleft := 559 | } 560 | { nameptr #1 > 561 | { namesleft #1 = bbl.and "" = not and 562 | { bbl.and * } 563 | { ", " * } 564 | if$ 565 | } 566 | 'skip$ 567 | if$ 568 | s nameptr format.name * 569 | } 570 | if$ 571 | nameptr #1 + 'nameptr := 572 | namesleft #1 - 'namesleft := 573 | } 574 | while$ 575 | } 576 | 577 | FUNCTION {format.key} 578 | { empty$ 579 | { key field.or.null } 580 | { "" } 581 | if$ 582 | } 583 | 584 | FUNCTION {format.authors} 585 | { author empty$ not 586 | { author format.names } 587 | { "empty author in " cite$ * warning$ 588 | "" 589 | } 590 | if$ 591 | } 592 | 593 | FUNCTION {format.editors} 594 | { editor empty$ 595 | { "" } 596 | { editor format.names } 597 | if$ 598 | } 599 | 600 | FUNCTION {format.translators} 601 | { translator empty$ 602 | { "" } 603 | { translator format.names 604 | entry.lang lang.zh = 605 | { translator num.names$ #3 > 606 | { "译" * } 607 | { ", 译" * } 608 | if$ 609 | } 610 | 'skip$ 611 | if$ 612 | } 613 | if$ 614 | } 615 | 616 | FUNCTION {format.full.names} 617 | {'s := 618 | #1 'nameptr := 619 | s num.names$ 'numnames := 620 | numnames 'namesleft := 621 | { namesleft #0 > } 622 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 623 | t get.str.lang 'name.lang := 624 | name.lang lang.en = 625 | { t #1 "{vv~}{ll}" format.name$ 't := } 626 | { t #1 "{ll}{ff}" format.name$ 't := } 627 | if$ 628 | nameptr #1 > 629 | { 630 | namesleft #1 > 631 | { ", " * t * } 632 | { 633 | numnames #2 > 634 | { "," * } 635 | 'skip$ 636 | if$ 637 | t "others" = 638 | { " et~al." * } 639 | { " and " * t * } 640 | if$ 641 | } 642 | if$ 643 | } 644 | 't 645 | if$ 646 | nameptr #1 + 'nameptr := 647 | namesleft #1 - 'namesleft := 648 | } 649 | while$ 650 | } 651 | 652 | FUNCTION {author.editor.full} 653 | { author empty$ 654 | { editor empty$ 655 | { "" } 656 | { editor format.full.names } 657 | if$ 658 | } 659 | { author format.full.names } 660 | if$ 661 | } 662 | 663 | FUNCTION {author.full} 664 | { author empty$ 665 | { "" } 666 | { author format.full.names } 667 | if$ 668 | } 669 | 670 | FUNCTION {editor.full} 671 | { editor empty$ 672 | { "" } 673 | { editor format.full.names } 674 | if$ 675 | } 676 | 677 | FUNCTION {make.full.names} 678 | { type$ "book" = 679 | type$ "inbook" = 680 | or 681 | 'author.editor.full 682 | { type$ "collection" = 683 | type$ "proceedings" = 684 | or 685 | 'editor.full 686 | 'author.full 687 | if$ 688 | } 689 | if$ 690 | } 691 | 692 | FUNCTION {output.bibitem} 693 | { newline$ 694 | "\bibitem[" write$ 695 | label ")" * 696 | make.full.names duplicate$ short.list = 697 | { pop$ } 698 | { * } 699 | if$ 700 | 's := 701 | s text.length$ 'charptr := 702 | { charptr #0 > s charptr #1 substring$ "[" = not and } 703 | { charptr #1 - 'charptr := } 704 | while$ 705 | charptr #0 > 706 | { "{" s * "}" * } 707 | { s } 708 | if$ 709 | "]{" * write$ 710 | cite$ write$ 711 | "}" write$ 712 | newline$ 713 | "" 714 | before.all 'output.state := 715 | } 716 | 717 | FUNCTION {change.sentence.case} 718 | { entry.lang lang.en = 719 | { "t" change.case$ } 720 | 'skip$ 721 | if$ 722 | } 723 | 724 | FUNCTION {add.link} 725 | { url empty$ not 726 | { "\href{" url * "}{" * swap$ * "}" * } 727 | { doi empty$ not 728 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 729 | 'skip$ 730 | if$ 731 | } 732 | if$ 733 | } 734 | 735 | FUNCTION {format.title} 736 | { title empty$ 737 | { "" } 738 | { title 739 | sentence.case.title 740 | 'change.sentence.case 741 | 'skip$ 742 | if$ 743 | entry.numbered number empty$ not and 744 | { bbl.colon * number * } 745 | 'skip$ 746 | if$ 747 | link.title 748 | 'add.link 749 | 'skip$ 750 | if$ 751 | } 752 | if$ 753 | } 754 | 755 | FUNCTION {tie.or.space.connect} 756 | { duplicate$ text.length$ #3 < 757 | { "~" } 758 | { " " } 759 | if$ 760 | swap$ * * 761 | } 762 | 763 | FUNCTION {either.or.check} 764 | { empty$ 765 | 'pop$ 766 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 767 | if$ 768 | } 769 | 770 | FUNCTION {is.digit} 771 | { duplicate$ empty$ 772 | { pop$ #0 } 773 | { chr.to.int$ 774 | duplicate$ "0" chr.to.int$ < 775 | { pop$ #0 } 776 | { "9" chr.to.int$ > 777 | { #0 } 778 | { #1 } 779 | if$ 780 | } 781 | if$ 782 | } 783 | if$ 784 | } 785 | 786 | FUNCTION {is.number} 787 | { 's := 788 | s empty$ 789 | { #0 } 790 | { s text.length$ 'charptr := 791 | { charptr #0 > 792 | s charptr #1 substring$ is.digit 793 | and 794 | } 795 | { charptr #1 - 'charptr := } 796 | while$ 797 | charptr not 798 | } 799 | if$ 800 | } 801 | 802 | FUNCTION {format.volume} 803 | { volume empty$ not 804 | { volume is.number 805 | { entry.lang lang.zh = 806 | { "第 " volume * " 卷" * } 807 | { "volume" volume tie.or.space.connect } 808 | if$ 809 | } 810 | { volume } 811 | if$ 812 | } 813 | { "" } 814 | if$ 815 | } 816 | 817 | FUNCTION {format.number} 818 | { number empty$ not 819 | { number is.number 820 | { entry.lang lang.zh = 821 | { "第 " number * " 册" * } 822 | { "number" number tie.or.space.connect } 823 | if$ 824 | } 825 | { number } 826 | if$ 827 | } 828 | { "" } 829 | if$ 830 | } 831 | 832 | FUNCTION {format.volume.number} 833 | { volume empty$ not 834 | { format.volume } 835 | { format.number } 836 | if$ 837 | } 838 | 839 | FUNCTION {format.title.vol.num} 840 | { title 841 | sentence.case.title 842 | 'change.sentence.case 843 | 'skip$ 844 | if$ 845 | entry.numbered 846 | { number empty$ not 847 | { bbl.colon * number * } 848 | 'skip$ 849 | if$ 850 | } 851 | { format.volume.number 's := 852 | s empty$ not 853 | { bbl.colon * s * } 854 | 'skip$ 855 | if$ 856 | } 857 | if$ 858 | } 859 | 860 | FUNCTION {format.series.vol.num.title} 861 | { format.volume.number 's := 862 | series empty$ not 863 | { series 864 | sentence.case.title 865 | 'change.sentence.case 866 | 'skip$ 867 | if$ 868 | entry.numbered 869 | { bbl.wide.space * } 870 | { bbl.colon * 871 | s empty$ not 872 | { s * bbl.wide.space * } 873 | 'skip$ 874 | if$ 875 | } 876 | if$ 877 | title * 878 | sentence.case.title 879 | 'change.sentence.case 880 | 'skip$ 881 | if$ 882 | entry.numbered number empty$ not and 883 | { bbl.colon * number * } 884 | 'skip$ 885 | if$ 886 | } 887 | { format.title.vol.num } 888 | if$ 889 | link.title 890 | 'add.link 891 | 'skip$ 892 | if$ 893 | } 894 | 895 | FUNCTION {format.booktitle.vol.num} 896 | { booktitle 897 | entry.numbered 898 | 'skip$ 899 | { format.volume.number 's := 900 | s empty$ not 901 | { bbl.colon * s * } 902 | 'skip$ 903 | if$ 904 | } 905 | if$ 906 | } 907 | 908 | FUNCTION {format.series.vol.num.booktitle} 909 | { format.volume.number 's := 910 | series empty$ not 911 | { series bbl.colon * 912 | entry.numbered not s empty$ not and 913 | { s * bbl.wide.space * } 914 | 'skip$ 915 | if$ 916 | booktitle * 917 | } 918 | { format.booktitle.vol.num } 919 | if$ 920 | in.booktitle 921 | { duplicate$ empty$ not entry.lang lang.en = and 922 | { "In: " swap$ * } 923 | 'skip$ 924 | if$ 925 | } 926 | 'skip$ 927 | if$ 928 | } 929 | 930 | FUNCTION {remove.period} 931 | { 't := 932 | "" 's := 933 | { t empty$ not } 934 | { t #1 #1 substring$ 'tmp.str := 935 | tmp.str "." = not 936 | { s tmp.str * 's := } 937 | 'skip$ 938 | if$ 939 | t #2 global.max$ substring$ 't := 940 | } 941 | while$ 942 | s 943 | } 944 | 945 | FUNCTION {abbreviate} 946 | { remove.period 947 | 't := 948 | t "l" change.case$ 's := 949 | "" 950 | s "physical review letters" = 951 | { "Phys Rev Lett" } 952 | 'skip$ 953 | if$ 954 | 's := 955 | s empty$ 956 | { t } 957 | { pop$ s } 958 | if$ 959 | } 960 | 961 | FUNCTION {format.journal} 962 | { "" 963 | short.journal 964 | { shortjournal empty$ not 965 | { shortjournal * } 966 | { journal empty$ not 967 | { journal * abbreviate } 968 | { journaltitle empty$ not 969 | { journaltitle * abbreviate } 970 | 'skip$ 971 | if$ 972 | } 973 | if$ 974 | } 975 | if$ 976 | } 977 | { journal empty$ not 978 | { journal * } 979 | { journaltitle empty$ not 980 | { journaltitle * } 981 | 'skip$ 982 | if$ 983 | } 984 | if$ 985 | } 986 | if$ 987 | duplicate$ empty$ not 988 | { italic.journal entry.lang lang.en = and 989 | 'italicize 990 | 'skip$ 991 | if$ 992 | } 993 | 'skip$ 994 | if$ 995 | } 996 | 997 | FUNCTION {set.entry.mark} 998 | { entry.mark empty$ not 999 | 'pop$ 1000 | { mark empty$ not 1001 | { pop$ mark 'entry.mark := } 1002 | { 'entry.mark := } 1003 | if$ 1004 | } 1005 | if$ 1006 | } 1007 | 1008 | FUNCTION {format.mark} 1009 | { show.mark 1010 | { entry.mark 1011 | show.medium.type 1012 | { medium empty$ not 1013 | { "/" * medium * } 1014 | { entry.is.electronic 1015 | { "/OL" * } 1016 | 'skip$ 1017 | if$ 1018 | } 1019 | if$ 1020 | } 1021 | 'skip$ 1022 | if$ 1023 | 'entry.mark := 1024 | space.before.mark 1025 | { " [" entry.mark * "]" * } 1026 | { "[" entry.mark * "]" * } 1027 | if$ 1028 | } 1029 | { "" } 1030 | if$ 1031 | } 1032 | 1033 | FUNCTION {num.to.ordinal} 1034 | { duplicate$ text.length$ 'charptr := 1035 | duplicate$ charptr #1 substring$ 's := 1036 | s "1" = 1037 | { "st" * } 1038 | { s "2" = 1039 | { "nd" * } 1040 | { s "3" = 1041 | { "rd" * } 1042 | { "th" * } 1043 | if$ 1044 | } 1045 | if$ 1046 | } 1047 | if$ 1048 | } 1049 | 1050 | FUNCTION {format.edition} 1051 | { edition empty$ 1052 | { "" } 1053 | { edition is.number 1054 | { entry.lang lang.zh = 1055 | { edition " 版" * } 1056 | { edition num.to.ordinal " ed." * } 1057 | if$ 1058 | } 1059 | { entry.lang lang.en = 1060 | { edition change.sentence.case 's := 1061 | s "Revised" = s "Revised edition" = or 1062 | { "Rev. ed." } 1063 | { s " ed." *} 1064 | if$ 1065 | } 1066 | { edition } 1067 | if$ 1068 | } 1069 | if$ 1070 | } 1071 | if$ 1072 | } 1073 | 1074 | FUNCTION {format.publisher} 1075 | { publisher empty$ not 1076 | { publisher } 1077 | { school empty$ not 1078 | { school } 1079 | { organization empty$ not 1080 | { organization } 1081 | { institution empty$ not 1082 | { institution } 1083 | { "" } 1084 | if$ 1085 | } 1086 | if$ 1087 | } 1088 | if$ 1089 | } 1090 | if$ 1091 | } 1092 | 1093 | FUNCTION {format.address.publisher} 1094 | { address empty$ not 1095 | { address } 1096 | { location empty$ not 1097 | { location } 1098 | { "" } 1099 | if$ 1100 | } 1101 | if$ 1102 | duplicate$ empty$ not 1103 | { format.publisher empty$ not 1104 | { bbl.colon * format.publisher * } 1105 | { entry.is.electronic not show.missing.address.publisher and 1106 | { bbl.colon * bbl.sine.nomine * } 1107 | 'skip$ 1108 | if$ 1109 | } 1110 | if$ 1111 | } 1112 | { pop$ 1113 | entry.is.electronic not show.missing.address.publisher and 1114 | { format.publisher empty$ not 1115 | { bbl.sine.loco bbl.colon * format.publisher * } 1116 | { bbl.sine.loco.sine.nomine } 1117 | if$ 1118 | } 1119 | { format.publisher empty$ not 1120 | { format.publisher } 1121 | { "" } 1122 | if$ 1123 | } 1124 | if$ 1125 | } 1126 | if$ 1127 | } 1128 | 1129 | FUNCTION {extract.before.dash} 1130 | { duplicate$ empty$ 1131 | { pop$ "" } 1132 | { 's := 1133 | #1 'charptr := 1134 | s text.length$ #1 + 'len := 1135 | { charptr len < 1136 | s charptr #1 substring$ "-" = not 1137 | and 1138 | } 1139 | { charptr #1 + 'charptr := } 1140 | while$ 1141 | s #1 charptr #1 - substring$ 1142 | } 1143 | if$ 1144 | } 1145 | 1146 | FUNCTION {extract.after.dash} 1147 | { duplicate$ empty$ 1148 | { pop$ "" } 1149 | { 's := 1150 | #1 'charptr := 1151 | s text.length$ #1 + 'len := 1152 | { charptr len < 1153 | s charptr #1 substring$ "-" = not 1154 | and 1155 | } 1156 | { charptr #1 + 'charptr := } 1157 | while$ 1158 | { charptr len < 1159 | s charptr #1 substring$ "-" = 1160 | and 1161 | } 1162 | { charptr #1 + 'charptr := } 1163 | while$ 1164 | s charptr global.max$ substring$ 1165 | } 1166 | if$ 1167 | } 1168 | 1169 | FUNCTION {contains.dash} 1170 | { duplicate$ empty$ 1171 | { pop$ #0 } 1172 | { 's := 1173 | { s empty$ not 1174 | s #1 #1 substring$ "-" = not 1175 | and 1176 | } 1177 | { s #2 global.max$ substring$ 's := } 1178 | while$ 1179 | s empty$ not 1180 | } 1181 | if$ 1182 | } 1183 | 1184 | FUNCTION {format.year} 1185 | { year empty$ not 1186 | { year extract.before.dash } 1187 | { date empty$ not 1188 | { date extract.before.dash } 1189 | { "empty year in " cite$ * warning$ 1190 | urldate empty$ not 1191 | { "[" urldate extract.before.dash * "]" * } 1192 | { "" } 1193 | if$ 1194 | } 1195 | if$ 1196 | } 1197 | if$ 1198 | extra.label * 1199 | } 1200 | 1201 | FUNCTION {format.date} 1202 | { type$ "patent" = type$ "newspaper" = or 1203 | date empty$ not and 1204 | { date } 1205 | { year } 1206 | if$ 1207 | } 1208 | 1209 | FUNCTION {format.editdate} 1210 | { date empty$ not 1211 | { "\allowbreak(" date * ")" * } 1212 | { "" } 1213 | if$ 1214 | } 1215 | 1216 | FUNCTION {format.urldate} 1217 | { urldate empty$ not 1218 | show.urldate show.url and is.pure.electronic or and 1219 | url empty$ not and 1220 | { "\allowbreak[" urldate * "]" * } 1221 | { "" } 1222 | if$ 1223 | } 1224 | 1225 | FUNCTION {hyphenate} 1226 | { 't := 1227 | "" 1228 | { t empty$ not } 1229 | { t #1 #1 substring$ "-" = 1230 | { "-" * 1231 | { t #1 #1 substring$ "-" = } 1232 | { t #2 global.max$ substring$ 't := } 1233 | while$ 1234 | } 1235 | { t #1 #1 substring$ * 1236 | t #2 global.max$ substring$ 't := 1237 | } 1238 | if$ 1239 | } 1240 | while$ 1241 | } 1242 | 1243 | FUNCTION {format.pages} 1244 | { pages empty$ 1245 | { "" } 1246 | { pages hyphenate } 1247 | if$ 1248 | } 1249 | 1250 | FUNCTION {format.extracted.pages} 1251 | { pages empty$ 1252 | { "" } 1253 | { pages 1254 | only.start.page 1255 | 'extract.before.dash 1256 | 'hyphenate 1257 | if$ 1258 | } 1259 | if$ 1260 | } 1261 | 1262 | FUNCTION {format.journal.volume} 1263 | { volume empty$ not 1264 | { bold.journal.volume 1265 | { "\textbf{" volume * "}" * } 1266 | { volume } 1267 | if$ 1268 | } 1269 | { "" } 1270 | if$ 1271 | } 1272 | 1273 | FUNCTION {format.journal.number} 1274 | { number empty$ not 1275 | { "\penalty0 (" number * ")" * } 1276 | { "" } 1277 | if$ 1278 | } 1279 | 1280 | FUNCTION {format.journal.pages} 1281 | { pages empty$ 1282 | { "" } 1283 | { ": " 1284 | format.extracted.pages * 1285 | } 1286 | if$ 1287 | } 1288 | 1289 | FUNCTION {format.periodical.year.volume.number} 1290 | { year empty$ not 1291 | { year extract.before.dash } 1292 | { "empty year in periodical " cite$ * warning$ } 1293 | if$ 1294 | volume empty$ not 1295 | { ", " * volume extract.before.dash * } 1296 | 'skip$ 1297 | if$ 1298 | number empty$ not 1299 | { "\penalty0 (" * number extract.before.dash * ")" * } 1300 | 'skip$ 1301 | if$ 1302 | year contains.dash 1303 | { "--" * 1304 | year extract.after.dash empty$ 1305 | volume extract.after.dash empty$ and 1306 | number extract.after.dash empty$ and not 1307 | { year extract.after.dash empty$ not 1308 | { year extract.after.dash * } 1309 | { year extract.before.dash * } 1310 | if$ 1311 | volume empty$ not 1312 | { ", " * volume extract.after.dash * } 1313 | 'skip$ 1314 | if$ 1315 | number empty$ not 1316 | { "\penalty0 (" * number extract.after.dash * ")" * } 1317 | 'skip$ 1318 | if$ 1319 | } 1320 | 'skip$ 1321 | if$ 1322 | } 1323 | 'skip$ 1324 | if$ 1325 | } 1326 | 1327 | FUNCTION {check.url} 1328 | { url empty$ not 1329 | { "\url{" url * "}" * 'entry.url := 1330 | #1 'entry.is.electronic := 1331 | } 1332 | { howpublished empty$ not 1333 | { howpublished #1 #5 substring$ "\url{" = 1334 | { howpublished 'entry.url := 1335 | #1 'entry.is.electronic := 1336 | } 1337 | 'skip$ 1338 | if$ 1339 | } 1340 | { note empty$ not 1341 | { note #1 #5 substring$ "\url{" = 1342 | { note 'entry.url := 1343 | #1 'entry.is.electronic := 1344 | } 1345 | 'skip$ 1346 | if$ 1347 | } 1348 | 'skip$ 1349 | if$ 1350 | } 1351 | if$ 1352 | } 1353 | if$ 1354 | } 1355 | 1356 | FUNCTION {format.url} 1357 | { entry.url 1358 | } 1359 | 1360 | FUNCTION {output.url} 1361 | { entry.url empty$ not 1362 | { new.block 1363 | entry.url output 1364 | } 1365 | 'skip$ 1366 | if$ 1367 | } 1368 | 1369 | FUNCTION {check.doi} 1370 | { doi empty$ not 1371 | { #1 'entry.is.electronic := } 1372 | 'skip$ 1373 | if$ 1374 | } 1375 | 1376 | FUNCTION {is.in.url} 1377 | { 's := 1378 | s empty$ 1379 | { #1 } 1380 | { entry.url empty$ 1381 | { #0 } 1382 | { s text.length$ 'len := 1383 | entry.url text.length$ 'charptr := 1384 | { entry.url charptr len substring$ s = not 1385 | charptr #0 > 1386 | and 1387 | } 1388 | { charptr #1 - 'charptr := } 1389 | while$ 1390 | charptr 1391 | } 1392 | if$ 1393 | } 1394 | if$ 1395 | } 1396 | 1397 | FUNCTION {format.doi} 1398 | { "" 1399 | doi empty$ not 1400 | { "" 's := 1401 | doi 't := 1402 | #0 'numnames := 1403 | { t empty$ not} 1404 | { t #1 #1 substring$ 'tmp.str := 1405 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1406 | { t #2 #1 substring$ empty$ 1407 | { s tmp.str * 's := } 1408 | 'skip$ 1409 | if$ 1410 | s empty$ s is.in.url or 1411 | 'skip$ 1412 | { numnames #1 + 'numnames := 1413 | numnames #1 > 1414 | { ", " * } 1415 | { "DOI: " * } 1416 | if$ 1417 | "\doi{" s * "}" * * 1418 | } 1419 | if$ 1420 | "" 's := 1421 | } 1422 | { s tmp.str * 's := } 1423 | if$ 1424 | t #2 global.max$ substring$ 't := 1425 | } 1426 | while$ 1427 | } 1428 | 'skip$ 1429 | if$ 1430 | } 1431 | 1432 | FUNCTION {output.doi} 1433 | { doi empty$ not show.doi and 1434 | show.english.translation entry.lang lang.zh = and not and 1435 | { new.block 1436 | format.doi output 1437 | } 1438 | 'skip$ 1439 | if$ 1440 | } 1441 | 1442 | FUNCTION {check.electronic} 1443 | { "" 'entry.url := 1444 | #0 'entry.is.electronic := 1445 | 'check.doi 1446 | 'skip$ 1447 | if$ 1448 | 'check.url 1449 | 'skip$ 1450 | if$ 1451 | medium empty$ not 1452 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1453 | { #1 'entry.is.electronic := } 1454 | 'skip$ 1455 | if$ 1456 | } 1457 | 'skip$ 1458 | if$ 1459 | } 1460 | 1461 | FUNCTION {format.eprint} 1462 | { eprinttype empty$ not 1463 | { eprinttype } 1464 | { archivePrefix empty$ not 1465 | { archivePrefix } 1466 | { "" } 1467 | if$ 1468 | } 1469 | if$ 1470 | 's := 1471 | s empty$ not 1472 | { s ": \eprint{" * 1473 | url empty$ not 1474 | { url } 1475 | { "https://" s "l" change.case$ * ".org/abs/" * eprint * } 1476 | if$ 1477 | * "}{" * 1478 | eprint * "}" * 1479 | } 1480 | { eprint } 1481 | if$ 1482 | } 1483 | 1484 | FUNCTION {output.eprint} 1485 | { show.preprint eprint empty$ not and 1486 | { new.block 1487 | format.eprint output 1488 | } 1489 | 'skip$ 1490 | if$ 1491 | } 1492 | 1493 | FUNCTION {format.note} 1494 | { note empty$ not show.note and 1495 | { note } 1496 | { "" } 1497 | if$ 1498 | } 1499 | 1500 | FUNCTION {output.translation} 1501 | { show.english.translation entry.lang lang.zh = and 1502 | { translation empty$ not 1503 | { translation } 1504 | { "[English translation missing!]" } 1505 | if$ 1506 | " (in Chinese)" * output 1507 | write$ 1508 | format.doi duplicate$ empty$ not 1509 | { newline$ 1510 | write$ 1511 | } 1512 | 'pop$ 1513 | if$ 1514 | " \\" write$ 1515 | newline$ 1516 | "(" write$ 1517 | "" 1518 | before.all 'output.state := 1519 | } 1520 | 'skip$ 1521 | if$ 1522 | } 1523 | 1524 | FUNCTION {empty.misc.check} 1525 | { author empty$ title empty$ 1526 | year empty$ 1527 | and and 1528 | key empty$ not and 1529 | { "all relevant fields are empty in " cite$ * warning$ } 1530 | 'skip$ 1531 | if$ 1532 | } 1533 | 1534 | FUNCTION {monograph} 1535 | { output.bibitem 1536 | output.translation 1537 | author empty$ not 1538 | { format.authors } 1539 | { editor empty$ not 1540 | { format.editors } 1541 | { "empty author and editor in " cite$ * warning$ 1542 | "" 1543 | } 1544 | if$ 1545 | } 1546 | if$ 1547 | output 1548 | year.after.author 1549 | { period.after.author 1550 | 'new.sentence 1551 | 'skip$ 1552 | if$ 1553 | format.year "year" output.check 1554 | } 1555 | 'skip$ 1556 | if$ 1557 | new.block 1558 | format.series.vol.num.title "title" output.check 1559 | "M" set.entry.mark 1560 | format.mark "" output.after 1561 | new.block 1562 | format.translators output 1563 | new.sentence 1564 | format.edition output 1565 | new.block 1566 | format.address.publisher output 1567 | year.after.author not 1568 | { format.year "year" output.check } 1569 | 'skip$ 1570 | if$ 1571 | format.pages bbl.colon output.after 1572 | format.urldate "" output.after 1573 | output.url 1574 | output.doi 1575 | new.block 1576 | format.note output 1577 | fin.entry 1578 | } 1579 | 1580 | FUNCTION {incollection} 1581 | { output.bibitem 1582 | output.translation 1583 | format.authors output 1584 | author format.key output 1585 | year.after.author 1586 | { period.after.author 1587 | 'new.sentence 1588 | 'skip$ 1589 | if$ 1590 | format.year "year" output.check 1591 | } 1592 | 'skip$ 1593 | if$ 1594 | new.block 1595 | format.title "title" output.check 1596 | "M" set.entry.mark 1597 | format.mark "" output.after 1598 | new.block 1599 | format.translators output 1600 | new.slash 1601 | format.editors output 1602 | new.block 1603 | format.series.vol.num.booktitle "booktitle" output.check 1604 | new.block 1605 | format.edition output 1606 | new.block 1607 | format.address.publisher output 1608 | year.after.author not 1609 | { format.year "year" output.check } 1610 | 'skip$ 1611 | if$ 1612 | format.extracted.pages bbl.colon output.after 1613 | format.urldate "" output.after 1614 | output.url 1615 | output.doi 1616 | new.block 1617 | format.note output 1618 | fin.entry 1619 | } 1620 | 1621 | FUNCTION {periodical} 1622 | { output.bibitem 1623 | output.translation 1624 | format.authors output 1625 | author format.key output 1626 | year.after.author 1627 | { period.after.author 1628 | 'new.sentence 1629 | 'skip$ 1630 | if$ 1631 | format.year "year" output.check 1632 | } 1633 | 'skip$ 1634 | if$ 1635 | new.block 1636 | format.title "title" output.check 1637 | "J" set.entry.mark 1638 | format.mark "" output.after 1639 | new.block 1640 | format.periodical.year.volume.number output 1641 | new.block 1642 | format.address.publisher output 1643 | year.after.author not 1644 | { format.date "year" output.check } 1645 | 'skip$ 1646 | if$ 1647 | format.urldate "" output.after 1648 | output.url 1649 | output.doi 1650 | new.block 1651 | format.note output 1652 | fin.entry 1653 | } 1654 | 1655 | FUNCTION {article} 1656 | { output.bibitem 1657 | output.translation 1658 | format.authors output 1659 | author format.key output 1660 | year.after.author 1661 | { period.after.author 1662 | 'new.sentence 1663 | 'skip$ 1664 | if$ 1665 | format.year "year" output.check 1666 | } 1667 | 'skip$ 1668 | if$ 1669 | new.block 1670 | title.in.journal 1671 | { format.title "title" output.check 1672 | "J" set.entry.mark 1673 | format.mark "" output.after 1674 | new.block 1675 | } 1676 | 'skip$ 1677 | if$ 1678 | format.journal "journal" output.check 1679 | year.after.author not 1680 | { format.date "year" output.check } 1681 | 'skip$ 1682 | if$ 1683 | format.journal.volume output 1684 | format.journal.number "" output.after 1685 | format.journal.pages "" output.after 1686 | format.urldate "" output.after 1687 | output.url 1688 | output.doi 1689 | new.block 1690 | format.note output 1691 | fin.entry 1692 | } 1693 | 1694 | FUNCTION {patent} 1695 | { output.bibitem 1696 | output.translation 1697 | format.authors output 1698 | author format.key output 1699 | year.after.author 1700 | { period.after.author 1701 | 'new.sentence 1702 | 'skip$ 1703 | if$ 1704 | format.year "year" output.check 1705 | } 1706 | 'skip$ 1707 | if$ 1708 | new.block 1709 | format.title "title" output.check 1710 | "P" set.entry.mark 1711 | format.mark "" output.after 1712 | new.block 1713 | format.date "year" output.check 1714 | format.urldate "" output.after 1715 | output.url 1716 | output.doi 1717 | new.block 1718 | format.note output 1719 | fin.entry 1720 | } 1721 | 1722 | FUNCTION {electronic} 1723 | { #1 #1 check.electronic 1724 | #1 'entry.is.electronic := 1725 | #1 'is.pure.electronic := 1726 | output.bibitem 1727 | output.translation 1728 | format.authors output 1729 | author format.key output 1730 | year.after.author 1731 | { period.after.author 1732 | 'new.sentence 1733 | 'skip$ 1734 | if$ 1735 | format.year "year" output.check 1736 | } 1737 | 'skip$ 1738 | if$ 1739 | new.block 1740 | format.series.vol.num.title "title" output.check 1741 | "EB" set.entry.mark 1742 | format.mark "" output.after 1743 | new.block 1744 | format.address.publisher output 1745 | year.after.author not 1746 | { date empty$ 1747 | { format.date output } 1748 | 'skip$ 1749 | if$ 1750 | } 1751 | 'skip$ 1752 | if$ 1753 | format.pages bbl.colon output.after 1754 | format.editdate "" output.after 1755 | format.urldate "" output.after 1756 | output.url 1757 | output.doi 1758 | new.block 1759 | format.note output 1760 | fin.entry 1761 | } 1762 | 1763 | FUNCTION {preprint} 1764 | { output.bibitem 1765 | output.translation 1766 | author empty$ not 1767 | { format.authors } 1768 | { editor empty$ not 1769 | { format.editors } 1770 | { "empty author and editor in " cite$ * warning$ 1771 | "" 1772 | } 1773 | if$ 1774 | } 1775 | if$ 1776 | output 1777 | year.after.author 1778 | { period.after.author 1779 | 'new.sentence 1780 | 'skip$ 1781 | if$ 1782 | format.year "year" output.check 1783 | } 1784 | 'skip$ 1785 | if$ 1786 | new.block 1787 | title.in.journal 1788 | { format.series.vol.num.title "title" output.check 1789 | "Z" set.entry.mark 1790 | format.mark "" output.after 1791 | new.block 1792 | } 1793 | 'skip$ 1794 | if$ 1795 | format.translators output 1796 | new.sentence 1797 | format.edition output 1798 | new.block 1799 | output.eprint 1800 | year.after.author not 1801 | { format.year "year" output.check } 1802 | 'skip$ 1803 | if$ 1804 | format.pages bbl.colon output.after 1805 | format.urldate "" output.after 1806 | output.url 1807 | new.block 1808 | format.note output 1809 | fin.entry 1810 | } 1811 | 1812 | FUNCTION {misc} 1813 | { journal empty$ not 1814 | 'article 1815 | { booktitle empty$ not 1816 | 'incollection 1817 | { publisher empty$ not 1818 | 'monograph 1819 | { eprint empty$ not show.preprint and 1820 | 'preprint 1821 | { entry.is.electronic 1822 | 'electronic 1823 | { 1824 | "Z" set.entry.mark 1825 | monograph 1826 | } 1827 | if$ 1828 | } 1829 | if$ 1830 | } 1831 | if$ 1832 | } 1833 | if$ 1834 | } 1835 | if$ 1836 | empty.misc.check 1837 | } 1838 | 1839 | FUNCTION {archive} 1840 | { "A" set.entry.mark 1841 | misc 1842 | } 1843 | 1844 | FUNCTION {book} { monograph } 1845 | 1846 | FUNCTION {booklet} { book } 1847 | 1848 | FUNCTION {collection} 1849 | { "G" set.entry.mark 1850 | monograph 1851 | } 1852 | 1853 | FUNCTION {database} 1854 | { "DB" set.entry.mark 1855 | electronic 1856 | } 1857 | 1858 | FUNCTION {dataset} 1859 | { "DS" set.entry.mark 1860 | electronic 1861 | } 1862 | 1863 | FUNCTION {inbook} { book } 1864 | 1865 | FUNCTION {inproceedings} 1866 | { "C" set.entry.mark 1867 | incollection 1868 | } 1869 | 1870 | FUNCTION {conference} { inproceedings } 1871 | 1872 | FUNCTION {map} 1873 | { "CM" set.entry.mark 1874 | misc 1875 | } 1876 | 1877 | FUNCTION {manual} { monograph } 1878 | 1879 | FUNCTION {mastersthesis} 1880 | { "D" set.entry.mark 1881 | monograph 1882 | } 1883 | 1884 | FUNCTION {newspaper} 1885 | { "N" set.entry.mark 1886 | article 1887 | } 1888 | 1889 | FUNCTION {online} 1890 | { "EB" set.entry.mark 1891 | electronic 1892 | } 1893 | 1894 | FUNCTION {phdthesis} { mastersthesis } 1895 | 1896 | FUNCTION {proceedings} 1897 | { "C" set.entry.mark 1898 | monograph 1899 | } 1900 | 1901 | FUNCTION {software} 1902 | { "CP" set.entry.mark 1903 | electronic 1904 | } 1905 | 1906 | FUNCTION {standard} 1907 | { "S" set.entry.mark 1908 | misc 1909 | } 1910 | 1911 | FUNCTION {techreport} 1912 | { "R" set.entry.mark 1913 | misc 1914 | } 1915 | 1916 | FUNCTION {unpublished} { misc } 1917 | 1918 | FUNCTION {default.type} { misc } 1919 | 1920 | MACRO {jan} {"January"} 1921 | 1922 | MACRO {feb} {"February"} 1923 | 1924 | MACRO {mar} {"March"} 1925 | 1926 | MACRO {apr} {"April"} 1927 | 1928 | MACRO {may} {"May"} 1929 | 1930 | MACRO {jun} {"June"} 1931 | 1932 | MACRO {jul} {"July"} 1933 | 1934 | MACRO {aug} {"August"} 1935 | 1936 | MACRO {sep} {"September"} 1937 | 1938 | MACRO {oct} {"October"} 1939 | 1940 | MACRO {nov} {"November"} 1941 | 1942 | MACRO {dec} {"December"} 1943 | 1944 | MACRO {acmcs} {"ACM Computing Surveys"} 1945 | 1946 | MACRO {acta} {"Acta Informatica"} 1947 | 1948 | MACRO {cacm} {"Communications of the ACM"} 1949 | 1950 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1951 | 1952 | MACRO {ibmsj} {"IBM Systems Journal"} 1953 | 1954 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1955 | 1956 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1957 | 1958 | MACRO {ieeetcad} 1959 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1960 | 1961 | MACRO {ipl} {"Information Processing Letters"} 1962 | 1963 | MACRO {jacm} {"Journal of the ACM"} 1964 | 1965 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1966 | 1967 | MACRO {scp} {"Science of Computer Programming"} 1968 | 1969 | MACRO {sicomp} {"SIAM Journal on Computing"} 1970 | 1971 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1972 | 1973 | MACRO {tods} {"ACM Transactions on Database Systems"} 1974 | 1975 | MACRO {tog} {"ACM Transactions on Graphics"} 1976 | 1977 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1978 | 1979 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1980 | 1981 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1982 | 1983 | MACRO {tcs} {"Theoretical Computer Science"} 1984 | 1985 | FUNCTION {sortify} 1986 | { purify$ 1987 | "l" change.case$ 1988 | } 1989 | 1990 | FUNCTION {chop.word} 1991 | { 's := 1992 | 'len := 1993 | s #1 len substring$ = 1994 | { s len #1 + global.max$ substring$ } 1995 | 's 1996 | if$ 1997 | } 1998 | 1999 | FUNCTION {format.lab.name} 2000 | { "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 2001 | t "others" = 2002 | { citation.et.al } 2003 | { t get.str.lang 'name.lang := 2004 | name.lang lang.zh = name.lang lang.ja = or 2005 | { t #1 "{ll}{ff}" format.name$ } 2006 | { t #1 "{vv~}{ll}" format.name$ } 2007 | if$ 2008 | } 2009 | if$ 2010 | } 2011 | 2012 | FUNCTION {format.lab.names} 2013 | { 's := 2014 | #1 'nameptr := 2015 | s num.names$ 'numnames := 2016 | "" 2017 | numnames 'namesleft := 2018 | { namesleft #0 > } 2019 | { s nameptr format.lab.name citation.et.al = 2020 | numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or 2021 | { bbl.space * 2022 | citation.et.al * 2023 | #1 'namesleft := 2024 | } 2025 | { nameptr #1 > 2026 | { namesleft #1 = citation.and "" = not and 2027 | { citation.and * } 2028 | { ", " * } 2029 | if$ 2030 | } 2031 | 'skip$ 2032 | if$ 2033 | s nameptr format.lab.name * 2034 | } 2035 | if$ 2036 | nameptr #1 + 'nameptr := 2037 | namesleft #1 - 'namesleft := 2038 | } 2039 | while$ 2040 | } 2041 | 2042 | FUNCTION {author.key.label} 2043 | { author empty$ 2044 | { key empty$ 2045 | { cite$ #1 #3 substring$ } 2046 | 'key 2047 | if$ 2048 | } 2049 | { author format.lab.names } 2050 | if$ 2051 | } 2052 | 2053 | FUNCTION {author.editor.key.label} 2054 | { author empty$ 2055 | { editor empty$ 2056 | { key empty$ 2057 | { cite$ #1 #3 substring$ } 2058 | 'key 2059 | if$ 2060 | } 2061 | { editor format.lab.names } 2062 | if$ 2063 | } 2064 | { author format.lab.names } 2065 | if$ 2066 | } 2067 | 2068 | FUNCTION {author.key.organization.label} 2069 | { author empty$ 2070 | { key empty$ 2071 | { organization empty$ 2072 | { cite$ #1 #3 substring$ } 2073 | { "The " #4 organization chop.word #3 text.prefix$ } 2074 | if$ 2075 | } 2076 | 'key 2077 | if$ 2078 | } 2079 | { author format.lab.names } 2080 | if$ 2081 | } 2082 | 2083 | FUNCTION {editor.key.organization.label} 2084 | { editor empty$ 2085 | { key empty$ 2086 | { organization empty$ 2087 | { cite$ #1 #3 substring$ } 2088 | { "The " #4 organization chop.word #3 text.prefix$ } 2089 | if$ 2090 | } 2091 | 'key 2092 | if$ 2093 | } 2094 | { editor format.lab.names } 2095 | if$ 2096 | } 2097 | 2098 | FUNCTION {calc.short.authors} 2099 | { type$ "book" = 2100 | type$ "inbook" = 2101 | or 2102 | 'author.editor.key.label 2103 | { type$ "collection" = 2104 | type$ "proceedings" = 2105 | or 2106 | { editor empty$ not 2107 | 'editor.key.organization.label 2108 | 'author.key.organization.label 2109 | if$ 2110 | } 2111 | 'author.key.label 2112 | if$ 2113 | } 2114 | if$ 2115 | 'short.list := 2116 | } 2117 | 2118 | FUNCTION {calc.label} 2119 | { calc.short.authors 2120 | short.list 2121 | "(" 2122 | * 2123 | format.year duplicate$ empty$ 2124 | short.list key field.or.null = or 2125 | { pop$ "" } 2126 | 'skip$ 2127 | if$ 2128 | * 2129 | 'label := 2130 | } 2131 | 2132 | INTEGERS { seq.num } 2133 | 2134 | FUNCTION {init.seq} 2135 | { #0 'seq.num :=} 2136 | 2137 | FUNCTION {int.to.fix} 2138 | { "000000000" swap$ int.to.str$ * 2139 | #-1 #10 substring$ 2140 | } 2141 | 2142 | FUNCTION {presort} 2143 | { set.entry.lang 2144 | set.entry.numbered 2145 | show.url show.doi check.electronic 2146 | #0 'is.pure.electronic := 2147 | calc.label 2148 | label sortify 2149 | " " 2150 | * 2151 | seq.num #1 + 'seq.num := 2152 | seq.num int.to.fix 2153 | 'sort.label := 2154 | sort.label * 2155 | #1 entry.max$ substring$ 2156 | 'sort.key$ := 2157 | } 2158 | 2159 | STRINGS { longest.label last.label next.extra } 2160 | 2161 | INTEGERS { longest.label.width last.extra.num number.label } 2162 | 2163 | FUNCTION {initialize.longest.label} 2164 | { "" 'longest.label := 2165 | #0 int.to.chr$ 'last.label := 2166 | "" 'next.extra := 2167 | #0 'longest.label.width := 2168 | #0 'last.extra.num := 2169 | #0 'number.label := 2170 | } 2171 | 2172 | FUNCTION {forward.pass} 2173 | { last.label label = 2174 | { last.extra.num #1 + 'last.extra.num := 2175 | last.extra.num int.to.chr$ 'extra.label := 2176 | } 2177 | { "a" chr.to.int$ 'last.extra.num := 2178 | "" 'extra.label := 2179 | label 'last.label := 2180 | } 2181 | if$ 2182 | number.label #1 + 'number.label := 2183 | } 2184 | 2185 | FUNCTION {reverse.pass} 2186 | { next.extra "b" = 2187 | { "a" 'extra.label := } 2188 | 'skip$ 2189 | if$ 2190 | extra.label 'next.extra := 2191 | extra.label 2192 | duplicate$ empty$ 2193 | 'skip$ 2194 | { "{\natexlab{" swap$ * "}}" * } 2195 | if$ 2196 | 'extra.label := 2197 | label extra.label * 'label := 2198 | } 2199 | 2200 | FUNCTION {bib.sort.order} 2201 | { sort.label 'sort.key$ := 2202 | } 2203 | 2204 | FUNCTION {begin.bib} 2205 | { preamble$ empty$ 2206 | 'skip$ 2207 | { preamble$ write$ newline$ } 2208 | if$ 2209 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 2210 | write$ newline$ 2211 | terms.in.macro 2212 | { "\providecommand{\biband}{和}" 2213 | write$ newline$ 2214 | "\providecommand{\bibetal}{等}" 2215 | write$ newline$ 2216 | } 2217 | 'skip$ 2218 | if$ 2219 | "\providecommand{\natexlab}[1]{#1}" 2220 | write$ newline$ 2221 | "\providecommand{\url}[1]{#1}" 2222 | write$ newline$ 2223 | "\expandafter\ifx\csname urlstyle\endcsname\relax\else" 2224 | write$ newline$ 2225 | " \urlstyle{same}\fi" 2226 | write$ newline$ 2227 | "\expandafter\ifx\csname href\endcsname\relax" 2228 | write$ newline$ 2229 | " \DeclareUrlCommand\doi{\urlstyle{rm}}" 2230 | write$ newline$ 2231 | " \def\eprint#1#2{#2}" 2232 | write$ newline$ 2233 | "\else" 2234 | write$ newline$ 2235 | " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" 2236 | write$ newline$ 2237 | " \let\eprint\href" 2238 | write$ newline$ 2239 | "\fi" 2240 | write$ newline$ 2241 | } 2242 | 2243 | FUNCTION {end.bib} 2244 | { newline$ 2245 | "\end{thebibliography}" write$ newline$ 2246 | } 2247 | 2248 | READ 2249 | 2250 | EXECUTE {init.state.consts} 2251 | 2252 | EXECUTE {load.config} 2253 | 2254 | EXECUTE {init.seq} 2255 | 2256 | ITERATE {presort} 2257 | 2258 | SORT 2259 | 2260 | EXECUTE {initialize.longest.label} 2261 | 2262 | ITERATE {forward.pass} 2263 | 2264 | REVERSE {reverse.pass} 2265 | 2266 | ITERATE {bib.sort.order} 2267 | 2268 | SORT 2269 | 2270 | EXECUTE {begin.bib} 2271 | 2272 | ITERATE {call.type$} 2273 | 2274 | EXECUTE {end.bib} 2275 | -------------------------------------------------------------------------------- /Biblio/ref.bib: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- Bibliography -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | @book{wikibook2014latex, 7 | title={http://en.wikibooks.org/wiki/LaTeX}, 8 | author={Wikibook}, 9 | year={2014}, 10 | publisher={On-line Resources} 11 | } 12 | @book{lamport1986document, 13 | title={Document Preparation System}, 14 | author={Lamport, Leslie}, 15 | year={1986}, 16 | publisher={Addison-Wesley Reading, MA} 17 | } 18 | @article{chen2005zhulu, 19 | title={著录文后参考文献的规则及注意事项}, 20 | author={陈浩元}, 21 | key={Chen Hao Yuan}, 22 | journal={编辑学报}, 23 | volume={17}, 24 | number={6}, 25 | pages={413--415}, 26 | year={2005} 27 | } 28 | @book{chu2004tushu, 29 | title={图书馆数字参考咨询服务研究}, 30 | author={初景利}, 31 | key={Chu Jing Li}, 32 | year={2004}, 33 | address={北京}, 34 | publisher={北京图书馆出版社} 35 | } 36 | @article{stamerjohanns2009mathml, 37 | title={{MathML}-aware article conversion from {LaTeX}}, 38 | author={Stamerjohanns, Heinrich and Ginev, Deyan and David, Catalin and Misev, Dimitar and Zamdzhiev, Vladimir and Kohlhase, Michael}, 39 | journal={Towards a Digital Mathematics Library}, 40 | volume={16}, 41 | number={2}, 42 | pages={109--120}, 43 | year={2009}, 44 | publisher={Masaryk University Press} 45 | } 46 | @article{betts2005aging, 47 | title={Aging reduces center-surround antagonism in visual motion processing}, 48 | author={Betts, Lisa R and Taylor, Christopher P}, 49 | journal={Neuron}, 50 | volume={45}, 51 | number={3}, 52 | pages={361--366}, 53 | year={2005}, 54 | publisher={Elsevier} 55 | } 56 | 57 | @article{bravo1990comparative, 58 | title={Comparative study of visual inter and intrahemispheric cortico-cortical connections in five native Chilean rodents}, 59 | author={Bravo, Hermes and Olavarria, Jaime}, 60 | journal={Anatomy and embryology}, 61 | volume={181}, 62 | number={1}, 63 | pages={67--73}, 64 | year={1990}, 65 | publisher={Springer} 66 | } 67 | @book{hls2012jinji, 68 | author = {哈里森·沃尔德伦}, 69 | key = {Haliseng Woerdelun}, 70 | translator = {谢远涛}, 71 | title = {经济数学与金融数学}, 72 | address = {北京}, 73 | publisher = {中国人民大学出版社}, 74 | year = {2012}, 75 | pages = {235--236}, 76 | } 77 | @proceedings{niu2013zonghe, 78 | editor = {牛志明 and 斯温兰德 and 雷光春}, 79 | key = {Niu Zhi Ming Siwenlande Lei Guang Chun}, 80 | title = {综合湿地管理国际研讨会论文集}, 81 | address = {北京}, 82 | publisher = {海洋出版社}, 83 | year = {2013}, 84 | } 85 | @incollection{chen1980zhongguo, 86 | author = {陈晋镳 and 张惠民 and 朱士兴 and 赵震 and 87 | 王振刚}, 88 | key = {Chen Jing Ao Zhang Hui Ming Zhu Shi Xing Zhao Zhen Wang Zhen Gang}, 89 | title = {蓟县震旦亚界研究}, 90 | editor = {中国地质科学院天津地质矿产研究所}, 91 | booktitle = {中国震旦亚界}, 92 | address = {天津}, 93 | publisher = {天津科学技术出版社}, 94 | year = {1980}, 95 | pages = {56--114}, 96 | } 97 | @article{yuan2012lana, 98 | author = {袁训来 and 陈哲 and 肖书海}, 99 | key = {Yuan xun lai Chen zhe Xiao shu Hai}, 100 | title = {蓝田生物群: 一个认识多细胞生物起源和早期演化的新窗口 -- 篇一}, 101 | journal = {科学通报}, 102 | year = {2012}, 103 | volume = {57}, 104 | number = {34}, 105 | pages = {3219}, 106 | } 107 | @article{yuan2012lanb, 108 | author = {袁训来 and 陈哲 and 肖书海}, 109 | key = {Yuan xun lai Chen zhe Xiao shu Hai}, 110 | title = {蓝田生物群: 一个认识多细胞生物起源和早期演化的新窗口 -- 篇二}, 111 | journal = {科学通报}, 112 | year = {2012}, 113 | volume = {57}, 114 | number = {34}, 115 | pages = {3219}, 116 | } 117 | @article{yuan2012lanc, 118 | author = {袁训来 and 陈哲 and 肖书海}, 119 | key = {Yuan xun lai Chen zhe Xiao shu Hai}, 120 | title = {蓝田生物群: 一个认识多细胞生物起源和早期演化的新窗口 -- 篇三}, 121 | journal = {科学通报}, 122 | year = {2012}, 123 | volume = {57}, 124 | number = {34}, 125 | pages = {3219}, 126 | } 127 | @article{walls2013drought, 128 | author = {Walls, Susan C. and Barichivich, William J. and Brown, Mary 129 | E.}, 130 | title = {Drought, deluge and declines: the impact of precipitation 131 | extremes on amphibians in a changing climate}, 132 | journal = {Biology}, 133 | year = {2013}, 134 | volume = {2}, 135 | number = {1}, 136 | pages = {399--418}, 137 | urldate = {2013-11-04}, 138 | url = {http://www.mdpi.com/2079-7737/2/1/399}, 139 | doi = {10.3390/biology2010399}, 140 | } 141 | @article{Bohan1928, 142 | author = { ボハン, デ}, 143 | title = { 過去及び現在に於ける英国と会 }, 144 | journal = { 日本時報 }, 145 | year = { 1928 }, 146 | volume = { 17 }, 147 | pages = { 5-9 }, 148 | edition = { 9 }, 149 | hyphenation = { japanese }, 150 | language = { japanese } 151 | } 152 | 153 | @article{Dubrovin1906, 154 | author = { Дубровин, А. И }, 155 | title = { Открытое письмо Председателя Главного Совета Союза Русского Народа Санкт-Петербургскому Антонию, Первенствующему члену Священного Синода }, 156 | journal = { Вече }, 157 | year = { 1906 }, 158 | volume = { }, 159 | edition = { 97 }, 160 | month = { 7 дек. 1906 }, 161 | pages = { 1-3 }, 162 | hyphenation = { russian }, 163 | language = { russian } 164 | } 165 | %---------------------------------------------------------------------------% 166 | -------------------------------------------------------------------------------- /Img/c06h06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/c06h06.png -------------------------------------------------------------------------------- /Img/oaspl_a.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/oaspl_a.pdf -------------------------------------------------------------------------------- /Img/oaspl_b.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/oaspl_b.pdf -------------------------------------------------------------------------------- /Img/oaspl_c.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/oaspl_c.pdf -------------------------------------------------------------------------------- /Img/oaspl_d.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/oaspl_d.pdf -------------------------------------------------------------------------------- /Img/ucas_logo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/Img/ucas_logo.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `ucasthesis` 国科大学位论文 LaTeX 模板 [最新样式] 2 | 3 | ## 模板下载 4 | 5 | * 页面右边点击:**Clone or download -> Download Zip** 6 | * [Overleaf](https://github.com/mohuangrui/ucasthesis/wiki/字体配置#linuxoverleaf-系统的字体配置) 7 | 8 | ## 重要建议 9 | 10 | * 关于 ucasthesis 编译和设计的问题,请先读 **模板使用说明.pdf**,如发问需遵从[提问流程](https://github.com/mohuangrui/ucasthesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。 11 | * 开题报告见:[ucasproposal: 中国科学院大学开题报告 LaTeX 模板](https://github.com/mohuangrui/ucasproposal)。 12 | * 书脊制作见:[latexspine: LaTeX 书脊模板](https://github.com/mohuangrui/latexspine)。 13 | 14 |

15 | ucasthesis 16 |

17 | 18 | ## 模板简介 19 | 20 | * ucasthesis 为撰写中国科学院大学**本**、**硕**、**博**学位论文和[**任意高校博后**](https://github.com/mohuangrui/ucasthesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98#%E5%A6%82%E4%BD%95%E5%A1%AB%E5%86%99%E5%8D%9A%E5%A3%AB%E5%90%8E%E7%9A%84-frontinfotex-)报告的 LaTeX 模版。ucasthesis 提供了简单明了的**模板使用说明.pdf**。无论你是否具有 LaTeX 使用经验,都可较为轻松地使用以完成学位论文的撰写和排版。谢谢大家的测试、反馈和支持,我们一起的努力让 ucasthesis 非常荣幸地得到了国科大本科部陆晴老师、本科部学位办丁云云老师和中科院数学与系统科学研究院吴凌云研究员的支持,并得到吴凌云学长在 [CTEX](http://www.ctex.org/HomePage) 的发布。 21 | 22 | * 考虑到许多同学可能缺乏 LaTeX 使用经验,ucasthesis 将 LaTeX 的复杂性高度封装,开放出简单的接口,以便轻易使用。同时,对用 LaTeX 撰写论文的一些主要难题,如制图、制表、文献索引等,进行了详细说明,并提供了相应的代码样本,理解了上述问题后,对于初学者而言,使用此模板撰写学位论文将不存在实质性的困难。所以,如果你是初学者,请不要直接放弃,因为同样为初学者的我,十分明白让 LaTeX 简单易用的重要性,而这正是 ucasthesis 所追求和体现的。 23 | 24 | * 此中国科学院大学学位论文模板 ucasthesis 基于中科院数学与系统科学研究院吴凌云研究员的 CASthesis 模板发展而来。当前 ucasthesis 模板满足最新的中国科学院大学学位论文撰写要求和封面设定。兼顾操作系统:Windows、Linux、MacOS;LaTeX 编译引擎:pdflatex、xelatex、lualatex;文献编译引擎:bibtex、biber (biblatex);文献样式:著者-出版年制(authoryear)、顺序编码制(numbers)、上标顺序编码制(super)、字符编码制(alpha)。支持中文书签、中文渲染、中文粗体显示、拷贝 PDF 中的文本到其他文本编辑器等特性([Windows 系统 PDF 拷贝乱码的解决方案需见:字体配置](https://github.com/mohuangrui/ucasthesis/wiki/%E5%AD%97%E4%BD%93%E9%85%8D%E7%BD%AE))。此外,对模板的文档结构进行了精心设计,撰写了编译脚本提高模板的易用性和使用效率。 25 | 26 | * ucasthesis 的目标在于简化学位论文的撰写,利用 LaTeX 格式与内容分离的特征,模板将格式设计好后,作者可只需关注论文内容。 同时,ucasthesis 有着整洁一致的代码结构和扼要的注解,对文档的仔细阅读可为初学者提供一个学习 LaTeX 的窗口。此外,模板的架构十分注重通用性,事实上,ucasthesis 不仅是国科大学位论文模板,同时,通过少量修改即可成为使用 LaTeX 撰写中英文文章或书籍的通用模板,并为使用者的个性化设定提供了接口。 27 | 28 | ## 重要通知 29 | 30 | * `2021-09-27` 模板样式进行了修改,请查看下面的修改描述,以决定是否需要更新。 31 | 32 | ## 更新记录 33 | 34 | * `2021-09-27` [benkwoook, issue #359](https://github.com/mohuangrui/ucasthesis/issues/359),增强 artratex.sty,提供去掉“引言”类章节的章节编号的功能。 35 | 36 | * `2021-03-30` 更新原创性声明和使用声明页。移除英文封面声明中的 "the"。 37 | 38 | * `2020-07-28` [Tony, issue #299](https://github.com/mohuangrui/ucasthesis/issues/299),更新 bibtex 样式。文献样式更多讨论可见:[文献样式](https://github.com/mohuangrui/ucasthesis/wiki/%E6%96%87%E7%8C%AE%E6%A0%B7%E5%BC%8F)。 39 | 40 | * `2020-07-22` [hushidong, zepinglee, issue #296](https://github.com/mohuangrui/ucasthesis/issues/296),完善 biblatex 和 bibtex 样式。 41 | 42 | * `2020-07-17` [GitatHub, hushidong, issue #296](https://github.com/mohuangrui/ucasthesis/issues/296),更新 bibtex 国标样式 [gbt7714-bibtex-style](https://github.com/CTeX-org/gbt7714-bibtex-style) ,增加 biblatex 国标样式 [biblatex-gb7714-2015](https://github.com/hushidong/biblatex-gb7714-2015)。 43 | 44 | * `2020-05-22` [lipcaty, issue #281](https://github.com/mohuangrui/ucasthesis/issues/281) 修复 ctex 移除 xeCJKfntef 后对 ulem 的加载。 45 | 46 | * `2020-03-20` [zepinglee, issue #250](https://github.com/mohuangrui/ucasthesis/issues/250) 增加 LaTeX 和依赖宏包版本检测功能。 47 | 48 | * `2020-02-11` [ck2019ML, issue #182](https://github.com/mohuangrui/ucasthesis/issues/182)、[univeryinli, issue #229](https://github.com/mohuangrui/ucasthesis/issues/229) 将 ucasthesis 在 [Overleaf](https://github.com/mohuangrui/ucasthesis/wiki/字体配置#linuxoverleaf-系统的字体配置) 发布并支持调用外部字体,详见[字体配置](https://github.com/mohuangrui/ucasthesis/wiki/字体配置)。[xiaokongkong, issue #231](https://github.com/mohuangrui/ucasthesis/issues/231)修正几个书写。 49 | 50 | * `2020-01-09` [NineSH, issue #223](https://github.com/mohuangrui/ucasthesis/issues/223) 修复`bicaption`错误。 51 | 52 | * `2019-12-06` 移除 commit 中的二进制文件,以极大减少 Fork 后的文件大小。 53 | 54 | * `2019-10-12` [huiwenzhang, issue #198](https://github.com/mohuangrui/ucasthesis/issues/198) 修复`mainmatter`下`\chapter*`的页眉错误。 55 | 56 | * `2019-10-12` [Fancy0609, muzimuzhi, issue #195](https://github.com/mohuangrui/ucasthesis/issues/195) 调整由`AutoFakeBold`控制的伪粗体加粗程度。 57 | 58 | * `2019-10-11` [Pantrick, issue #190](https://github.com/mohuangrui/ucasthesis/issues/190) 采用 [muzimuzhi](https://github.com/muzimuzhi) 提供的方法实现`\advisor{}`和`\institute{}`的自动换行功能。 59 | 60 | * `2019-08-01` [vectorliu, issue #183](https://github.com/mohuangrui/ucasthesis/issues/183) 修改英文模式下的`plain`选项为`scheme=plain`以消除对`Algorithm`样式的修改。 61 | 62 | * `2019-06-15` [HaorenWang, issue #177](https://github.com/mohuangrui/ucasthesis/issues/177) 调整矢量、矩阵、张量字体样式。 63 | 64 | * `2019-06-09` [DRjy, issue #170](https://github.com/mohuangrui/ucasthesis/issues/170) 轻微缩减目录中编号与标题的间距;[e71828, issue #174](https://github.com/mohuangrui/ucasthesis/issues/174) 轻微增加页眉中编号与标题的间距。 65 | 66 | * `2019-05-25` [CDMA2019, issue #169](https://github.com/mohuangrui/ucasthesis/issues/169) 提供横排图表环境下页眉页脚的横排,具体使用见 [横排图表](https://github.com/mohuangrui/ucasthesis/wiki/横排图表)。 67 | 68 | * `2019-04-24` 拓展模版兼容 [博后报告](https://github.com/mohuangrui/ucasthesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98#%E5%A6%82%E4%BD%95%E5%A1%AB%E5%86%99%E5%8D%9A%E5%A3%AB%E5%90%8E%E7%9A%84-frontinfotex-)。修复 [gsp2014, issue #156](https://github.com/mohuangrui/ucasthesis/issues/156) 文献引用中的连字符的间断显示和上标引用中逗号下沉。 69 | 70 | * `2019-04-19` 修复 [nihaomiao, issue #117](https://github.com/mohuangrui/ucasthesis/issues/117)`\mathbf`失效问题。 71 | 72 | * `2019-04-16` 修复国际生需要的`plain`模式下无法改变英文章标题字体大小的问题。 73 | 74 | * `2019-04-09` 对部分宏命令进行调整,无功能及样式上的修改。若需更新,建议参考 [更新指南](https://github.com/mohuangrui/ucasthesis/wiki/更新指南)。 75 | 76 | * `2019-04-04` [liuy334, songchunlin, issue #134](https://github.com/mohuangrui/ucasthesis/issues/134) ,调整行距使`LaTeX`版与`Word`版的行数和每行字数相一致。 77 | 78 | * `2019-03-28` [zssasa, allenwoods, issue #49](https://github.com/mohuangrui/ucasthesis/issues/49) ,修复`bicaption`对`longtable`的兼容性。[BowenHou, issue #133](https://github.com/mohuangrui/ucasthesis/issues/133) ,使下划线能对长标题自动换行。 79 | 80 | * `2019-03-25` [DRjy, muzimuzhi, issue #127](https://github.com/mohuangrui/ucasthesis/issues/127) ,为`摘要`等无需在目录中显示的结构元素建立书签。[muzimuzhi, issue #130](https://github.com/mohuangrui/ucasthesis/issues/130) ,修正对`\voffset`的使用。 81 | 82 | * `2019-03-14` [opt-gaobin, issue #121](https://github.com/mohuangrui/ucasthesis/issues/121) ,修正中文标点使下划线断掉的问题。[Guoqiang Zhang, email; weili-ict, issue #120](https://github.com/mohuangrui/ucasthesis/issues/120) ,修复`\proofname`命令对2015年及更早`LaTeX`编译器的兼容性问题。 83 | 84 | * `2019-02-20` [opt-gaobin, issue #100](https://github.com/mohuangrui/ucasthesis/issues/100) ,增加定理、定义、证明等数学环境。[DRjy, issue #102](https://github.com/mohuangrui/ucasthesis/issues/102) ,调整`\mathcal`字体样式。[zike Liu, email] ,适当缩减目录列表的缩进。[xiaoyaoE, issue #105](https://github.com/mohuangrui/ucasthesis/issues/105) ,使数字字体和英文字体一致。完善中文版和国际版之间的中英格式切换。 85 | 86 | * `2019-01-10` [mnpengjk, issue #57](https://github.com/mohuangrui/ucasthesis/issues/57) ,将公式编号前加点纳入模版默认,更多讨论可见:[琐屑细节](https://github.com/mohuangrui/ucasthesis/wiki/琐屑细节) 。[yunyun2019, issue #95](https://github.com/mohuangrui/ucasthesis/issues/95),更新文献样式。[邵岳林, email] ,将附录复原为常规的排版设置,若需将附录置于参考文献后,请见:[琐屑细节](https://github.com/mohuangrui/ucasthesis/wiki/琐屑细节)。 87 | 88 | * `2018-04-03` 根据国科大本科部陆晴老师和本科部学位办丁云云老师的复审审核建议再次修复一些样式细节问题。 89 | 90 | * `2018-04-02` 模板进行了重大更新,修复了样式、字体、格式等许多问题。 91 | 92 | * 根据国科大本科部陆晴老师的建议对模版样式进行了诸多拓展和修正,并完善对本科生论文元素的兼容性。 93 | * 在 [ctex](https://github.com/CTeX-org/ctex-kit) 开发者的帮助下解决了如何多次调用`Times New Roman`而不导致黑体调用错误的问题。[twn1993, email],修复默认黑体为微软雅黑而不是`SimHei`的问题。 94 | * 繁复折腾测试后终于找出一个在`ctex`默认黑体替换粗宋体设定环境内全局`AutoFakeBold`失效状态下折衷特定字体库不全条件下生僻字显示和系统默认字重不全条件下粗宋体显示以及不同操作系统下如何平衡上述字库自重矛盾还有根据操作系统自动调用所带有的`Times`字体的方案。 95 | * 设定论文封面据英文学位名如自动切换。密级据是否填写自动显示。 96 | 97 | * `2018-03-22` 演示表标题居表上,加粗图表标注,设置长图表标题悬挂缩进(由于`bicaption`宏包无法正确接受`caption`宏包的`margin`选项,图表中英标题第一行无法正确同步缩进,从而放弃第一行的缩进),强调多图中子图标题的规范使用,通过摘要和符号列表演示标题不在目录中显示却仍在页眉中显示。[赵永明, email],设置双语图表标题和`bicaption`不在图形列表和表格列表中显示英文标题。 98 | 99 | * `2018-03-21` [zhanglinbo, issue #42](https://github.com/mohuangrui/ucasthesis/issues/42) ,使用 [xiaoyao9933](https://github.com/xiaoyao9933/UCASthesis) 制作的`ucas_logo.pdf`使学校`logo`放大不失真。[Starsky Wong, issue #41](https://github.com/mohuangrui/ucasthesis/issues/41) ,设置标题英文设为`Times New Roman`。[will0n, issue #29](https://github.com/mohuangrui/ucasthesis/issues/29) ,[Man-Ting-Fang, issue #26](https://github.com/mohuangrui/ucasthesis/issues/26) ,[diyiliaoya, issue #12](https://github.com/mohuangrui/ucasthesis/issues/12) ,和 [赵永明, email] ,矫正一些格式细节问题。[tangjie1992, issue #30](https://github.com/mohuangrui/ucasthesis/issues/30) ,配置算法环境。 100 | 101 | * `2018-02-04` 在 [ctex](https://github.com/CTeX-org/ctex-kit) 开发者的帮助下修复误用字体命令导致的粗宋体异常。然后,将模板兼容性进一步扩展为兼容操作系统`Windows`,`Linux`,`MacOS`和`LaTeX `编译引擎`pdflatex`,`xelatex`,`lualatex`。移除`microtype`宏包以提高编译效率。 102 | 103 | * `2018-01-28` 基于国科大`2018`新版论文规范进行了重大修改,采用新的封面、声明、页眉页脚样式。展示标题中使用数学公式。 104 | 105 | * `2017-05-14` [赵永明, email] ,增加`\citepns{}`和`\citetns{}`命令提供上标引用下混合非上标引用的需求。[臧光明, email] ,添加设定论文为`thesis`或`dissertation`的命令。 106 | 107 | -------------------------------------------------------------------------------- /Style/artracom.sty: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- User-defined Commands -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | %- Copyright (C) Huangrui Mo 7 | %- This is free software: you can redistribute it and/or modify it 8 | %- under the terms of the GNU General Public License as published by 9 | %- the Free Software Foundation, either version 3 of the License, or 10 | %- (at your option) any later version. 11 | %---------------------------------------------------------------------------% 12 | %->> Identification 13 | %---------------------------------------------------------------------------% 14 | \NeedsTeXFormat{LaTeX2e}% 15 | \ProvidesPackage{artracom}[2014/10/01 v1.0 LaTeX macros package]% 16 | %---------------------------------------------------------------------------% 17 | %->> Declare options 18 | %---------------------------------------------------------------------------% 19 | %- 20 | %-> Handle non-implemented options 21 | %- 22 | \DeclareOption*{% 23 | \PackageWarning{artracom}{Unknown option '\CurrentOption'}% 24 | } 25 | %- 26 | %-> Terminates all options processing 27 | %- 28 | \ProcessOptions\relax% 29 | %---------------------------------------------------------------------------% 30 | %->> User added packages 31 | %---------------------------------------------------------------------------% 32 | %- this part adds normal packages 33 | \RequirePackage{chemfig}% draw 2D chemical structures 34 | \RequirePackage[version=4]{mhchem}% typeset chemical formulae [mhchem|chemformula] 35 | %- this part adds packages that should be loaded at the very end 36 | \AtEndPreamble{% 37 | %\RequirePackage{cleveref}% clever cross-referencing 38 | } 39 | %---------------------------------------------------------------------------% 40 | %->> User defined commands 41 | %---------------------------------------------------------------------------% 42 | %- 43 | %-> General information 44 | %- 45 | %- \def\macroname#1#2{macro content, use of argument #1, #2 ...} 46 | %- each parameter #n is the shortest possible input sequence that matches the 47 | %- macro definition, separators included. Without separators, then Plain TeX 48 | %- macros are used just as LaTeX macros (without default parameter): 49 | %- \def\macroname#1#2#3{...} -> \newcommand{macroname}[3]{...} 50 | %- \def: define a command whether new or predefined, equivalent to 51 | %- \providecommand{macroname}{}% 52 | %- \renewcommand*{macroname}[number of arguments][default value]{definition} 53 | %- \long\def: define a command whether new or predefined, equivalent to 54 | %- \providecommand{macroname}{}% 55 | %- \renewcommand{macroname}[number of arguments][default value]{definition} 56 | %- \newcommand: defines a new command, makes an error if already defined 57 | %- \renewcommand: redefines a predefined command, makes an error if not yet defined 58 | %- \providecommand: defines a new command, if already defined, keep old definition 59 | %- *-forms: enable error check for missing arguments or arguments contain \par 60 | %- *-forms that are usually the better form to use when defining commands with 61 | %- arguments, unless any of these arguments is intended to contain whole paragraphs 62 | %- of text. If you need to use the non-star form then you should ask whether that 63 | %- argument better be treated as the contents of a suitably defined environment. 64 | %- 65 | %-> Math functions 66 | %- 67 | %- International standard layout rules (from isomath package) 68 | %- The overall rule is that symbols representing math quantities or variables should 69 | %- be italicised, symbols representing units or labels are unitalicised (roman). 70 | %- Symbols for vectors and matrices are bold italic, symbols for tensors are 71 | %- sans-serif bold italic. 72 | %- The above rules apply equally to letter symbols from the Greek and 73 | %- the Latin alphabet. 74 | %- More information may be found in <> 75 | %- However, math typefaces vary from field to field. To keep consistent typography 76 | %- and easy adaption, it it always best to create a corresponding command for 77 | %- variables in each math category. 78 | %\providecommand{\Scalar}[1]{#1}% scalar is the normal math typeset, italic 79 | \providecommand{\Vector}[1]{\boldsymbol{#1}}% general vectors in bold italic 80 | \providecommand{\unitVector}[1]{\boldsymbol{\mathbf{#1}}}% unit vectors in bold roman 81 | \providecommand{\Matrix}[1]{\boldsymbol{\mathbf{#1}}}% matrix in bold roman 82 | \providecommand{\unitMatrix}[1]{\boldsymbol{\mathbf{#1}}}% identity matrix in bold roman 83 | \providecommand{\Tensor}[1]{\boldsymbol{\mathsf{#1}}}% tensor in sans-serif bold italic 84 | \providecommand{\unitTensor}[1]{\boldsymbol{\mathsf{#1}}}% identity tensor in sans-serif bold 85 | \providecommand{\Unit}[1]{\,\mathrm{#1}}% units in roman 86 | \providecommand{\Const}[1]{\mathrm{#1}}% math constants, functions 87 | \providecommand{\Set}[1]{\mathbb{#1}}% special sets in blackboard bold 88 | \providecommand{\Div}{\operatorname{div}}% divergence operator 89 | \providecommand{\Order}{\operatorname{O}}% order operator 90 | \providecommand{\Trace}{\operatorname{tr}}% trace operator 91 | \providecommand{\Diag}{\operatorname{diag}}% diagonal 92 | \providecommand{\Def}{\operatorname{def}}% define 93 | \providecommand{\Loptr}{\operatorname{\mathcal{L}}}% spatial operator 94 | \providecommand{\Toptr}{\operatorname{\mathcal{LL}}}% temporal operator 95 | \providecommand{\Soptr}{\operatorname{\mathcal{S}}}% solution operator 96 | \providecommand{\Des}[1]{\mathrm{#1}}% descriptive superscripts and subscripts in roman type 97 | \providecommand{\Rev}[1]{\begingroup\color{blue}{#1}\endgroup}% revision highlight 98 | %- 99 | %-> Graphical length factor 100 | %- 101 | \providecommand*{\onef}{0.6}% for single figure 102 | \providecommand*{\twof}{0.45}% for two subfigures 103 | \providecommand*{\trif}{0.32}% for three subfigures 104 | %- 105 | %-> Add dots before equation number 106 | %- 107 | \newcommand{\adddotsbeforeeqnnum}{\def\maketag@@@##1{\hbox{\m@th\normalfont\dots\ ##1}}}% 108 | %---------------------------------------------------------------------------% 109 | \endinput 110 | 111 | -------------------------------------------------------------------------------- /Style/artratex.sty: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- Document Style -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | %- Copyright (C) Huangrui Mo 7 | %- This is free software: you can redistribute it and/or modify it 8 | %- under the terms of the GNU General Public License as published by 9 | %- the Free Software Foundation, either version 3 of the License, or 10 | %- (at your option) any later version. 11 | %---------------------------------------------------------------------------% 12 | %->> Identification 13 | %---------------------------------------------------------------------------% 14 | \NeedsTeXFormat{LaTeX2e}% 15 | \ProvidesPackage{artratex}[2014/10/01 v1.0 LaTeX macros package]% 16 | %---------------------------------------------------------------------------% 17 | %->> Declare options 18 | %---------------------------------------------------------------------------% 19 | \RequirePackage{etoolbox}% a toolbox of programming facilities 20 | \newcommand{\artxifstreq}{\expandafter\ifstrequal\expandafter}% expansion control 21 | %- 22 | %-> Platform fontset , , , , , 23 | %- 24 | %- Fetch the fontset value as user specified or automatically set based on os type 25 | \RequirePackage{expl3}% LaTeX3 programming environment 26 | \ExplSyntaxOn% 27 | \providecommand{\g__ctex_fontset_tl}{}% platform fontset state variable 28 | \edef\artxfontset{\g__ctex_fontset_tl}% expanded platform fontset state variable 29 | \ExplSyntaxOff% 30 | %- Specify font set according to the value of fontset 31 | \newif\ifartx@windows \artx@windowsfalse 32 | \newif\ifartx@mac \artx@macfalse 33 | \newif\ifartx@adobe \artx@adobefalse 34 | \newif\ifartx@none \artx@nonefalse 35 | \newif\ifartx@times \artx@timesfalse 36 | \newif\ifartx@others \artx@othersfalse 37 | \artxifstreq{\artxfontset}{windows}{\artx@windowstrue\artx@timestrue}{% 38 | \artxifstreq{\artxfontset}{mac}{\artx@mactrue\artx@timestrue}{% 39 | \artxifstreq{\artxfontset}{adobe}{\artx@adobetrue\artx@timestrue}{% 40 | \artxifstreq{\artxfontset}{none}{\artx@nonetrue\artx@timestrue}{% 41 | \artx@otherstrue\artx@timesfalse}}}} 42 | %- 43 | %-> LaTeX engine , , 44 | %- 45 | \newif\ifartx@pdftex \artx@pdftexfalse 46 | \newif\ifartx@luatex \artx@luatexfalse 47 | \newif\ifartx@xetex \artx@xetexfalse 48 | \RequirePackage{ifxetex,ifluatex}% LaTeX engine detection 49 | \ifxetex% 50 | \artx@xetextrue 51 | \RequirePackage{xeCJK}% support calling system fonts 52 | \else\ifluatex% 53 | \artx@luatextrue 54 | \else% 55 | \artx@pdftextrue 56 | \fi\fi% 57 | %- 58 | %-> Bibliography engine , 59 | %- 60 | \newif\ifartx@bibtex \artx@bibtextrue 61 | \newif\ifartx@biber \artx@biberfalse 62 | \def\artxbib{bibtex} 63 | \DeclareOption{bibtex}{% 64 | \artx@bibtextrue 65 | \artx@biberfalse 66 | \def\artxbib{bibtex} 67 | } 68 | \DeclareOption{biber}{% 69 | \artx@bibtexfalse 70 | \artx@bibertrue 71 | \def\artxbib{biber} 72 | } 73 | %- 74 | %-> Citation and reference style 75 | %- 76 | \newif\ifartx@numbers \artx@numberstrue 77 | \newif\ifartx@super \artx@superfalse 78 | \newif\ifartx@authoryear \artx@authoryearfalse 79 | \newif\ifartx@alpha \artx@alphafalse 80 | \DeclareOption{numbers}{% 81 | \artx@numberstrue 82 | \artx@superfalse 83 | \artx@authoryearfalse 84 | \artx@alphafalse 85 | } 86 | \DeclareOption{super}{% 87 | \artx@numberstrue 88 | \artx@supertrue 89 | \artx@authoryearfalse 90 | \artx@alphafalse 91 | } 92 | \DeclareOption{authoryear}{% 93 | \artx@numbersfalse 94 | \artx@superfalse 95 | \artx@authoryeartrue 96 | \artx@alphafalse 97 | } 98 | \DeclareOption{alpha}{% 99 | \artx@numbersfalse 100 | \artx@superfalse 101 | \artx@authoryearfalse 102 | \artx@alphatrue 103 | } 104 | %- 105 | %-> Page layout reconfiguration 106 | %- 107 | \newif\ifartx@geometry \artx@geometryfalse 108 | \DeclareOption{geometry}{% 109 | \artx@geometrytrue 110 | } 111 | %- 112 | %-> Landscape layout support 113 | %- 114 | \newif\ifartx@lscape \artx@lscapefalse 115 | \DeclareOption{lscape}{% 116 | \artx@lscapetrue 117 | } 118 | %- 119 | %-> Header and footer 120 | %- 121 | \newif\ifartx@xhf \artx@xhftrue 122 | \DeclareOption{xhf}{% 123 | \artx@xhffalse 124 | } 125 | %- 126 | %-> Color support 127 | %- 128 | \newif\ifartx@color \artx@colorfalse 129 | \DeclareOption{color}{% 130 | \artx@colortrue 131 | } 132 | \newif\ifartx@xlink \artx@xlinkfalse 133 | \DeclareOption{xlink}{% 134 | \artx@xlinktrue 135 | } 136 | %- 137 | %-> Page background 138 | %- 139 | \newif\ifartx@background \artx@backgroundfalse 140 | \DeclareOption{background}{% 141 | \artx@colortrue 142 | \artx@backgroundtrue 143 | } 144 | %- 145 | %-> Complex diagrams support 146 | %- 147 | \newif\ifartx@tikz \artx@tikzfalse 148 | \DeclareOption{tikz}{% 149 | \artx@colortrue 150 | \artx@tikztrue 151 | } 152 | %- 153 | %-> Complex tables support 154 | %- 155 | \newif\ifartx@table \artx@tablefalse 156 | \DeclareOption{table}{% 157 | \artx@tabletrue 158 | } 159 | %- 160 | %-> Enhanced list 161 | %- 162 | \newif\ifartx@list \artx@listfalse 163 | \DeclareOption{list}{% 164 | \artx@colortrue 165 | \artx@listtrue 166 | } 167 | %- 168 | %-> Extra math support 169 | %- 170 | \newif\ifartx@math \artx@mathfalse 171 | \DeclareOption{math}{% 172 | \artx@mathtrue 173 | } 174 | %- 175 | %-> Handle non-implemented options 176 | %- 177 | \DeclareOption*{% 178 | \PackageWarning{artratex}{Unknown option '\CurrentOption'}% 179 | } 180 | %- 181 | %-> Terminates all options processing 182 | %- 183 | \ProcessOptions\relax% 184 | %---------------------------------------------------------------------------% 185 | %->> Package macros 186 | %---------------------------------------------------------------------------% 187 | %- 188 | %-> Detect class and counter 189 | %- 190 | \newcommand*{\artxifcnt}[1]{% check if counter exists 191 | \ifcsname c@#1\endcsname% 192 | \expandafter\@firstoftwo% 193 | \else% 194 | \expandafter\@secondoftwo% 195 | \fi 196 | } 197 | \artxifcnt{chapter}{\def\artxmaincnt{chapter}}{\def\artxmaincnt{section}}% 198 | %- 199 | %-> Nomenclature item 200 | %- 201 | \providecommand{\nomenclatureitem}[3][ ]{% 202 | \noindent\makebox[0.15\textwidth][l]{#2}{{#3}\hfill{#1}}\par 203 | } 204 | %- 205 | %-> Macro for adding link to toc and bookmark 206 | %- 207 | \newcommand{\intotocnostar}[3]{% [<\chapter|...>,<*>,][example: \intotoc\chapter*{Nomenclature}] 208 | \edef\artxmark{\expandafter\@gobble\string#1}% get the string 'cmd' after '\' in a command '\cmd' 209 | #1#2{% excute command 210 | \phantomsection% create bookmark link 211 | \addcontentsline{toc}{\artxmark}{#3}% add content #3 to toc as #1 212 | #3% 213 | } 214 | \artxifstreq{\artxmark}{chapter}{% 215 | \markboth{\MakeUppercase{#3}}{}% set left mark 216 | }{% 217 | \markright{\MakeUppercase{#3}}% set right mark 218 | } 219 | } 220 | \newcommand{\intotocstar}[3][\artxmaincnt]{% [<chapter|...>,<extra commands>,<title>][example: \intotoc*{\cleardoublepage}{Abstract}] 221 | #2% excute command 222 | \phantomsection% create bookmark link 223 | \addcontentsline{toc}{#1}{#3}% add content #3 to toc as #1 224 | \artxifstreq{#1}{chapter}{% 225 | \markboth{\MakeUppercase{#3}}{}% set left mark 226 | }{% 227 | \markright{\MakeUppercase{#3}}% set right mark 228 | } 229 | } 230 | \newcommand{\intotoc}{\@ifstar{\intotocstar}{\intotocnostar}}% swap starred and non-starred versions 231 | \newcommand{\intobmknostar}[4][0]{% [<level>,<\chapter|...>,<*>,<title>] [example: \intobmk\chapter*{Abstract}] 232 | \edef\artxmark{\expandafter\@gobble\string#2}% get the string 'cmd' after '\' in a command '\cmd' 233 | #2#3{% excute command 234 | \phantomsection% create bookmark link 235 | \Hy@writebookmark% write bookmark 236 | {}% 237 | {#4}% 238 | {\@currentHref}% 239 | {#1}% 240 | {toc}% 241 | #4% 242 | }% 243 | \artxifstreq{\artxmark}{chapter}{% 244 | \markboth{\MakeUppercase{#4}}{}% set left mark 245 | }{% 246 | \markright{\MakeUppercase{#4}}% set right mark 247 | } 248 | } 249 | \newcommand{\intobmkstar}[3][0]{% [<level>,<extra commands>,<title>] [example: \intobmk*{\cleardoublepage}{\contentsname}] 250 | #2% excute command 251 | \phantomsection% create bookmark link 252 | \Hy@writebookmark% write bookmark 253 | {}% 254 | {#3}% 255 | {\@currentHref}% 256 | {#1}% 257 | {toc}% 258 | \artxifstreq{#1}{0}{% 259 | \markboth{\MakeUppercase{#3}}{}% set left mark 260 | }{% 261 | \markright{\MakeUppercase{#3}}% set right mark 262 | } 263 | } 264 | \newcommand{\intobmk}{\@ifstar{\intobmkstar}{\intobmknostar}}% swap starred and non-starred versions 265 | %\newcommand{\rmlbk}[1]{\begingroup\def\\{\relax\ifhmode\unskip\fi\space\ignorespaces}#1\endgroup}% remove line breaks 266 | %---------------------------------------------------------------------------% 267 | %->> Required packages 268 | %---------------------------------------------------------------------------% 269 | %- 270 | %-> Math packages 271 | %- 272 | \RequirePackage{amsmath,amsthm,amssymb}% math structures, theorems, and extended symbols 273 | \theoremstyle{plain}% for theorems, lemmas, propositions, etc 274 | \providecommand{\theoremname}{Theorem}% 275 | \newtheorem{theorem}{\theoremname}[\artxmaincnt] 276 | \providecommand{\axiomname}{Axiom}% 277 | \newtheorem{axiom}[theorem]{\axiomname} 278 | \providecommand{\lemmaname}{Lemma}% 279 | \newtheorem{lemma}[theorem]{\lemmaname} 280 | \providecommand{\corollaryname}{Corollary}% 281 | \newtheorem{corollary}[theorem]{\corollaryname} 282 | \providecommand{\assertionname}{Assertion}% 283 | \newtheorem{assertion}[theorem]{\assertionname} 284 | \providecommand{\propositionname}{Proposition}% 285 | \newtheorem{proposition}[theorem]{\propositionname} 286 | \providecommand{\conjecturename}{Conjecture}% 287 | \newtheorem{conjecture}[theorem]{\conjecturename} 288 | \theoremstyle{definition}% for definitions and examples 289 | \providecommand{\definitionname}{Definition}% 290 | \newtheorem{definition}{\definitionname}[\artxmaincnt] 291 | \providecommand{\examplename}{Example}% 292 | \newtheorem{example}{\examplename}[\artxmaincnt] 293 | \theoremstyle{remark}% for remarks and notes 294 | \providecommand{\remarkname}{Remark}% 295 | \newtheorem*{remark}{\remarkname} 296 | 297 | \ifartx@math% extra math packages 298 | \RequirePackage{mathtools}% extension to amsmath 299 | \fi 300 | %- 301 | %-> Language settings 302 | %- 303 | \def\artx@fontdir{./Font/}% extra font location 304 | \ifartx@pdftex% <pdflatex> call font packages 305 | \RequirePackage[utf8]{inputenc}% set input encoding, document must use utf-8 encoding 306 | \RequirePackage[T1]{fontenc}% set font encoding to enable modern font encoding 307 | %- Text font: English <default: computer modern|others: font packages> 308 | \RequirePackage{newtxtext}% main font, <times font: newtxtext|others: palatino> 309 | %- Math font: <default: computer modern|others: font packages> 310 | \RequirePackage[cmintegrals]{newtxmath}% times font, load after amsmath and newtxtext packages 311 | \RequirePackage{mathrsfs}% enable \mathscr for script alphabet 312 | \RequirePackage[cal=cm]{mathalfa}% map styles for calligraphic \mathcal and script \mathscr alphabet 313 | \else% <xelatex> or <lualatex> call system fonts 314 | \RequirePackage{fontspec}% support calling system fonts 315 | \@ifpackagelater{fontspec}{2016/12/27}{}{% 316 | \PackageError{artratex}{fontspec >= 2016/12/27 is required ...}{}% 317 | } 318 | %- Font properties: <family:rm|sf|tt> + <weight:lf|md|bf> + <shape:up|it|sl|sc> + <size> 319 | %- <\rmfamily,\textrm{}|\sffamily,\textsf{}|\ttfamily,\texttt{}>: family of font <Roman|Sans serif|Monospace>, default <\rmfamily> 320 | %- <\lfseries,\textlf{}|\mdseries,\textmd{}|\bfseries,\textbf{}>: weight of font <light|medium|bold>, default <\mdseries> 321 | %- <\upshape,\textup{}|\itshape,\textit{}|\scshape,\textsc{}|\slshape,\textsl{}>: shape of font <upright|italic|samll capital|slanted>, default <\upshape> 322 | %- Specify the default TeX font families with properties: <main>, <sans>, <mono> 323 | %- \setxxxxfont{<font>}[Path=<>,Extension=<>,UprightFont=<>,BoldFont=<>,ItalicFont=<>,BoldItalicFont=<>,SlantedFont=<>,BoldSlantedFont=<>,SmallCapsFont=<>]% 324 | %- The default setup for font loading automatically adds the Ligatures=TeX feature for the \setmainfont and \setsansfont commands 325 | %- Fonts known to LuaTEX or XETEX may be loaded by their standard names as you'd speak them out loud 326 | %- Fonts in the search path can be loaded by file name instead, but must include bold and italic variants explicitly 327 | %- When a font family has both slanted and italic shapes, these may be specified separately using the analogous features ItalicFont and SlantedFont 328 | %- Without these, the font switches for slanted (\textsl{},\slshape) will default to the italic shape 329 | %- Roman or Serif - typefaces with strokes - for main content 330 | %- examples: Times New Roman, Adobe Garamond Pro 331 | %\setmainfont{Adobe Garamond Pro}% 332 | %- extra font switches: {\normalfont ...}, \textnormal{...} due to \renewcommand*{\familydefault}{\rmdefault} 333 | %- Sans serif - typefaces without strokes - for headings demanding high readability 334 | %- examples: Arial, Helvetica, Gill Sans MT, Futura 335 | %\setsansfont{Gill Sans MT}% 336 | %- Monospaced - typefaces with same width - for programming, etc 337 | %- examples: Rockwell, Andale Mono, Courier 338 | %\setmonofont{Rockwell}% 339 | %- Specify user-defined font families and font switches (like \rmfamily, \sffamily, \ttfamily) 340 | %- without NFSSFamily option, a font family is defined only if adding a new font name 341 | %\newfontfamily\<font-switch>{<font>}[<font features>]% 342 | %\newcommand{\text<font-switch>}[1]{{\<font-switch> #1}}% 343 | %- Text font: English <default: computer modern|fontspec: system fonts|others: font packages> 344 | %\RequirePackage{newtxtext}% main font 345 | %- Math font: <default: computer modern|others: font packages <newtxmath|unicode-math>> 346 | %\RequirePackage[cmintegrals]{newtxmath}% times font, load after amsmath and newtxtext packages 347 | %\RequirePackage{mathrsfs}% enable \mathscr for script alphabet 348 | %\RequirePackage[cal=cm]{mathalfa}% map styles for calligraphic \mathcal and script \mathscr alphabet 349 | \IfFontExistsTF{XITS-Regular.otf}{% 350 | \RequirePackage{unicode-math}% unicode font configuration <XITS|STIX2> 351 | \def\boldsymbol#1{\symbfit{#1}}% treat obsoleteness 352 | \providecommand{\Vector}[1]{\symbfit{#1}}% general vectors in bold italic 353 | \providecommand{\unitVector}[1]{\symbfup{#1}}% unit vectors in bold roman 354 | \providecommand{\Matrix}[1]{\symbfup{#1}}% matrix in bold roman 355 | \providecommand{\unitMatrix}[1]{\symbfup{#1}}% identity matrix in bold roman 356 | \providecommand{\Tensor}[1]{\symbfsfup{#1}}% tensor in sans-serif bold italic 357 | \providecommand{\unitTensor}[1]{\symbfsfup{#1}}% identity tensor in sans-serif bold 358 | \setmainfont[NFSSFamily=entextrm]{XITS}[ 359 | Extension = .otf, 360 | UprightFont = *-Regular, 361 | BoldFont = *-Bold, 362 | ItalicFont = *-Italic, 363 | BoldItalicFont = *-BoldItalic, 364 | Ligatures=TeX, 365 | ] 366 | \setsansfont[NFSSFamily=entextsf]{XITS}[ 367 | Extension = .otf, 368 | UprightFont = *-Regular, 369 | BoldFont = *-Bold, 370 | ItalicFont = *-Italic, 371 | BoldItalicFont = *-BoldItalic, 372 | Ligatures=TeX, 373 | ] 374 | \setmonofont[NFSSFamily=entexttt]{XITS}[ 375 | Extension = .otf, 376 | UprightFont = *-Regular, 377 | BoldFont = *-Bold, 378 | ItalicFont = *-Italic, 379 | BoldItalicFont = *-BoldItalic, 380 | Ligatures=TeX, 381 | ] 382 | \setmathfont{XITSMath-Regular}[ 383 | Extension = .otf, 384 | BoldFont = XITSMath-Bold, 385 | Ligatures=TeX, 386 | StylisticSet = 1, 387 | ] 388 | \setmathfont{XITSMath-Regular}[ 389 | Extension = .otf, 390 | range={cal,bfcal}, 391 | Ligatures=TeX, 392 | StylisticSet = 1, 393 | ] 394 | \setmathfont{XITSMath-Regular}[ 395 | Extension = .otf, 396 | range={scr,bfscr}, 397 | Ligatures=TeX, 398 | StylisticSet = 2, 399 | ] 400 | \setmathrm{XITSMath-Regular}[ 401 | Extension = .otf, 402 | BoldFont = XITSMath-Bold, 403 | Ligatures=TeX, 404 | StylisticSet = 1, 405 | ] 406 | \setmathsf{XITSMath-Regular}[ 407 | Extension = .otf, 408 | BoldFont = XITSMath-Bold, 409 | Ligatures=TeX, 410 | StylisticSet = 1, 411 | ] 412 | \setmathtt{XITSMath-Regular}[ 413 | Extension = .otf, 414 | BoldFont = XITSMath-Bold, 415 | Ligatures=TeX, 416 | StylisticSet = 1, 417 | ] 418 | }{% 419 | \RequirePackage{newtxtext}% main font 420 | \RequirePackage[cmintegrals]{newtxmath}% times font, load after amsmath and newtxtext packages 421 | \RequirePackage{mathrsfs}% enable \mathscr for script alphabet 422 | \RequirePackage[cal=cm]{mathalfa}% map styles for calligraphic \mathcal and script \mathscr alphabet 423 | } 424 | %- Text font: Chinese 425 | \ifartx@windows% 426 | \setCJKmainfont{SimSun}[AutoFakeBold=2.5,ItalicFont=KaiTi]% 427 | \setCJKsansfont{SimHei}[AutoFakeBold=2.5]% 428 | \setCJKmonofont{FangSong}% 429 | \else\ifartx@mac% 430 | \setCJKmainfont{Songti SC}[% 431 | UprightFont = * Light, 432 | BoldFont = * Bold, 433 | ItalicFont = Kaiti SC, 434 | BoldItalicFont = Kaiti SC Bold, 435 | ] 436 | \setCJKsansfont{Heiti SC}[BoldFont = * Medium]% 437 | \setCJKmonofont{STFangsong}% 438 | \else\ifartx@adobe% call font from system font library 439 | \setCJKmainfont{AdobeSongStd-Light}[% 440 | AutoFakeBold=2.5, 441 | ItalicFont=AdobeKaitiStd-Regular, 442 | ] 443 | \setCJKsansfont{AdobeHeitiStd-Regular}[% 444 | AutoFakeBold=2.5, 445 | ]% 446 | \setCJKmonofont{AdobeFangsongStd-Regular}% 447 | \else\ifartx@none% call font from local fontdir 448 | %- Without path: i) if font specified by a string without extension, fontspec will 449 | %- treat the given string as font name and use system fontconfig to search the font name 450 | %- in system font library; ii) if font specified by a string with extension, fontspec will 451 | %- treat the given string as font filename and use kpathsea to search the font filename in 452 | %- LaTeX distribution 453 | %- With path: fontspec will treat the given string as font filename and use kpathsea to 454 | %- search the font filename in path, and extension is optional but recommended in this case 455 | \setCJKmainfont{AdobeSongStd-Light}[% 456 | Path=\artx@fontdir, 457 | Extension=.otf, 458 | AutoFakeBold=2.5, 459 | ItalicFont=AdobeKaitiStd-Regular, 460 | ] 461 | \setCJKsansfont{AdobeHeitiStd-Regular}[% 462 | Path=\artx@fontdir, 463 | Extension=.otf, 464 | AutoFakeBold=2.5, 465 | ]% 466 | \setCJKmonofont{AdobeFangsongStd-Regular}[% 467 | Path=\artx@fontdir, 468 | Extension=.otf, 469 | ] 470 | \fi\fi\fi\fi 471 | \fi 472 | %- 473 | %-> Bibliography processor and package 474 | %- 475 | \def\artxbibref{Biblio/ref.bib}% bibliography reference file 476 | \def\artxbibtexnum{Biblio/gbt7714-numerical}% bibtex numbers bst 477 | \def\artxbibtexauy{Biblio/gbt7714-author-year}% bibtex authoryear bst 478 | \def\artxbibtexalp{alpha}% bibtex alpha bst 479 | \def\artxbibernum{Biblio/gb7714-2015}% biber numbers bst 480 | \def\artxbiberauy{Biblio/gb7714-2015ay}% biber authoryear bst 481 | \def\artxbiberalp{alphabetic}% biber alpha bst 482 | %- Bibtex processor + natbib package 483 | \ifartx@bibtex% 484 | % Set punctuation and mode of citation style 485 | \newcommand{\bibstyle@super}{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}% 486 | \newcommand{\bibstyle@numbers}{\bibpunct{[}{]}{,}{n}{,}{,}}% 487 | \newcommand{\bibstyle@authoryear}{\bibpunct{(}{)}{;}{a}{,}{,}}% 488 | \newcommand{\bibstyle@alpha}{\bibpunct{[}{]}{,}{n}{,}{,}}% 489 | \ifartx@numbers% enable numbered citation style 490 | \RequirePackage[sort&compress]{natbib}% numbered citation mode 491 | \ifartx@super% enable superscripted citation style 492 | \citestyle{super}% 493 | \else 494 | \citestyle{numbers}% 495 | \fi 496 | \bibliographystyle{\artxbibtexnum}% numbered scheme 497 | \fi 498 | \ifartx@authoryear% enable author year citation style 499 | \RequirePackage{natbib}% author year citation mode 500 | \citestyle{authoryear}% 501 | \bibliographystyle{\artxbibtexauy}% author year scheme 502 | \fi 503 | \ifartx@alpha% enable alpha citation style 504 | \RequirePackage[square,comma,numbers]{natbib}% alpha citation mode 505 | \bibliographystyle{\artxbibtexalp}% alpha scheme 506 | \fi 507 | \providecommand*{\citetns}[2][]{% text embedded \citet in superscripted mode 508 | \begingroup\citestyle{numbers}\citet[#1]{#2}\endgroup% 509 | } 510 | \providecommand*{\citepns}[2][]{% text embedded \citep in superscripted mode 511 | \begingroup\citestyle{numbers}\citep[#1]{#2}\endgroup% 512 | } 513 | \fi 514 | %- Biber processor + biblatex package 515 | \ifartx@biber% 516 | \AtEndPreamble{\RequirePackage{hyperref}}% enable biblatex detection of hyperref 517 | \ifartx@numbers% enable numbered citation style 518 | \ifartx@super% enable superscripted citation style 519 | \RequirePackage[backend=biber,style=\artxbibernum,mincitenames=1,maxcitenames=2]{biblatex}% 520 | \else 521 | \RequirePackage[backend=biber,style=\artxbibernum,mincitenames=1,maxcitenames=2]{biblatex}% 522 | \renewrobustcmd*{\citet}{\textcite}% 523 | \renewrobustcmd*{\citep}{\parencite}% 524 | \fi 525 | \fi 526 | \ifartx@authoryear% enable author year citation style 527 | \RequirePackage[backend=biber,style=\artxbiberauy,mincitenames=1,maxcitenames=2]{biblatex}% 528 | \renewrobustcmd*{\citet}{\textcite}% 529 | \renewrobustcmd*{\citep}{\parencite}% 530 | \fi 531 | \ifartx@alpha% enable alpha citation style 532 | \RequirePackage[backend=biber,style=\artxbiberalp]{biblatex}% 533 | \fi 534 | \addbibresource{\artxbibref}% 535 | \providecommand{\citep}[1]{\parencite{#1}}% compatibility 536 | \providecommand{\citet}[1]{\textcite{#1}}% compatibility 537 | \providecommand{\bibetal}{et al.}% compatibility 538 | \providecommand{\biband}{and}% compatibility 539 | \DefineBibliographyStrings{english}{% 540 | andincite = {\biband}, 541 | andothersincite = {\bibetal{}}, 542 | andincitecn = {\biband}, 543 | andothersincitecn = {\bibetal}, 544 | } 545 | \fi 546 | %- 547 | %-> Figure environment support 548 | %- 549 | \RequirePackage{graphicx}% packages for including graphics 550 | \RequirePackage[format=plain,hangindent=2.0em,font={small,bf},skip=8pt,labelsep=space]{caption}% options: [margin=10pt,labelfont=bf] 551 | \RequirePackage{subcaption}% package for subfigures 552 | \RequirePackage[list=off]{bicaption}% package for binary captions 553 | \DeclareCaptionOption{bi-first}[]{}% 1st language 554 | \DeclareCaptionOption{bi-second}[]{% 2nd language 555 | \def\tablename{Table}% 556 | \def\figurename{Figure}% 557 | } 558 | \captionsetup[bi-first]{bi-first}% 559 | \captionsetup[bi-second]{bi-second}% 560 | \RequirePackage[section]{placeins}% prevent floats from being moved over section 561 | %- 562 | %-> Page layout and spacing 563 | %- 564 | \ifartx@geometry% enable geometry to redefine page layout 565 | \RequirePackage{geometry}% page layout 566 | %\RequirePackage{setspace}% line spacing 567 | \fi 568 | \ifartx@lscape% landscape layout 569 | \RequirePackage{fancyhdr}% fancy headers and footers 570 | %- usage: \begin{landscape} [\thispagestyle{lscape}] text... \end{landscape} 571 | \RequirePackage{pdflscape}% landscape environment 572 | \RequirePackage[absolute]{textpos}% rotated page number 573 | \fi 574 | \ifartx@xhf% header and footer style 575 | \RequirePackage{fancyhdr}% fancy headers and footers 576 | \fi 577 | %\RequirePackage{microtype}% improves general appearance of the text 578 | %- 579 | %-> Color 580 | %- 581 | \ifartx@color% enable color package to use color 582 | %\RequirePackage{color}% 583 | \RequirePackage[usenames,dvipsnames,table]{xcolor}% 584 | \fi 585 | %- 586 | %-> Draw graphics directly with TeX commands 587 | %- 588 | \ifartx@tikz% 589 | \RequirePackage{tikz}% automatically load pgf package 590 | \usetikzlibrary{% load libraries 591 | positioning, 592 | arrows, 593 | calc, 594 | trees 595 | }% 596 | \fi 597 | %- 598 | %-> Complex tables 599 | %- 600 | \ifartx@table% 601 | \RequirePackage{ctable,multirow}% imports the array, tabularx, booktabs and multirow packages 602 | \fi 603 | %- 604 | %-> List structures 605 | %- 606 | \ifartx@list% enable enhanced list and verbatim structures 607 | \RequirePackage{verbatim}% improve verbatim environment 608 | \RequirePackage{enumitem}% configure the enumerate environment 609 | \setlist[enumerate]{wide=\parindent}% only indent the first line 610 | \setlist[itemize]{wide=\parindent}% only indent the first line 611 | \setlist{nosep}% default text spacing 612 | \RequirePackage{listings}% source code 613 | \RequirePackage{algpseudocode,algorithm,algorithmicx}% algorithm 614 | \providecommand{\algname}{Algorithm}% 615 | \def\ALG@name{\algname}% rename label 616 | \fi 617 | %- 618 | %-> Link support 619 | %- 620 | \AtEndPreamble{% 621 | \RequirePackage{hyperref}% load at last 622 | \hypersetup{% set hyperlinks 623 | pdfencoding=auto,% allows non-Latin based languages in bookmarks 624 | psdextra=true,% extra support for math symbols in bookmarks 625 | %bookmarks=true,% show bookmarks bar 626 | bookmarksnumbered=true,% put section numbers in bookmarks 627 | pdftitle={\@title},% title 628 | pdfauthor={\@author},% author 629 | pdfsubject={\@title},% subject 630 | %pdftoolbar=true,% show toolbar 631 | %pdfmenubar=true,% show menu 632 | pdffitwindow=false,% window fit to page when opened 633 | pdfstartview={FitH},% fits the width of the page to the window 634 | %pdfnewwindow=true,% links in new window 635 | %backref=true,% do bibliographical back references 636 | %pagebackref=true,% backreference by page number 637 | colorlinks=true,% false: boxed links; true: colored links 638 | linkcolor=black,% color of internal links 639 | citecolor=blue,% color of links to bibliography 640 | filecolor=blue,% color of file links 641 | urlcolor=blue,% color of external links 642 | } 643 | \ifartx@xlink% set link color to black 644 | \hypersetup{% set hyperlinks 645 | hidelinks,% remove link color and border 646 | } 647 | \fi 648 | } 649 | %---------------------------------------------------------------------------% 650 | %->> Configuration command 651 | %---------------------------------------------------------------------------% 652 | %- 653 | %-> Extensions and directories for graphics 654 | %- 655 | %- Declare graphic extensions for automatic selection when including graphics 656 | %- via avoiding supplying graphic extensions in \includegraphics command, 657 | %- the source file can be more general and adaptive 658 | \ifartx@xetex% 659 | \DeclareGraphicsExtensions{.pdf,.png,.jpg,.eps,.tif,.bmp,.gif}% 660 | \else% <pdflatex> or <lualatex> 661 | \DeclareGraphicsExtensions{.pdf,.png,.jpg}% 662 | \fi 663 | \graphicspath{{Img/}}% search path for figures 664 | %- 665 | %-> Layout, space, and style 666 | %- 667 | \ifartx@geometry% enable geometry to redefine page layout 668 | \geometry{paper=a4paper,left=31.7mm,right=31.7mm,top=25.4mm,bottom=25.4mm,headheight=12pt,headsep=17.5pt,footskip=10.4mm}% 669 | \fi 670 | %\linespread{1.5}% 1.5 for "one and a half" line spacing, and 2.0 for "double" line spacing 671 | %\setlength{\parskip}{0.5ex plus 0.25ex minus 0.25ex}% skip space a paragraph 672 | \setcounter{tocdepth}{2}% depth for the table of contents 673 | \setcounter{secnumdepth}{3}% depth for section numbering, default is 2(subsub) 674 | %- Set equation, figure, table numbering 675 | %\numberwithin{equation}{section}% set enumeration level 676 | %\renewcommand{\theequation}{\thesection\arabic{equation}}% configure the label style 677 | %\numberwithin{figure}{section}% set enumeration level 678 | %\renewcommand{\thefigure}{\thesection\arabic{figure}}% configure the label style 679 | %\numberwithin{table}{section}% set enumeration level 680 | %\renewcommand{\thetable}{\thesection\arabic{table}}% configure the label style 681 | %- Set bibliography entry 682 | \ifartx@bibtex% 683 | \setlength{\bibsep}{0.0ex plus 0.2ex minus 0.2ex}% set distance between entries 684 | \fi 685 | \ifartx@biber% 686 | %\setlength\bibitemsep{0.5\baselineskip}% set distance between entries 687 | \setlength\bibitemsep{0.0ex plus 0.2ex minus 0.2ex}% set distance between entrie 688 | \fi 689 | \renewcommand*{\bibfont}{\small}% set font size for bibliography 690 | %- 691 | %-> Page header and footer Style 692 | %- 693 | %- Page styles in Latex refers to headers and footers of a document. 694 | %- These headers/footers typically contain document titles, chapter 695 | %- or section numbers/names, and page numbers. 696 | %- Configure fancy style 697 | \ifartx@xhf% user defined header and footer style 698 | \pagestyle{fancy}% 699 | %- customizing headers and footers in LaTeX is a two-stage process 700 | %- 1) \chapter|section call \chapter|sectionmark that call \markboth|right to define \left|rightmark 701 | %- but \chapter*|section* do not call \chapter|sectionmark, then manually call \markboth|right is needed to update \left|rightmark 702 | %- \markboth{here set \leftmark for chapter heading}{here set \rightmark for section heading} 703 | %- 2) in header/footer definition, \left|rightmark represent the current chapter and section heading 704 | %- original chaptermark and sectionmark for headings 705 | %\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{\chaptername\ \thechapter.\ #1}}{}}% 706 | %\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}% 707 | %- redefine to set mark to actual name 708 | %\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{#1}}{}}% 709 | %\renewcommand{\sectionmark}[1]{\markright{\MakeUppercase{#1}}{}}% 710 | %- Deactivate uppercase effect 711 | \renewcommand{\MakeUppercase}[1]{#1}% 712 | %- Define different kinds of header and footer for different parts 713 | \fancypagestyle{frontmatterstyle}{% style for frontmatter 714 | \fancyhf{}% clear fields 715 | \fancyhead[C]{\footnotesize \ifnumodd{\value{page}}{\leftmark}{\@title}}% structure elements 716 | \fancyfoot[C]{\footnotesize \thepage}% page number 717 | \renewcommand{\headrulewidth}{0.8pt}% header rule 718 | \renewcommand{\footrulewidth}{0pt}% footer rule 719 | } 720 | \fancypagestyle{mainmatterstyle}{% style for mainmatter 721 | \fancyhf{}% clear fields 722 | \fancyhead[C]{\footnotesize \ifnumodd{\value{page}}{\leftmark}{\@title}}% structure elements 723 | \fancyfoot[C]{\footnotesize \ifnumodd{\value{page}}{\hspace*{\fill}\thepage}{\thepage\hspace*{\fill}}}% page number 724 | \renewcommand{\headrulewidth}{0.8pt}% header rule 725 | \renewcommand{\footrulewidth}{0pt}% footer rule 726 | } 727 | \fancypagestyle{backmatterstyle}{% header and footer style for backmatter 728 | \fancyhf{}% clear fields 729 | \fancyhead[C]{\footnotesize \ifnumodd{\value{page}}{\leftmark}{\@title}}% structure elements 730 | \fancyfoot[C]{\footnotesize \ifnumodd{\value{page}}{\hspace*{\fill}\thepage}{\thepage\hspace*{\fill}}}% page number 731 | \renewcommand{\headrulewidth}{0.8pt}% header rule 732 | \renewcommand{\footrulewidth}{0pt}% footer rule 733 | } 734 | %- Redefine \frontmatter to include the change 735 | \providecommand{\frontmatter}{}% compatibility for non-book classes 736 | \let\artxfrontmatter\frontmatter% 737 | \renewcommand{\frontmatter}{% 738 | \artxfrontmatter% 739 | \pagestyle{frontmatterstyle}% 740 | } 741 | %- Redefine \mainmatter to include the change 742 | \providecommand{\mainmatter}{}% compatibility for non-book classes 743 | \let\artxmainmatter\mainmatter% 744 | \renewcommand{\mainmatter}{% 745 | \artxmainmatter% 746 | \pagestyle{mainmatterstyle}% 747 | } 748 | %- Redefine \backmatter to include the change 749 | \providecommand{\backmatter}{}% compatibility for non-book classes 750 | \let\artxbackmatter\backmatter% 751 | \renewcommand{\backmatter}{% 752 | \artxbackmatter% 753 | \pagestyle{backmatterstyle}% 754 | } 755 | %- Some Latex commands, like \chapter, use the \thispagestyle command 756 | %- to automatically switch to the plain page style, thus ignoring the 757 | %- page style currently in effect. To customize such pages you must 758 | %- redefine the plain pagestyle. If you want the plain style inherits 759 | %- the current style, comment all the lines in plain style definition. 760 | \fancypagestyle{plain}{% 761 | %\fancyhf{}% clear fields 762 | %\renewcommand{\headrulewidth}{0pt}% header rule 763 | %\renewcommand{\footrulewidth}{0pt}% footer rule 764 | } 765 | \fancypagestyle{noheaderstyle}{% header and footer style for no header 766 | \fancyhf{}% clear fields 767 | %\fancyhead[C]{\footnotesize \ifnumodd{\value{page}}{\leftmark}{\@title}}% structure elements 768 | \fancyfoot[C]{\footnotesize \ifnumodd{\value{page}}{\hspace*{\fill}\thepage}{\thepage\hspace*{\fill}}}% page number 769 | \renewcommand{\headrulewidth}{0pt}% header rule 770 | \renewcommand{\footrulewidth}{0pt}% footer rule 771 | } 772 | \fi 773 | %- 774 | %-> Configure landscape environment 775 | %- 776 | \ifartx@lscape% 777 | \fancypagestyle{lscape}{% landscape layout style 778 | \fancyhf{}% clear fields 779 | \fancyhead[C]{% 780 | \begin{textblock}{1.0}[0.5,0.5](0.08,0.5)% 781 | \rotatebox{90}{% 782 | \footnotesize \ifnumodd{\value{page}}{\leftmark}{\@title}% 783 | }% 784 | \end{textblock}% 785 | \begin{textblock}{1.0}[0.5,0.5](0.08,0.5)% 786 | \rotatebox{90}{% 787 | \rule[-14pt]{\textwidth}{0.8pt}% 788 | }% 789 | \end{textblock}% 790 | }% 791 | \fancyfoot[C]{% 792 | \begin{textblock}{1.0}[0.5,0.5](0.92,0.5) 793 | \rotatebox{90}{% 794 | \footnotesize \ifnumodd{\value{page}}{\hspace*{\fill}\thepage}{\thepage\hspace*{\fill}}% 795 | }% 796 | \end{textblock}% 797 | }% 798 | %- textpos: \begin{textblock}{<blockwidth>}[<ho>,<vo>](<hpos>,<vpos>) text... \end{textblock} 799 | %- origin of the absolute coordinate is the top-left corner of the page 800 | %- text will be set in a box <blockwidth> modules wide and placed on the page 801 | %- with the point [<ho>,<vo>] of the block at the position (<hpos>,<vpos>) of the page 802 | %- [<ho>,<vo>] are fractions of the width and height of the text box and specify 803 | %- the reference point of the text box, [0,0]: top left; [0.5,0.5]: middle; [0,1]: bottom left 804 | %- [<hpos>,<vpos>] are fractions of the width and height of the page and specify 805 | %- the position point on page, [0,0]: top left; [0.5,0.5]: middle; [0,1]: bottom left 806 | %- set unit of <blockwidth>, <hpos> arguments via module 807 | \setlength{\TPHorizModule}{\paperwidth}% 808 | %- set unit of <vpos> argument via module 809 | \setlength{\TPVertModule}{\paperheight}% 810 | %- \rule[raise]{width}{thickness} 811 | %- \rotatebox[origin=c]{angle}{text} 812 | \renewcommand{\headrulewidth}{0pt}% header rule 813 | \renewcommand{\footrulewidth}{0pt}% footer rule 814 | } 815 | \fi 816 | %- 817 | %-> Configure list environment 818 | %- 819 | \ifartx@list% enable enhanced list 820 | \definecolor{artxgreen}{rgb}{0,0.6,0} 821 | \definecolor{artxgray}{rgb}{0.5,0.5,0.5} 822 | \definecolor{artxmauve}{rgb}{0.58,0,0.82} 823 | \lstset{% 824 | numberbychapter=false,% numbered sequentially or by chapter 825 | backgroundcolor=\color{white},% background color; 826 | basicstyle=\scriptsize,% font size for code 827 | breakatwhitespace=false,% sets if automatic breaks should only happen at whitespace 828 | breaklines=true,% sets automatic line breaking 829 | captionpos=b,% caption-position to bottom 830 | commentstyle=\color{artxgreen},% comment style 831 | %deletekeywords={...},% delete keywords from the given language 832 | frame=single,% adds a frame around the code 833 | keepspaces=true,% keeps spaces in text for keeping indentation of code 834 | keywordstyle=\color{blue},% keyword style 835 | %otherkeywords={*,...},% add more keywords to the set 836 | numbers=left,% where to put the line-numbers; possible values are (none, left, right) 837 | numbersep=5pt,% how far the line-numbers are from the code 838 | numberstyle=\tiny\color{artxgray},% the style that is used for the line-numbers 839 | rulecolor=\color{black},% if not set, the frame-color may be changed on line-breaks 840 | showspaces=false,% show spaces everywhere adding particular underscores; 841 | showstringspaces=false,% underline spaces within strings only 842 | showtabs=false,% show tabs within strings adding particular underscores 843 | stepnumber=2,% the step between two line-numbers. If it's 1, each line will be numbered 844 | stringstyle=\color{artxmauve},% string literal style 845 | tabsize=2,% sets default tabsize to 2 spaces 846 | title=\lstname% show the filename of files 847 | } 848 | \fi 849 | %- 850 | %-> Page background 851 | %- 852 | \ifartx@background% 853 | \definecolor{backgroundcolor}{rgb}{0.85,0.85,0.85}% 854 | \pagecolor{backgroundcolor}% background color 855 | \fi 856 | %---------------------------------------------------------------------------% 857 | \endinput 858 | 859 | -------------------------------------------------------------------------------- /Style/ucasthesis.cfg: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- Document Class Configuration -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | %- Copyright (C) Huangrui Mo <huangrui.mo@gmail.com> 7 | %- This is free software: you can redistribute it and/or modify it 8 | %- under the terms of the GNU General Public License as published by 9 | %- the Free Software Foundation, either version 3 of the License, or 10 | %- (at your option) any later version. 11 | %---------------------------------------------------------------------------% 12 | %->> Identification 13 | %---------------------------------------------------------------------------% 14 | \ProvidesFile{ucasthesis.cfg}[2014/10/01 v1.0 class configuration file]% 15 | %---------------------------------------------------------------------------% 16 | %->> Chinese titlepage 17 | %---------------------------------------------------------------------------% 18 | \def\ucas@label@ch@confidential{密级} 19 | \def\ucas@label@ch@orderid{编号} 20 | \def\ucas@label@ch@classid{分类号} 21 | \def\ucas@label@ch@udc{U D C} 22 | \def\ucas@label@ch@thesis{} 23 | \def\ucas@label@ch@thesis@bac{学士学位论文} 24 | \def\ucas@label@ch@thesis@mas{硕士学位论文} 25 | \def\ucas@label@ch@thesis@doc{博士学位论文} 26 | \def\ucas@label@ch@thesis@pdc{博士后研究工作报告} 27 | \def\ucas@label@ch@author{} 28 | \def\ucas@label@ch@author@bac{作者姓名:} 29 | \def\ucas@label@ch@author@mas{作者姓名:} 30 | \def\ucas@label@ch@author@doc{作者姓名:} 31 | \def\ucas@label@ch@author@pdc{博士后姓名} 32 | \def\ucas@label@ch@advisor{指导教师:} 33 | \def\ucas@label@ch@degree{学位类别:} 34 | \def\ucas@label@ch@major{} 35 | \def\ucas@label@ch@major@bac{专\quad\quad 业:} 36 | \def\ucas@label@ch@major@mas{学科专业:} 37 | \def\ucas@label@ch@major@doc{学科专业:} 38 | \def\ucas@label@ch@major@pdc{专\quad 业(二级学科)名称} 39 | \def\ucas@label@ch@subject{流动站(一级学科)名称} 40 | \def\ucas@label@ch@institute{} 41 | \def\ucas@label@ch@institute@bac{学院(系):} 42 | \def\ucas@label@ch@institute@mas{培养单位:} 43 | \def\ucas@label@ch@institute@doc{培养单位:} 44 | \def\ucas@label@ch@institute@pdc{} 45 | \def\ucas@label@ch@completedate{工作完成日期} 46 | \def\ucas@label@ch@submitdate{报告提交日期} 47 | \def\ucas@label@ch@studydatefrom{研究工作起始时间} 48 | \def\ucas@label@ch@studydateto{研究工作期满时间} 49 | \def\ucas@value@ch@school{中国科学院大学} 50 | \def\ucas@value@ch@academy{中国科学院} 51 | \def\ucas@value@ch@orginization{人事部} 52 | %---------------------------------------------------------------------------% 53 | %->> English titlepage 54 | %---------------------------------------------------------------------------% 55 | \def\ucas@value@en@thesistype{} 56 | \def\ucas@value@en@thesistype@bac{thesis} 57 | \def\ucas@value@en@thesistype@mas{thesis} 58 | \def\ucas@value@en@thesistype@doc{dissertation} 59 | \def\ucas@value@en@thesistype@pdc{report} 60 | \def\ucas@value@en@school{University of Chinese Academy of Sciences} 61 | \def\ucas@label@en@statement{A \ucas@value@en@thesistype\ submitted to\\ 62 | \ucas@value@en@school\\ 63 | in partial fulfillment of the requirement\\ 64 | for the degree of\\ 65 | \ucas@value@en@degree\ of \ucas@value@en@degreetype\\ 66 | in\ \ucas@value@en@major} 67 | %---------------------------------------------------------------------------% 68 | %->> Structure elements 69 | %---------------------------------------------------------------------------% 70 | \def\ucas@label@ch@tocname{目\quad 录} 71 | \def\ucas@label@en@tocname{Contents} 72 | \def\ucas@label@ch@lsfigname{图形列表} 73 | \def\ucas@label@en@lsfigname{List of Figures} 74 | \def\ucas@label@ch@lstabname{表格列表} 75 | \def\ucas@label@en@lstabname{List of Tables} 76 | \def\ucas@label@ch@algname{算法} 77 | \def\ucas@label@en@algname{Algorithm} 78 | \def\ucas@label@ch@bibname{参考文献} 79 | \def\ucas@label@en@bibname{References} 80 | \def\ucas@label@ch@bibetal{等} 81 | \def\ucas@label@en@bibetal{et al.} 82 | \def\ucas@label@ch@biband{和} 83 | \def\ucas@label@en@biband{ and } 84 | \def\ucas@label@ch@axiomname{公理} 85 | \def\ucas@label@en@axiomname{Axiom} 86 | \def\ucas@label@ch@theoremname{定理} 87 | \def\ucas@label@en@theoremname{Theorem} 88 | \def\ucas@label@ch@lemmaname{引理} 89 | \def\ucas@label@en@lemmaname{Lemma} 90 | \def\ucas@label@ch@corollaryname{推论} 91 | \def\ucas@label@en@corollaryname{Corollary} 92 | \def\ucas@label@ch@assertionname{断言} 93 | \def\ucas@label@en@assertionname{Assertion} 94 | \def\ucas@label@ch@propositionname{命题} 95 | \def\ucas@label@en@propositionname{Proposition} 96 | \def\ucas@label@ch@conjecturename{猜想} 97 | \def\ucas@label@en@conjecturename{Conjecture} 98 | \def\ucas@label@ch@definitionname{定义} 99 | \def\ucas@label@en@definitionname{Definition} 100 | \def\ucas@label@ch@examplename{例} 101 | \def\ucas@label@en@examplename{Example} 102 | \def\ucas@label@ch@remarkname{注} 103 | \def\ucas@label@en@remarkname{Remark} 104 | \def\ucas@label@ch@proofname{证明} 105 | \def\ucas@label@en@proofname{Proof} 106 | \def\ucas@label@ch@keywords{关键词:} 107 | \def\ucas@label@en@keywords{Keywords:} 108 | %---------------------------------------------------------------------------% 109 | %->> Author's declaration 110 | %---------------------------------------------------------------------------% 111 | \def\ucas@label@ch@declare@creativity{\ucas@value@ch@school\\学位论文原创性声明} 112 | \def\ucas@value@ch@declare@creativity{% 113 | 本人郑重声明:所呈交的学位论文是本人在导师的指导下独立进行研究工作所取得的成果。 114 | 尽我所知,除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表 115 | 或撰写过的研究成果。对论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中 116 | 以明确方式标明或致谢。 117 | } 118 | \def\ucas@label@ch@declare@author{作者签名:} 119 | \def\ucas@label@ch@declare@advisor{导师签名:} 120 | \def\ucas@label@ch@declare@date{日\quad\quad 期:} 121 | \def\ucas@label@ch@declare@rights{\ucas@value@ch@school\\学位论文授权使用声明} 122 | \def\ucas@value@ch@declare@rights{% 123 | 本人完全了解并同意遵守\ucas@value@ch@academy 有关保存和使用学位论文的规定, 124 | 即\ucas@value@ch@academy 有权保留送交学位论文的副本,允许该论文被查阅, 125 | 可以按照学术研究公开原则和保护知识产权的原则公布该论文的全部或部分内容, 126 | 可以采用影印、缩印或其他复制手段保存、汇编本学位论文。 127 | } 128 | \def\ucas@value@ch@declare@rule{涉密及延迟公开的学位论文在解密或延迟期后适用本声明。} 129 | %---------------------------------------------------------------------------% 130 | \endinput 131 | 132 | -------------------------------------------------------------------------------- /Style/ucasthesis.cls: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- Document Class -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | %- Copyright (C) Huangrui Mo <huangrui.mo@gmail.com> 7 | %- This is free software: you can redistribute it and/or modify it 8 | %- under the terms of the GNU General Public License as published by 9 | %- the Free Software Foundation, either version 3 of the License, or 10 | %- (at your option) any later version. 11 | %---------------------------------------------------------------------------% 12 | %->> Identification 13 | %---------------------------------------------------------------------------% 14 | \NeedsTeXFormat{LaTeX2e}% 15 | \newcommand*\@iflatexlater{\@ifl@t@r\fmtversion}% 16 | \@iflatexlater{2017/01/01}{}{% 17 | \ClassError{ucasthesis}{TeXLive/MikTex >= 2017 is required ...}{}% 18 | } 19 | \ProvidesClass{ucasthesis}[2014/10/01 v1.0 LaTeX document class]% 20 | %---------------------------------------------------------------------------% 21 | %->> Declare options 22 | %---------------------------------------------------------------------------% 23 | %- 24 | %-> Layout 25 | %- 26 | \DeclareOption{oneside}{% 27 | \PassOptionsToClass{oneside}{ctexbook}% 28 | } 29 | \DeclareOption{twoside}{% 30 | \PassOptionsToClass{twoside}{ctexbook}% 31 | } 32 | \newif\ifucas@print \ucas@printfalse 33 | \DeclareOption{print}{% 34 | \PassOptionsToClass{twoside}{ctexbook}% 35 | \ucas@printtrue% 36 | } 37 | %- 38 | %-> Language 39 | %- 40 | \newif\ifucas@plain \ucas@plainfalse 41 | \DeclareOption{scheme=plain}{% enable plain writing style 42 | \PassOptionsToClass{scheme=plain}{ctexbook}% 43 | \ucas@plaintrue% 44 | } 45 | %- 46 | %-> Draft version info 47 | %- 48 | \newif\ifucas@versioninfo \ucas@versioninfofalse 49 | \DeclareOption{draftversion}{% 50 | \ucas@versioninfotrue% 51 | } 52 | %- 53 | %-> Handle non-implemented options 54 | %- 55 | \DeclareOption*{% 56 | \PassOptionsToClass{\CurrentOption}{ctexbook}% 57 | } 58 | %- 59 | %-> Terminates all options processing 60 | %- 61 | \ProcessOptions\relax% 62 | %---------------------------------------------------------------------------% 63 | %->> Load class information 64 | %---------------------------------------------------------------------------% 65 | \LoadClass[UTF8,a4paper,zihao=-4]{ctexbook}% 66 | \@ifclasslater{ctexbook}{2017/01/01}{}{% 67 | \ClassError{ucasthesis}{ctex >= 2017/01/01 is required ...}{}% 68 | } 69 | %---------------------------------------------------------------------------% 70 | %->> Required packages 71 | %---------------------------------------------------------------------------% 72 | \RequirePackage{ifxetex}% LaTeX engine detection 73 | \RequirePackage{etoolbox}% a toolbox of programming facilities 74 | \newcommand{\ucasifstreq}{\expandafter\ifstrequal\expandafter}% expansion control 75 | \newcommand{\ucasifstrbk}{\expandafter\ifblank\expandafter}% expansion control 76 | \RequirePackage{expl3}% LaTeX3 programming environment 77 | \ExplSyntaxOn 78 | \newcommand{\ucaslntotab}[2][1pt]{% convert lines into table lines 79 | \seq_set_split:NnV \l_tmpa_seq {\\} {#2} 80 | \clist_set_from_seq:NN \l_tmpa_clist \l_tmpa_seq 81 | \clist_clear:N \l_tmpb_clist 82 | \clist_map_inline:Nn \l_tmpa_clist 83 | {% 84 | \clist_put_right:Nn \l_tmpb_clist 85 | { \ulenhance[#1]{\ulextend{##1}} } 86 | } 87 | %\clist_show:N\l_tmpb_clist% show the content of comma list 88 | \clist_use:Nn \l_tmpb_clist { \\ & } 89 | } 90 | \ExplSyntaxOff 91 | %---------------------------------------------------------------------------% 92 | %->> Load class configuration 93 | %---------------------------------------------------------------------------% 94 | \AtEndOfPackage{% class cfg loaded after package to make preamble commands take effect 95 | \makeatletter 96 | \InputIfFileExists{Style/ucasthesis.cfg}{}{} 97 | \makeatother 98 | } 99 | %---------------------------------------------------------------------------% 100 | %->> Page layout 101 | %---------------------------------------------------------------------------% 102 | %- use \topmargin insead of \voffset to shift the complete text vertically 103 | %- use \<odd|even>sidemargin insead of \hoffset to shift text horizontally 104 | %- part one -- horizontal widths 105 | %- left side width + textwidth + right side width = paperwidth 106 | %- binding side width + textwidth + nonbinding side width = paperwidth 107 | %- binding side width of [odd, even] page = [left, right] side width 108 | %- left side width of [odd, even] page = 1.0in (fixed) + hoffset + [odd, even]sidemargin 109 | %- assuming A4 paper (210mm x 297mm) 110 | \setlength{\textwidth}{146.6mm}% set required text width first 111 | \setlength{\hoffset}{0mm}% set horizontal offset 112 | \ifucas@print% if print layout enabled 113 | \setlength{\oddsidemargin}{12.6mm}% binding side margin 114 | \setlength{\evensidemargin}{0mm}% ensure uniform binding side width for printing 115 | \else 116 | \setlength{\oddsidemargin}{6.3mm}% left side margin 117 | \setlength{\evensidemargin}{6.3mm}% ensure uniform left side width for EThesis 118 | \fi 119 | \setlength{\marginparwidth}{35pt}% width of margin notes 120 | \setlength{\marginparsep}{10pt}% width of space between body text and margin notes 121 | %- part two -- vertical heights 122 | %- top height + textheight + bottom height = paperheight 123 | %- top height = 1.0in (fixed) + voffset + topmargin + headheight + headsep 124 | \setlength{\textheight}{246.2mm}% set required text height first 125 | \setlength{\voffset}{0mm}% set vertical offset 126 | \setlength{\topmargin}{-10.4mm}% vertical margin above header 127 | \setlength{\headheight}{12pt}% header height 128 | \setlength{\headsep}{17.5pt}% vertical margin between header and body text 129 | \setlength{\footskip}{10.4mm}% vertical margin between footer and body text 130 | %- specifies the amount of space between paragraphs. 131 | \setlength{\parskip}{0.5ex plus 0.25ex minus 0.25ex} 132 | %- line spacing 133 | \linespread{1.6}% line space setting 134 | \raggedbottom% prevent adding vertical white space in strange places 135 | %- default pagestyle is page number at bottom without headers and footers 136 | \pagestyle{plain} 137 | %---------------------------------------------------------------------------% 138 | %->> Style control commands 139 | %---------------------------------------------------------------------------% 140 | %- redefine cleardoublepage to have page style argument 141 | \renewcommand{\cleardoublepage}[1][plain]{% 142 | \clearpage\if@twoside\ifodd\c@page\else% 143 | \thispagestyle{#1}% 144 | \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi% 145 | } 146 | %- underline 147 | \ifxetex% 148 | \RequirePackage{ulem}% 149 | \else% 150 | \RequirePackage{ulem}% 151 | \fi 152 | \newcommand{\ulunify}[1]{\uline{#1}}% unified name 153 | \newcommand{\ulenhance}[2][1pt]{% enhanced underline 154 | \def\ULthickness{#1}% set thickness 155 | \setlength{\ULdepth}{0.5em}% set depth 156 | \expandafter\ulunify\expandafter{#2}% linebreak fix 157 | } 158 | \newcommand{\ulhshift}{-4em}% horizontal shift on underline 159 | \newcommand{\ulextend}[2][350pt]{% extend underline length 160 | \hbox to #1{\hfill\hspace*{\ulhshift}#2\hfill}} 161 | %---------------------------------------------------------------------------% 162 | %->> Titlepage 163 | %---------------------------------------------------------------------------% 164 | %- 165 | %-> Chinese item commands 166 | %- 167 | \def\ucas@value@ch@confidential{} 168 | \newcommand{\confidential}[1]{\def\ucas@value@ch@confidential{#1}} 169 | \def\ucas@value@ch@orderid{} 170 | \newcommand{\orderid}[1]{\def\ucas@value@ch@orderid{#1}} 171 | \def\ucas@value@ch@classid{} 172 | \newcommand{\classid}[1]{\def\ucas@value@ch@classid{#1}} 173 | \def\ucas@value@ch@udc{} 174 | \newcommand{\udc}[1]{\def\ucas@value@ch@udc{#1}} 175 | \def\ucas@value@ch@schoollogo{} 176 | \newcommand{\schoollogo}[2][]{\def\ucas@value@ch@schoollogo{\ucasifstrbk{#1}{\zihao{-2}\bfseries\sffamily #2}{\includegraphics[#1]{#2}}}} 177 | \def\ucas@value@ch@title{} 178 | \def\ucas@value@ch@titlemark{} 179 | \renewcommand{\title}[2][\ucas@value@ch@title]{% 180 | \def\ucas@value@ch@title{#2} 181 | %\def\ucas@value@ch@titlemark{\MakeUppercase{#1}}} 182 | \def\ucas@value@ch@titlemark{#1}} 183 | \def\ucas@value@ch@author{} 184 | \renewcommand{\author}[1]{\def\ucas@value@ch@author{#1}} 185 | \def\ucas@value@ch@advisor{} 186 | \newcommand{\advisor}[1]{\long\def\ucas@value@ch@advisor{#1}} 187 | \def\ucas@value@ch@advisors{} 188 | \newcommand{\advisors}[1]{\long\def\ucas@value@ch@advisors{#1}} 189 | \def\ucas@value@ch@degree{} 190 | \newcommand{\degree}[1]{\def\ucas@value@ch@degree{#1}} 191 | \def\ucas@value@ch@degreetype{} 192 | \newcommand{\degreetype}[1]{\def\ucas@value@ch@degreetype{#1}} 193 | \def\ucas@value@ch@subject{} 194 | \newcommand{\subject}[1]{\def\ucas@value@ch@subject{#1}} 195 | \def\ucas@value@ch@major{} 196 | \newcommand{\major}[1]{\def\ucas@value@ch@major{#1}} 197 | \def\ucas@value@ch@institute{} 198 | \newcommand{\institute}[1]{\long\def\ucas@value@ch@institute{#1}} 199 | \def\ucas@value@ch@school{} 200 | \newcommand{\school}[1]{\def\ucas@value@ch@school{#1}} 201 | \def\ucas@value@ch@orginization{} 202 | \newcommand{\orginization}[1]{\def\ucas@value@ch@orginization{#1}} 203 | \def\ucas@value@ch@completedate{} 204 | \newcommand{\completedate}[1]{\def\ucas@value@ch@completedate{#1}} 205 | \def\ucas@value@ch@submitdate{} 206 | \newcommand{\submitdate}[1]{\def\ucas@value@ch@submitdate{#1}} 207 | \def\ucas@value@ch@studydatefrom{} 208 | \newcommand{\studydatefrom}[1]{\def\ucas@value@ch@studydatefrom{#1}} 209 | \def\ucas@value@ch@studydateto{} 210 | \newcommand{\studydateto}[1]{\def\ucas@value@ch@studydateto{#1}} 211 | \def\ucas@value@ch@date{} 212 | \renewcommand{\date}[1]{\def\ucas@value@ch@date{#1}} 213 | %- 214 | %-> English item commands 215 | %- 216 | \def\ucas@value@en@title{} 217 | \def\ucas@value@en@titlemark{} 218 | \newcommand{\TITLE}[2][\ucas@value@en@title]{% 219 | \def\ucas@value@en@title{#2} 220 | %\def\ucas@value@en@titlemark{\MakeUppercase{#1}}} 221 | \def\ucas@value@en@titlemark{#1}} 222 | \def\ucas@value@en@author{} 223 | \newcommand{\AUTHOR}[1]{\def\ucas@value@en@author{#1}} 224 | \def\ucas@value@en@advisor{} 225 | \newcommand{\ADVISOR}[1]{\def\ucas@value@en@advisor{#1}} 226 | \def\ucas@value@en@degree{} 227 | \newcommand{\DEGREE}[1]{\edef\ucas@value@en@degree{\zap@space#1 \@empty}}% expand and remove space 228 | \def\ucas@value@en@degreetype{} 229 | \newcommand{\DEGREETYPE}[1]{\def\ucas@value@en@degreetype{#1}} 230 | \def\ucas@value@en@thesistype{} 231 | \newcommand{\THESISTYPE}[1]{\def\ucas@value@en@thesistype{#1}} 232 | \def\ucas@value@en@major{} 233 | \newcommand{\MAJOR}[1]{\def\ucas@value@en@major{#1}} 234 | \def\ucas@value@en@institute{} 235 | \newcommand{\INSTITUTE}[1]{\def\ucas@value@en@institute{#1}} 236 | \def\ucas@value@en@school{} 237 | \newcommand{\SCHOOL}[1]{\def\ucas@value@en@school{#1}} 238 | \def\ucas@value@en@date{} 239 | \newcommand{\DATE}[1]{\def\ucas@value@en@date{#1}} 240 | %- 241 | %-> Detect and adjust items 242 | %- 243 | \AtEndPreamble{% 244 | \ucasifstreq{\ucas@value@en@degree}{Bachelor}{% 245 | \def\ucas@label@ch@thesis{\ucas@label@ch@thesis@bac}% 246 | \def\ucas@label@ch@author{\ucas@label@ch@author@bac}% 247 | \def\ucas@label@ch@major{\ucas@label@ch@major@bac}% 248 | \def\ucas@label@ch@institute{\ucas@label@ch@institute@bac}% 249 | \def\ucas@value@en@thesistype{\ucas@value@en@thesistype@bac}% 250 | \def\maketitle{\maketitle@xpdc} 251 | \def\MAKETITLE{\MAKETITLE@xpdc} 252 | }{% 253 | \ucasifstreq{\ucas@value@en@degree}{Master}{% 254 | \def\ucas@label@ch@thesis{\ucas@label@ch@thesis@mas}% 255 | \def\ucas@label@ch@author{\ucas@label@ch@author@mas}% 256 | \def\ucas@label@ch@major{\ucas@label@ch@major@mas}% 257 | \def\ucas@label@ch@institute{\ucas@label@ch@institute@mas}% 258 | \def\ucas@value@en@thesistype{\ucas@value@en@thesistype@mas}% 259 | \def\maketitle{\maketitle@xpdc} 260 | \def\MAKETITLE{\MAKETITLE@xpdc} 261 | }{% 262 | \ucasifstreq{\ucas@value@en@degree}{Doctor}{% 263 | \def\ucas@label@ch@thesis{\ucas@label@ch@thesis@doc}% 264 | \def\ucas@label@ch@author{\ucas@label@ch@author@doc}% 265 | \def\ucas@label@ch@major{\ucas@label@ch@major@doc}% 266 | \def\ucas@label@ch@institute{\ucas@label@ch@institute@doc}% 267 | \def\ucas@value@en@thesistype{\ucas@value@en@thesistype@doc}% 268 | \def\maketitle{\maketitle@xpdc} 269 | \def\MAKETITLE{\MAKETITLE@xpdc} 270 | }{% 271 | \ucasifstreq{\ucas@value@en@degree}{Postdoctor}{% 272 | \def\ucas@label@ch@thesis{\ucas@label@ch@thesis@pdc}% 273 | \def\ucas@label@ch@author{\ucas@label@ch@author@pdc}% 274 | \def\ucas@label@ch@major{\ucas@label@ch@major@pdc}% 275 | \def\ucas@label@ch@institute{\ucas@label@ch@institute@pdc}% 276 | \def\ucas@value@en@thesistype{\ucas@value@en@thesistype@pdc}% 277 | \def\maketitle{\maketitle@pdc} 278 | \def\MAKETITLE{\MAKETITLE@pdc} 279 | }{% 280 | \ClassWarning{ucasthesis}{Invalid value of '\string\DEGREE', please check the spelling}% 281 | }}}}% 282 | } 283 | %- 284 | %-> Define Chinese style 285 | %- 286 | \newcommand{\maketitle@xpdc}{% 287 | \cleardoublepage 288 | \thispagestyle{empty} 289 | \begin{center} 290 | \linespread{1.6} 291 | \zihao{4}\bfseries 292 | 293 | \hfill{} \ucasifstrbk{\ucas@value@ch@confidential}{}{\ucas@label@ch@confidential \ulenhance{\ulextend[50pt]{\hspace*{-\ulhshift}\zihao{5}\ucas@value@ch@confidential}}} 294 | 295 | \vspace*{\stretch{4}} 296 | 297 | {\ucas@value@ch@schoollogo} 298 | 299 | \vspace*{\stretch{2}} 300 | 301 | {\zihao{1}\bfseries\sffamily {\ucas@label@ch@thesis}} 302 | 303 | \vspace*{\stretch{3}} 304 | 305 | {\zihao{-3}\bfseries\sffamily \ulenhance[1.5pt]{\ucas@value@ch@title}} 306 | 307 | \vspace*{\stretch{3}} 308 | 309 | \def\tabcolsep{1pt} 310 | \def\arraystretch{1.3} 311 | \begin{tabular}{lc} 312 | \ucas@label@ch@author & \ulenhance[1.2pt]{\ulextend{\ucas@value@ch@author}}\\ 313 | \ucas@label@ch@advisor & \ucaslntotab[1.2pt]{\ucas@value@ch@advisor}\\ 314 | \ucas@label@ch@degree & \ulenhance[1.2pt]{\ulextend{\ucas@value@ch@degreetype\ucas@value@ch@degree}}\\ 315 | \ucas@label@ch@major & \ulenhance[1.2pt]{\ulextend{\ucas@value@ch@major}}\\ 316 | \ucas@label@ch@institute & \ucaslntotab[1.2pt]{\ucas@value@ch@institute}\\ 317 | \end{tabular} 318 | 319 | \vspace*{\stretch{4}} 320 | 321 | {\ucas@value@ch@date} 322 | 323 | \vspace*{\stretch{4}} 324 | \end{center} 325 | \clearpage 326 | \if@twoside 327 | \thispagestyle{empty} 328 | \ifucas@versioninfo 329 | \vspace*{\stretch{1}} 330 | \begin{footnotesize} 331 | \noindent 332 | Draft Version (\today) 333 | \end{footnotesize} 334 | \fi 335 | \cleardoublepage[empty] 336 | \else 337 | \ifucas@versioninfo 338 | \thispagestyle{empty} 339 | \vspace*{\stretch{1}} 340 | \begin{footnotesize} 341 | \noindent 342 | Draft Version (\today) 343 | \end{footnotesize} 344 | \cleardoublepage[empty] 345 | \fi 346 | \fi 347 | \ifucas@print% 348 | \hypersetup{% set hyperlinks 349 | hidelinks,% remove link color and border 350 | } 351 | \fi 352 | } 353 | \newcommand{\maketitle@pdc}{% 354 | \cleardoublepage 355 | \thispagestyle{empty} 356 | \begin{center} 357 | 358 | \vspace*{30pt} 359 | 360 | \linespread{2.0} 361 | \zihao{4} 362 | 363 | \makebox[3.0em][s]{\ucas@label@ch@classid} \ulenhance{\ulextend[6em]{\zihao{5}\ucas@value@ch@classid}} \hfill{} \ucas@label@ch@confidential \ulenhance{\ulextend[6em]{\zihao{5}\ucas@value@ch@confidential}} 364 | 365 | \makebox[3.0em][s]{\ucas@label@ch@udc} \ulenhance{\ulextend[6em]{\zihao{5}\ucas@value@ch@udc}} \hfill{} \ucas@label@ch@orderid \ulenhance{\ulextend[6em]{\zihao{5}\ucas@value@ch@orderid}} 366 | 367 | \vspace*{\stretch{6}} 368 | 369 | {\ziju{1.5}\ucas@value@ch@schoollogo} 370 | 371 | \vspace*{\stretch{1}} 372 | 373 | {\zihao{-2}\bfseries\sffamily{\ziju{0.5}\ucas@label@ch@thesis}} 374 | 375 | \vspace*{\stretch{3}} 376 | 377 | {\zihao{-3} \ulenhance[1.5pt]{\ucas@value@ch@title}} 378 | 379 | \vspace*{\stretch{2.5}} 380 | 381 | \ucas@value@ch@author 382 | 383 | \vspace*{\stretch{2.5}} 384 | 385 | \def\tabcolsep{1pt} 386 | \def\arraystretch{1.3} 387 | \begin{tabular}{l@{\quad}c} 388 | \ucas@label@ch@completedate & \ulenhance{\ulextend[200pt]{\ucas@value@ch@completedate}}\\ 389 | \ucas@label@ch@submitdate & \ulenhance{\ulextend[200pt]{\ucas@value@ch@submitdate}}\\ 390 | \end{tabular} 391 | 392 | \vspace*{\stretch{2}} 393 | 394 | \ucas@value@ch@institute 395 | 396 | \ucas@value@ch@date 397 | 398 | \vspace*{\stretch{4}} 399 | \end{center} 400 | \clearpage 401 | \if@twoside 402 | \thispagestyle{empty} 403 | \cleardoublepage[empty] 404 | \fi 405 | \ifucas@print% 406 | \hypersetup{% set hyperlinks 407 | hidelinks,% remove link color and border 408 | } 409 | \fi 410 | } 411 | %- 412 | %-> Define English style 413 | %- 414 | \newcommand{\MAKETITLE@xpdc}{% 415 | \cleardoublepage 416 | \thispagestyle{empty} 417 | \begin{center} 418 | \linespread{1.6} 419 | \zihao{4}\bfseries 420 | 421 | \vspace*{50pt} 422 | 423 | {\zihao{-3}\bfseries \ulenhance[1.5pt]{\ucas@value@en@title}} 424 | 425 | \vspace*{\stretch{3}} 426 | 427 | {\ucas@label@en@statement} 428 | 429 | {By} 430 | 431 | {\ucas@value@en@author} 432 | 433 | {\ucas@value@en@advisor} 434 | 435 | \vspace*{\stretch{3}} 436 | 437 | {\ucas@value@en@institute} 438 | 439 | \vspace*{\stretch{1}} 440 | 441 | {\ucas@value@en@date} 442 | 443 | \vspace*{\stretch{3}} 444 | \end{center} 445 | \clearpage 446 | \if@twoside 447 | \thispagestyle{empty} 448 | \cleardoublepage[empty] 449 | \fi 450 | } 451 | \newcommand{\MAKETITLE@pdc}{% 452 | \cleardoublepage 453 | \thispagestyle{empty} 454 | \begin{center} 455 | \linespread{2.0} 456 | \zihao{4} 457 | 458 | \vspace*{50pt} 459 | 460 | {\zihao{3} \ucas@value@ch@title} 461 | 462 | \vspace*{\stretch{3}} 463 | 464 | {\zihao{-3} \ucas@value@en@title} 465 | 466 | \vspace*{\stretch{3}} 467 | 468 | \def\tabcolsep{1pt} 469 | \def\arraystretch{1.3} 470 | \begin{tabular}{l@{\quad}l} 471 | \makebox[11em][s]{\ucas@label@ch@author} & \ucas@value@ch@author\\ 472 | \makebox[11em][s]{\ucas@label@ch@subject} & \ucas@value@ch@subject\\ 473 | \makebox[11em][s]{\ucas@label@ch@major} & \ucas@value@ch@major\\ 474 | \end{tabular} 475 | 476 | \vspace*{\stretch{3}} 477 | 478 | \ucas@label@ch@studydatefrom \quad \ucas@value@ch@studydatefrom 479 | 480 | \ucas@label@ch@studydateto \quad \ucas@value@ch@studydateto 481 | 482 | \vspace*{\stretch{3}} 483 | 484 | \ucas@value@ch@orginization 485 | 486 | \ucas@value@ch@date 487 | 488 | \vspace*{\stretch{3}} 489 | \end{center} 490 | \clearpage 491 | \if@twoside 492 | \thispagestyle{empty} 493 | \cleardoublepage[empty] 494 | \fi 495 | } 496 | %---------------------------------------------------------------------------% 497 | %->> Author's declaration 498 | %---------------------------------------------------------------------------% 499 | \newcommand{\makedeclaration}{% 500 | \cleardoublepage 501 | \thispagestyle{empty} 502 | { 503 | \linespread{1.6} 504 | \zihao{-4} 505 | 506 | \vspace*{2ex} 507 | 508 | \begin{center} 509 | {\zihao{4}\bfseries\sffamily \ucas@label@ch@declare@creativity} 510 | \end{center} 511 | 512 | {\ucas@value@ch@declare@creativity} 513 | 514 | \vspace*{3ex} 515 | 516 | {\hfill{} {\ucas@label@ch@declare@author \hspace*{14em}}} 517 | 518 | {\hfill{} {\ucas@label@ch@declare@date \hspace*{14em}}} 519 | 520 | \vspace*{6ex} 521 | 522 | \begin{center} 523 | {\zihao{4}\bfseries\sffamily \ucas@label@ch@declare@rights} 524 | \end{center} 525 | 526 | {\ucas@value@ch@declare@rights} 527 | 528 | {\ucas@value@ch@declare@rule} 529 | 530 | \vspace*{3ex} 531 | 532 | {\hfill{} {\ucas@label@ch@declare@author \hspace*{10em} \ucas@label@ch@declare@advisor \hspace*{9em}}} 533 | 534 | {\hfill{} {\ucas@label@ch@declare@date \hspace*{10em} \ucas@label@ch@declare@date \hspace*{9em}}} 535 | 536 | \vspace*{3ex} 537 | } 538 | \clearpage 539 | \if@twoside 540 | \thispagestyle{empty} 541 | \cleardoublepage[empty] 542 | \fi 543 | } 544 | %---------------------------------------------------------------------------% 545 | %->> New environments 546 | %---------------------------------------------------------------------------% 547 | %- define chinese keywords 548 | \newcommand{\keywords}[1]{% 549 | \vspace{\baselineskip} 550 | \noindent {\bfseries \ucas@label@ch@keywords} #1} 551 | %- define engish keywords 552 | \newcommand{\KEYWORDS}[1]{% 553 | \vspace{\baselineskip} 554 | \noindent {\bfseries \ucas@label@en@keywords} #1} 555 | %---------------------------------------------------------------------------% 556 | %->> Structure elements 557 | %---------------------------------------------------------------------------% 558 | \ifucas@plain% 559 | \def\contentsname{\ucas@label@en@tocname} 560 | \def\listfigurename{\ucas@label@en@lsfigname} 561 | \def\listtablename{\ucas@label@en@lstabname} 562 | \def\bibname{\ucas@label@en@bibname} 563 | \def\refname{\ucas@label@en@bibname} 564 | \def\algname{\ucas@label@en@algname} 565 | \def\bibetal{\ucas@label@en@bibetal} 566 | \def\biband{\ucas@label@en@biband} 567 | \def\axiomname{\ucas@label@en@axiomname} 568 | \def\theoremname{\ucas@label@en@theoremname} 569 | \def\lemmaname{\ucas@label@en@lemmaname} 570 | \def\corollaryname{\ucas@label@en@corollaryname} 571 | \def\assertionname{\ucas@label@en@assertionname} 572 | \def\propositionname{\ucas@label@en@propositionname} 573 | \def\conjecturename{\ucas@label@en@conjecturename} 574 | \def\definitionname{\ucas@label@en@definitionname} 575 | \def\examplename{\ucas@label@en@examplename} 576 | \def\remarkname{\ucas@label@en@remarkname} 577 | \def\proofname{\ucas@label@en@proofname} 578 | \def\@title{\ucas@value@en@titlemark} 579 | \def\@author{\ucas@value@en@author} 580 | \else 581 | \def\contentsname{\ucas@label@ch@tocname} 582 | \def\listfigurename{\ucas@label@ch@lsfigname} 583 | \def\listtablename{\ucas@label@ch@lstabname} 584 | \def\algname{\ucas@label@ch@algname} 585 | \def\bibname{\ucas@label@ch@bibname} 586 | \def\refname{\ucas@label@ch@bibname} 587 | \def\bibetal{\ucas@label@ch@bibetal} 588 | \def\biband{\ucas@label@ch@biband} 589 | \def\axiomname{\ucas@label@ch@axiomname} 590 | \def\theoremname{\ucas@label@ch@theoremname} 591 | \def\lemmaname{\ucas@label@ch@lemmaname} 592 | \def\corollaryname{\ucas@label@ch@corollaryname} 593 | \def\assertionname{\ucas@label@ch@assertionname} 594 | \def\propositionname{\ucas@label@ch@propositionname} 595 | \def\conjecturename{\ucas@label@ch@conjecturename} 596 | \def\definitionname{\ucas@label@ch@definitionname} 597 | \def\examplename{\ucas@label@ch@examplename} 598 | \def\remarkname{\ucas@label@ch@remarkname} 599 | \def\proofname{\ucas@label@ch@proofname} 600 | \def\@title{\ucas@value@ch@titlemark} 601 | \def\@author{\ucas@value@ch@author} 602 | \fi 603 | %---------------------------------------------------------------------------% 604 | %->> Structure layout 605 | %---------------------------------------------------------------------------% 606 | %- chapter 607 | \ctexset { 608 | chapter = { 609 | format = \linespread{1.0}\zihao{4}\bfseries\sffamily\centering, 610 | nameformat = {}, 611 | titleformat = {}, 612 | number = \arabic{chapter}, 613 | numberformat = \rmfamily, 614 | aftername = \quad, 615 | beforeskip = {7pt}, 616 | afterskip = {18pt}, 617 | pagestyle = plain, 618 | } 619 | } 620 | %- section 621 | \ctexset { 622 | section = { 623 | format = \linespread{1.0}\zihao{-4}\sffamily\raggedright, 624 | numberformat = \rmfamily, 625 | aftername = \quad, 626 | beforeskip = {24pt}, 627 | afterskip = {6pt}, 628 | } 629 | } 630 | %- subsection 631 | \ctexset { 632 | subsection = { 633 | format = \linespread{1.0}\zihao{-4}\sffamily\raggedright, 634 | numberformat = \rmfamily, 635 | aftername = \quad, 636 | beforeskip = {12pt}, 637 | afterskip = {6pt}, 638 | } 639 | } 640 | %- subsubsection 641 | \ctexset { 642 | subsubsection = { 643 | format = \linespread{1.0}\zihao{-4}\sffamily\raggedright, 644 | numberformat = \rmfamily, 645 | aftername = \quad, 646 | beforeskip = {12pt}, 647 | afterskip = {6pt}, 648 | } 649 | } 650 | %- appendix 651 | \ctexset { 652 | appendix = { 653 | %numbering = true|false, 654 | %number = \rmfamily\Alph{chapter}, 655 | } 656 | } 657 | %---------------------------------------------------------------------------% 658 | %->> Configure table of contents 659 | %---------------------------------------------------------------------------% 660 | %- the table of contents is specified by defining \l@chapter, \l@section, ... 661 | %- most commands are then defined with the \@dottedtocline: 662 | %- \@dottedtocline{⟨level⟩}{⟨indent⟩}{⟨numwidth⟩}{⟨title⟩}{⟨page⟩} 663 | %- ⟨level⟩ an entry is produced only if ⟨level⟩ <= value of the tocdepth counter 664 | %- note, \chapter is level 0, \section is level 1, etc 665 | %- ⟨indent⟩ indentation from the outer left margin of the start of the contents line 666 | %- ⟨numwidth⟩ width of a box in which the section number is to go 667 | %- <title> title 668 | %- <page> page number 669 | 670 | %- parameters for spacing and length in toc 671 | \def\@dotsep{1.5mu}% separation between dots in mu units 672 | \def\@pnumwidth{2em}% width of a box in which the page number is put 673 | \def\@tocrmarg{2em}% right margin for multiple line entries, \@tocrmarg ≥ \@pnumwidth 674 | \def\@chaptervspace{1ex}% vertical space between chapter titles 675 | 676 | %- redefine dottedtocline from classes.dtx and latex.ltx 677 | \renewcommand*{\@dottedtocline}[5]{% [<level>,<indent>,<numwidth>,<title>,<page>] 678 | \ifnum #1>\c@tocdepth \else 679 | \vskip \z@ \@plus.2\p@ 680 | {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip 681 | \parindent #2\relax\@afterindenttrue 682 | \interlinepenalty\@M 683 | \leavevmode \zihao{-4}\sffamily 684 | \@tempdima #3\relax 685 | \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip 686 | {#4}\nobreak 687 | \leaders\hbox{$\m@th\mkern \@dotsep \cdot\mkern \@dotsep$}\hfill 688 | \nobreak 689 | \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% 690 | \par\penalty\@highpenalty}% 691 | \fi 692 | } 693 | %- redefine l@part from book.cls to add dotted toc line 694 | \renewcommand*{\l@part}[2]{% [<title>,<page>] 695 | \ifnum \c@tocdepth >-2\relax 696 | \addpenalty{-\@highpenalty}% 697 | \addvspace{2.25em \@plus\p@}% 698 | \setlength\@tempdima{3em}% 699 | \begingroup 700 | \parindent \z@ \rightskip \@pnumwidth 701 | \parfillskip -\@pnumwidth 702 | {\leavevmode 703 | \zihao{4}\sffamily #1 704 | \leaders\hbox{$\m@th\mkern \@dotsep \cdot\mkern \@dotsep$}% add dotted toc line 705 | \hfil \hb@xt@\@pnumwidth{\hss #2}}\par 706 | \nobreak 707 | \global\@nobreaktrue 708 | \everypar{\global\@nobreakfalse\everypar{}}% 709 | \endgroup 710 | \fi 711 | } 712 | %- redefine l@chapter from book.cls to add dotted toc line 713 | \renewcommand*{\l@chapter}[2]{% [<title>,<page>] 714 | \ifnum \c@tocdepth >\m@ne 715 | \addpenalty{-\@highpenalty}% 716 | \vskip \@chaptervspace \@plus\p@ 717 | \setlength\@tempdima{1.5em}% 718 | \begingroup 719 | \parindent \z@ \rightskip \@pnumwidth 720 | \parfillskip -\@pnumwidth 721 | \leavevmode \zihao{4}\sffamily 722 | \advance\leftskip\@tempdima 723 | \hskip -\leftskip 724 | #1\nobreak 725 | \leaders\hbox{$\m@th\mkern \@dotsep \cdot\mkern \@dotsep$}% add dotted toc line 726 | \hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par 727 | \penalty\@highpenalty 728 | \endgroup 729 | \fi 730 | } 731 | %- redefine indentation for others 732 | \renewcommand*\l@section{\@dottedtocline{1}{1em}{1.8em}} 733 | \renewcommand*\l@subsection{\@dottedtocline{2}{2em}{2.8em}} 734 | \renewcommand*\l@subsubsection{\@dottedtocline{3}{3em}{3.8em}} 735 | \renewcommand*\l@paragraph{\@dottedtocline{4}{4em}{4.8em}} 736 | \renewcommand*\l@subparagraph{\@dottedtocline{5}{5em}{5.8em}} 737 | \renewcommand*\l@figure{\@dottedtocline{1}{1em}{1.8em}} 738 | \renewcommand*\l@table{\@dottedtocline{1}{1em}{1.8em}} 739 | %---------------------------------------------------------------------------% 740 | \endinput 741 | 742 | -------------------------------------------------------------------------------- /Tex/Appendix.tex: -------------------------------------------------------------------------------- 1 | \chapter{中国科学院大学学位论文撰写要求} 2 | 3 | 学位论文是研究生科研工作成果的集中体现,是评判学位申请者学术水平、授予其学位的主要依据,是科研领域重要的文献资料。根据《科学技术报告、学位论文和学术论文的编写格式》(GB/T 7713-1987)、《学位论文编写规则》(GB/T 7713.1-2006)和《文后参考文献著录规则》(GB7714—87)等国家有关标准,结合中国科学院大学(以下简称“国科大”)的实际情况,特制订本规定。 4 | 5 | \section{论文无附录者无需附录部分} 6 | 7 | \section{测试公式编号 \texorpdfstring{$\Lambda,\lambda,\theta,\bar{\Lambda},\sqrt{S_{NN}}$}{$\textLambda,\textlambda,\texttheta,\bar{\textLambda},\sqrt{S_{NN}}$}} \label{sec:testmath} 8 | 9 | \begin{equation} \label{eq:appedns} 10 | \adddotsbeforeeqnnum% 11 | \begin{cases} 12 | \frac{\partial \rho}{\partial t} + \nabla\cdot(\rho\Vector{V}) = 0\\ 13 | \frac{\partial (\rho\Vector{V})}{\partial t} + \nabla\cdot(\rho\Vector{V}\Vector{V}) = \nabla\cdot\Tensor{\sigma}\\ 14 | \frac{\partial (\rho E)}{\partial t} + \nabla\cdot(\rho E\Vector{V}) = \nabla\cdot(k\nabla T) + \nabla\cdot(\Tensor{\sigma}\cdot\Vector{V}) 15 | \end{cases} 16 | \end{equation} 17 | \begin{equation} 18 | \adddotsbeforeeqnnum% 19 | \frac{\partial }{\partial t}\int\limits_{\Omega} u \, \mathrm{d}\Omega + \int\limits_{S} \unitVector{n}\cdot(u\Vector{V}) \, \mathrm{d}S = \dot{\phi} 20 | \end{equation} 21 | \[ 22 | \begin{split} 23 | \mathcal{L} \{f\}(s) &= \int _{0^{-}}^{\infty} f(t) e^{-st} \, \mathrm{d}t, \ 24 | \mathscr{L} \{f\}(s) = \int _{0^{-}}^{\infty} f(t) e^{-st} \, \mathrm{d}t\\ 25 | \mathcal{F} {\bigl (} f(x+x_{0}) {\bigr )} &= \mathcal{F} {\bigl (} f(x) {\bigr )} e^{2\pi i\xi x_{0}}, \ 26 | \mathscr{F} {\bigl (} f(x+x_{0}) {\bigr )} = \mathscr{F} {\bigl (} f(x) {\bigr )} e^{2\pi i\xi x_{0}} 27 | \end{split} 28 | \] 29 | 30 | mathtext: $A,F,L,2,3,5,\sigma$, mathnormal: $A,F,L,2,3,5,\sigma$, mathrm: $\mathrm{A,F,L,2,3,5,\sigma}$. 31 | 32 | mathbf: $\mathbf{A,F,L,2,3,5,\sigma}$, mathit: $\mathit{A,F,L,2,3,5,\sigma}$, mathsf: $\mathsf{A,F,L,2,3,5,\sigma}$. 33 | 34 | mathtt: $\mathtt{A,F,L,2,3,5,\sigma}$, mathfrak: $\mathfrak{A,F,L,2,3,5,\sigma}$, mathbb: $\mathbb{A,F,L,2,3,5,\sigma}$. 35 | 36 | mathcal: $\mathcal{A,F,L,2,3,5,\sigma}$, mathscr: $\mathscr{A,F,L,2,3,5,\sigma}$, boldsymbol: $\boldsymbol{A,F,L,2,3,5,\sigma}$. 37 | 38 | vector: $\Vector{\sigma, T, a, F, n}$, unitvector: $\unitVector{\sigma, T, a, F, n}$ 39 | 40 | matrix: $\Matrix{\sigma, T, a, F, n}$, unitmatrix: $\unitMatrix{\sigma, T, a, F, n}$ 41 | 42 | tensor: $\Tensor{\sigma, T, a, F, n}$, unittensor: $\unitTensor{\sigma, T, a, F, n}$ 43 | 44 | \section{测试生僻字} 45 | 46 | 霜蟾盥薇曜灵霜颸妙鬘虚霩淩澌菀枯菡萏泬寥窅冥毰毸濩落霅霅便嬛岧峣瀺灂姽婳愔嫕飒纚棽俪緸冤莩甲摛藻卮言倥侗椒觞期颐夜阑彬蔚倥偬澄廓簪缨陟遐迤逦缥缃鹣鲽憯懔闺闼璀错媕婀噌吰澒洞阛闠覼缕玓瓑逡巡諓諓琭琭瀌瀌踽踽叆叇氤氲瓠犀流眄蹀躞赟嬛茕頔璎珞螓首蘅皋惏悷缱绻昶皴皱颟顸愀然菡萏卑陬纯懿犇麤掱暒 墌墍墎墏墐墒墒墓墔墕墖墘墖墚墛坠墝增墠墡墢墣墤墥墦墧墨墩墪樽墬墭堕墯墰墱墲坟墴墵垯墷墸墹墺墙墼墽垦墿壀壁壂壃壄壅壆坛壈壉壊垱壌壍埙壏壐壑壒压壔壕壖壗垒圹垆壛壜壝垄壠壡坜壣壤壥壦壧壨坝塆圭嫶嫷嫸嫹嫺娴嫼嫽嫾婳妫嬁嬂嬃嬄嬅嬆嬇娆嬉嬊娇嬍嬎嬏嬐嬑嬒嬓嬔嬕嬖嬗嬘嫱嬚嬛嬜嬞嬟嬠嫒嬢嬣嬥嬦嬧嬨嬩嫔嬫嬬奶嬬嬮嬯婴嬱嬲嬳嬴嬵嬶嬷婶嬹嬺嬻嬼嬽嬾嬿孀孁孂娘孄孅孆孇孆孈孉孊娈孋孊孍孎孏嫫婿媚嵭嵮嵯嵰嵱嵲嵳嵴嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嵝嶂嶃崭嶅嶆岖嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嵚嶕嶖嶘嶙嶚嶛嶜嶝嶞嶟峤嶡峣嶣嶤嶥嶦峄峃嶩嶪嶫嶬嶭崄嶯嶰嶱嶲嶳岙嶵嶶嶷嵘嶹岭嶻屿岳帋巀巁巂巃巄巅巆巇巈巉巊岿巌巍巎巏巐巑峦巓巅巕岩巗巘巙巚帠帡帢帣帤帨帩帪帬帯帰帱帲帴帵帷帹帺帻帼帽帾帿幁幂帏幄幅幆幇幈幉幊幋幌幍幎幏幐幑幒幓幖幙幚幛幜幝幞帜幠幡幢幤幥幦幧幨幩幪幭幮幯幰幱庍庎庑庖庘庛庝庠庡庢庣庤庥庨庩庪庬庮庯庰庱庲庳庴庵庹庺庻庼庽庿廀厕廃厩廅廆廇廋廌廍庼廏廐廑廒廔廕廖廗廘廙廛廜廞庑廤廥廦廧廨廭廮廯廰痈廲廵廸廹廻廼廽廿弁弅弆弇弉弖弙弚弜弝弞弡弢弣弤弨弩弪弫弬弭弮弰弲弪弴弶弸弻弼弽弿彖彗彘彚彛彜彝彞彟彴彵彶彷彸役彺彻彽彾佛徂徃徆徇徉后徍徎徏径徒従徔徕徖徙徚徛徜徝从徟徕御徢徣徤徥徦徧徨复循徫旁徭微徯徰徱徲徳徴徵徶德徸彻徺忁忂惔愔忇忈忉忔忕忖忚忛応忝忞忟忪挣挦挧挨挩挪挫挬挭挮挰掇授掉掊掋掍掎掐掑排掓掔掕挜掚挂掜掝掞掟掠采探掣掤掦措掫掬掭掮掯掰掱掲掳掴掵掶掸掹掺掻掼掽掾掿拣揁揂揃揅揄揆揇揈揉揊揋揌揍揎揑揓揔揕揖揗揘揙揤揥揦揧揨揫捂揰揱揲揳援揵揶揷揸揻揼揾揿搀搁搂搃搄搅搇搈搉搊搋搌搎搏搐搑搒摓摔摕摖摗摙摚摛掼摝摞摠摡斫斩斮斱斲斳斴斵斶斸旪旫旮旯晒晓晔晕晖晗晘晙晛晜晞晟晠晡晰晣晤晥晦晧晪晫晬晭晰晱晲晳晴晵晷晸晹晻晼晽晾晿暀暁暂暃暄暅暆暇晕晖暊暋暌暍暎暏暐暑暒暓暔暕暖暗旸暙暚暛暜暝暞暟暠暡暣暤暥暦暧暨暩暪暬暭暮暯暰昵暲暳暴暵 47 | -------------------------------------------------------------------------------- /Tex/Backmatter.tex: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %->> Backmatter 3 | %---------------------------------------------------------------------------% 4 | \chapter[致谢]{致\quad 谢}\chaptermark{致\quad 谢}% syntax: \chapter[目录]{标题}\chaptermark{页眉} 5 | %\thispagestyle{noheaderstyle}% 如果需要移除当前页的页眉 6 | %\pagestyle{noheaderstyle}% 如果需要移除整章的页眉 7 | 8 | 感激casthesis作者吴凌云学长,gbt7714-bibtex-style 9 | 开发者zepinglee,和ctex众多开发者们。若没有他们的辛勤付出和非凡工作,\LaTeX{}菜鸟的我是无法完成此国科大学位论文\LaTeX{}模板ucasthesis的。在\LaTeX{}中的一点一滴的成长源于开源社区的众多优秀资料和教程,在此对所有\LaTeX{}社区的贡献者表示感谢! 10 | 11 | ucasthesis国科大学位论文\LaTeX{}模板的最终成型离不开以霍明虹老师和丁云云老师为代表的国科大学位办公室老师们制定的官方指导文件和众多ucasthesis用户的热心测试和耐心反馈,在此对他们的认真付出表示感谢。特别对国科大的赵永明同学的众多有效反馈意见和建议表示感谢,对国科大本科部的陆晴老师和本科部学位办的丁云云老师的细致审核和建议表示感谢。谢谢大家的共同努力和支持,让ucasthesis为国科大学子使用\LaTeX{}撰写学位论文提供便利和高效这一目标成为可能。 12 | 13 | \chapter{作者简历及攻读学位期间发表的学术论文与研究成果} 14 | 15 | \textbf{本科生无需此部分}。 16 | 17 | \section*{作者简历:} 18 | 19 | \subsection*{casthesis作者} 20 | 21 | 吴凌云,福建省屏南县人,中国科学院数学与系统科学研究院博士研究生。 22 | 23 | \subsection*{ucasthesis作者} 24 | 25 | 莫晃锐,湖南省湘潭县人,中国科学院力学研究所硕士研究生。 26 | 27 | \section*{已发表(或正式接受)的学术论文:} 28 | 29 | { 30 | \setlist[enumerate]{}% restore default behavior 31 | \begin{enumerate}[nosep] 32 | \item ucasthesis: A LaTeX Thesis Template for the University of Chinese Academy of Sciences, 2014. 33 | \end{enumerate} 34 | } 35 | 36 | \section*{申请或已获得的专利:} 37 | 38 | (无专利时此项不必列出) 39 | 40 | \section*{参加的研究项目及获奖情况:} 41 | 42 | 可以随意添加新的条目或是结构。 43 | 44 | \cleardoublepage[plain]% 让文档总是结束于偶数页,可根据需要设定页眉页脚样式,如 [noheaderstyle] 45 | %---------------------------------------------------------------------------% 46 | -------------------------------------------------------------------------------- /Tex/Chap_Guide.tex: -------------------------------------------------------------------------------- 1 | \chapter{\LaTeX{}使用说明}\label{chap:guide} 2 | 3 | 为方便使用及更好地展示\LaTeX{}排版的优秀特性,ucasthesis的框架和文件体系进行了细致地处理,尽可能地对各个功能和板块进行了模块化和封装,对于初学者来说,众多的文件目录也许一开始让人觉得有些无所适从,但阅读完下面的使用说明后,会发现原来使用思路是简单而清晰的,而且,当对\LaTeX{}有一定的认识和了解后,会发现其相对Word类排版系统极具吸引力的优秀特性。所以,如果是初学者,请不要退缩,请稍加尝试和坚持,以领略到\LaTeX{}的非凡魅力,并可以通过阅读相关资料如\LaTeX{} Wikibook \citep{wikibook2014latex} 来完善自己的使用知识。 4 | 5 | \section{先试试效果} 6 | 7 | \begin{enumerate} 8 | \item 安装软件:根据所用操作系统和章节~\ref{sec:system}中的信息安装\LaTeX{}编译环境。 9 | \item 获取模板:下载 \href{https://github.com/mohuangrui/ucasthesis}{ucasthesis} 模板并解压。ucasthesis模板不仅提供了相应的类文件,同时也提供了包括参考文献等在内的完成学位论文的一切要素,所以,下载时,推荐下载整个ucasthesis文件夹,而不是单独的文档类。 10 | \item 编译模板: 11 | \begin{enumerate} 12 | \item Windows:双击运行artratex.bat脚本。 13 | \item Linux或MacOS: {\scriptsize \verb|terminal| -> \verb|chmod +x ./artratex.sh| -> \verb|./artratex.sh xa|} 14 | \item 任意系统:都可使用\LaTeX{}编辑器打开Thesis.tex文件并选择xelatex编译引擎进行编译。 15 | \end{enumerate} 16 | \item 错误处理:若编译中遇到了问题,请先查看“常见问题”(章节~\ref{sec:qa})。 17 | \end{enumerate} 18 | 19 | 编译完成即可获得本PDF说明文档。而这也完成了学习使用ucasthesis撰写论文的一半进程。什么?这就学成一半了,这么简单???,是的,就这么简单! 20 | 21 | \section{文档目录简介} 22 | 23 | \subsection{Thesis.tex} 24 | 25 | Thesis.tex为主文档,其设计和规划了论文的整体框架,通过对其的阅读可以了解整个论文框架的搭建。 26 | 27 | \subsection{编译脚本} 28 | 29 | \begin{itemize} 30 | \item Windows:双击Dos脚本artratex.bat可得全编译后的PDF文档,其存在是为了帮助不了解\LaTeX{}编译过程的初学者跨过编译这第一道坎,请勿通过邮件传播和接收此脚本,以防范Dos脚本的潜在风险。 31 | \item Linux或MacOS:在terminal中运行 32 | \begin{itemize} 33 | \item \verb|./artratex.sh xa|:获得全编译后的PDF文档 34 | \item \verb|./artratex.sh x|:快速编译,不会生成文献引用 35 | \end{itemize} 36 | \end{itemize} 37 | 38 | 全编译指运行 \verb|xelatex+bibtex+xelatex+xelatex| 以正确生成所有的引用链接,如目录,参考文献及引用等。在写作过程中若无添加新的引用,则可用快速编译,即只运行一遍\LaTeX{}编译引擎以减少编译时间。 39 | 40 | \subsection{Tmp文件夹} 41 | 42 | 运行编译脚本后,编译所生成的文档皆存于Tmp文件夹内,包括编译得到的PDF文档,其存在是为了保持工作空间的整洁,因为好的心情是很重要的。 43 | 44 | \subsection{Style文件夹} 45 | 46 | 包含ucasthesis文档类的定义文件和配置文件,通过对它们的修改可以实现特定的模版设定。 47 | 48 | \begin{enumerate} 49 | \item ucasthesis.cls:文档类定义文件,论文的最核心的格式即通过它来定义的。 50 | \item ucasthesis.cfg:文档类配置文件,设定如目录显示为“目~录”而非“目录”。 51 | \item artratex.sty: 常用宏包及文档设定,如参考文献样式、文献引用样式、页眉页脚设定等。这些功能具有开关选项,常只需在Thesis.tex中进行启用即可,一般无需修改artratex.sty本身。 52 | \item artracom.sty:自定义命令以及添加宏包的推荐放置位置。 53 | \end{enumerate} 54 | 55 | \subsection{Tex文件夹} 56 | 57 | 文件夹内为论文的所有实体内容,正常情况下,这也是\textbf{使用ucasthesis撰写学位论文时,主要关注和修改的一个位置,注:所有文件都必须采用UTF-8编码,否则编译后将出现乱码文本},详细分类介绍如下: 58 | 59 | \begin{itemize} 60 | \item Frontinfo.tex:为论文中英文封面信息。\textbf{论文封面会根据英文学位名称如Bachelor,Master,Doctor, Postdoctor 自动切换为相应的格式}。 61 | \item Frontmatter.tex:为论文前言内容如中英文摘要等。 62 | \item Mainmatter.tex:索引需要出现的Chapter。开始写论文时,可以只索引当前章节,以快速编译查看,当论文完成后,再对所有章节进行索引即可。 63 | \item Chap{\_}xxx.tex:为论文主体的各章,可根据需要添加和撰写。\textbf{添加新章时,可拷贝一个已有的章文件再重命名,以继承文档的 UTF8 编码}。 64 | \item Appendix.tex:为附录内容。 65 | \item Backmatter.tex:为发表文章信息和致谢部分等。 66 | \end{itemize} 67 | 68 | \subsection{Img文件夹} 69 | 70 | 用于放置论文中所需要的图类文件,支持格式有:.jpg, .png, .pdf。其中,\verb|ucas_logo.pdf|为国科大校徽。不建议为各章节图片建子目录,即使图片众多,若命名规则合理,图片查询亦是十分方便。 71 | 72 | \subsection{Biblio文件夹} 73 | 74 | \begin{enumerate} 75 | \item ref.bib:参考文献信息库。 76 | \end{enumerate} 77 | 78 | \section{数学公式、图表、参考文献等功能} 79 | 80 | \subsection{数学公式} 81 | 82 | 比如Navier-Stokes方程(方程~\eqref{eq:ns}): 83 | \begin{equation} \label{eq:ns} 84 | \adddotsbeforeeqnnum% 85 | \begin{cases} 86 | \frac{\partial \rho}{\partial t} + \nabla\cdot(\rho\Vector{V}) = 0 \ \mathrm{times\ math\ test: 1,2,3,4,5}, 1,2,3,4,5\\ 87 | \frac{\partial (\rho\Vector{V})}{\partial t} + \nabla\cdot(\rho\Vector{V}\Vector{V}) = \nabla\cdot\Tensor{\sigma} \ \text{times text test: 1,2,3,4,5}\\ 88 | \frac{\partial (\rho E)}{\partial t} + \nabla\cdot(\rho E\Vector{V}) = \nabla\cdot(k\nabla T) + \nabla\cdot(\Tensor{\sigma}\cdot\Vector{V}) 89 | \end{cases} 90 | \end{equation} 91 | \begin{equation} 92 | \adddotsbeforeeqnnum% 93 | \frac{\partial }{\partial t}\int\limits_{\Omega} u \, \mathrm{d}\Omega + \int\limits_{S} \unitVector{n}\cdot(u\Vector{V}) \, \mathrm{d}S = \dot{\phi} 94 | \end{equation} 95 | \[ 96 | \begin{split} 97 | \mathcal{L} \{f\}(s) &= \int _{0^{-}}^{\infty} f(t) e^{-st} \, \mathrm{d}t, \ 98 | \mathscr{L} \{f\}(s) = \int _{0^{-}}^{\infty} f(t) e^{-st} \, \mathrm{d}t\\ 99 | \mathcal{F} {\bigl (} f(x+x_{0}) {\bigr )} &= \mathcal{F} {\bigl (} f(x) {\bigr )} e^{2\pi i\xi x_{0}}, \ 100 | \mathscr{F} {\bigl (} f(x+x_{0}) {\bigr )} = \mathscr{F} {\bigl (} f(x) {\bigr )} e^{2\pi i\xi x_{0}} 101 | \end{split} 102 | \] 103 | 104 | 数学公式常用命令请见 \href{https://en.wikibooks.org/wiki/LaTeX/Mathematics}{WiKibook Mathematics}。artracom.sty中对一些常用数据类型如矢量矩阵等进行了封装,这样的好处是如有一天需要修改矢量的显示形式,只需单独修改artracom.sty中的矢量定义即可实现全文档的修改。 105 | 106 | \subsection{数学环境} 107 | 108 | \begin{axiom} 109 | 这是一个公理。 110 | \end{axiom} 111 | \begin{theorem} 112 | 这是一个定理。 113 | \end{theorem} 114 | \begin{lemma} 115 | 这是一个引理。 116 | \end{lemma} 117 | \begin{corollary} 118 | 这是一个推论。 119 | \end{corollary} 120 | \begin{assertion} 121 | 这是一个断言。 122 | \end{assertion} 123 | \begin{proposition} 124 | 这是一个命题。 125 | \end{proposition} 126 | \begin{proof} 127 | 这是一个证明。 128 | \end{proof} 129 | \begin{definition} 130 | 这是一个定义。 131 | \end{definition} 132 | \begin{example} 133 | 这是一个例子。 134 | \end{example} 135 | \begin{remark} 136 | 这是一个注。 137 | \end{remark} 138 | 139 | \subsection{表格} 140 | 141 | 请见表~\ref{tab:sample}。 142 | \begin{table}[!htbp] 143 | \bicaption{这是一个样表。}{This is a sample table.} 144 | \label{tab:sample} 145 | \centering 146 | \footnotesize% fontsize 147 | \setlength{\tabcolsep}{4pt}% column separation 148 | \renewcommand{\arraystretch}{1.2}%row space 149 | \begin{tabular}{lcccccccc} 150 | \hline 151 | 行号 & \multicolumn{8}{c}{跨多列的标题}\\ 152 | %\cline{2-9}% partial hline from column i to column j 153 | \hline 154 | Row 1 & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$\\ 155 | Row 2 & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$\\ 156 | Row 3 & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$\\ 157 | Row 4 & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$\\ 158 | \hline 159 | \end{tabular} 160 | \end{table} 161 | 162 | 制图制表的更多范例,请见 \href{https://github.com/mohuangrui/ucasthesis/wiki}{ucasthesis 知识小站} 和 \href{https://en.wikibooks.org/wiki/LaTeX/Tables}{WiKibook Tables}。 163 | 164 | \subsection{图片插入} 165 | 166 | 论文中图片的插入通常分为单图和多图,下面分别加以介绍: 167 | 168 | 单图插入:假设插入名为\verb|c06h06|(后缀可以为.jpg、.png、.pdf,下同)的图片,其效果如图~\ref{fig:c06h06}。 169 | \begin{figure}[!htbp] 170 | \centering 171 | \includegraphics[width=0.40\textwidth]{c06h06} 172 | \bicaption{Q判据等值面图,同时测试一下一个很长的标题,比如这真的是一个很长很长很长很长很长很长很长很长的标题。}{Isocontour of Q criteria, at the same time, this is to test a long title, for instance, this is a really very long very long very long very long very long title.} 173 | \label{fig:c06h06} 174 | \end{figure} 175 | 176 | 如果插图的空白区域过大,以图片\verb|c06h06|为例,自动裁剪如图~\ref{fig:c06h06_trim}。 177 | \begin{figure}[!htbp] 178 | \centering 179 | %trim option's parameter order: left bottom right top 180 | \includegraphics[trim = 60mm 80mm 60mm 60mm, clip, width=0.40\textwidth]{c06h06} 181 | \bicaption{激波圆柱作用。}{Shock-cylinder interaction.} 182 | \label{fig:c06h06_trim} 183 | \end{figure} 184 | 185 | 多图的插入如图~\ref{fig:oaspl},多图不应在子图中给文本子标题,只要给序号,并在主标题中进行引用说明。 186 | \begin{figure}[!htbp] 187 | \centering 188 | \begin{subfigure}[b]{0.35\textwidth} 189 | \includegraphics[width=\textwidth]{oaspl_a} 190 | \caption{} 191 | \label{fig:oaspl_a} 192 | \end{subfigure}% 193 | ~% add desired spacing 194 | \begin{subfigure}[b]{0.35\textwidth} 195 | \includegraphics[width=\textwidth]{oaspl_b} 196 | \caption{} 197 | \label{fig:oaspl_b} 198 | \end{subfigure} 199 | \\% line break 200 | \begin{subfigure}[b]{0.35\textwidth} 201 | \includegraphics[width=\textwidth]{oaspl_c} 202 | \caption{} 203 | \label{fig:oaspl_c} 204 | \end{subfigure}% 205 | ~% add desired spacing 206 | \begin{subfigure}[b]{0.35\textwidth} 207 | \includegraphics[width=\textwidth]{oaspl_d} 208 | \caption{} 209 | \label{fig:oaspl_d} 210 | \end{subfigure} 211 | \bicaption{总声压级。(a) 这是子图说明信息,(b) 这是子图说明信息,(c) 这是子图说明信息,(d) 这是子图说明信息。}{OASPL.(a) This is the explanation of subfig, (b) This is the explanation of subfig, (c) This is the explanation of subfig, (d) This is the explanation of subfig.} 212 | \label{fig:oaspl} 213 | \end{figure} 214 | 215 | \subsection{算法} 216 | 217 | 如见算法~\ref{alg:euclid},详细使用方法请参见文档 \href{https://ctan.org/pkg/algorithmicx?lang=en}{algorithmicx}。 218 | 219 | \begin{algorithm}[!htbp] 220 | \small 221 | \caption{Euclid's algorithm}\label{alg:euclid} 222 | \begin{algorithmic}[1] 223 | \Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b} 224 | \State $r\gets a\bmod b$ 225 | \While{$r\not=0$}\Comment{We have the answer if r is 0} 226 | \State $a\gets b$ 227 | \State $b\gets r$ 228 | \State $r\gets a\bmod b$ 229 | \EndWhile\label{euclidendwhile} 230 | \State \textbf{return} $b$\Comment{The gcd is b} 231 | \EndProcedure 232 | \end{algorithmic} 233 | \end{algorithm} 234 | 235 | \subsection{参考文献引用} 236 | 237 | 参考文献引用过程以实例进行介绍,假设需要引用名为"Document Preparation System"的文献,步骤如下: 238 | 239 | 1)使用Google Scholar搜索Document Preparation System,在目标条目下点击Cite,展开后选择Import into BibTeX打开此文章的BibTeX索引信息,将它们copy添加到ref.bib文件中(此文件位于Biblio文件夹下)。 240 | 241 | 2)索引第一行 \verb|@article{lamport1986document,|中 \verb|lamport1986document| 即为此文献的label (\textbf{中文文献也必须使用英文label},一般遵照:姓氏拼音+年份+标题第一字拼音的格式),想要在论文中索引此文献,有两种索引类型: 242 | 243 | 文本类型:\verb|\citet{lamport1986document}|。正如此处所示 \citet{lamport1986document}; 244 | 245 | 括号类型:\verb|\citep{lamport1986document}|。正如此处所示 \citep{lamport1986document}。 246 | 247 | \textbf{多文献索引用英文逗号隔开}: 248 | 249 | \verb|\citep{lamport1986document, chu2004tushu, chen2005zhulu}|。正如此处所示 \citep{lamport1986document, chu2004tushu, chen2005zhulu} 250 | 251 | 更多例子如: 252 | 253 | \citet{walls2013drought} 根据 \citet{betts2005aging} 的研究,首次提出...。其中关于... \citep{walls2013drought, betts2005aging},是当前中国...得到迅速发展的研究领域 \citep{chen1980zhongguo, bravo1990comparative}。引用同一著者在同一年份出版的多篇文献时,在出版年份之后用 254 | 英文小写字母区别,如:\citep{yuan2012lana, yuan2012lanb, yuan2012lanc} 和 \citet{yuan2012lana, yuan2012lanb, yuan2012lanc}。同一处引用多篇文献时,按出版年份由近及远依次标注。例如 \citep{chen1980zhongguo, stamerjohanns2009mathml, hls2012jinji, niu2013zonghe}。 255 | 256 | 使用著者-出版年制(authoryear)式参考文献样式时,中文文献必须在BibTeX索引信息的 \textbf{key} 域(请参考ref.bib文件)填写作者姓名的拼音,才能使得文献列表按照拼音排序。参考文献表中的条目(不排序号),先按语种分类排列,语种顺 序是:中文、日文、英文、俄文、其他文种。然后,中文按汉语拼音字母顺序排列,日文按第一著者的姓氏笔画排序,西文和 俄文按第一著者姓氏首字母顺序排列。如中 \citep{niu2013zonghe}、日 \citep{Bohan1928}、英 \citep{stamerjohanns2009mathml}、俄 \citep{Dubrovin1906}。 257 | 258 | 如此,即完成了文献的索引,请查看下本文档的参考文献一章,看看是不是就是这么简单呢?是的,就是这么简单! 259 | 260 | 不同文献样式和引用样式,如著者-出版年制(authoryear)、顺序编码制(numbers)、上标顺序编码制(super)可在Thesis.tex中对artratex.sty调用实现,详见 \href{https://github.com/mohuangrui/ucasthesis/wiki}{ucasthesis 知识小站之文献样式} 261 | 262 | %若在上标顺序编码制(super)模式下,希望在特定位置将上标改为嵌入式标,可使用 \citetns{niu2013zonghe,stamerjohanns2009mathml} 和 \citepns{niu2013zonghe,stamerjohanns2009mathml}。 263 | 264 | 参考文献索引的更多知识,请见 \href{https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management}{WiKibook Bibliography}。\nocite{*}% 使文献列表显示所有参考文献(包括未引用文献) 265 | 266 | \section{常见使用问题}\label{sec:qa} 267 | 268 | \begin{enumerate} 269 | \item 模板每次发布前,都已在Windows,Linux,MacOS系统上测试通过。下载模板后,若编译出现错误,则请见 \href{https://github.com/mohuangrui/ucasthesis/wiki}{ucasthesis知识小站} 的 \href{https://github.com/mohuangrui/ucasthesis/wiki/%E7%BC%96%E8%AF%91%E6%8C%87%E5%8D%97}{编译指南}。 270 | 271 | \item 模板文档的编码为UTF-8编码。所有文件都必须采用UTF-8编码,否则编译后生成的文档将出现乱码文本。若出现文本编辑器无法打开文档或打开文档乱码的问题,请检查编辑器对UTF-8编码的支持。如果使用WinEdt作为文本编辑器(\textbf{不推荐使用}),应在其Options -> Preferences -> wrapping选项卡下将两种Wrapping Modes中的内容: 272 | 273 | TeX;HTML;ANSI;ASCII|DTX... 274 | 275 | 修改为:TeX;\textbf{UTF-8|ACP;}HTML;ANSI;ASCII|DTX... 276 | 277 | 同时,取消Options -> Preferences -> Unicode中的Enable ANSI Format。 278 | 279 | \item 推荐选择xelatex或lualatex编译引擎编译中文文档。编译脚本的默认设定为xelatex编译引擎。你也可以选择不使用脚本编译,如直接使用 \LaTeX{}文本编辑器编译。注:\LaTeX{}文本编辑器编译的默认设定为pdflatex编译引擎,若选择xelatex或lualatex编译引擎,请进入下拉菜单选择。为正确生成引用链接和参考文献,需要进行\textbf{全编译}。 280 | 281 | \item Texmaker使用简介 282 | \begin{enumerate} 283 | \footnotesize 284 | \item 使用 Texmaker “打开 (Open)” Thesis.tex。 285 | \item 菜单 “选项 (Options)” -> “设置当前文档为主文档 (Define as Master Document)” 286 | \item 菜单 “自定义 (User)” -> “自定义命令 (User Commands)” -> “编辑自定义命令 (Edit User Commands)” -> 左侧选择 “command 1”,右侧 “菜单项 (Menu Item)” 填入 Auto Build -> 点击下方“向导 (Wizard)” -> “添加 (Add)”: xelatex + bibtex + xelatex + xelatex + pdf viewer -> 点击“完成 (OK)” 287 | \item 使用 Auto Build 编译带有未生成引用链接的源文件,可以仅使用 xelatex 编译带有已经正确生成引用链接的源文件。 288 | \item 编译完成,“查看(View)” PDF,在PDF中 “ctrl+click” 可链接到相对应的源文件。 289 | \end{enumerate} 290 | 291 | \item 模版的设计可能地考虑了适应性。致谢等所有条目都是通过最为通用的 292 | 293 | \verb+\chapter{item name}+ and \verb+\section*{item name}+ 294 | 295 | 来显式实现的 (请观察Backmatter.tex),从而可以随意添加,放置,和修改,如同一般章节。对于图表目录名称则可在ucasthesis.cfg中进行修改。 296 | 297 | \item 设置文档样式: 在artratex.sty中搜索关键字定位相应命令,然后修改 298 | \begin{enumerate} 299 | \item 正文行距:启用和设置 \verb|\linespread{1.5}|,默认1.5倍行距。 300 | \item 参考文献行距:修改 \verb|\setlength{\bibsep}{0.0ex}| 301 | \item 目录显示级数:修改 \verb|\setcounter{tocdepth}{2}| 302 | \item 文档超链接的颜色及其显示:修改 \verb|\hypersetup| 303 | \end{enumerate} 304 | 305 | \item 文档内字体切换方法: 306 | \begin{itemize} 307 | \item 宋体:国科大论文模板ucasthesis 或 \textrm{国科大论文模板ucasthesis} 308 | \item 粗宋体:{\bfseries 国科大论文模板ucasthesis} 或 \textbf{国科大论文模板ucasthesis} 309 | \item 黑体:{\sffamily 国科大论文模板ucasthesis} 或 \textsf{国科大论文模板ucasthesis} 310 | \item 粗黑体:{\bfseries\sffamily 国科大论文模板ucasthesis} 或 \textsf{\bfseries 国科大论文模板ucasthesis} 311 | \item 仿宋:{\ttfamily 国科大论文模板ucasthesis} 或 \texttt{国科大论文模板ucasthesis} 312 | \item 粗仿宋:{\bfseries\ttfamily 国科大论文模板ucasthesis} 或 \texttt{\bfseries 国科大论文模板ucasthesis} 313 | \item 楷体:{\itshape 国科大论文模板ucasthesis} 或 \textit{国科大论文模板ucasthesis} 314 | \item 粗楷体:{\bfseries\itshape 国科大论文模板ucasthesis} 或 \textit{\bfseries 国科大论文模板ucasthesis} 315 | \end{itemize} 316 | \end{enumerate} 317 | 318 | 319 | -------------------------------------------------------------------------------- /Tex/Chap_Intro.tex: -------------------------------------------------------------------------------- 1 | \chapter{引言}\label{chap:introduction} 2 | 3 | \section{研究背景} 4 | 5 | 考虑到许多同学可能缺乏\LaTeX{}使用经验,ucasthesis将\LaTeX{}的复杂性高度封装,开放出简单的接口,以便轻易使用。同时,对用\LaTeX{}撰写论文的一些主要难题,如制图、制表、文献索引等,进行了详细说明,并提供了相应的代码样本,理解了上述问题后,对于初学者而言,使用此模板撰写学位论文将不存在实质性的困难。所以,如果你是初学者,请不要直接放弃,因为同样为初学者的我,十分明白让\LaTeX{}简单易用的重要性,而这正是ucasthesis所追求和体现的。 6 | 7 | 此中国科学院大学学位论文模板ucasthesis基于中科院数学与系统科学研究院吴凌云研究员的CASthesis模板发展而来。当前ucasthesis模板满足最新的中国科学院大学学位论文撰写要求和封面设定。兼顾操作系统:Windows,Linux,MacOS 和\LaTeX{}编译引擎:pdflatex,xelatex,lualatex。支持中文书签、中文渲染、中文粗体显示、拷贝PDF中的文本到其他文本编辑器等特性。此外,对模板的文档结构进行了精心设计,撰写了编译脚本提高模板的易用性和使用效率。 8 | 9 | ucasthesis的目标在于简化学位论文的撰写,利用\LaTeX{}格式与内容分离的特征,模板将格式设计好后,作者可只需关注论文内容。 同时,ucasthesis有着整洁一致的代码结构和扼要的注解,对文档的仔细阅读可为初学者提供一个学习\LaTeX{}的窗口。此外,模板的架构十分注重通用性,事实上,ucasthesis不仅是国科大学位论文模板,同时,通过少量修改即可成为使用\LaTeX{}撰写中英文文章或书籍的通用模板,并为使用者的个性化设定提供了接口。 10 | 11 | \section{系统要求}\label{sec:system} 12 | 13 | \href{https://github.com/mohuangrui/ucasthesis}{\texttt{ucasthesis}} 宏包可以在目前主流的 \href{https://en.wikibooks.org/wiki/LaTeX/Introduction}{\LaTeX{}} 编译系统中使用,如\TeX{}Live和MiK\TeX{}。因C\TeX{}套装已停止维护,\textbf{不再建议使用} (请勿混淆C\TeX{}套装与ctex宏包。C\TeX{}套装是集成了许多\LaTeX{}组件的\LaTeX{}编译系统。 \href{https://ctan.org/pkg/ctex?lang=en}{ctex} 宏包如同ucasthesis,是\LaTeX{}命令集,其维护状态活跃,并被主流的\LaTeX{}编译系统默认集成,是几乎所有\LaTeX{}中文文档的核心架构)。推荐的 \href{https://en.wikibooks.org/wiki/LaTeX/Installation}{\LaTeX{}编译系统} 和 \href{https://en.wikibooks.org/wiki/LaTeX/Installation}{\LaTeX{}文本编辑器} 为 14 | \begin{center} 15 | %\footnotesize% fontsize 16 | %\setlength{\tabcolsep}{4pt}% column separation 17 | %\renewcommand{\arraystretch}{1.5}% row space 18 | \begin{tabular}{lcc} 19 | \hline 20 | %\multicolumn{num_of_cols_to_merge}{alignment}{contents} \\ 21 | %\cline{i-j}% partial hline from column i to column j 22 | 操作系统 & \LaTeX{}编译系统 & \LaTeX{}文本编辑器\\ 23 | \hline 24 | Linux & \href{https://www.tug.org/texlive/acquire-netinstall.html}{\TeX{}Live Full} & \href{http://www.xm1math.net/texmaker/}{Texmaker} 或 Vim\\ 25 | MacOS & \href{https://www.tug.org/mactex/}{Mac\TeX{} Full} & \href{http://www.xm1math.net/texmaker/}{Texmaker} 或 Texshop\\ 26 | Windows & \href{https://www.tug.org/texlive/acquire-netinstall.html}{\TeX{}Live Full} 或 \href{https://miktex.org/download}{MiK\TeX{}} & \href{http://www.xm1math.net/texmaker/}{Texmaker}\\ 27 | \hline 28 | \end{tabular} 29 | \end{center} 30 | 31 | \LaTeX{}编译系统,如\TeX{}Live(Mac\TeX{}为针对MacOS的\TeX{}Live),用于提供编译环境,\LaTeX{}文本编辑器 (如Texmaker) 用于编辑\TeX{}源文件。请从各软件官网下载安装程序,勿使用不明程序源。\textbf{\LaTeX{}编译系统和\LaTeX{}编辑器分别安装成功后,即完成了\LaTeX{}的系统配置},无需其他手动干预和配置。若系统原带有旧版的\LaTeX{}编译系统并想安装新版,请\textbf{先卸载干净旧版再安装新版}。 32 | 33 | \section{问题反馈} 34 | 35 | 请见 \href{https://github.com/mohuangrui/ucasthesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98}{问题反馈} 36 | 37 | 欢迎大家有效地反馈模板不足之处,一起不断改进模板。希望大家向同事积极推广\LaTeX{},一起更高效地做科研。 38 | 39 | \section{模板下载} 40 | 41 | \begin{center} 42 | \href{https://github.com/mohuangrui/ucasthesis}{Github/ucasthesis}: \url{https://github.com/mohuangrui/ucasthesis} 43 | \end{center} 44 | -------------------------------------------------------------------------------- /Tex/Frontinfo.tex: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %->> Titlepage information 3 | %---------------------------------------------------------------------------% 4 | %- 5 | %-> 中文封面信息 6 | %- 7 | \confidential{}% 密级:只有涉密论文才填写 8 | \schoollogo[scale=0.095]{ucas_logo}% 校徽 9 | \title{中国科学院大学学位论文\LaTeX{}模板 {$~^{\pi}\pi^{\pi}$}}% 论文中文题目 10 | \author{莫晃锐}% 论文作者 11 | \advisor{刘青泉~研究员~中国科学院力学研究所\\}% 指导教师:姓名 专业技术职务 工作单位 12 | %\advisor{指导教师一\\指导教师二\\指导教师三}% 多行指导教师示例 13 | \degree{硕士}% 学位:学士、硕士、博士 14 | \degreetype{理学}% 学位类别:理学、工学、工程、医学等 15 | \major{流体力学}% 二级学科专业名称 16 | \institute{中国科学院力学研究所}% 院系名称 17 | %\institute{中国科学院力学研究所\\流固耦合实验室}% 多行院系名称示例 18 | \date{2014~年~6~月}% 毕业日期:夏季为6月、冬季为12月 19 | %- 20 | %-> 英文封面信息 21 | %- 22 | \TITLE{\LaTeX{} Thesis Template\\ of \\ The University of Chinese Academy of Sciences {$~^{\pi}\pi^{\pi}$}}% 论文英文题目 23 | \AUTHOR{Mo Huangrui}% 论文作者 24 | \ADVISOR{Supervisor: Professor Liu Qingquan}% 指导教师 25 | \DEGREE{Master}% 学位:Bachelor, Master, Doctor, Postdoctor。封面据英文学位名称自动切换,需确保拼写准确 26 | \DEGREETYPE{Natural Science}% 学位类别:Philosophy, Natural Science, Engineering, Economics, Agriculture 等 27 | \MAJOR{Fluid Mechanics}% 二级学科专业名称 28 | \INSTITUTE{Institute of Mechanics, Chinese Academy of Sciences}% 院系名称 29 | \DATE{June, 2014}% 毕业日期:夏季为June、冬季为December 30 | %---------------------------------------------------------------------------% 31 | -------------------------------------------------------------------------------- /Tex/Frontmatter.tex: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %->> Frontmatter 3 | %---------------------------------------------------------------------------% 4 | %- 5 | %-> 生成封面 6 | %- 7 | \maketitle% 生成中文封面 8 | \MAKETITLE% 生成英文封面 9 | %- 10 | %-> 作者声明 11 | %- 12 | \makedeclaration% 生成声明页 13 | %- 14 | %-> 中文摘要 15 | %- 16 | \intobmk\chapter*{摘\quad 要}% 显示在书签但不显示在目录 17 | \setcounter{page}{1}% 开始页码 18 | \pagenumbering{Roman}% 页码符号 19 | 20 | 本文是中国科学院大学学位论文模板ucasthesis的使用说明文档。主要内容为介绍\LaTeX{}文档类ucasthesis的用法,以及如何使用\LaTeX{}快速高效地撰写学位论文。 21 | 22 | \keywords{中国科学院大学,学位论文,\LaTeX{}模板}% 中文关键词 23 | %- 24 | %-> 英文摘要 25 | %- 26 | \intobmk\chapter*{Abstract}% 显示在书签但不显示在目录 27 | 28 | This paper is a help documentation for the \LaTeX{} class ucasthesis, which is a thesis template for the University of Chinese Academy of Sciences. The main content is about how to use the ucasthesis, as well as how to write thesis efficiently by using \LaTeX{}. 29 | 30 | \KEYWORDS{University of Chinese Academy of Sciences (UCAS), Thesis, \LaTeX{} Template}% 英文关键词 31 | %---------------------------------------------------------------------------% 32 | -------------------------------------------------------------------------------- /Tex/Mainmatter.tex: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %->> Main content 3 | %---------------------------------------------------------------------------% 4 | \input{Tex/Chap_Intro} 5 | \input{Tex/Chap_Guide} 6 | %---------------------------------------------------------------------------% 7 | -------------------------------------------------------------------------------- /Tex/Prematter.tex: -------------------------------------------------------------------------------- 1 | \intobmk\chapter*{符号列表}% 显示在书签但不显示在目录 2 | 3 | \section*{字符} 4 | \nomenclatureitem[\textbf{Unit}]{\textbf{Symbol}}{\textbf{Description}} 5 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2} \cdot K^{-1}}$]{$R$}{the gas constant} 6 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2} \cdot K^{-1}}$]{$C_v$}{specific heat capacity at constant volume} 7 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2} \cdot K^{-1}}$]{$C_p$}{specific heat capacity at constant pressure} 8 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2}}$]{$E$}{specific total energy} 9 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2}}$]{$e$}{specific internal energy} 10 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2}}$]{$h_T$}{specific total enthalpy} 11 | \nomenclatureitem[$\Unit{m^{2} \cdot s^{-2}}$]{$h$}{specific enthalpy} 12 | \nomenclatureitem[$\Unit{kg \cdot m \cdot s^{-3} \cdot K^{-1}}$]{$k$}{thermal conductivity} 13 | \nomenclatureitem[$\Unit{kg \cdot m^{-1} \cdot s^{-2}}$]{$S_{ij}$}{deviatoric stress tensor} 14 | \nomenclatureitem[$\Unit{kg \cdot m^{-1} \cdot s^{-2}}$]{$\tau_{ij}$}{viscous stress tensor} 15 | \nomenclatureitem[$\Unit{1}$]{$\delta_{ij}$}{Kronecker tensor} 16 | \nomenclatureitem[$\Unit{1}$]{$I_{ij}$}{identity tensor} 17 | 18 | \section*{算子} 19 | \nomenclatureitem{\textbf{Symbol}}{\textbf{Description}} 20 | \nomenclatureitem{$\Delta$}{difference} 21 | \nomenclatureitem{$\nabla$}{gradient operator} 22 | \nomenclatureitem{$\delta^{\pm}$}{upwind-biased interpolation scheme} 23 | 24 | \section*{缩写} 25 | \nomenclatureitem{CFD}{Computational Fluid Dynamics} 26 | \nomenclatureitem{CFL}{Courant-Friedrichs-Lewy} 27 | \nomenclatureitem{EOS}{Equation of State} 28 | \nomenclatureitem{JWL}{Jones-Wilkins-Lee} 29 | \nomenclatureitem{WENO}{Weighted Essentially Non-oscillatory} 30 | \nomenclatureitem{ZND}{Zel'dovich-von Neumann-Doering} 31 | 32 | -------------------------------------------------------------------------------- /Thesis.tex: -------------------------------------------------------------------------------- 1 | %---------------------------------------------------------------------------% 2 | %- -% 3 | %- LaTeX Template -% 4 | %- -% 5 | %---------------------------------------------------------------------------% 6 | %- Copyright (C) Huangrui Mo <huangrui.mo@gmail.com> 7 | %- This is free software: you can redistribute it and/or modify it 8 | %- under the terms of the GNU General Public License as published by 9 | %- the Free Software Foundation, either version 3 of the License, or 10 | %- (at your option) any later version. 11 | %---------------------------------------------------------------------------% 12 | %->> Document class declaration 13 | %---------------------------------------------------------------------------% 14 | \documentclass[twoside]{Style/ucasthesis}% 15 | %- Multiple optional arguments: 16 | %- [<oneside|twoside|print>]% oneside eprint, twoside eprint, or paper print 17 | %- [fontset=<adobe|none|...>]% specify font set instead of automatic detection 18 | %- [scheme=plain]% thesis writing of international students 19 | %- [draftversion]% show draft version information 20 | %- [standard options for ctex book class: draft|paper size|font size|...]% 21 | %---------------------------------------------------------------------------% 22 | %->> Document settings 23 | %---------------------------------------------------------------------------% 24 | \usepackage[authoryear,list]{Style/artratex}% document settings 25 | %- usage: \usepackage[option1,option2,...,optionN]{artratex} 26 | %- Multiple optional arguments: 27 | %- [bibtex|biber]% set bibliography processor and package 28 | %- [<numbers|super|authoryear|alpha>]% set citation and reference style 29 | %- <numbers>: textual: Jones [1]; parenthetical: [1] 30 | %- <super>: textual: Jones superscript [1]; parenthetical: superscript [1] 31 | %- <authoryear>: textual: Jones (1995); parenthetical: (Jones, 1995) 32 | %- <alpha>: textual: not available; parenthetical: [Jon95] 33 | %- [geometry]% reconfigure page layout via geometry package 34 | %- [lscape]% provide landscape layout environment 35 | %- [xhf]% disable header and footer via fancyhdr package 36 | %- [color]% provide color support via xcolor package 37 | %- [background]% enable page background 38 | %- [tikz]% provide complex diagrams via tikz package 39 | %- [table]% provide complex tables via ctable package 40 | %- [list]% provide enhanced list environments for algorithm and coding 41 | %- [math]% enable some extra math packages 42 | %- [xlink]% disable link colors 43 | \usepackage{Style/artracom}% user defined commands 44 | %---------------------------------------------------------------------------% 45 | %->> Document inclusion 46 | %---------------------------------------------------------------------------% 47 | %\includeonly{Tex/Chap_1,...,Tex/Chap_N}% selected files compilation 48 | %---------------------------------------------------------------------------% 49 | %->> Document content 50 | %---------------------------------------------------------------------------% 51 | %- 52 | %-> Titlepage information 53 | %- 54 | \input{Tex/Frontinfo}% 55 | \begin{document} 56 | %- 57 | %-> Frontmatter: title page, abstract, content list, symbol list, preface 58 | %- 59 | \frontmatter% initialize the environment 60 | \input{Tex/Frontmatter}% title page, abstract 61 | {% content list region 62 | \linespread{1.2}% local line space 63 | \intobmk*{\cleardoublepage}{\contentsname}% add link to bookmark 64 | \tableofcontents% content catalog 65 | \intobmk*{\cleardoublepage}{\listfigurename}% add link to bookmark 66 | \listoffigures% figure catalog 67 | \intobmk*{\cleardoublepage}{\listtablename}% add link to bookmark 68 | \listoftables% table catalog 69 | } 70 | \input{Tex/Prematter}% symbol list, preface content 71 | %- 72 | %-> Mainmatter 73 | %- 74 | \mainmatter% initialize the environment 75 | \input{Tex/Mainmatter}% main content 76 | %- 77 | %-> Appendix 78 | %- 79 | \cleardoublepage% 80 | \appendix% initialize the environment 81 | \input{Tex/Appendix}% appendix content 82 | %- 83 | %-> Backmatter: bibliography, glossary, index 84 | %- 85 | \backmatter% initialize the environment 86 | \intotoc*{\cleardoublepage}{\bibname}% add link to toc 87 | \artxifstreq{\artxbib}{bibtex}{% enable bibtex 88 | \bibliography{Biblio/ref}% bibliography 89 | }{% 90 | \printbibliography% bibliography 91 | } 92 | \input{Tex/Backmatter}% other information 93 | \end{document} 94 | %---------------------------------------------------------------------------% 95 | 96 | -------------------------------------------------------------------------------- /artratex.bat: -------------------------------------------------------------------------------- 1 | @rem ------------------------------------------------ 2 | @rem LaTeX Automated Compiler 3 | @rem <By Huangrui Mo> 4 | @rem Copyright (C) Huangrui Mo <huangrui.mo@gmail.com> 5 | @rem This is free software: you can redistribute it 6 | @rem and/or modify it under the terms of the GNU General 7 | @rem Public License as published by the Free Software 8 | @rem Foundation, either version 3 of the License, or 9 | @rem (at your option) any later version. 10 | @rem ------------------------------------------------ 11 | @echo off 12 | @rem ------------------------------------------------ 13 | @rem ->> Set tex compiler 14 | @rem ------------------------------------------------ 15 | set CompilerOrder="2" 16 | @rem ------------------------------------------------ 17 | if %CompilerOrder% == "1" ( 18 | set CompileName="pdflatex" 19 | ) else ( 20 | set CompileName="xelatex" 21 | ) 22 | @rem ------------------------------------------------ 23 | @rem ->> Get source filename 24 | @rem ------------------------------------------------ 25 | for %%F in (*.tex) do ( 26 | set FileName=%%~nF 27 | ) 28 | @rem ------------------------------------------------ 29 | @rem ->> Set directory 30 | @rem ------------------------------------------------ 31 | if not exist "./Tmp" ( 32 | md Tmp 33 | ) 34 | @rem ------------------------------------------------ 35 | @rem ->> Set environmental variables 36 | @rem ------------------------------------------------ 37 | set TEXINPUTS=.//;%TEXINPUTS% 38 | set BIBINPUTS=.//;%BIBINPUTS% 39 | set BSTINPUTS=.//;%BSTINPUTS% 40 | @rem ------------------------------------------------ 41 | @rem ->> Build textual content 42 | @rem ------------------------------------------------ 43 | %CompileName% -output-directory=Tmp %FileName% 44 | @rem ------------------------------------------------ 45 | @rem ->> Build references and links 46 | @rem ------------------------------------------------ 47 | bibtex ./Tmp/%FileName% 48 | %CompileName% -output-directory=Tmp %FileName% 49 | %CompileName% -output-directory=Tmp %FileName% 50 | @rem ------------------------------------------------ 51 | @rem ->> View compiled file 52 | @rem ------------------------------------------------ 53 | @rem start " " /max "./Tmp/%FileName%.pdf" 54 | echo ------------------------------------------------ 55 | echo %CompileName% %FileName%.tex finished... 56 | echo ------------------------------------------------ 57 | -------------------------------------------------------------------------------- /artratex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | #---------------------------------------------------------------------------# 5 | #- LaTeX Automated Compiler -# 6 | #- <By Huangrui Mo> -# 7 | #- Copyright (C) Huangrui Mo <huangrui.mo@gmail.com> -# 8 | #- This is free software: you can redistribute it and/or modify it -# 9 | #- under the terms of the GNU General Public License as published by -# 10 | #- the Free Software Foundation, either version 3 of the License, or -# 11 | #- (at your option) any later version. -# 12 | #---------------------------------------------------------------------------# 13 | 14 | #---------------------------------------------------------------------------# 15 | #->> Preprocessing 16 | #---------------------------------------------------------------------------# 17 | #- 18 | #-> Get source filename 19 | #- 20 | if [[ "$#" == "1" ]]; then 21 | FileName=`echo *.tex` 22 | elif [[ "$#" == "2" ]]; then 23 | FileName="$2" 24 | else 25 | echo "---------------------------------------------------------------------------" 26 | echo "Usage: "$0" <l|p|x>< |a|b> <filename>" 27 | echo "TeX engine parameters: <l:lualatex>, <p:pdflatex>, <x:xelatex>" 28 | echo "Bib engine parameters: < :none>, <a:bibtex>, <b:biber>" 29 | echo "---------------------------------------------------------------------------" 30 | exit 31 | fi 32 | FileName=${FileName/.tex} 33 | #- 34 | #-> Get tex compiler 35 | #- 36 | if [[ $1 == *'l'* ]]; then 37 | TexCompiler="lualatex" 38 | else 39 | if [[ $1 == *'p'* ]]; then 40 | TexCompiler="pdflatex" 41 | else 42 | TexCompiler="xelatex" 43 | fi 44 | fi 45 | #- 46 | #-> Get bib compiler 47 | #- 48 | if [[ $1 == *'a'* ]]; then 49 | BibCompiler="bibtex" 50 | elif [[ $1 == *'b'* ]]; then 51 | BibCompiler="biber" 52 | else 53 | BibCompiler="" 54 | fi 55 | #- 56 | #-> Set compilation out directory resembling the inclusion hierarchy 57 | #- 58 | Tmp="Tmp" 59 | Tex="Tex" 60 | if [[ ! -d $Tmp/$Tex ]]; then 61 | mkdir -p $Tmp/$Tex 62 | fi 63 | #- 64 | #-> Set LaTeX environmental variables to add subdirs into search path 65 | #- 66 | export TEXINPUTS=".//:$TEXINPUTS" # paths to locate .tex 67 | export BIBINPUTS=".//:$BIBINPUTS" # paths to locate .bib 68 | export BSTINPUTS=".//:$BSTINPUTS" # paths to locate .bst 69 | #---------------------------------------------------------------------------# 70 | #->> Compiling 71 | #---------------------------------------------------------------------------# 72 | #- 73 | #-> Build textual content and auxiliary files 74 | #- 75 | $TexCompiler -output-directory=$Tmp $FileName || exit 76 | #- 77 | #-> Build references and links 78 | #- 79 | if [[ -n $BibCompiler ]]; then 80 | #- fix the inclusion path for hierarchical auxiliary files 81 | sed -i -e "s|\@input{|\@input{$Tmp/|g" $Tmp/"$FileName".aux 82 | #- extract and format bibliography database via auxiliary files 83 | $BibCompiler $Tmp/$FileName 84 | #- insert reference indicators into textual content 85 | $TexCompiler -output-directory=$Tmp $FileName || exit 86 | #- refine citation references and links 87 | $TexCompiler -output-directory=$Tmp $FileName || exit 88 | fi 89 | #---------------------------------------------------------------------------# 90 | #->> Postprocessing 91 | #---------------------------------------------------------------------------# 92 | #- 93 | #-> Set PDF viewer 94 | #- 95 | System_Name=`uname` 96 | if [[ $System_Name == "Linux" ]]; then 97 | PDFviewer="xdg-open" 98 | elif [[ $System_Name == "Darwin" ]]; then 99 | PDFviewer="open" 100 | else 101 | PDFviewer="open" 102 | fi 103 | #- 104 | #-> Open the compiled file 105 | #- 106 | $PDFviewer ./$Tmp/"$FileName".pdf || exit 107 | echo "---------------------------------------------------------------------------" 108 | echo "$TexCompiler $BibCompiler "$FileName".tex finished..." 109 | echo "---------------------------------------------------------------------------" 110 | 111 | -------------------------------------------------------------------------------- /模板使用说明.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohuangrui/ucasthesis/aec46ba1f621c537404cb631f54f6289b25a97af/模板使用说明.pdf --------------------------------------------------------------------------------