├── DissertUESTC-bachelor.bst ├── DissertUESTC.bst ├── DissertUESTC.cls ├── fig ├── TeXstudio-nomenclature1.jpg ├── TeXstudio-nomenclature2.jpg ├── TeXstudio-nomenclature3.jpg ├── TeXstudio_bibtex.png ├── VSCode-nomenclature.jpg ├── VScode_bibtex.png ├── authsign.png ├── refsample.png ├── spvrsign.png ├── uestclogo.pdf ├── 一灯1.jpg ├── 一灯2.jpg ├── 周伯通1.png ├── 周伯通2.jpg ├── 周伯通3.jpg ├── 杨过1.jpg ├── 杨过2.jpg ├── 杨过3.png ├── 杨过4.jpg ├── 杨过5.jpg ├── 杨过6.jpg ├── 杨过小龙女1.jpg ├── 杨过小龙女2.jpg ├── 杨过小龙女3.png ├── 杨过小龙女6.jpg ├── 杨过程英.jpg ├── 杨过绿萼.jpg ├── 杨过郭靖.jpg ├── 洪七公1.jpg ├── 洪七公2.jpeg ├── 程英1.jpg ├── 程英2.jpg ├── 程英3.jpg ├── 绿萼1.jpg ├── 绿萼2.jpg ├── 郭芙1.jpg ├── 郭芙2.jpg ├── 郭芙3.jpg ├── 郭襄1.jpg ├── 郭襄2.jpg ├── 郭靖1.jpg ├── 陆无双1.jpg ├── 陆无双2.jpeg ├── 陆无双程英.png ├── 陆无双程英杨过.jpg ├── 黄老邪1.jpg ├── 黄老邪2.jpg ├── 黄蓉1.jpg ├── 黄蓉2.png └── 黄蓉郭靖1.jpg ├── font ├── STXINGKA.TTF ├── STZHONGS.TTF ├── SimHei.ttf ├── SimSun.ttc ├── Source Han Serif SC.otf ├── times.ttf ├── timesbd.ttf ├── timesbi.ttf └── timesi.ttf ├── readme.md ├── ref.bib ├── tutorial.pdf └── tutorial.tex /DissertUESTC-bachelor.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `DissertUESTC-bachelor.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% merlin.mbs (with options: `seq-no,nm-rv,ed-rev,jnrlst,nmlm,x3,m3,dt-jnl,yr-com,dtrev,yrp-col,jttl-rm,thtit-a,volp-sp,pp-last,num-xser,btit-rm,bt-rm,bkpg-x,add-pub,pre-pub,url-doi,edparc,bkedcap,ppx,ed,abr,ednx,ord,xand,eprint,url,url-blk,em-x,nfss,') 8 | %% ---------------------------------------- 9 | %% *** Dissertation style for UESTC in 2024 *** 10 | %% 11 | %% Copyright 1994-2011 Patrick W Daly 12 | % =============================================================== 13 | % IMPORTANT NOTICE: 14 | % This bibliographic style (bst) file has been generated from one or 15 | % more master bibliographic style (mbs) files, listed above. 16 | % 17 | % This generated file can be redistributed and/or modified under the terms 18 | % of the LaTeX Project Public License Distributed from CTAN 19 | % archives in directory macros/latex/base/lppl.txt; either 20 | % version 1 of the License, or any later version. 21 | % =============================================================== 22 | % Name and version information of the main mbs file: 23 | % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] 24 | % For use with BibTeX version 0.99a or later 25 | %------------------------------------------------------------------- 26 | % This bibliography style file is intended for texts in ENGLISH 27 | % This is a numerical citation style, and as such is standard LaTeX. 28 | % It requires no extra package to interface to the main text. 29 | % The form of the \bibitem entries is 30 | % \bibitem{key}... 31 | % Usage of \cite is as follows: 32 | % \cite{key} ==>> [#] 33 | % \cite[chap. 2]{key} ==>> [#, chap. 2] 34 | % where # is a number determined by the ordering in the reference list. 35 | % The order in the reference list is that by which the works were originally 36 | % cited in the text, or that in the database. 37 | %--------------------------------------------------------------------- 38 | 39 | ENTRY 40 | { address 41 | archive 42 | author 43 | booktitle 44 | chapter 45 | citedate 46 | day 47 | doi 48 | edition 49 | editor 50 | eid 51 | eprint 52 | howpublished 53 | journal 54 | key 55 | language 56 | modifydate 57 | month 58 | note 59 | number 60 | organization 61 | pages 62 | publisher 63 | school 64 | series 65 | title 66 | translator 67 | type 68 | url 69 | volume 70 | year 71 | nation 72 | } 73 | {} 74 | { label } 75 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 76 | FUNCTION {init.state.consts} 77 | { #0 'before.all := 78 | #1 'mid.sentence := 79 | #2 'after.sentence := 80 | #3 'after.block := 81 | } 82 | STRINGS { s t} 83 | 84 | %%% 根据当前“输出状态”确定在第二栈顶字面值尾部是否应该添加分隔符以及添加哪种分隔符: 85 | %%% mid.sentence 状态添加 ", " 86 | %%% after.block 状态添加 ".\n" 87 | %%% before.all 状态不加 88 | %%% after.sentence 状态添加 ". " 89 | %%% 然后向输出缓冲区写入第二栈顶字面值,更改“输出状态”为mid.sentence,最后在栈中保留栈顶字面值 90 | FUNCTION {output.nonnull} 91 | { 's := 92 | output.state mid.sentence = 93 | { ", " * write$ } 94 | { output.state after.block = 95 | { add.period$ write$ 96 | newline$ 97 | "\newblock " write$ 98 | } 99 | { output.state before.all = 100 | 'write$ 101 | { add.period$ " " * write$ } 102 | if$ 103 | } 104 | if$ 105 | mid.sentence 'output.state := 106 | } 107 | if$ 108 | s 109 | } 110 | 111 | %%% 判断栈顶字面值是否为空,若是,则推出栈顶的空字面值, 112 | %%% 否则确定栈顶字面值前合适的分隔符并将该分隔符立即写入输出缓冲区, 113 | %%% 同时设置当前输出状态为mid.sentence 114 | FUNCTION {output} 115 | { duplicate$ empty$ 116 | 'pop$ 117 | 'output.nonnull 118 | if$ 119 | } 120 | 121 | %%% 读取并推出栈顶字面值,然后判断原第二栈顶字面值是否为空, 122 | %%% 是则推出原第二栈顶字面值,并发起附带原栈顶字面值的警告信息 123 | %%% 否则执行output.nonnull函数 124 | %%% 相较于output函数,output.check在遇到空栈顶时会输出由用户(部分)自定义的警告信息 125 | FUNCTION {output.check} 126 | { 't := 127 | duplicate$ empty$ 128 | { pop$ "empty " t * " in " * cite$ * warning$ } 129 | 'output.nonnull 130 | if$ 131 | } 132 | 133 | %%% 给栈顶元素尾部加上".",并写入输出缓冲区,然后将输出缓冲区中的所有信息写入bbl文件 134 | FUNCTION {fin.entry} 135 | { 136 | add.period$ 137 | write$ 138 | newline$ 139 | } 140 | 141 | 142 | %%% 当前输出状态不是“最开始”时,将当前输出状态设置为“区块之后” 143 | FUNCTION {new.block} 144 | { output.state before.all = 145 | 'skip$ 146 | { after.block 'output.state := } 147 | if$ 148 | } 149 | 150 | %%% 当前输出状态不是“最开始”和“区块之后”时,将当前输出状态设置为“句子之后” 151 | FUNCTION {new.sentence} 152 | { output.state after.block = 153 | 'skip$ 154 | { output.state before.all = 155 | 'skip$ 156 | { after.sentence 'output.state := } 157 | if$ 158 | } 159 | if$ 160 | } 161 | 162 | %%% 给当前栈顶字面值尾部添加空格,并设置输出状态为“最开始” 163 | FUNCTION {add.blank} 164 | { " " * before.all 'output.state := 165 | } 166 | 167 | 168 | FUNCTION {date.block} 169 | { 170 | "," * 171 | add.blank 172 | } 173 | 174 | FUNCTION {not} 175 | { { #0 } 176 | { #1 } 177 | if$ 178 | } 179 | FUNCTION {and} 180 | { 'skip$ 181 | { pop$ #0 } 182 | if$ 183 | } 184 | FUNCTION {or} 185 | { { pop$ #1 } 186 | 'skip$ 187 | if$ 188 | } 189 | STRINGS {z} 190 | 191 | FUNCTION {remove.dots} 192 | { 'z := 193 | "" 194 | { z empty$ not } 195 | { z #1 #2 substring$ 196 | duplicate$ "\." = 197 | { z #3 global.max$ substring$ 'z := * } 198 | { pop$ 199 | z #1 #1 substring$ 200 | z #2 global.max$ substring$ 'z := 201 | duplicate$ "." = 'pop$ 202 | { * } 203 | if$ 204 | } 205 | if$ 206 | } 207 | while$ 208 | } 209 | FUNCTION {new.block.checka} 210 | { empty$ 211 | 'skip$ 212 | 'new.block 213 | if$ 214 | } 215 | FUNCTION {new.block.checkb} 216 | { empty$ 217 | swap$ empty$ 218 | and 219 | 'skip$ 220 | 'new.block 221 | if$ 222 | } 223 | FUNCTION {new.sentence.checka} 224 | { empty$ 225 | 'skip$ 226 | 'new.sentence 227 | if$ 228 | } 229 | FUNCTION {new.sentence.checkb} 230 | { empty$ 231 | swap$ empty$ 232 | and 233 | 'skip$ 234 | 'new.sentence 235 | if$ 236 | } 237 | FUNCTION {field.or.null} 238 | { duplicate$ empty$ 239 | { pop$ "" } 240 | 'skip$ 241 | if$ 242 | } 243 | FUNCTION {emphasize} 244 | { skip$ } 245 | FUNCTION {tie.or.space.prefix} 246 | { duplicate$ text.length$ #3 < 247 | { "~" } 248 | { " " } 249 | if$ 250 | swap$ 251 | } 252 | 253 | FUNCTION {capitalize} 254 | { "u" change.case$ "t" change.case$ } 255 | 256 | FUNCTION {space.word} 257 | { " " swap$ * " " * } 258 | % Here are the language-specific definitions for explicit words. 259 | % Each function has a name bbl.xxx where xxx is the English word. 260 | % The language selected here is ENGLISH 261 | FUNCTION {bbl.and} 262 | { "and"} 263 | 264 | FUNCTION {bbl.etal} 265 | { "et~al." } 266 | 267 | FUNCTION {bbl.deng} 268 | { "等" } 269 | 270 | FUNCTION {bbl.editors} 271 | { "eds." } 272 | 273 | FUNCTION {bbl.editor} 274 | { "ed." } 275 | 276 | FUNCTION {bbl.edby} 277 | { "edited by" } 278 | 279 | FUNCTION {bbl.edition} 280 | { "ed." } 281 | 282 | FUNCTION {bbl.volume} 283 | { "vol." } 284 | 285 | FUNCTION {bbl.of} 286 | { "of" } 287 | 288 | FUNCTION {bbl.number} 289 | { "no." } 290 | 291 | FUNCTION {bbl.nr} 292 | { "no." } 293 | 294 | FUNCTION {bbl.in} 295 | { "in" } 296 | 297 | FUNCTION {bbl.pages} 298 | { "" } 299 | 300 | FUNCTION {bbl.page} 301 | { "" } 302 | 303 | FUNCTION {bbl.chapter} 304 | { "chap." } 305 | 306 | FUNCTION {bbl.techrep} 307 | { "Tech. Rep." } 308 | 309 | FUNCTION {bbl.mthesis} 310 | { "Master's thesis" } 311 | 312 | FUNCTION {bbl.phdthesis} 313 | { "Ph.D. thesis" } 314 | 315 | FUNCTION {bbl.first} 316 | { "1st" } 317 | 318 | FUNCTION {bbl.second} 319 | { "2nd" } 320 | 321 | FUNCTION {bbl.third} 322 | { "3rd" } 323 | 324 | FUNCTION {bbl.fourth} 325 | { "4th" } 326 | 327 | FUNCTION {bbl.fifth} 328 | { "5th" } 329 | 330 | FUNCTION {bbl.st} 331 | { "st" } 332 | 333 | FUNCTION {bbl.nd} 334 | { "nd" } 335 | 336 | FUNCTION {bbl.rd} 337 | { "rd" } 338 | 339 | FUNCTION {bbl.th} 340 | { "th" } 341 | 342 | MACRO {jan} {"Jan."} 343 | 344 | MACRO {feb} {"Feb."} 345 | 346 | MACRO {mar} {"Mar."} 347 | 348 | MACRO {apr} {"Apr."} 349 | 350 | MACRO {may} {"May"} 351 | 352 | MACRO {jun} {"Jun."} 353 | 354 | MACRO {jul} {"Jul."} 355 | 356 | MACRO {aug} {"Aug."} 357 | 358 | MACRO {sep} {"Sep."} 359 | 360 | MACRO {oct} {"Oct."} 361 | 362 | MACRO {nov} {"Nov."} 363 | 364 | MACRO {dec} {"Dec."} 365 | 366 | FUNCTION {eng.ord} 367 | { duplicate$ "1" swap$ * 368 | #-2 #1 substring$ "1" = 369 | { bbl.th * } 370 | { duplicate$ #-1 #1 substring$ 371 | duplicate$ "1" = 372 | { pop$ bbl.st * } 373 | { duplicate$ "2" = 374 | { pop$ bbl.nd * } 375 | { "3" = 376 | { bbl.rd * } 377 | { bbl.th * } 378 | if$ 379 | } 380 | if$ 381 | } 382 | if$ 383 | } 384 | if$ 385 | } 386 | 387 | MACRO {acmcs} {"ACM Computing Surveys"} 388 | 389 | MACRO {acta} {"Acta Informatica"} 390 | 391 | MACRO {cacm} {"Communications of the ACM"} 392 | 393 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 394 | 395 | MACRO {ibmsj} {"IBM Systems Journal"} 396 | 397 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 398 | 399 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 400 | 401 | MACRO {ieeetcad} 402 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 403 | 404 | MACRO {ipl} {"Information Processing Letters"} 405 | 406 | MACRO {jacm} {"Journal of the ACM"} 407 | 408 | MACRO {jcss} {"Journal of Computer and System Sciences"} 409 | 410 | MACRO {scp} {"Science of Computer Programming"} 411 | 412 | MACRO {sicomp} {"SIAM Journal on Computing"} 413 | 414 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 415 | 416 | MACRO {tods} {"ACM Transactions on Database Systems"} 417 | 418 | MACRO {tog} {"ACM Transactions on Graphics"} 419 | 420 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 421 | 422 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 423 | 424 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 425 | 426 | MACRO {tcs} {"Theoretical Computer Science"} 427 | FUNCTION {bibinfo.check} 428 | { swap$ 429 | duplicate$ missing$ 430 | { 431 | pop$ pop$ 432 | "" 433 | } 434 | { duplicate$ empty$ 435 | { 436 | swap$ pop$ 437 | } 438 | { swap$ 439 | pop$ 440 | } 441 | if$ 442 | } 443 | if$ 444 | } 445 | 446 | %%% 推出栈顶字面值作为信息,检查第二栈顶字面值是否是缺失的域, 447 | %%% 是则发起包含原栈顶字面值信息的“缺失”警告,并替换原第二栈顶字面值为空字符串 448 | %%% 否则,再检查原第二栈顶字面值是否为空,是则发起“空”警告,并保留原第二栈顶字面值成为新栈顶 449 | FUNCTION {bibinfo.warn} 450 | { swap$ 451 | duplicate$ missing$ 452 | { 453 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 454 | "" 455 | } 456 | { duplicate$ empty$ 457 | { 458 | swap$ "empty " swap$ * " in " * cite$ * warning$ 459 | } 460 | { swap$ 461 | pop$ 462 | } 463 | if$ 464 | } 465 | if$ 466 | } 467 | FUNCTION {format.eprint} 468 | { eprint duplicate$ empty$ 469 | 'skip$ 470 | { "\eprint" 471 | archive empty$ 472 | 'skip$ 473 | { "[" * archive * "]" * } 474 | if$ 475 | "{" * swap$ * "}" * 476 | } 477 | if$ 478 | } 479 | FUNCTION {format.url} 480 | { 481 | doi empty$ 482 | { url } 483 | { "http://dx.doi.org/" doi * } 484 | if$ 485 | duplicate$ empty$ 486 | { pop$ "" } 487 | { "\url{" swap$ * "}" * } 488 | if$ 489 | } 490 | 491 | INTEGERS { nameptr namesleft numnames } 492 | 493 | 494 | STRINGS { bibinfo} 495 | 496 | FUNCTION {format.names} 497 | { 'bibinfo := 498 | duplicate$ empty$ 'skip$ { 499 | 's := 500 | "" 't := 501 | #1 'nameptr := 502 | s num.names$ 'numnames := 503 | numnames 'namesleft := 504 | { namesleft #0 > } 505 | { s nameptr 506 | "{f.{~}}{ jj}{ vv}{ ll}" 507 | format.name$ 508 | % remove.dots 509 | bibinfo bibinfo.check 510 | 't := 511 | nameptr #1 > 512 | { 513 | nameptr #3 514 | #1 + = 515 | numnames #3 516 | > and 517 | { "others" 't := 518 | #1 'namesleft := } 519 | 'skip$ 520 | if$ 521 | namesleft #1 > 522 | { ", " * t * } 523 | { 524 | s nameptr "{ll}" format.name$ duplicate$ "others" = 525 | { 't := } 526 | { pop$ } 527 | if$ 528 | "," * 529 | t "others" = 530 | { 531 | " " * bbl.etal * 532 | } 533 | { " " * t * } 534 | if$ 535 | } 536 | if$ 537 | } 538 | 't 539 | if$ 540 | nameptr #1 + 'nameptr := 541 | namesleft #1 - 'namesleft := 542 | } 543 | while$ 544 | } if$ 545 | } 546 | FUNCTION {format.schinese.names} 547 | { 'bibinfo := 548 | duplicate$ empty$ 'skip$ { 549 | 's := 550 | "" 't := 551 | #1 'nameptr := 552 | s num.names$ 'numnames := 553 | numnames 'namesleft := 554 | { namesleft #0 > } 555 | { s nameptr 556 | "{vv~}{ll}{ f{~}}{ jj}" 557 | format.name$ 558 | remove.dots 559 | bibinfo bibinfo.check 560 | 't := 561 | nameptr #1 > 562 | { 563 | nameptr #3 564 | #1 + = 565 | numnames #3 566 | > and 567 | { "others" 't := 568 | #1 'namesleft := } 569 | 'skip$ 570 | if$ 571 | namesleft #1 > 572 | { ", " * t * } 573 | { 574 | s nameptr "{ll}" format.name$ duplicate$ "others" = 575 | { 't := } 576 | { pop$ } 577 | if$ 578 | "," * 579 | t "others" = 580 | { 581 | " " * bbl.deng * 582 | } 583 | { " " * t * } 584 | if$ 585 | } 586 | if$ 587 | } 588 | 't 589 | if$ 590 | nameptr #1 + 'nameptr := 591 | namesleft #1 - 'namesleft := 592 | } 593 | while$ 594 | } if$ 595 | } 596 | FUNCTION {format.names.ed} 597 | { 598 | format.names 599 | } 600 | %FUNCTION {format.authors} 601 | %{ author "author" format.names 602 | %} 603 | FUNCTION {format.authors} 604 | { 605 | language missing$ 606 | { author "author" format.names } 607 | { 608 | language "schinese" = 609 | { author "author" format.schinese.names } 610 | { author "author" format.names } 611 | if$ 612 | } 613 | if$ 614 | } 615 | FUNCTION {format.translators} 616 | { 617 | language missing$ 618 | { translator "translator" format.names } 619 | { 620 | language "schinese" = 621 | { translator "translator" format.schinese.names "译" * } 622 | { translator "translator" format.names } 623 | if$ 624 | } 625 | if$ 626 | } 627 | FUNCTION {get.bbl.editor} 628 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 629 | 630 | FUNCTION {format.editors} 631 | { editor "editor" format.names duplicate$ empty$ 'skip$ 632 | { 633 | "," * 634 | " " * 635 | get.bbl.editor 636 | capitalize 637 | "(" swap$ * ")" * 638 | * 639 | } 640 | if$ 641 | } 642 | FUNCTION {format.note} 643 | { 644 | note empty$ 645 | { "" } 646 | { note #1 #1 substring$ 647 | duplicate$ "{" = 648 | 'skip$ 649 | { output.state mid.sentence = 650 | { "l" } 651 | { "u" } 652 | if$ 653 | change.case$ 654 | } 655 | if$ 656 | note #2 global.max$ substring$ * "note" bibinfo.check 657 | } 658 | if$ 659 | } 660 | 661 | FUNCTION {format.title} 662 | { title 663 | duplicate$ empty$ 'skip$ 664 | { "t" change.case$ } 665 | if$ 666 | "title" bibinfo.check 667 | } 668 | 669 | %%% 构建bibitem信息的开头部分,并将当前“输出状态”调整为“最开始” 670 | FUNCTION {output.bibitem} 671 | { newline$ 672 | "\bibitem{" write$ 673 | cite$ write$ 674 | "}" write$ 675 | newline$ 676 | "" 677 | before.all 'output.state := 678 | } 679 | 680 | FUNCTION {n.dashify} 681 | { 682 | 't := 683 | "" 684 | { t empty$ not } 685 | { t #1 #1 substring$ "-" = 686 | { t #1 #2 substring$ "--" = not 687 | { "-" * 688 | t #2 global.max$ substring$ 't := 689 | } 690 | { { t #1 #1 substring$ "-" = } 691 | { "-" * 692 | t #2 global.max$ substring$ 't := 693 | } 694 | while$ 695 | } 696 | if$ 697 | } 698 | { t #1 #1 substring$ * 699 | t #2 global.max$ substring$ 't := 700 | } 701 | if$ 702 | } 703 | while$ 704 | } 705 | 706 | FUNCTION {word.in} 707 | { bbl.in capitalize 708 | " " * } 709 | 710 | FUNCTION {format.date} 711 | { 712 | month "month" bibinfo.check 713 | duplicate$ empty$ 714 | year "year" bibinfo.check duplicate$ empty$ 715 | { swap$ 'skip$ 716 | { "there's a month but no year in " cite$ * warning$ } 717 | if$ 718 | * 719 | } 720 | { swap$ 'skip$ 721 | { 722 | " " * swap$ 723 | } 724 | if$ 725 | * 726 | } 727 | if$ 728 | duplicate$ empty$ 729 | 'skip$ 730 | { 731 | before.all 'output.state := 732 | ", " swap$ * 733 | } 734 | if$ 735 | } 736 | FUNCTION {full.date} 737 | { 738 | year duplicate$ empty$ 739 | { "there's no year in " cite$ * warning$ 740 | pop$ 741 | "XXXX年" 742 | } 743 | { "年" * } 744 | if$ 745 | month duplicate$ empty$ 746 | { "there's no month in " cite$ * warning$ 747 | pop$ 748 | "Xx月" * 749 | } 750 | { * "月" * } 751 | if$ 752 | day duplicate$ empty$ 753 | { "there's no day in " cite$ * warning$ 754 | pop$ 755 | "xx日" * 756 | } 757 | { * "日" * } 758 | if$ 759 | } 760 | FUNCTION {format.full.date} 761 | { 762 | year "year" bibinfo.check duplicate$ empty$ 763 | { "there's no year in " cite$ * warning$ 764 | "XXXX年" * 765 | } 766 | { "年" * } 767 | if$ 768 | month "month" bibinfo.check duplicate$ empty$ 769 | { "there's no month in " cite$ * warning$ 770 | * "Xx月" * 771 | } 772 | { * "月" * } 773 | if$ 774 | day "day" bibinfo.check duplicate$ empty$ 775 | { "there's no day in " cite$ * warning$ 776 | * "xx日" * 777 | } 778 | { * "日" * } 779 | if$ 780 | duplicate$ empty$ 781 | 'skip$ 782 | { 783 | before.all 'output.state := 784 | ". " swap$ * 785 | } 786 | if$ 787 | } 788 | FUNCTION {format.btitle} 789 | { title "title" bibinfo.check 790 | duplicate$ empty$ 'skip$ 791 | { 792 | } 793 | if$ 794 | } 795 | FUNCTION {either.or.check} 796 | { empty$ 797 | 'pop$ 798 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 799 | if$ 800 | } 801 | FUNCTION {format.bvolume} 802 | { volume empty$ 803 | { "" } 804 | { bbl.volume volume tie.or.space.prefix 805 | "volume" bibinfo.check * * 806 | series "series" bibinfo.check 807 | duplicate$ empty$ 'pop$ 808 | { swap$ bbl.of space.word * swap$ 809 | emphasize * } 810 | if$ 811 | "volume and number" number either.or.check 812 | } 813 | if$ 814 | } 815 | FUNCTION {format.number.series} 816 | { volume empty$ 817 | { number empty$ 818 | { series field.or.null } 819 | { series empty$ 820 | { number "number" bibinfo.check } 821 | { output.state mid.sentence = 822 | { bbl.number } 823 | { bbl.number capitalize } 824 | if$ 825 | number tie.or.space.prefix "number" bibinfo.check * * 826 | bbl.in space.word * 827 | series "series" bibinfo.check * 828 | } 829 | if$ 830 | } 831 | if$ 832 | } 833 | { "" } 834 | if$ 835 | } 836 | FUNCTION {is.num} 837 | { chr.to.int$ 838 | duplicate$ "0" chr.to.int$ < not 839 | swap$ "9" chr.to.int$ > not and 840 | } 841 | 842 | FUNCTION {extract.num} 843 | { duplicate$ 't := 844 | "" 's := 845 | { t empty$ not } 846 | { t #1 #1 substring$ 847 | t #2 global.max$ substring$ 't := 848 | duplicate$ is.num 849 | { s swap$ * 's := } 850 | { pop$ "" 't := } 851 | if$ 852 | } 853 | while$ 854 | s empty$ 855 | 'skip$ 856 | { pop$ s } 857 | if$ 858 | } 859 | 860 | FUNCTION {convert.edition} 861 | { extract.num "l" change.case$ 's := 862 | s "first" = s "1" = or 863 | { bbl.first 't := } 864 | { s "second" = s "2" = or 865 | { bbl.second 't := } 866 | { s "third" = s "3" = or 867 | { bbl.third 't := } 868 | { s "fourth" = s "4" = or 869 | { bbl.fourth 't := } 870 | { s "fifth" = s "5" = or 871 | { bbl.fifth 't := } 872 | { s #1 #1 substring$ is.num 873 | { s eng.ord 't := } 874 | { edition 't := } 875 | if$ 876 | } 877 | if$ 878 | } 879 | if$ 880 | } 881 | if$ 882 | } 883 | if$ 884 | } 885 | if$ 886 | t 887 | } 888 | 889 | FUNCTION {format.edition} 890 | { edition duplicate$ empty$ 'skip$ 891 | { 892 | convert.edition 893 | output.state mid.sentence = 894 | { "l" } 895 | { "t" } 896 | if$ change.case$ 897 | "edition" bibinfo.check 898 | " " * bbl.edition * 899 | } 900 | if$ 901 | } 902 | INTEGERS { multiresult } 903 | FUNCTION {multi.page.check} 904 | { 't := 905 | #0 'multiresult := 906 | { multiresult not 907 | t empty$ not 908 | and 909 | } 910 | { t #1 #1 substring$ 911 | duplicate$ "-" = 912 | swap$ duplicate$ "," = 913 | swap$ "+" = 914 | or or 915 | { #1 'multiresult := } 916 | { t #2 global.max$ substring$ 't := } 917 | if$ 918 | } 919 | while$ 920 | multiresult 921 | } 922 | FUNCTION {format.pages} 923 | { pages duplicate$ empty$ 'skip$ 924 | { duplicate$ multi.page.check 925 | { 926 | n.dashify 927 | } 928 | { 929 | } 930 | if$ 931 | "pages" bibinfo.check 932 | } 933 | if$ 934 | } 935 | FUNCTION {format.journal.pages} 936 | { pages duplicate$ empty$ 'pop$ 937 | { swap$ duplicate$ empty$ 938 | { pop$ pop$ format.pages } 939 | { 940 | ": " * 941 | swap$ 942 | n.dashify 943 | "pages" bibinfo.check 944 | * 945 | } 946 | if$ 947 | } 948 | if$ 949 | } 950 | FUNCTION {format.journal.eid} 951 | { eid "eid" bibinfo.check 952 | duplicate$ empty$ 'pop$ 953 | { swap$ duplicate$ empty$ 'skip$ 954 | { 955 | ": " * 956 | } 957 | if$ 958 | swap$ * 959 | } 960 | if$ 961 | } 962 | FUNCTION {format.vol.num.pages} 963 | { volume field.or.null 964 | duplicate$ empty$ 'skip$ 965 | { 966 | "volume" bibinfo.check 967 | } 968 | if$ 969 | number "number" bibinfo.check duplicate$ empty$ 'skip$ 970 | { 971 | swap$ duplicate$ empty$ 972 | { "there's a number but no volume in " cite$ * warning$ } 973 | 'skip$ 974 | if$ 975 | swap$ 976 | "(" swap$ * ")" * 977 | } 978 | if$ * 979 | } 980 | 981 | FUNCTION {format.chapter.pages} 982 | { chapter empty$ 983 | { "" } 984 | { type empty$ 985 | { bbl.chapter } 986 | { type "l" change.case$ 987 | "type" bibinfo.check 988 | } 989 | if$ 990 | chapter tie.or.space.prefix 991 | "chapter" bibinfo.check 992 | * * 993 | } 994 | if$ 995 | } 996 | 997 | FUNCTION {format.booktitle} 998 | { 999 | booktitle "booktitle" bibinfo.check 1000 | } 1001 | FUNCTION {format.in.ed.booktitle} 1002 | { format.booktitle duplicate$ empty$ 'skip$ 1003 | { 1004 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 1005 | { 1006 | "," * 1007 | " " * 1008 | get.bbl.editor 1009 | capitalize 1010 | "(" swap$ * ") " * 1011 | * swap$ 1012 | * } 1013 | if$ 1014 | %word.in swap$ * 1015 | } 1016 | if$ 1017 | } 1018 | FUNCTION {empty.misc.check} 1019 | { author empty$ title empty$ howpublished empty$ 1020 | month empty$ year empty$ note empty$ 1021 | and and and and and 1022 | { "all relevant fields are empty in " cite$ * warning$ } 1023 | 'skip$ 1024 | if$ 1025 | } 1026 | FUNCTION {format.thesis.type} 1027 | { type duplicate$ empty$ 1028 | 'pop$ 1029 | { swap$ pop$ 1030 | "t" change.case$ "type" bibinfo.check 1031 | } 1032 | if$ 1033 | } 1034 | FUNCTION {format.tr.number} 1035 | { number "number" bibinfo.check 1036 | type duplicate$ empty$ 1037 | { pop$ bbl.techrep } 1038 | 'skip$ 1039 | if$ 1040 | "type" bibinfo.check 1041 | swap$ duplicate$ empty$ 1042 | { pop$ "t" change.case$ } 1043 | { tie.or.space.prefix * * } 1044 | if$ 1045 | } 1046 | FUNCTION {format.article.crossref} 1047 | { 1048 | key duplicate$ empty$ 1049 | { pop$ 1050 | journal duplicate$ empty$ 1051 | { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } 1052 | { "journal" bibinfo.check emphasize word.in swap$ * } 1053 | if$ 1054 | } 1055 | { word.in swap$ * " " *} 1056 | if$ 1057 | " \cite{" * crossref * "}" * 1058 | } 1059 | FUNCTION {format.crossref.editor} 1060 | { editor #1 "{vv~}{ll}" format.name$ 1061 | "editor" bibinfo.check 1062 | editor num.names$ duplicate$ 1063 | #2 > 1064 | { pop$ 1065 | "editor" bibinfo.check 1066 | " " * bbl.etal 1067 | * 1068 | } 1069 | { #2 < 1070 | 'skip$ 1071 | { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1072 | { 1073 | "editor" bibinfo.check 1074 | " " * bbl.etal 1075 | * 1076 | } 1077 | { 1078 | bbl.and space.word 1079 | * editor #2 "{vv~}{ll}" format.name$ 1080 | "editor" bibinfo.check 1081 | * 1082 | } 1083 | if$ 1084 | } 1085 | if$ 1086 | } 1087 | if$ 1088 | } 1089 | FUNCTION {format.book.crossref} 1090 | { volume duplicate$ empty$ 1091 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 1092 | pop$ word.in 1093 | } 1094 | { bbl.volume 1095 | capitalize 1096 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 1097 | } 1098 | if$ 1099 | editor empty$ 1100 | editor field.or.null author field.or.null = 1101 | or 1102 | { key empty$ 1103 | { series empty$ 1104 | { "need editor, key, or series for " cite$ * " to crossref " * 1105 | crossref * warning$ 1106 | "" * 1107 | } 1108 | { series emphasize * } 1109 | if$ 1110 | } 1111 | { key * } 1112 | if$ 1113 | } 1114 | { format.crossref.editor * } 1115 | if$ 1116 | " \cite{" * crossref * "}" * 1117 | } 1118 | FUNCTION {format.incoll.inproc.crossref} 1119 | { 1120 | editor empty$ 1121 | editor field.or.null author field.or.null = 1122 | or 1123 | { key empty$ 1124 | { format.booktitle duplicate$ empty$ 1125 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 1126 | crossref * warning$ 1127 | } 1128 | { word.in swap$ * } 1129 | if$ 1130 | } 1131 | { word.in key * " " *} 1132 | if$ 1133 | } 1134 | { word.in format.crossref.editor * " " *} 1135 | if$ 1136 | " \cite{" * crossref * "}" * 1137 | } 1138 | FUNCTION {format.org.or.pub} 1139 | { 't := 1140 | "" 1141 | address empty$ t empty$ and 1142 | 'skip$ 1143 | { 1144 | address "address" bibinfo.check * 1145 | t empty$ 1146 | 'skip$ 1147 | { address empty$ 1148 | 'skip$ 1149 | { ": " * } 1150 | if$ 1151 | t * 1152 | } 1153 | if$ 1154 | } 1155 | if$ 1156 | } 1157 | FUNCTION {format.publisher.address} 1158 | { publisher "publisher" bibinfo.warn format.org.or.pub 1159 | } 1160 | 1161 | FUNCTION {format.organization.address} 1162 | { organization "organization" bibinfo.check format.org.or.pub 1163 | } 1164 | 1165 | FUNCTION {article} 1166 | { output.bibitem 1167 | format.authors "author" output.check 1168 | new.block 1169 | format.title "[J]" * "title" output.check 1170 | new.block 1171 | crossref missing$ 1172 | { 1173 | journal 1174 | "journal" bibinfo.check 1175 | "journal" output.check 1176 | year "year" output.check 1177 | volume missing$ 1178 | { 1179 | number missing$ 1180 | {before.all 'output.state :=} 1181 | {date.block} 1182 | if$ 1183 | } 1184 | {date.block} 1185 | if$ 1186 | format.vol.num.pages output 1187 | } 1188 | { format.article.crossref output.nonnull 1189 | } 1190 | if$ 1191 | eid empty$ 1192 | { format.journal.pages } 1193 | { format.journal.eid } 1194 | if$ 1195 | new.block 1196 | % format.url output 1197 | % new.block 1198 | format.note output 1199 | format.eprint output 1200 | fin.entry 1201 | } 1202 | FUNCTION {book} 1203 | { output.bibitem 1204 | author empty$ 1205 | { format.editors "author and editor" output.check 1206 | add.blank 1207 | } 1208 | { format.authors output.nonnull 1209 | crossref missing$ 1210 | { "author and editor" editor either.or.check } 1211 | 'skip$ 1212 | if$ 1213 | } 1214 | if$ 1215 | new.block 1216 | format.btitle "[M]" * "title" output.check 1217 | new.block 1218 | translator missing$ 1219 | {skip$} 1220 | { 1221 | "(" format.translators * ")" * "translator" output.check 1222 | new.block 1223 | } 1224 | if$ 1225 | %format.edition output 1226 | % edition missing$ 1227 | % {skip$} 1228 | % { 1229 | % language missing$ 1230 | % { format.edition "edition" output.check } 1231 | % { edition "版" * "edition" output.check } 1232 | % if$ 1233 | % new.block 1234 | % } 1235 | % if$ 1236 | crossref missing$ 1237 | { format.bvolume output 1238 | new.block 1239 | format.number.series output 1240 | new.sentence 1241 | format.publisher.address output 1242 | } 1243 | { 1244 | new.block 1245 | format.book.crossref output.nonnull 1246 | } 1247 | if$ 1248 | pages missing$ 1249 | {year "year" output.check} 1250 | { 1251 | year ", " * format.pages * "pages" output.check 1252 | } 1253 | if$ 1254 | new.block 1255 | format.url output 1256 | new.block 1257 | format.note output 1258 | format.eprint output 1259 | fin.entry 1260 | } 1261 | FUNCTION {booklet} 1262 | { output.bibitem 1263 | format.authors output 1264 | new.block 1265 | format.title "[M]" * "title" output.check 1266 | new.block 1267 | howpublished "howpublished" bibinfo.check output 1268 | address "address" bibinfo.check output 1269 | format.date output 1270 | new.block 1271 | format.url output 1272 | new.block 1273 | format.note output 1274 | format.eprint output 1275 | fin.entry 1276 | } 1277 | 1278 | FUNCTION {inbook} 1279 | { output.bibitem 1280 | author empty$ 1281 | { format.editors "author and editor" output.check 1282 | } 1283 | { format.authors output.nonnull 1284 | crossref missing$ 1285 | { "author and editor" editor either.or.check } 1286 | 'skip$ 1287 | if$ 1288 | } 1289 | if$ 1290 | new.block 1291 | format.btitle "[M]" * "title" output.check 1292 | crossref missing$ 1293 | { 1294 | format.publisher.address output 1295 | format.bvolume output 1296 | format.chapter.pages "chapter and pages" output.check 1297 | new.block 1298 | format.number.series output 1299 | new.sentence 1300 | } 1301 | { 1302 | format.chapter.pages "chapter and pages" output.check 1303 | new.block 1304 | format.book.crossref output.nonnull 1305 | } 1306 | if$ 1307 | format.edition output 1308 | format.date "year" output.check 1309 | date.block 1310 | format.pages "pages" output.check 1311 | new.block 1312 | format.url output 1313 | new.block 1314 | format.note output 1315 | format.eprint output 1316 | fin.entry 1317 | } 1318 | 1319 | FUNCTION {incollection} 1320 | { output.bibitem 1321 | format.authors "author" output.check 1322 | new.block 1323 | format.title "title" output.check 1324 | new.block 1325 | crossref missing$ 1326 | { format.in.ed.booktitle "booktitle" output.check 1327 | format.publisher.address output 1328 | format.bvolume output 1329 | format.number.series output 1330 | format.chapter.pages output 1331 | new.sentence 1332 | format.edition output 1333 | } 1334 | { format.incoll.inproc.crossref output.nonnull 1335 | format.chapter.pages output 1336 | } 1337 | if$ 1338 | format.date "year" output.check 1339 | date.block 1340 | format.pages "pages" output.check 1341 | new.block 1342 | format.url output 1343 | new.block 1344 | format.note output 1345 | format.eprint output 1346 | fin.entry 1347 | } 1348 | FUNCTION {inproceedings} 1349 | { output.bibitem 1350 | format.authors "author" output.check 1351 | new.block 1352 | format.title "[C]" * "title" output.check 1353 | new.block 1354 | crossref missing$ 1355 | { format.in.ed.booktitle "booktitle" output.check 1356 | %new.sentence 1357 | publisher empty$ 1358 | { format.organization.address output } 1359 | { organization "organization" bibinfo.check output 1360 | format.publisher.address output 1361 | } 1362 | if$ 1363 | format.bvolume output 1364 | format.number.series output 1365 | } 1366 | { format.incoll.inproc.crossref output.nonnull 1367 | } 1368 | if$ 1369 | year ": " * format.pages * "pages" output.check 1370 | new.block 1371 | % format.url output 1372 | % new.block 1373 | format.note output 1374 | format.eprint output 1375 | fin.entry 1376 | } 1377 | FUNCTION {conference} { inproceedings } 1378 | FUNCTION {manual} 1379 | { output.bibitem 1380 | author empty$ 1381 | { organization "organization" bibinfo.check 1382 | duplicate$ empty$ 'pop$ 1383 | { output 1384 | address "address" bibinfo.check output 1385 | } 1386 | if$ 1387 | } 1388 | { format.authors output.nonnull } 1389 | if$ 1390 | new.block 1391 | format.btitle "title" output.check 1392 | author empty$ 1393 | { organization empty$ 1394 | { 1395 | address new.block.checka 1396 | address "address" bibinfo.check output 1397 | } 1398 | 'skip$ 1399 | if$ 1400 | } 1401 | { 1402 | organization address new.block.checkb 1403 | organization "organization" bibinfo.check output 1404 | address "address" bibinfo.check output 1405 | } 1406 | if$ 1407 | format.edition output 1408 | format.date output 1409 | new.block 1410 | format.url output 1411 | new.block 1412 | format.note output 1413 | format.eprint output 1414 | fin.entry 1415 | } 1416 | 1417 | FUNCTION {mastersthesis} 1418 | { output.bibitem 1419 | format.authors "author" output.check 1420 | new.block 1421 | format.title "[D]" * "title" output.check 1422 | new.block 1423 | %bbl.mthesis format.thesis.type output.nonnull 1424 | address "address" bibinfo.warn output 1425 | ": " * write$ 1426 | school "school" bibinfo.warn 1427 | pages missing$ 1428 | { 1429 | pages "pages" bibinfo.warn pop$ 1430 | year "year" output.check 1431 | } 1432 | {year ", " * format.pages * "pages" output.check} 1433 | if$ 1434 | new.block 1435 | format.url output 1436 | new.block 1437 | format.note output 1438 | format.eprint output 1439 | fin.entry 1440 | } 1441 | 1442 | FUNCTION {phdthesis} 1443 | { output.bibitem 1444 | format.authors "author" output.check 1445 | new.block 1446 | format.title "[D]" * 1447 | "title" output.check 1448 | new.block 1449 | %bbl.phdthesis format.thesis.type output.nonnull 1450 | address "address" bibinfo.warn output 1451 | ": " * write$ 1452 | school "school" bibinfo.warn 1453 | pages missing$ 1454 | { 1455 | pages "pages" bibinfo.warn pop$ 1456 | year "year" output.check 1457 | } 1458 | {year ", " * format.pages * "pages" output.check} 1459 | if$ 1460 | new.block 1461 | format.url output 1462 | new.block 1463 | format.note output 1464 | format.eprint output 1465 | fin.entry 1466 | } 1467 | 1468 | FUNCTION {proceedings} 1469 | { output.bibitem 1470 | editor empty$ 1471 | { organization "organization" bibinfo.check output 1472 | } 1473 | { format.editors output.nonnull } 1474 | if$ 1475 | new.block 1476 | format.btitle "[C]" * "title" output.check 1477 | format.bvolume output 1478 | format.number.series output 1479 | editor empty$ 1480 | { publisher empty$ 1481 | 'skip$ 1482 | { 1483 | new.sentence 1484 | format.publisher.address output 1485 | } 1486 | if$ 1487 | } 1488 | { publisher empty$ 1489 | { 1490 | new.sentence 1491 | format.organization.address output } 1492 | { 1493 | new.sentence 1494 | organization "organization" bibinfo.check output 1495 | format.publisher.address output 1496 | } 1497 | if$ 1498 | } 1499 | if$ 1500 | year "year" output.check 1501 | new.block 1502 | % format.url output 1503 | % new.block 1504 | format.note output 1505 | format.eprint output 1506 | fin.entry 1507 | } 1508 | 1509 | FUNCTION {news} 1510 | { output.bibitem 1511 | format.authors "author" output.check 1512 | new.block 1513 | format.title "[N]" * "title" output.check 1514 | new.block 1515 | publisher "publisher" bibinfo.warn output 1516 | full.date "date" bibinfo.warn output write$ 1517 | % " (" number * ")" * 1518 | "" 1519 | new.block 1520 | format.url output 1521 | new.block 1522 | format.note output 1523 | format.eprint output 1524 | fin.entry 1525 | } 1526 | 1527 | FUNCTION {report} 1528 | { output.bibitem 1529 | format.authors "author" output.check 1530 | new.block 1531 | format.title "[R]" * 1532 | "title" output.check 1533 | new.block 1534 | %format.tr.number output.nonnull 1535 | address "address" bibinfo.warn output 1536 | ": " * write$ 1537 | publisher "publisher" bibinfo.warn 1538 | year "year" output.check 1539 | new.block 1540 | format.url output 1541 | new.block 1542 | format.note output 1543 | format.eprint output 1544 | fin.entry 1545 | } 1546 | 1547 | FUNCTION {unpublished} 1548 | { output.bibitem 1549 | format.authors "author" output.check 1550 | new.block 1551 | format.title "title" output.check 1552 | format.date output 1553 | new.block 1554 | format.url output 1555 | new.block 1556 | format.note "note" output.check 1557 | format.eprint output 1558 | fin.entry 1559 | } 1560 | 1561 | FUNCTION {patent} 1562 | { output.bibitem 1563 | format.authors "author" output.check 1564 | new.block 1565 | format.title "[P]. " * nation * ", " * 1566 | type * ", " * number * "title" output.check 1567 | % new.block 1568 | crossref missing$ 1569 | { 1570 | %journal 1571 | %"journal" bibinfo.check 1572 | %"journal" output.check 1573 | full.date "fulldate" output.check 1574 | } 1575 | { format.article.crossref output.nonnull 1576 | } 1577 | if$ 1578 | %eid empty$ 1579 | % { format.journal.pages } 1580 | % { format.journal.eid } 1581 | %if$ 1582 | new.block 1583 | format.url output 1584 | new.block 1585 | format.note output 1586 | format.eprint output 1587 | fin.entry 1588 | } 1589 | 1590 | FUNCTION {standard} 1591 | { output.bibitem 1592 | format.authors "author" output.check 1593 | new.block 1594 | number ". " * format.title * "[S]" * "title" output.check 1595 | new.block 1596 | address "address" bibinfo.warn output 1597 | ": " * write$ 1598 | publisher "publisher" bibinfo.warn 1599 | full.date "date" output.check 1600 | new.block 1601 | format.url output 1602 | new.block 1603 | format.note output 1604 | format.eprint output 1605 | fin.entry 1606 | } 1607 | 1608 | 1609 | FUNCTION {digital} 1610 | { output.bibitem 1611 | format.authors "author" output.check 1612 | new.block 1613 | format.title "[" * type * "]" * "title" output.check 1614 | new.block 1615 | address missing$ 1616 | { modifydate "modifydate" bibinfo.warn output } 1617 | { 1618 | address "address" bibinfo.warn output 1619 | ": " * write$ 1620 | publisher "publisher" bibinfo.warn write$ 1621 | % year "year" bibinfo.warn output 1622 | ", " write$ 1623 | % format.pages "pages" bibinfo.warn write$ 1624 | modifydate "modifydate" bibinfo.warn 1625 | % " (" swap$ * ")" * write$ 1626 | % citedate "citedate" bibinfo.warn 1627 | % " [" swap$ * "]" * 1628 | new.block 1629 | } 1630 | if$ 1631 | % format.url output 1632 | fin.entry 1633 | } 1634 | 1635 | FUNCTION {misc} 1636 | { output.bibitem 1637 | format.authors output 1638 | title howpublished new.block.checkb 1639 | format.title output 1640 | howpublished new.block.checka 1641 | howpublished "howpublished" bibinfo.check output 1642 | format.date output 1643 | new.block 1644 | format.url output 1645 | new.block 1646 | format.note output 1647 | format.eprint output 1648 | fin.entry 1649 | empty.misc.check 1650 | } 1651 | 1652 | FUNCTION {default.type} { misc } 1653 | READ 1654 | STRINGS { longest.label } 1655 | INTEGERS { number.label longest.label.width } 1656 | FUNCTION {initialize.longest.label} 1657 | { "" 'longest.label := 1658 | #1 'number.label := 1659 | #0 'longest.label.width := 1660 | } 1661 | FUNCTION {longest.label.pass} 1662 | { number.label int.to.str$ 'label := 1663 | number.label #1 + 'number.label := 1664 | label width$ longest.label.width > 1665 | { label 'longest.label := 1666 | label width$ 'longest.label.width := 1667 | } 1668 | 'skip$ 1669 | if$ 1670 | } 1671 | EXECUTE {initialize.longest.label} 1672 | ITERATE {longest.label.pass} 1673 | FUNCTION {begin.bib} 1674 | { preamble$ empty$ 1675 | 'skip$ 1676 | { preamble$ write$ newline$ } 1677 | if$ 1678 | "\begin{thebibliography}{" longest.label * "}" * 1679 | write$ newline$ 1680 | "\providecommand{\url}[1]{\texttt{#1}}" 1681 | write$ newline$ 1682 | "\providecommand{\urlprefix}{URL }" 1683 | write$ newline$ 1684 | "\providecommand{\eprint}[2][]{\url{#2}}" 1685 | write$ newline$ 1686 | } 1687 | EXECUTE {begin.bib} 1688 | EXECUTE {init.state.consts} 1689 | ITERATE {call.type$} 1690 | FUNCTION {end.bib} 1691 | { newline$ 1692 | "\end{thebibliography}" write$ newline$ 1693 | } 1694 | EXECUTE {end.bib} 1695 | %% End of customized bst file 1696 | %% 1697 | %% End of file `DissertUESTC.bst'. 1698 | -------------------------------------------------------------------------------- /DissertUESTC.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `DissertUESTC.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% merlin.mbs (with options: `seq-no,nm-rv,ed-rev,jnrlst,nmlm,x3,m3,dt-jnl,yr-com,dtrev,yrp-col,jttl-rm,thtit-a,volp-sp,pp-last,num-xser,btit-rm,bt-rm,bkpg-x,add-pub,pre-pub,url-doi,edparc,bkedcap,ppx,ed,abr,ednx,ord,xand,eprint,url,url-blk,em-x,nfss,') 8 | %% ---------------------------------------- 9 | %% *** Dissertation style for UESTC in 2024 *** 10 | %% 11 | %% Copyright 1994-2011 Patrick W Daly 12 | % =============================================================== 13 | % IMPORTANT NOTICE: 14 | % This bibliographic style (bst) file has been generated from one or 15 | % more master bibliographic style (mbs) files, listed above. 16 | % 17 | % This generated file can be redistributed and/or modified under the terms 18 | % of the LaTeX Project Public License Distributed from CTAN 19 | % archives in directory macros/latex/base/lppl.txt; either 20 | % version 1 of the License, or any later version. 21 | % =============================================================== 22 | % Name and version information of the main mbs file: 23 | % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] 24 | % For use with BibTeX version 0.99a or later 25 | %------------------------------------------------------------------- 26 | % This bibliography style file is intended for texts in ENGLISH 27 | % This is a numerical citation style, and as such is standard LaTeX. 28 | % It requires no extra package to interface to the main text. 29 | % The form of the \bibitem entries is 30 | % \bibitem{key}... 31 | % Usage of \cite is as follows: 32 | % \cite{key} ==>> [#] 33 | % \cite[chap. 2]{key} ==>> [#, chap. 2] 34 | % where # is a number determined by the ordering in the reference list. 35 | % The order in the reference list is that by which the works were originally 36 | % cited in the text, or that in the database. 37 | %--------------------------------------------------------------------- 38 | 39 | ENTRY 40 | { address 41 | archive 42 | author 43 | booktitle 44 | chapter 45 | citedate 46 | day 47 | doi 48 | edition 49 | editor 50 | eid 51 | eprint 52 | howpublished 53 | journal 54 | key 55 | language 56 | modifydate 57 | month 58 | note 59 | number 60 | organization 61 | pages 62 | publisher 63 | school 64 | series 65 | title 66 | translator 67 | type 68 | url 69 | volume 70 | year 71 | nation 72 | } 73 | {} 74 | { label } 75 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 76 | FUNCTION {init.state.consts} 77 | { #0 'before.all := 78 | #1 'mid.sentence := 79 | #2 'after.sentence := 80 | #3 'after.block := 81 | } 82 | STRINGS { s t} 83 | 84 | %%% 根据当前“输出状态”确定在第二栈顶字面值尾部是否应该添加分隔符以及添加哪种分隔符: 85 | %%% mid.sentence 状态添加 ", " 86 | %%% after.block 状态添加 ".\n" 87 | %%% before.all 状态不加 88 | %%% after.sentence 状态添加 ". " 89 | %%% 然后向输出缓冲区写入第二栈顶字面值,更改“输出状态”为mid.sentence,最后在栈中保留栈顶字面值 90 | FUNCTION {output.nonnull} 91 | { 's := 92 | output.state mid.sentence = 93 | { ", " * write$ } 94 | { output.state after.block = 95 | { add.period$ write$ 96 | newline$ 97 | "\newblock " write$ 98 | } 99 | { output.state before.all = 100 | 'write$ 101 | { add.period$ " " * write$ } 102 | if$ 103 | } 104 | if$ 105 | mid.sentence 'output.state := 106 | } 107 | if$ 108 | s 109 | } 110 | 111 | %%% 判断栈顶字面值是否为空,若是,则推出栈顶的空字面值, 112 | %%% 否则确定栈顶字面值前合适的分隔符并将该分隔符立即写入输出缓冲区, 113 | %%% 同时设置当前输出状态为mid.sentence 114 | FUNCTION {output} 115 | { duplicate$ empty$ 116 | 'pop$ 117 | 'output.nonnull 118 | if$ 119 | } 120 | 121 | %%% 读取并推出栈顶字面值,然后判断原第二栈顶字面值是否为空, 122 | %%% 是则推出原第二栈顶字面值,并发起附带原栈顶字面值的警告信息 123 | %%% 否则执行output.nonnull函数 124 | %%% 相较于output函数,output.check在遇到空栈顶时会输出由用户(部分)自定义的警告信息 125 | FUNCTION {output.check} 126 | { 't := 127 | duplicate$ empty$ 128 | { pop$ "empty " t * " in " * cite$ * warning$ } 129 | 'output.nonnull 130 | if$ 131 | } 132 | 133 | %%% 给栈顶元素尾部加上".",并写入输出缓冲区,然后将输出缓冲区中的所有信息写入bbl文件 134 | FUNCTION {fin.entry} 135 | { add.period$ 136 | write$ 137 | newline$ 138 | } 139 | 140 | 141 | %%% 当前输出状态不是“最开始”时,将当前输出状态设置为“区块之后” 142 | FUNCTION {new.block} 143 | { output.state before.all = 144 | 'skip$ 145 | { after.block 'output.state := } 146 | if$ 147 | } 148 | 149 | %%% 当前输出状态不是“最开始”和“区块之后”时,将当前输出状态设置为“句子之后” 150 | FUNCTION {new.sentence} 151 | { output.state after.block = 152 | 'skip$ 153 | { output.state before.all = 154 | 'skip$ 155 | { after.sentence 'output.state := } 156 | if$ 157 | } 158 | if$ 159 | } 160 | 161 | %%% 给当前栈顶字面值尾部添加空格,并设置输出状态为“最开始” 162 | FUNCTION {add.blank} 163 | { " " * before.all 'output.state := 164 | } 165 | 166 | 167 | FUNCTION {date.block} 168 | { 169 | "," * 170 | add.blank 171 | } 172 | 173 | FUNCTION {not} 174 | { { #0 } 175 | { #1 } 176 | if$ 177 | } 178 | FUNCTION {and} 179 | { 'skip$ 180 | { pop$ #0 } 181 | if$ 182 | } 183 | FUNCTION {or} 184 | { { pop$ #1 } 185 | 'skip$ 186 | if$ 187 | } 188 | STRINGS {z} 189 | 190 | FUNCTION {remove.dots} 191 | { 'z := 192 | "" 193 | { z empty$ not } 194 | { z #1 #2 substring$ 195 | duplicate$ "\." = 196 | { z #3 global.max$ substring$ 'z := * } 197 | { pop$ 198 | z #1 #1 substring$ 199 | z #2 global.max$ substring$ 'z := 200 | duplicate$ "." = 'pop$ 201 | { * } 202 | if$ 203 | } 204 | if$ 205 | } 206 | while$ 207 | } 208 | FUNCTION {new.block.checka} 209 | { empty$ 210 | 'skip$ 211 | 'new.block 212 | if$ 213 | } 214 | FUNCTION {new.block.checkb} 215 | { empty$ 216 | swap$ empty$ 217 | and 218 | 'skip$ 219 | 'new.block 220 | if$ 221 | } 222 | FUNCTION {new.sentence.checka} 223 | { empty$ 224 | 'skip$ 225 | 'new.sentence 226 | if$ 227 | } 228 | FUNCTION {new.sentence.checkb} 229 | { empty$ 230 | swap$ empty$ 231 | and 232 | 'skip$ 233 | 'new.sentence 234 | if$ 235 | } 236 | FUNCTION {field.or.null} 237 | { duplicate$ empty$ 238 | { pop$ "" } 239 | 'skip$ 240 | if$ 241 | } 242 | FUNCTION {emphasize} 243 | { skip$ } 244 | FUNCTION {tie.or.space.prefix} 245 | { duplicate$ text.length$ #3 < 246 | { "~" } 247 | { " " } 248 | if$ 249 | swap$ 250 | } 251 | 252 | FUNCTION {capitalize} 253 | { "u" change.case$ "t" change.case$ } 254 | 255 | FUNCTION {space.word} 256 | { " " swap$ * " " * } 257 | % Here are the language-specific definitions for explicit words. 258 | % Each function has a name bbl.xxx where xxx is the English word. 259 | % The language selected here is ENGLISH 260 | FUNCTION {bbl.and} 261 | { "and"} 262 | 263 | FUNCTION {bbl.etal} 264 | { "et~al." } 265 | 266 | FUNCTION {bbl.deng} 267 | { "等" } 268 | 269 | FUNCTION {bbl.editors} 270 | { "eds." } 271 | 272 | FUNCTION {bbl.editor} 273 | { "ed." } 274 | 275 | FUNCTION {bbl.edby} 276 | { "edited by" } 277 | 278 | FUNCTION {bbl.edition} 279 | { "ed." } 280 | 281 | FUNCTION {bbl.volume} 282 | { "vol." } 283 | 284 | FUNCTION {bbl.of} 285 | { "of" } 286 | 287 | FUNCTION {bbl.number} 288 | { "no." } 289 | 290 | FUNCTION {bbl.nr} 291 | { "no." } 292 | 293 | FUNCTION {bbl.in} 294 | { "in" } 295 | 296 | FUNCTION {bbl.pages} 297 | { "" } 298 | 299 | FUNCTION {bbl.page} 300 | { "" } 301 | 302 | FUNCTION {bbl.chapter} 303 | { "chap." } 304 | 305 | FUNCTION {bbl.techrep} 306 | { "Tech. Rep." } 307 | 308 | FUNCTION {bbl.mthesis} 309 | { "Master's thesis" } 310 | 311 | FUNCTION {bbl.phdthesis} 312 | { "Ph.D. thesis" } 313 | 314 | FUNCTION {bbl.first} 315 | { "1st" } 316 | 317 | FUNCTION {bbl.second} 318 | { "2nd" } 319 | 320 | FUNCTION {bbl.third} 321 | { "3rd" } 322 | 323 | FUNCTION {bbl.fourth} 324 | { "4th" } 325 | 326 | FUNCTION {bbl.fifth} 327 | { "5th" } 328 | 329 | FUNCTION {bbl.st} 330 | { "st" } 331 | 332 | FUNCTION {bbl.nd} 333 | { "nd" } 334 | 335 | FUNCTION {bbl.rd} 336 | { "rd" } 337 | 338 | FUNCTION {bbl.th} 339 | { "th" } 340 | 341 | MACRO {jan} {"Jan."} 342 | 343 | MACRO {feb} {"Feb."} 344 | 345 | MACRO {mar} {"Mar."} 346 | 347 | MACRO {apr} {"Apr."} 348 | 349 | MACRO {may} {"May"} 350 | 351 | MACRO {jun} {"Jun."} 352 | 353 | MACRO {jul} {"Jul."} 354 | 355 | MACRO {aug} {"Aug."} 356 | 357 | MACRO {sep} {"Sep."} 358 | 359 | MACRO {oct} {"Oct."} 360 | 361 | MACRO {nov} {"Nov."} 362 | 363 | MACRO {dec} {"Dec."} 364 | 365 | FUNCTION {eng.ord} 366 | { duplicate$ "1" swap$ * 367 | #-2 #1 substring$ "1" = 368 | { bbl.th * } 369 | { duplicate$ #-1 #1 substring$ 370 | duplicate$ "1" = 371 | { pop$ bbl.st * } 372 | { duplicate$ "2" = 373 | { pop$ bbl.nd * } 374 | { "3" = 375 | { bbl.rd * } 376 | { bbl.th * } 377 | if$ 378 | } 379 | if$ 380 | } 381 | if$ 382 | } 383 | if$ 384 | } 385 | 386 | MACRO {acmcs} {"ACM Computing Surveys"} 387 | 388 | MACRO {acta} {"Acta Informatica"} 389 | 390 | MACRO {cacm} {"Communications of the ACM"} 391 | 392 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 393 | 394 | MACRO {ibmsj} {"IBM Systems Journal"} 395 | 396 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 397 | 398 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 399 | 400 | MACRO {ieeetcad} 401 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 402 | 403 | MACRO {ipl} {"Information Processing Letters"} 404 | 405 | MACRO {jacm} {"Journal of the ACM"} 406 | 407 | MACRO {jcss} {"Journal of Computer and System Sciences"} 408 | 409 | MACRO {scp} {"Science of Computer Programming"} 410 | 411 | MACRO {sicomp} {"SIAM Journal on Computing"} 412 | 413 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 414 | 415 | MACRO {tods} {"ACM Transactions on Database Systems"} 416 | 417 | MACRO {tog} {"ACM Transactions on Graphics"} 418 | 419 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 420 | 421 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 422 | 423 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 424 | 425 | MACRO {tcs} {"Theoretical Computer Science"} 426 | FUNCTION {bibinfo.check} 427 | { swap$ 428 | duplicate$ missing$ 429 | { 430 | pop$ pop$ 431 | "" 432 | } 433 | { duplicate$ empty$ 434 | { 435 | swap$ pop$ 436 | } 437 | { swap$ 438 | pop$ 439 | } 440 | if$ 441 | } 442 | if$ 443 | } 444 | 445 | %%% 推出栈顶字面值作为信息,检查第二栈顶字面值是否是缺失的域, 446 | %%% 是则发起包含原栈顶字面值信息的“缺失”警告,并替换原第二栈顶字面值为空字符串 447 | %%% 否则,再检查原第二栈顶字面值是否为空,是则发起“空”警告,并保留原第二栈顶字面值成为新栈顶 448 | FUNCTION {bibinfo.warn} 449 | { swap$ 450 | duplicate$ missing$ 451 | { 452 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 453 | "" 454 | } 455 | { duplicate$ empty$ 456 | { 457 | swap$ "empty " swap$ * " in " * cite$ * warning$ 458 | } 459 | { swap$ 460 | pop$ 461 | } 462 | if$ 463 | } 464 | if$ 465 | } 466 | FUNCTION {format.eprint} 467 | { eprint duplicate$ empty$ 468 | 'skip$ 469 | { "\eprint" 470 | archive empty$ 471 | 'skip$ 472 | { "[" * archive * "]" * } 473 | if$ 474 | "{" * swap$ * "}" * 475 | } 476 | if$ 477 | } 478 | FUNCTION {format.url} 479 | { 480 | doi empty$ 481 | { url } 482 | { "http://dx.doi.org/" doi * } 483 | if$ 484 | duplicate$ empty$ 485 | { pop$ "" } 486 | { "\url{" swap$ * "}" * } 487 | if$ 488 | } 489 | 490 | INTEGERS { nameptr namesleft numnames } 491 | 492 | 493 | STRINGS { bibinfo} 494 | 495 | FUNCTION {format.names} 496 | { 'bibinfo := 497 | duplicate$ empty$ 'skip$ { 498 | 's := 499 | "" 't := 500 | #1 'nameptr := 501 | s num.names$ 'numnames := 502 | numnames 'namesleft := 503 | { namesleft #0 > } 504 | { s nameptr 505 | "{vv~}{ll}{ f{~}}{ jj}" 506 | format.name$ 507 | remove.dots 508 | bibinfo bibinfo.check 509 | 't := 510 | nameptr #1 > 511 | { 512 | nameptr #3 513 | #1 + = 514 | numnames #3 515 | > and 516 | { "others" 't := 517 | #1 'namesleft := } 518 | 'skip$ 519 | if$ 520 | namesleft #1 > 521 | { ", " * t * } 522 | { 523 | s nameptr "{ll}" format.name$ duplicate$ "others" = 524 | { 't := } 525 | { pop$ } 526 | if$ 527 | "," * 528 | t "others" = 529 | { 530 | " " * bbl.etal * 531 | } 532 | { " " * t * } 533 | if$ 534 | } 535 | if$ 536 | } 537 | 't 538 | if$ 539 | nameptr #1 + 'nameptr := 540 | namesleft #1 - 'namesleft := 541 | } 542 | while$ 543 | } if$ 544 | } 545 | FUNCTION {format.schinese.names} 546 | { 'bibinfo := 547 | duplicate$ empty$ 'skip$ { 548 | 's := 549 | "" 't := 550 | #1 'nameptr := 551 | s num.names$ 'numnames := 552 | numnames 'namesleft := 553 | { namesleft #0 > } 554 | { s nameptr 555 | "{vv~}{ll}{ f{~}}{ jj}" 556 | format.name$ 557 | remove.dots 558 | bibinfo bibinfo.check 559 | 't := 560 | nameptr #1 > 561 | { 562 | nameptr #3 563 | #1 + = 564 | numnames #3 565 | > and 566 | { "others" 't := 567 | #1 'namesleft := } 568 | 'skip$ 569 | if$ 570 | namesleft #1 > 571 | { ", " * t * } 572 | { 573 | s nameptr "{ll}" format.name$ duplicate$ "others" = 574 | { 't := } 575 | { pop$ } 576 | if$ 577 | "," * 578 | t "others" = 579 | { 580 | " " * bbl.deng * 581 | } 582 | { " " * t * } 583 | if$ 584 | } 585 | if$ 586 | } 587 | 't 588 | if$ 589 | nameptr #1 + 'nameptr := 590 | namesleft #1 - 'namesleft := 591 | } 592 | while$ 593 | } if$ 594 | } 595 | FUNCTION {format.names.ed} 596 | { 597 | format.names 598 | } 599 | %FUNCTION {format.authors} 600 | %{ author "author" format.names 601 | %} 602 | FUNCTION {format.authors} 603 | { 604 | language missing$ 605 | { author "author" format.names } 606 | { 607 | language "schinese" = 608 | { author "author" format.schinese.names } 609 | { author "author" format.names } 610 | if$ 611 | } 612 | if$ 613 | } 614 | FUNCTION {format.translators} 615 | { 616 | language missing$ 617 | { translator "translator" format.names } 618 | { 619 | language "schinese" = 620 | { translator "translator" format.schinese.names "译" * } 621 | { translator "translator" format.names } 622 | if$ 623 | } 624 | if$ 625 | } 626 | FUNCTION {get.bbl.editor} 627 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 628 | 629 | FUNCTION {format.editors} 630 | { editor "editor" format.names duplicate$ empty$ 'skip$ 631 | { 632 | "," * 633 | " " * 634 | get.bbl.editor 635 | capitalize 636 | "(" swap$ * ")" * 637 | * 638 | } 639 | if$ 640 | } 641 | FUNCTION {format.note} 642 | { 643 | note empty$ 644 | { "" } 645 | { note #1 #1 substring$ 646 | duplicate$ "{" = 647 | 'skip$ 648 | { output.state mid.sentence = 649 | { "l" } 650 | { "u" } 651 | if$ 652 | change.case$ 653 | } 654 | if$ 655 | note #2 global.max$ substring$ * "note" bibinfo.check 656 | } 657 | if$ 658 | } 659 | 660 | FUNCTION {format.title} 661 | { title 662 | duplicate$ empty$ 'skip$ 663 | { "t" change.case$ } 664 | if$ 665 | "title" bibinfo.check 666 | } 667 | 668 | %%% 构建bibitem信息的开头部分,并将当前“输出状态”调整为“最开始” 669 | FUNCTION {output.bibitem} 670 | { newline$ 671 | "\bibitem{" write$ 672 | cite$ write$ 673 | "}" write$ 674 | newline$ 675 | "" 676 | before.all 'output.state := 677 | } 678 | 679 | FUNCTION {n.dashify} 680 | { 681 | 't := 682 | "" 683 | { t empty$ not } 684 | { t #1 #1 substring$ "-" = 685 | { t #1 #2 substring$ "--" = not 686 | { "-" * 687 | t #2 global.max$ substring$ 't := 688 | } 689 | { { t #1 #1 substring$ "-" = } 690 | { "-" * 691 | t #2 global.max$ substring$ 't := 692 | } 693 | while$ 694 | } 695 | if$ 696 | } 697 | { t #1 #1 substring$ * 698 | t #2 global.max$ substring$ 't := 699 | } 700 | if$ 701 | } 702 | while$ 703 | } 704 | 705 | FUNCTION {word.in} 706 | { bbl.in capitalize 707 | " " * } 708 | 709 | FUNCTION {format.date} 710 | { 711 | month "month" bibinfo.check 712 | duplicate$ empty$ 713 | year "year" bibinfo.check duplicate$ empty$ 714 | { swap$ 'skip$ 715 | { "there's a month but no year in " cite$ * warning$ } 716 | if$ 717 | * 718 | } 719 | { swap$ 'skip$ 720 | { 721 | " " * swap$ 722 | } 723 | if$ 724 | * 725 | } 726 | if$ 727 | duplicate$ empty$ 728 | 'skip$ 729 | { 730 | before.all 'output.state := 731 | ", " swap$ * 732 | } 733 | if$ 734 | } 735 | FUNCTION {full.date} 736 | { 737 | year duplicate$ empty$ 738 | { "there's no year in " cite$ * warning$ 739 | pop$ 740 | "XXXX-" 741 | } 742 | { "-" * } 743 | if$ 744 | month duplicate$ empty$ 745 | { "there's no month in " cite$ * warning$ 746 | pop$ 747 | "Xx-" * 748 | } 749 | { * "-" * } 750 | if$ 751 | day duplicate$ empty$ 752 | { "there's no day in " cite$ * warning$ 753 | pop$ 754 | "xx" * 755 | } 756 | { * } 757 | if$ 758 | } 759 | FUNCTION {format.full.date} 760 | { 761 | year "year" bibinfo.check duplicate$ empty$ 762 | { "there's no year in " cite$ * warning$ 763 | "XXXX-" * 764 | } 765 | { "-" * } 766 | if$ 767 | month "month" bibinfo.check duplicate$ empty$ 768 | { "there's no month in " cite$ * warning$ 769 | * "Xx-" * 770 | } 771 | { * "-" * } 772 | if$ 773 | day "day" bibinfo.check duplicate$ empty$ 774 | { "there's no day in " cite$ * warning$ 775 | * "xx" * 776 | } 777 | { * } 778 | if$ 779 | duplicate$ empty$ 780 | 'skip$ 781 | { 782 | before.all 'output.state := 783 | ". " swap$ * 784 | } 785 | if$ 786 | } 787 | FUNCTION {format.btitle} 788 | { title "title" bibinfo.check 789 | duplicate$ empty$ 'skip$ 790 | { 791 | } 792 | if$ 793 | } 794 | FUNCTION {either.or.check} 795 | { empty$ 796 | 'pop$ 797 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 798 | if$ 799 | } 800 | FUNCTION {format.bvolume} 801 | { volume empty$ 802 | { "" } 803 | { bbl.volume volume tie.or.space.prefix 804 | "volume" bibinfo.check * * 805 | series "series" bibinfo.check 806 | duplicate$ empty$ 'pop$ 807 | { swap$ bbl.of space.word * swap$ 808 | emphasize * } 809 | if$ 810 | "volume and number" number either.or.check 811 | } 812 | if$ 813 | } 814 | FUNCTION {format.number.series} 815 | { volume empty$ 816 | { number empty$ 817 | { series field.or.null } 818 | { series empty$ 819 | { number "number" bibinfo.check } 820 | { output.state mid.sentence = 821 | { bbl.number } 822 | { bbl.number capitalize } 823 | if$ 824 | number tie.or.space.prefix "number" bibinfo.check * * 825 | bbl.in space.word * 826 | series "series" bibinfo.check * 827 | } 828 | if$ 829 | } 830 | if$ 831 | } 832 | { "" } 833 | if$ 834 | } 835 | FUNCTION {is.num} 836 | { chr.to.int$ 837 | duplicate$ "0" chr.to.int$ < not 838 | swap$ "9" chr.to.int$ > not and 839 | } 840 | 841 | FUNCTION {extract.num} 842 | { duplicate$ 't := 843 | "" 's := 844 | { t empty$ not } 845 | { t #1 #1 substring$ 846 | t #2 global.max$ substring$ 't := 847 | duplicate$ is.num 848 | { s swap$ * 's := } 849 | { pop$ "" 't := } 850 | if$ 851 | } 852 | while$ 853 | s empty$ 854 | 'skip$ 855 | { pop$ s } 856 | if$ 857 | } 858 | 859 | FUNCTION {convert.edition} 860 | { extract.num "l" change.case$ 's := 861 | s "first" = s "1" = or 862 | { bbl.first 't := } 863 | { s "second" = s "2" = or 864 | { bbl.second 't := } 865 | { s "third" = s "3" = or 866 | { bbl.third 't := } 867 | { s "fourth" = s "4" = or 868 | { bbl.fourth 't := } 869 | { s "fifth" = s "5" = or 870 | { bbl.fifth 't := } 871 | { s #1 #1 substring$ is.num 872 | { s eng.ord 't := } 873 | { edition 't := } 874 | if$ 875 | } 876 | if$ 877 | } 878 | if$ 879 | } 880 | if$ 881 | } 882 | if$ 883 | } 884 | if$ 885 | t 886 | } 887 | 888 | FUNCTION {format.edition} 889 | { edition duplicate$ empty$ 'skip$ 890 | { 891 | convert.edition 892 | output.state mid.sentence = 893 | { "l" } 894 | { "t" } 895 | if$ change.case$ 896 | "edition" bibinfo.check 897 | " " * bbl.edition * 898 | } 899 | if$ 900 | } 901 | INTEGERS { multiresult } 902 | FUNCTION {multi.page.check} 903 | { 't := 904 | #0 'multiresult := 905 | { multiresult not 906 | t empty$ not 907 | and 908 | } 909 | { t #1 #1 substring$ 910 | duplicate$ "-" = 911 | swap$ duplicate$ "," = 912 | swap$ "+" = 913 | or or 914 | { #1 'multiresult := } 915 | { t #2 global.max$ substring$ 't := } 916 | if$ 917 | } 918 | while$ 919 | multiresult 920 | } 921 | FUNCTION {format.pages} 922 | { pages duplicate$ empty$ 'skip$ 923 | { duplicate$ multi.page.check 924 | { 925 | n.dashify 926 | } 927 | { 928 | } 929 | if$ 930 | "pages" bibinfo.check 931 | } 932 | if$ 933 | } 934 | FUNCTION {format.journal.pages} 935 | { pages duplicate$ empty$ 'pop$ 936 | { swap$ duplicate$ empty$ 937 | { pop$ pop$ format.pages } 938 | { 939 | ": " * 940 | swap$ 941 | n.dashify 942 | "pages" bibinfo.check 943 | * 944 | } 945 | if$ 946 | } 947 | if$ 948 | } 949 | FUNCTION {format.journal.eid} 950 | { eid "eid" bibinfo.check 951 | duplicate$ empty$ 'pop$ 952 | { swap$ duplicate$ empty$ 'skip$ 953 | { 954 | ": " * 955 | } 956 | if$ 957 | swap$ * 958 | } 959 | if$ 960 | } 961 | FUNCTION {format.vol.num.pages} 962 | { volume field.or.null 963 | duplicate$ empty$ 'skip$ 964 | { 965 | "volume" bibinfo.check 966 | } 967 | if$ 968 | number "number" bibinfo.check duplicate$ empty$ 'skip$ 969 | { 970 | swap$ duplicate$ empty$ 971 | { "there's a number but no volume in " cite$ * warning$ } 972 | 'skip$ 973 | if$ 974 | swap$ 975 | "(" swap$ * ")" * 976 | } 977 | if$ * 978 | } 979 | 980 | FUNCTION {format.chapter.pages} 981 | { chapter empty$ 982 | { "" } 983 | { type empty$ 984 | { bbl.chapter } 985 | { type "l" change.case$ 986 | "type" bibinfo.check 987 | } 988 | if$ 989 | chapter tie.or.space.prefix 990 | "chapter" bibinfo.check 991 | * * 992 | } 993 | if$ 994 | } 995 | 996 | FUNCTION {format.booktitle} 997 | { 998 | booktitle "booktitle" bibinfo.check 999 | } 1000 | FUNCTION {format.in.ed.booktitle} 1001 | { format.booktitle duplicate$ empty$ 'skip$ 1002 | { 1003 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 1004 | { 1005 | "," * 1006 | " " * 1007 | get.bbl.editor 1008 | capitalize 1009 | "(" swap$ * ") " * 1010 | * swap$ 1011 | * } 1012 | if$ 1013 | %word.in swap$ * 1014 | } 1015 | if$ 1016 | } 1017 | FUNCTION {empty.misc.check} 1018 | { author empty$ title empty$ howpublished empty$ 1019 | month empty$ year empty$ note empty$ 1020 | and and and and and 1021 | { "all relevant fields are empty in " cite$ * warning$ } 1022 | 'skip$ 1023 | if$ 1024 | } 1025 | FUNCTION {format.thesis.type} 1026 | { type duplicate$ empty$ 1027 | 'pop$ 1028 | { swap$ pop$ 1029 | "t" change.case$ "type" bibinfo.check 1030 | } 1031 | if$ 1032 | } 1033 | FUNCTION {format.tr.number} 1034 | { number "number" bibinfo.check 1035 | type duplicate$ empty$ 1036 | { pop$ bbl.techrep } 1037 | 'skip$ 1038 | if$ 1039 | "type" bibinfo.check 1040 | swap$ duplicate$ empty$ 1041 | { pop$ "t" change.case$ } 1042 | { tie.or.space.prefix * * } 1043 | if$ 1044 | } 1045 | FUNCTION {format.article.crossref} 1046 | { 1047 | key duplicate$ empty$ 1048 | { pop$ 1049 | journal duplicate$ empty$ 1050 | { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } 1051 | { "journal" bibinfo.check emphasize word.in swap$ * } 1052 | if$ 1053 | } 1054 | { word.in swap$ * " " *} 1055 | if$ 1056 | " \cite{" * crossref * "}" * 1057 | } 1058 | FUNCTION {format.crossref.editor} 1059 | { editor #1 "{vv~}{ll}" format.name$ 1060 | "editor" bibinfo.check 1061 | editor num.names$ duplicate$ 1062 | #2 > 1063 | { pop$ 1064 | "editor" bibinfo.check 1065 | " " * bbl.etal 1066 | * 1067 | } 1068 | { #2 < 1069 | 'skip$ 1070 | { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1071 | { 1072 | "editor" bibinfo.check 1073 | " " * bbl.etal 1074 | * 1075 | } 1076 | { 1077 | bbl.and space.word 1078 | * editor #2 "{vv~}{ll}" format.name$ 1079 | "editor" bibinfo.check 1080 | * 1081 | } 1082 | if$ 1083 | } 1084 | if$ 1085 | } 1086 | if$ 1087 | } 1088 | FUNCTION {format.book.crossref} 1089 | { volume duplicate$ empty$ 1090 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 1091 | pop$ word.in 1092 | } 1093 | { bbl.volume 1094 | capitalize 1095 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 1096 | } 1097 | if$ 1098 | editor empty$ 1099 | editor field.or.null author field.or.null = 1100 | or 1101 | { key empty$ 1102 | { series empty$ 1103 | { "need editor, key, or series for " cite$ * " to crossref " * 1104 | crossref * warning$ 1105 | "" * 1106 | } 1107 | { series emphasize * } 1108 | if$ 1109 | } 1110 | { key * } 1111 | if$ 1112 | } 1113 | { format.crossref.editor * } 1114 | if$ 1115 | " \cite{" * crossref * "}" * 1116 | } 1117 | FUNCTION {format.incoll.inproc.crossref} 1118 | { 1119 | editor empty$ 1120 | editor field.or.null author field.or.null = 1121 | or 1122 | { key empty$ 1123 | { format.booktitle duplicate$ empty$ 1124 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 1125 | crossref * warning$ 1126 | } 1127 | { word.in swap$ * } 1128 | if$ 1129 | } 1130 | { word.in key * " " *} 1131 | if$ 1132 | } 1133 | { word.in format.crossref.editor * " " *} 1134 | if$ 1135 | " \cite{" * crossref * "}" * 1136 | } 1137 | FUNCTION {format.org.or.pub} 1138 | { 't := 1139 | "" 1140 | address empty$ t empty$ and 1141 | 'skip$ 1142 | { 1143 | address "address" bibinfo.check * 1144 | t empty$ 1145 | 'skip$ 1146 | { address empty$ 1147 | 'skip$ 1148 | { ": " * } 1149 | if$ 1150 | t * 1151 | } 1152 | if$ 1153 | } 1154 | if$ 1155 | } 1156 | FUNCTION {format.publisher.address} 1157 | { publisher "publisher" bibinfo.warn format.org.or.pub 1158 | } 1159 | 1160 | FUNCTION {format.organization.address} 1161 | { organization "organization" bibinfo.check format.org.or.pub 1162 | } 1163 | 1164 | FUNCTION {article} 1165 | { output.bibitem 1166 | format.authors "author" output.check 1167 | new.block 1168 | format.title "[J]" * "title" output.check 1169 | new.block 1170 | crossref missing$ 1171 | { 1172 | journal 1173 | "journal" bibinfo.check 1174 | "journal" output.check 1175 | year "year" output.check 1176 | volume missing$ 1177 | { 1178 | number missing$ 1179 | {before.all 'output.state :=} 1180 | {date.block} 1181 | if$ 1182 | } 1183 | {date.block} 1184 | if$ 1185 | format.vol.num.pages output 1186 | } 1187 | { format.article.crossref output.nonnull 1188 | } 1189 | if$ 1190 | eid empty$ 1191 | { format.journal.pages } 1192 | { format.journal.eid } 1193 | if$ 1194 | new.block 1195 | % format.url output 1196 | % new.block 1197 | format.note output 1198 | format.eprint output 1199 | fin.entry 1200 | } 1201 | FUNCTION {book} 1202 | { output.bibitem 1203 | author empty$ 1204 | { format.editors "author and editor" output.check 1205 | add.blank 1206 | } 1207 | { format.authors output.nonnull 1208 | crossref missing$ 1209 | { "author and editor" editor either.or.check } 1210 | 'skip$ 1211 | if$ 1212 | } 1213 | if$ 1214 | new.block 1215 | format.btitle "[M]" * "title" output.check 1216 | new.block 1217 | translator missing$ 1218 | {skip$} 1219 | { 1220 | format.translators "translator" output.check 1221 | new.block 1222 | } 1223 | if$ 1224 | %format.edition output 1225 | edition missing$ 1226 | {skip$} 1227 | { 1228 | language missing$ 1229 | { format.edition "edition" output.check } 1230 | { edition "版" * "edition" output.check } 1231 | if$ 1232 | new.block 1233 | } 1234 | if$ 1235 | crossref missing$ 1236 | { format.bvolume output 1237 | new.block 1238 | format.number.series output 1239 | new.sentence 1240 | format.publisher.address output 1241 | } 1242 | { 1243 | new.block 1244 | format.book.crossref output.nonnull 1245 | } 1246 | if$ 1247 | pages missing$ 1248 | {year "year" output.check} 1249 | { 1250 | year ": " * format.pages * "pages" output.check 1251 | } 1252 | if$ 1253 | new.block 1254 | format.url output 1255 | new.block 1256 | format.note output 1257 | format.eprint output 1258 | fin.entry 1259 | } 1260 | FUNCTION {booklet} 1261 | { output.bibitem 1262 | format.authors output 1263 | new.block 1264 | format.title "[M]" * "title" output.check 1265 | new.block 1266 | howpublished "howpublished" bibinfo.check output 1267 | address "address" bibinfo.check output 1268 | format.date output 1269 | new.block 1270 | format.url output 1271 | new.block 1272 | format.note output 1273 | format.eprint output 1274 | fin.entry 1275 | } 1276 | 1277 | FUNCTION {inbook} 1278 | { output.bibitem 1279 | author empty$ 1280 | { format.editors "author and editor" output.check 1281 | } 1282 | { format.authors output.nonnull 1283 | crossref missing$ 1284 | { "author and editor" editor either.or.check } 1285 | 'skip$ 1286 | if$ 1287 | } 1288 | if$ 1289 | new.block 1290 | format.btitle "[M]" * "title" output.check 1291 | crossref missing$ 1292 | { 1293 | format.publisher.address output 1294 | format.bvolume output 1295 | format.chapter.pages "chapter and pages" output.check 1296 | new.block 1297 | format.number.series output 1298 | new.sentence 1299 | } 1300 | { 1301 | format.chapter.pages "chapter and pages" output.check 1302 | new.block 1303 | format.book.crossref output.nonnull 1304 | } 1305 | if$ 1306 | format.edition output 1307 | format.date "year" output.check 1308 | date.block 1309 | format.pages "pages" output.check 1310 | new.block 1311 | format.url output 1312 | new.block 1313 | format.note output 1314 | format.eprint output 1315 | fin.entry 1316 | } 1317 | 1318 | FUNCTION {incollection} 1319 | { output.bibitem 1320 | format.authors "author" output.check 1321 | new.block 1322 | format.title "title" output.check 1323 | new.block 1324 | crossref missing$ 1325 | { format.in.ed.booktitle "booktitle" output.check 1326 | format.publisher.address output 1327 | format.bvolume output 1328 | format.number.series output 1329 | format.chapter.pages output 1330 | new.sentence 1331 | format.edition output 1332 | } 1333 | { format.incoll.inproc.crossref output.nonnull 1334 | format.chapter.pages output 1335 | } 1336 | if$ 1337 | format.date "year" output.check 1338 | date.block 1339 | format.pages "pages" output.check 1340 | new.block 1341 | format.url output 1342 | new.block 1343 | format.note output 1344 | format.eprint output 1345 | fin.entry 1346 | } 1347 | FUNCTION {inproceedings} 1348 | { output.bibitem 1349 | format.authors "author" output.check 1350 | new.block 1351 | format.title "[C]" * "title" output.check 1352 | new.block 1353 | crossref missing$ 1354 | { format.in.ed.booktitle "booktitle" output.check 1355 | %new.sentence 1356 | publisher empty$ 1357 | { format.organization.address output } 1358 | { organization "organization" bibinfo.check output 1359 | format.publisher.address output 1360 | } 1361 | if$ 1362 | format.bvolume output 1363 | format.number.series output 1364 | } 1365 | { format.incoll.inproc.crossref output.nonnull 1366 | } 1367 | if$ 1368 | year ": " * format.pages * "pages" output.check 1369 | new.block 1370 | % format.url output 1371 | % new.block 1372 | format.note output 1373 | format.eprint output 1374 | fin.entry 1375 | } 1376 | FUNCTION {conference} { inproceedings } 1377 | FUNCTION {manual} 1378 | { output.bibitem 1379 | author empty$ 1380 | { organization "organization" bibinfo.check 1381 | duplicate$ empty$ 'pop$ 1382 | { output 1383 | address "address" bibinfo.check output 1384 | } 1385 | if$ 1386 | } 1387 | { format.authors output.nonnull } 1388 | if$ 1389 | new.block 1390 | format.btitle "title" output.check 1391 | author empty$ 1392 | { organization empty$ 1393 | { 1394 | address new.block.checka 1395 | address "address" bibinfo.check output 1396 | } 1397 | 'skip$ 1398 | if$ 1399 | } 1400 | { 1401 | organization address new.block.checkb 1402 | organization "organization" bibinfo.check output 1403 | address "address" bibinfo.check output 1404 | } 1405 | if$ 1406 | format.edition output 1407 | format.date output 1408 | new.block 1409 | format.url output 1410 | new.block 1411 | format.note output 1412 | format.eprint output 1413 | fin.entry 1414 | } 1415 | 1416 | FUNCTION {mastersthesis} 1417 | { output.bibitem 1418 | format.authors "author" output.check 1419 | new.block 1420 | format.title "[D]" * "title" output.check 1421 | new.block 1422 | %bbl.mthesis format.thesis.type output.nonnull 1423 | address "address" bibinfo.warn output 1424 | ": " * write$ 1425 | school "school" bibinfo.warn 1426 | pages missing$ 1427 | { 1428 | pages "pages" bibinfo.warn pop$ 1429 | year "year" output.check 1430 | } 1431 | {year ": " * format.pages * "pages" output.check} 1432 | if$ 1433 | new.block 1434 | format.url output 1435 | new.block 1436 | format.note output 1437 | format.eprint output 1438 | fin.entry 1439 | } 1440 | 1441 | FUNCTION {phdthesis} 1442 | { output.bibitem 1443 | format.authors "author" output.check 1444 | new.block 1445 | format.title "[D]" * 1446 | "title" output.check 1447 | new.block 1448 | %bbl.phdthesis format.thesis.type output.nonnull 1449 | address "address" bibinfo.warn output 1450 | ": " * write$ 1451 | school "school" bibinfo.warn 1452 | pages missing$ 1453 | { 1454 | pages "pages" bibinfo.warn pop$ 1455 | year "year" output.check 1456 | } 1457 | {year ": " * format.pages * "pages" output.check} 1458 | if$ 1459 | new.block 1460 | format.url output 1461 | new.block 1462 | format.note output 1463 | format.eprint output 1464 | fin.entry 1465 | } 1466 | 1467 | FUNCTION {proceedings} 1468 | { output.bibitem 1469 | editor empty$ 1470 | { organization "organization" bibinfo.check output 1471 | } 1472 | { format.editors output.nonnull } 1473 | if$ 1474 | new.block 1475 | format.btitle "[C]" * "title" output.check 1476 | format.bvolume output 1477 | format.number.series output 1478 | editor empty$ 1479 | { publisher empty$ 1480 | 'skip$ 1481 | { 1482 | new.sentence 1483 | format.publisher.address output 1484 | } 1485 | if$ 1486 | } 1487 | { publisher empty$ 1488 | { 1489 | new.sentence 1490 | format.organization.address output } 1491 | { 1492 | new.sentence 1493 | organization "organization" bibinfo.check output 1494 | format.publisher.address output 1495 | } 1496 | if$ 1497 | } 1498 | if$ 1499 | year "year" output.check 1500 | new.block 1501 | % format.url output 1502 | % new.block 1503 | format.note output 1504 | format.eprint output 1505 | fin.entry 1506 | } 1507 | 1508 | FUNCTION {news} 1509 | { output.bibitem 1510 | format.authors "author" output.check 1511 | new.block 1512 | format.title "[N]" * "title" output.check 1513 | new.block 1514 | publisher "publisher" bibinfo.warn output 1515 | full.date "date" bibinfo.warn output write$ 1516 | " (" number * ")" * 1517 | new.block 1518 | format.url output 1519 | new.block 1520 | format.note output 1521 | format.eprint output 1522 | fin.entry 1523 | } 1524 | 1525 | FUNCTION {report} 1526 | { output.bibitem 1527 | format.authors "author" output.check 1528 | new.block 1529 | format.title "[R]" * 1530 | "title" output.check 1531 | new.block 1532 | %format.tr.number output.nonnull 1533 | address "address" bibinfo.warn output 1534 | ": " * write$ 1535 | publisher "publisher" bibinfo.warn 1536 | year "year" output.check 1537 | new.block 1538 | format.url output 1539 | new.block 1540 | format.note output 1541 | format.eprint output 1542 | fin.entry 1543 | } 1544 | 1545 | FUNCTION {unpublished} 1546 | { output.bibitem 1547 | format.authors "author" output.check 1548 | new.block 1549 | format.title "title" output.check 1550 | format.date output 1551 | new.block 1552 | format.url output 1553 | new.block 1554 | format.note "note" output.check 1555 | format.eprint output 1556 | fin.entry 1557 | } 1558 | 1559 | FUNCTION {patent} 1560 | { output.bibitem 1561 | format.authors "author" output.check 1562 | new.block 1563 | format.title ": " * number * "[P]" * "title" output.check 1564 | new.block 1565 | crossref missing$ 1566 | { 1567 | %journal 1568 | %"journal" bibinfo.check 1569 | %"journal" output.check 1570 | format.full.date "fulldate" output.check 1571 | } 1572 | { format.article.crossref output.nonnull 1573 | } 1574 | if$ 1575 | %eid empty$ 1576 | % { format.journal.pages } 1577 | % { format.journal.eid } 1578 | %if$ 1579 | new.block 1580 | format.url output 1581 | new.block 1582 | format.note output 1583 | format.eprint output 1584 | fin.entry 1585 | } 1586 | 1587 | FUNCTION {standard} 1588 | { output.bibitem 1589 | format.authors "author" output.check 1590 | new.block 1591 | format.title ": " * number * "[S]" * "title" output.check 1592 | new.block 1593 | address "address" bibinfo.warn output 1594 | ": " * write$ 1595 | publisher "publisher" bibinfo.warn 1596 | year ": " * format.pages * "year" output.check 1597 | new.block 1598 | format.url output 1599 | new.block 1600 | format.note output 1601 | format.eprint output 1602 | fin.entry 1603 | } 1604 | 1605 | 1606 | FUNCTION {digital} 1607 | { output.bibitem 1608 | format.authors "author" output.check 1609 | new.block 1610 | format.title "[" * type * "]" * "title" output.check 1611 | new.block 1612 | address missing$ 1613 | { modifydate "modifydate" bibinfo.warn output } 1614 | { 1615 | address "address" bibinfo.warn output 1616 | ": " * write$ 1617 | publisher "publisher" bibinfo.warn 1618 | year "year" bibinfo.warn output 1619 | ": " * write$ 1620 | format.pages "pages" bibinfo.warn write$ 1621 | modifydate "modifydate" bibinfo.warn 1622 | " (" swap$ * ")" * write$ 1623 | citedate "citedate" bibinfo.warn 1624 | " [" swap$ * "]" * 1625 | new.block 1626 | } 1627 | if$ 1628 | format.url output 1629 | fin.entry 1630 | } 1631 | 1632 | FUNCTION {misc} 1633 | { output.bibitem 1634 | format.authors output 1635 | title howpublished new.block.checkb 1636 | format.title output 1637 | howpublished new.block.checka 1638 | howpublished "howpublished" bibinfo.check output 1639 | format.date output 1640 | new.block 1641 | format.url output 1642 | new.block 1643 | format.note output 1644 | format.eprint output 1645 | fin.entry 1646 | empty.misc.check 1647 | } 1648 | 1649 | FUNCTION {default.type} { misc } 1650 | READ 1651 | STRINGS { longest.label } 1652 | INTEGERS { number.label longest.label.width } 1653 | FUNCTION {initialize.longest.label} 1654 | { "" 'longest.label := 1655 | #1 'number.label := 1656 | #0 'longest.label.width := 1657 | } 1658 | FUNCTION {longest.label.pass} 1659 | { number.label int.to.str$ 'label := 1660 | number.label #1 + 'number.label := 1661 | label width$ longest.label.width > 1662 | { label 'longest.label := 1663 | label width$ 'longest.label.width := 1664 | } 1665 | 'skip$ 1666 | if$ 1667 | } 1668 | EXECUTE {initialize.longest.label} 1669 | ITERATE {longest.label.pass} 1670 | FUNCTION {begin.bib} 1671 | { preamble$ empty$ 1672 | 'skip$ 1673 | { preamble$ write$ newline$ } 1674 | if$ 1675 | "\begin{thebibliography}{" longest.label * "}" * 1676 | write$ newline$ 1677 | "\providecommand{\url}[1]{\texttt{#1}}" 1678 | write$ newline$ 1679 | "\providecommand{\urlprefix}{URL }" 1680 | write$ newline$ 1681 | "\providecommand{\eprint}[2][]{\url{#2}}" 1682 | write$ newline$ 1683 | } 1684 | EXECUTE {begin.bib} 1685 | EXECUTE {init.state.consts} 1686 | ITERATE {call.type$} 1687 | FUNCTION {end.bib} 1688 | { newline$ 1689 | "\end{thebibliography}" write$ newline$ 1690 | } 1691 | EXECUTE {end.bib} 1692 | %% End of customized bst file 1693 | %% 1694 | %% End of file `DissertUESTC.bst'. 1695 | -------------------------------------------------------------------------------- /fig/TeXstudio-nomenclature1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/TeXstudio-nomenclature1.jpg -------------------------------------------------------------------------------- /fig/TeXstudio-nomenclature2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/TeXstudio-nomenclature2.jpg -------------------------------------------------------------------------------- /fig/TeXstudio-nomenclature3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/TeXstudio-nomenclature3.jpg -------------------------------------------------------------------------------- /fig/TeXstudio_bibtex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/TeXstudio_bibtex.png -------------------------------------------------------------------------------- /fig/VSCode-nomenclature.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/VSCode-nomenclature.jpg -------------------------------------------------------------------------------- /fig/VScode_bibtex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/VScode_bibtex.png -------------------------------------------------------------------------------- /fig/authsign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/authsign.png -------------------------------------------------------------------------------- /fig/refsample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/refsample.png -------------------------------------------------------------------------------- /fig/spvrsign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/spvrsign.png -------------------------------------------------------------------------------- /fig/uestclogo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/uestclogo.pdf -------------------------------------------------------------------------------- /fig/一灯1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/一灯1.jpg -------------------------------------------------------------------------------- /fig/一灯2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/一灯2.jpg -------------------------------------------------------------------------------- /fig/周伯通1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/周伯通1.png -------------------------------------------------------------------------------- /fig/周伯通2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/周伯通2.jpg -------------------------------------------------------------------------------- /fig/周伯通3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/周伯通3.jpg -------------------------------------------------------------------------------- /fig/杨过1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过1.jpg -------------------------------------------------------------------------------- /fig/杨过2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过2.jpg -------------------------------------------------------------------------------- /fig/杨过3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过3.png -------------------------------------------------------------------------------- /fig/杨过4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过4.jpg -------------------------------------------------------------------------------- /fig/杨过5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过5.jpg -------------------------------------------------------------------------------- /fig/杨过6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过6.jpg -------------------------------------------------------------------------------- /fig/杨过小龙女1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过小龙女1.jpg -------------------------------------------------------------------------------- /fig/杨过小龙女2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过小龙女2.jpg -------------------------------------------------------------------------------- /fig/杨过小龙女3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过小龙女3.png -------------------------------------------------------------------------------- /fig/杨过小龙女6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过小龙女6.jpg -------------------------------------------------------------------------------- /fig/杨过程英.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过程英.jpg -------------------------------------------------------------------------------- /fig/杨过绿萼.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过绿萼.jpg -------------------------------------------------------------------------------- /fig/杨过郭靖.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/杨过郭靖.jpg -------------------------------------------------------------------------------- /fig/洪七公1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/洪七公1.jpg -------------------------------------------------------------------------------- /fig/洪七公2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/洪七公2.jpeg -------------------------------------------------------------------------------- /fig/程英1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/程英1.jpg -------------------------------------------------------------------------------- /fig/程英2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/程英2.jpg -------------------------------------------------------------------------------- /fig/程英3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/程英3.jpg -------------------------------------------------------------------------------- /fig/绿萼1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/绿萼1.jpg -------------------------------------------------------------------------------- /fig/绿萼2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/绿萼2.jpg -------------------------------------------------------------------------------- /fig/郭芙1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭芙1.jpg -------------------------------------------------------------------------------- /fig/郭芙2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭芙2.jpg -------------------------------------------------------------------------------- /fig/郭芙3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭芙3.jpg -------------------------------------------------------------------------------- /fig/郭襄1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭襄1.jpg -------------------------------------------------------------------------------- /fig/郭襄2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭襄2.jpg -------------------------------------------------------------------------------- /fig/郭靖1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/郭靖1.jpg -------------------------------------------------------------------------------- /fig/陆无双1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/陆无双1.jpg -------------------------------------------------------------------------------- /fig/陆无双2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/陆无双2.jpeg -------------------------------------------------------------------------------- /fig/陆无双程英.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/陆无双程英.png -------------------------------------------------------------------------------- /fig/陆无双程英杨过.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/陆无双程英杨过.jpg -------------------------------------------------------------------------------- /fig/黄老邪1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/黄老邪1.jpg -------------------------------------------------------------------------------- /fig/黄老邪2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/黄老邪2.jpg -------------------------------------------------------------------------------- /fig/黄蓉1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/黄蓉1.jpg -------------------------------------------------------------------------------- /fig/黄蓉2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/黄蓉2.png -------------------------------------------------------------------------------- /fig/黄蓉郭靖1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/fig/黄蓉郭靖1.jpg -------------------------------------------------------------------------------- /font/STXINGKA.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/STXINGKA.TTF -------------------------------------------------------------------------------- /font/STZHONGS.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/STZHONGS.TTF -------------------------------------------------------------------------------- /font/SimHei.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/SimHei.ttf -------------------------------------------------------------------------------- /font/SimSun.ttc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/SimSun.ttc -------------------------------------------------------------------------------- /font/Source Han Serif SC.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/Source Han Serif SC.otf -------------------------------------------------------------------------------- /font/times.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/times.ttf -------------------------------------------------------------------------------- /font/timesbd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/timesbd.ttf -------------------------------------------------------------------------------- /font/timesbi.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/timesbi.ttf -------------------------------------------------------------------------------- /font/timesi.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MGG1996/DissertationUESTC/dc9d3b16e22cea88e4eb7886367dba35b3da3057/font/timesi.ttf -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |

电子科技大学学位论文模板2024

2 |
3 | 4 | License 5 | 6 | 7 | GitHub stars 8 | 9 | 10 | GitHub forks 11 | 12 | 13 | Issues 14 | 15 |
16 |
17 | 18 | Downloads 19 | 20 | 21 | GitHub latest release 22 | 23 |
24 | 25 | 26 | - [1. 前言](#1-前言) 27 | - [1.1 适用对象](#11-适用对象) 28 | - [1.2 使用环境](#12-使用环境) 29 | - [1.3 模板完成度](#13-模板完成度) 30 | - [1.4 模板的更新方法](#14-模板的更新方法) 31 | - [1.5 开发该模板的原因](#15-开发该模板的原因) 32 | - [1.6 鸣谢](#16-鸣谢) 33 | - [1.7 免责声明](#17-免责声明) 34 | - [1.8 项目统计](#18-项目统计) 35 | - [2. 导言区](#2-导言区) 36 | - [3. 论文封面及扉页](#3-论文封面及扉页) 37 | - [3.1 保密标识(2025.01.07)](#31-保密标识20250107) 38 | - [3.2 封面](#32-封面) 39 | - [3.2.1 “双学位学士”以外的论文封面](#321-双学位学士以外的论文封面) 40 | - [3.2.2 “双学位学士”论文封面](#322-双学位学士论文封面) 41 | - [3.3 中文扉页(仅研究生)](#33-中文扉页仅研究生) 42 | - [3.4 英文扉页(仅研究生)](#34-英文扉页仅研究生) 43 | - [4. 独创性声明(仅研究生)](#4-独创性声明仅研究生) 44 | - [5. 中英文摘要](#5-中英文摘要) 45 | - [6. 目录、图目录、表目录、主要符号表、缩略词表](#6-目录图目录表目录主要符号表缩略词表) 46 | - [7. 论文主体部分](#7-论文主体部分) 47 | - [7.1 写在最前面(2025.01.07)](#71-写在最前面20250107) 48 | - [7.2 各级标题](#72-各级标题) 49 | - [7.3 图片](#73-图片) 50 | - [7.4 表格](#74-表格) 51 | - [7.4.1 普通表格](#741-普通表格) 52 | - [7.4.2 带附注表格](#742-带附注表格) 53 | - [7.4.3 跨页表格](#743-跨页表格) 54 | - [7.4.4 跨页带附注表格(2025.01.05)](#744-跨页带附注表格20250105) 55 | - [7.5 伪代码](#75-伪代码) 56 | - [7.6 定义、公理、定理、命题、推论、引理、示例、假设、证明](#76-定义公理定理命题推论引理示例假设证明) 57 | - [7.7 脚注](#77-脚注) 58 | - [7.8 模板中的各种编号](#78-模板中的各种编号) 59 | - [7.9 排版化学方程式](#79-排版化学方程式) 60 | - [7.10 在标题中排版数学符号](#710-在标题中排版数学符号) 61 | - [7.11 引用](#711-引用) 62 | - [8. 致谢](#8-致谢) 63 | - [9. 参考文献](#9-参考文献) 64 | - [10. 附录](#10-附录) 65 | - [11. 攻读学位期间取得的成果(原则上仅研究生)](#11-攻读学位期间取得的成果原则上仅研究生) 66 | - [12. 外文资料原文(仅本科生)](#12-外文资料原文仅本科生) 67 | - [13. 外文资料译文(仅本科生)](#13-外文资料译文仅本科生) 68 | 69 | 70 | 71 | ## 1. 前言 72 | 73 | ### 1.1 适用对象 74 | 75 | 本模板参照电子科技大学[研究生学位论文撰写规范(最后修订:2024.01.17)](https://gr.uestc.edu.cn/xiazai/114/3917)、通院[关于启动2021级本科毕业设计(论文)工作的通知(发布时间:2024.10.09)](https://www.sice.uestc.edu.cn/info/1140/14689.htm)以及[交叉复合型毕业设计(发布时间:2022.03.25)](https://www.jwc.uestc.edu.cn/info/1507170256521551874)编写,适用对象包括: 76 | > :white_check_mark: 学术学位博士 :mortar_board: 、专业学位博士 :mortar_board: 77 | > 78 | > :white_check_mark: 学术学位硕士 :mortar_board: 、专业学位硕士 :mortar_board: 79 | > 80 | > :white_check_mark: 普通学士 :mortar_board: 、**双学位学士(2025.04.21新增)** :mortar_board: 81 | > 82 | > :white_check_mark: **来华留学生International Students(2025.01.07新增)** :mortar_board: 83 | 84 | 使用本模板需要掌握基本的LaTeX排版操作,本文档不会阐述如何使用常见的LaTeX命令和环境。如果你是纯新手,那可以先看看[一份(不太)简短的LaTeX2ε介绍](https://ctan.math.utah.edu/ctan/tex-archive/info/lshort/chinese/lshort-zh-cn.pdf),它足以帮助你建立起基本概念,进而顺利使用本模板。 85 | 86 | 另外,本文档及`tutorial.tex`示例文档中**明确标注了`仅学士`、`仅研究生`或`仅专业学位`的内容只能由相应的同学使用,其他人应该注释或删除与自己无关的内容**。 87 | 88 | ### 1.2 使用环境 89 | 90 | 本模板的开发测试环境是`TeXLive2024 + TeXstudio`以及`TeXLive2024 + VSCode`,**兼容Windows、MacOS以及Overleaf等主流平台** :clap:。 91 | 92 | :warning: 本地用户请务必将LaTeX环境更新到[TeXLive2024及以上](https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/)或[MacTeX2024及以上](https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/mactex/),以避免兼容性问题。 93 | 94 | :warning: 模板需要使用`XeLaTeX`引擎进行编译: 95 | 96 | * 若使用TeXstudio编辑器,则不需要进行额外设置:`tutorial.tex`文件在首行设置了`% !TEX Program = xelatex`,该指令指定使用`XeLaTeX`引擎编译该文档; 97 | * VSCode编辑器和Overleaf无法识别上述命令,需要自行将编译引擎设置为`XeLaTeX`。 98 | 99 | 为了确保在Windows、MacOS、Overleaf等平台上编译出完全一致的结果,模板内置了所有用到的字体文件,这导致项目大小超出了Overleaf上传压缩包的限制。因此,Overleaf用户需要进行另一番操作: :bulb: **先在Overleaf上新建一个空项目,然后解压本模板并拖拽文件和文件夹到新建的项目中即可**。 100 | 101 | 102 | 103 | ### 1.3 模板完成度 104 | 105 | 模板已经实现了学位论文撰写规范中近乎全部的排版要求,仅有两处并未实现且暂无计划 :sweat_smile:: 106 | 107 | :anger: 未实现将图片附注排版在图题之下的功能。原因是未能找到实现该操作的LaTeX宏包,且本人能力有限,缺少实现该功能的思路。 :bulb: 替代方案是使用脚注,即通过`\footnotemark`和`\footnotetext`相互配合,细节参见[https://blog.csdn.net/xovee/article/details/127563209](https://blog.csdn.net/xovee/article/details/127563209 "\footnotemark、\footnotetext配合使用")。或者,干脆避免在图中使用附注,改为在文中解释。 108 | 109 | :anger: 伪代码环境不支持跨页排版。本模板排版伪代码使用的宏包是`algorithm2e`,它无法跨页排版伪码。 :bulb: 通常来说,伪码跨页会增加阅读难度。反之,根据算法逻辑将之拆分成数个子算法或子过程,分别进行排版,最后再汇总,这可能是更合适的做法。 110 | 111 | 此外,不排除模板存在一些细节上的疏漏,各位在使用中若发现或遇到问题,欢迎来 :bug: [项目Issue页](https://github.com/MGG1996/DissertationUESTC/issues):bug: 进行反馈。若确为模板问题,我会在闲暇时尽量修复并进行更新。 :sparkles: 在此之前,请使用本模板(尤其是从学长处继承本模板)的同学先来、常来 :gift: [项目发布页](https://github.com/MGG1996/DissertationUESTC) :gift: 看看,确保自己使用的是最新版本 :satisfied:。 112 | 113 | ### 1.4 模板的更新方法 114 | 115 | :bulb: 更新模板的正确方式:**下载最新的完整压缩包,解压后用自己的`.bib`和`.tex`文件以及`fig`目录替换掉模板中原有的同名文件和目录**。 116 | 117 | :+1: 更建议的更新方式:**在初次使用本模板时,修改`.tex`和`.bib`文件的文件名(别忘了`.tex`文件内通过`\bibliography{}`设置的`.bib`文件名),后续只需下载最新的模板,并将其内容全部复制到论文所在的目录进行替换**。 118 | 119 | ### 1.5 开发该模板的原因 120 | 121 | 距离**王稳**学长发布[thesisuestc](https://github.com/bdebye/thesisuestc "王稳成电模板")已经过去几年了,学校的撰写规范时有调整。例如在封面页、扉页等部分,[thesisuestc](https://github.com/bdebye/thesisuestc "王稳成电模板")的排布结构虽大体与新规范一致,但部分页面元素的相对距离、大小等细节却与新规范有不少出入。**我的本意是按照最新的撰写规范设计与之相对应的LaTeX模板,而非复刻[thesisuestc](https://github.com/bdebye/thesisuestc "王稳成电模板")**。 122 | 123 | 更重要的是,本模板希望提供 :sparkles: **更完备的内容排版能力** :sparkles: ,同时提供 :sparkles: **更丰富的人性化功能** :sparkles: ,以减少使用者消耗的精力: 124 | 125 | 1. 本模板提供了印刷模式。该模式会根据学校的印刷规范自动在论文前置部分的必要位置插入空白页,无需人为处理编译后的文档,彻底避免出错。 126 | 127 | 2. 本模板提供了评审模式。该模式将隐去所有身份信息,包括导师信息以及独创性声明中的签名和日期,以便送审。 128 | 129 | 3. 本模板提供了查重模式。该模式将使用等尺寸的矩形框线替换论文中的所有图片,以在个人查重时尽可能保证数据安全性。 130 | 131 | 4. 本模板可显式提醒超页问题。规范对中文摘要和致谢的篇幅做出了限制,当这些内容超出了对应的篇幅限制时,模板将通过打印信息来提醒使用者。 132 | 133 | 5. 在“封面”和“英文扉页”中,本模板可根据输入内容的实际长度自动确定需生成的下划线数量,灵活性和适应性较强。 134 | 135 | 6. 除了“中英文摘要”和“目录”等必要的前置内容,本模板还完整提供了“图目录”、“表目录”、“主要符号表”、“缩略词表”等可选前置部分。 136 | 137 | 7. 本模板提供了更强大的表格排版能力,支持排版“跨页带附注表格”;模板封装了额外的伪码环境,允许使用者根据实际情况灵活调整伪码区域的左右缩进。 138 | 139 | 8. 本模板支持半自动生成形如`(1-1a)`的递增子公式编号。该编号常见于数学模型的各约束,虽然可使用`\tag{}`命令显示指定某条约束的编号,但该方式操作繁琐,且在需要调换或增删约束时容易漏改tag,造成子公式编号混乱。本模板可彻底避免这种情况。 140 | 141 | 9. 本模板优化了`.bst`文件的处理逻辑。它可自动确定参考文献编号的最大长度,从而调整文献条目的悬挂缩进距离,保证产生齐整的文献内容左边界。 142 | 143 | 10. 本模板尽可能使用LaTeX风格编写`.cls`文件,内容更易于理解。同时,该文件中留存了大量详细的注释内容,对有特殊需求或需要微调模板的使用者更加友好。 144 | 145 | 146 | ### 1.6 鸣谢 147 | 148 | 非常感谢**王稳**学长设计的[thesisuestc](https://github.com/bdebye/thesisuestc "王稳成电模板"),它一直是成电毕业生撰写学位论文的首选。也因为该模板,本人产生了自行设计学位论文模板的想法并将之付诸行动。在设计模板的过程中,本人也借鉴了**王稳**学长的部分设计思路,实属站在前人的肩膀上,才在磕磕绊绊中将模板迭代到现今的程度。 149 | 150 | 此外,非常感谢广大网友在各种网站(StackExchange,知乎、CSDN、博客园等)上分享的LaTeX相关知识。仅以我个人的能力,要设计出完备的LaTeX模板定然困难重重、周期漫长。 151 | 152 | 153 | ### 1.7 免责声明 154 | 155 | :warning: `tutorial.tex`文件中用于举例的各图片均来自于网络,如有侵权,请图片作者联系我进行删除。 156 | 157 | :warning: 另外,为了全平台的通用性,模板内置了一些必要的字体。虽然Windows系统本就安装了某些字体,但实际上它们并不可商用,本模板的使用者需要注意该问题。 158 | 159 | 160 | ### 1.8 项目统计 161 | 162 | 163 | 164 | 165 | 166 | Star History Chart 167 | 168 | 169 | 170 | 171 | ## 2. 导言区 172 | 173 | 模板的导言区只有两行: 174 | 1. `% !TEX Program = xelatex`在Texstudio中表示指定使用XeLaTeX编译该文档,对其他编辑器,可能需要手动设置编译引擎。 175 | 176 | 2. `\documentclass[<选项列表>]{DissertUESTC}`表示加载名为`DissertUESTC`的文档类,该文档类基于LaTeX的`book`类编写。此文档类可设置**八种**选项: 177 | 178 | 1. `print`/`nonprint`:该选项控制是否以印刷模式生成文档,印刷模式会自动在论文的前置部分添加必要的空白页,默认为`print`。 179 | 180 | 2. `doctor`/`prodoctor`/`intdoctor`/`master`/`promaster`/`intmaster`/`bachelor`/`doublebachelor`:该选项设置学位论文类型,分别对应学术学位博士、专业学位博士、International Doctor、学术学位硕士、专业学位硕士、International Master、学士学位以及双学士学位。默认为`doctor`。 181 | 182 | 3. [**新增**]`subfigsimple`/`subfigparens`:该选项用于调整正文中对子图标签进行引用生成的编号样式,`subfigsimple`对应样式为`1-1a`,`subfigparens`对应样式为`1-1(a)`,默认为`subfigparens`。 183 | 184 | 4. [**新增**]`draftfig`:LaTeX标准文档类提供的`draft`选项在排版草稿时不会生成交叉引用链接、超链接、书签,图片也会被替换为尺寸与之相同的方框+文本,并且会在超出表格、页面边界的位置标注粗框线。`draftfig`选项则仅将图片替换为方框+文本,而不修改标准`draft`选项涉及的其他内容。该选项的用处是便于在个人查重时隐去重要的实验结果数据,同时又不改变论文的整体排版。 185 | 186 | 5. [**新增**]`review`:该选项将以评审模式排版论文的“封面”及“中英文扉页”,届时所有有关个人身份的信息都将被隐去,包括导师信息以及独创性声明中的签名和日期。当然,也可以通过设置空参数来隐去对应信息,但`review`选项能在不调整命令参数内容的情况下实现同样的效果。 187 | 188 | 另外,模板支持将`review`的作用范围扩展到其他内容。例如,送审前需要抹除“致谢”和“成果”中的个人身份信息,使用者可将相应内容置于`\ifreview[<替换文本>]{<原内容>}`命令。若未指定该命令的第一项可选参数,`review`选项将以两字宽的水平空白替换原内容;否则,`review`选项将以指定的参数替换原内容。[**2025.03.06补充**] 189 | 190 | 6. [**新增**]`noreminder`:默认情况下,当**中文摘要**和**致谢**的篇幅超出规范的最大页数限制时,模板(**经过两次编译后**)将在对应内容的结尾显式打印提醒信息。若使用者在知悉这些内容的长度超出规范限制后仍希望保持原样,则可使用`noreminder`选项禁用提醒信息。(2025.02.22) 191 | 192 | 7. [**新增**]`cmmmath`/`timesmathnogreek`/`timesmath`:该选项用于选择渲染公式使用的字体。其中,`cmmmath`即对应LaTeX默认使用的Computer Modern Math,也是此类选项的默认值;`timesmathnogreek`指定使用Times New Roman来渲染公式中的英文字母和数字,但不影响希腊字母、手写体和双线体;`timesmath`则继续将希腊字母也设置成Times New Roman(个人觉得希腊字符用这个字体有些违和),手写体和双线体仍保持原样。 193 | 194 | 追求公式字体均为Times New Roman的使用者可采用`timesmath`选项。后两种选项均基于`mathspec`宏包实现,在本人有限的测试实践中,只有它能做到真正意义上的Times New Roman。(2025.01.31) 195 | 196 | :exclamation: 需要注意,Times New Roman字体原不支持在公式中排版粗斜体,所以后两种选项将使`\boldsymbol{}`命令失效。为了解决该问题,模板(仅在后两种选项下)对这条命令进行了粗糙的重定义,使之能像原版那样生成粗斜体符号。但是,由于本人技术水平不足,重定义后的`\boldsymbol{}`命令需要遵循一条额外的使用规则:**其输入参数必须是最原始的数学符号**。比如你想排版`\boldsymbol{\hat{\alpha}}`(这在`cmmmath`下是没有问题的),那此时正确的源码应该是`\hat{\boldsymbol{\alpha}}`,**即将`\boldsymbol{}`置于嵌套的最内层**。如若不然,模板轻则无法渲染出预期的数学符号(在`timesmath`选项下),重则直接报`! Internal error: bad native font flag in 'map_char_to_glyph'`错误(在`timesmathnogreek`选项下)。大概是涉及了一些底层问题,我也不懂,无法解决。 197 | 198 | :exclamation: 因为`mathspec`宏包本身的特性,使用Times New Roman作为公式字体需要付出更多精力。举个例子,你想排版`$f^t$`,那么你会发现`f`和`t`之间的间隔很小,两者发生了重叠。此时需要手动用`"`插入空格,即`$f^{"t}$`。因此,`timesmathnogreek`和`timesmath`选项均存在类似瑕疵,届时请仔细查阅`mathspec`的宏包文档。 199 | 200 | :four_leaf_clover: 其实,规范并未对公式字体作强制要求,即便审查系统识别到公式字体不是Times New Roman,它也只是抛出提醒而非错误,不会造成格式审查不通过。只是实在有太多人问怎么公式字体不是Times New Roman,既然有部分同学喜欢Times New Roman,那本模板秉承兼容并包的原则,将选择权交给使用者。 201 | 202 | 8. 另外,`algorithm2e`宏包的`vlined`和`boxruled`选项也可以在加载文档类时设置。 203 | 204 | ## 3. 论文封面及扉页 205 | 206 | 这部分主要通过模板提供的各项命令来填充论文封面和扉页中的内容。 207 | 208 | 送审时,只需将本小节涉及的相应命令参数留空,即可生成对应位置为空的封面和扉页。 :warning: 注意,参数留空表示`{}`,而非彻底删除。 209 | 210 | **当然,更便捷的方法是使用文档类的`review`选项,无需调整命令参数设置即可隐去与个人身份有关的信息**。若要隐去其他信息,则需要将对应参数留空(2024.12.15)。 211 | 212 | ### 3.1 保密标识(2025.01.07) 213 | 214 | 对涉密论文,可使用模板提供的`\setconfidential(<信息右上角与纸张左、上边界的距离,以逗号分隔>)[<字体格式>]{<密级>}{<保密期限>}`命令生成封面中的保密信息。 215 | 216 | 该命令提供了两项可选参数以在必要时调整此信息的`摆放位置`和`字体格式`,默认值分别为`18cm,2cm`和`\zihao{4}\bfseries`。该命令必须先于`\uestccover`命令使用才有效。 217 | 218 | :warning: **慎用保密标识!!!学生个人不应随意将论文定性为涉密**,需经过相应审批。 219 | 220 | ### 3.2 封面 221 | 222 | 要生成正确的论文封面,首先必须要在文档类中指定与之对应的`doctor`/`prodoctor`/`intdoctor`/`master`/`promaster`/`intmaster`/`bachelor`/`doublebachelor`选项。 223 | 224 | #### 3.2.1 “双学位学士”以外的论文封面 225 | 226 | 生成这些论文封面统一使用命令:`\uestccover[<学院名称排版风格>]{<论文题目>}{<学科专业>}{<学号>}{<作者姓名>}{<指导教师>}{<教师职称>}{<学院>}`。 227 | 228 | 经同学反馈,部分学院的全称较长,会导致封面中`学院名称`和前方的提词重叠。针对该问题,本模板重新调整了`\uestccover`中排版`学院名称`的部分(2024.12.10)。目前该命令默认将**过长**的`学院名称`缩放至与对应下划线相适宜。此外,该命令**新增**了一项可选参数`<学院名称排版风格>`,参数值**可以且仅可以**设置为`par`,此时该命令将不再缩放`学院名称`而是让过长的`学院名称`自动换行: 229 | 230 | * 对于研究生封面,`学院名称`所在的位置已经触及页面下边缘。为了让**过长**的`学院名称`顺利换行且不挤压下边界,*`par`选项会借用`论文题目`尾行与`学科专业`间的部分垂直间距*。说人话就是:为了保持规范的页边距,不得不减小上述垂直间距,这是无可奈何的。 231 | 232 | * 对于学士论文封面,其`学院`紧跟`论文题目`。在两行学院名称下,两者间的垂直间距也会缩小。具体结果可参见`tutorial.pdf`文档给出的两种排版样例。 233 | 234 | 切记, :warning: **最多完美支持两行**。如果电子科大真的存在名称超过两行的学院,那很抱歉,本模板实在无法为你生成完美的封面。尤其是学士学位论文,三行及以上的`学院名称`肯定会跟下方内容发生重叠;而对研究生学位论文,虽然不存在与下方文字重叠的问题,但学院名称的尾行也一定会突破页面边界,导致整个页面看起来上下很不协调。对这类用户,如果你们还愿意使用本模板撰写其他内容,最后可以使用学校官方提供的Word文档生成论文封面,然后替换。除此之外,我没有想到其他更方便、更不容易出错的方案。(2024.12.10) 235 | 236 | :warning: **注意:`\uestccover`命令的参数顺序是根据研究生学位论文封面而设计的,学士学位论文封面的内容排布与之不同。本科生务必按照命令要求的顺序填写,而不是看着封面示例pdf填写。** 237 | 238 | #### 3.2.2 “双学位学士”论文封面 239 | 240 | 生成双学位学士论文封面使用:`\uestccover{<论文题目>}{<学院>}{<第一专业>}{<第二专业>}{<学号>}{<作者姓名>}{<第一导师及职称>}{<第二导师及职称>}`。(2025.04.21) 241 | 242 | :warning: **注意,上述命令与其他论文类型所采用的定义不同,共有8项强制参数,无可选参数,且参数顺序和意义也有变化。用时务必仔细。** 243 | 244 | ### 3.3 中文扉页(仅研究生) 245 | 246 | 中文扉页需要填写的内容过多,超过了LaTeX对命令最多支持9个参数的限制,因此需要先设置各项宏: 247 | 248 | 1. `\ClsNum{<分类号>}`; 249 | 2. `\ClsLv{<密级>}`; 250 | 3. `\UDC{}`; 251 | 4. `\DissertationTitle{<题名>}`; 252 | 5. `\Author{<作者姓名>}`; 253 | 6. `\Supervisor{<指导教师>}{<职称>}{<单位名称>}{<单位地址>}`; 254 | 7. `\AssociateSupervisor{<副导师名称>}{<职称}>{<单位名称>}{<单位地址>}`,设置副导师信息,若无则注释即可; 255 | 8. `\DegLv{<申请学位级别>}`,该信息由文档类选项自动确定,需修改默认内容时使用,否则注释即可; 256 | 9. `\Major{<学科专业>}`; 257 | 10. `\Profield{专业学位领域代码}`,此为专业学位独有,学术学位用户注释即可; 258 | 11. `\Date{<论文提交日期>}{<论文答辩日期>}`; 259 | 12. `\Grant{<学位授予单位>}{<学位授予日期>}`; 260 | 13. `\Reviewer{<答辩委员为主席>}{<评阅人>}`; 261 | 262 | 然后使用`\uestczhtitlepage`生成中文扉页。 263 | 264 | `\uestczhtitlepage`命令可接受一项可选参数`[compress]`。在默认情况下(即不指定该可选参数,或指定为其他内容),如果遇到超长的导师`职称`,比如“教授级高级工程师”,本模板会以其实际长度进行排版,同时让其所在列的其他内容与之保持左对齐。这意味着`职称`的实际占位长度肯定突破了官方在规范中设置的`3.25cm`,尽管我个人觉得这样做并无不妥,但确实不确定是否合规。为此,模板为`\uestczhtitlepage`命令提供了`[compress]`可选参数,设置该参数后,长度超过`3.25cm`的`职称`将被自动压缩字宽,以严格适应学校官方为该内容预留的长度,实际效果参看`tutorial.tex`的编译结果。怎么选择,由你决定。**(2025.03.04新增)** 265 | 266 | ### 3.4 英文扉页(仅研究生) 267 | 268 | 生成英文扉页使用命令:`\uestcentitlepage{<文题>}{<专业>}{<学号>}{<作者>}{<导师>}{<副导师>}{<学院>}`。若无副导师,则将`<副导师>`参数留空`{}`即可。 269 | 270 | 271 | ## 4. 独创性声明(仅研究生) 272 | 273 | 生成独创性声明使用命令:`\declaration[<签名宽度>]{<日期>}{<作者签名图片1文件名>}[<作者签名图片2文件名>]{<导师签名图片文件名>}`。 274 | 275 | * 可选参数`<签名宽度>`能调整签名图片的显示宽度; 276 | * 可选参数`<作者签名图片2文件名>`用于为独创性声明中的第二处作者签字设置独立的签名图片,在字迹上与第一处签名进行区分,从而模拟手签的效果。若不指定该可选参数,则其值取`<作者签名图片1文件名>`。 277 | 278 | 所有签名图片需要放置在项目目录的`./fig/`子目录下。 279 | 280 | 该命令的设计初衷是允许强迫症用户在独创性声明页使用电子签,避免此页在印刷后扫描出来歪歪扭扭,替换到电子档里影响观感。 :exclamation: 不过,听说上传数据库的论文必须要手签,不知是否真如此严格。果真如此的话,只需要将全部强制参数留空`{}`,即可产生原始的独创性声明页。 281 | 282 | ## 5. 中英文摘要 283 | 284 | 生成中文摘要需先使用`\zhabstract`,然后继续追加内容即可,中文关键字用`\zhkeywords{<中文关键字>}`。 285 | 286 | 生成英文摘要需先使用`\enabstract`,然后继续追加内容即可,英文关键字用`\enkeywords{}`。 287 | 288 | ## 6. 目录、图目录、表目录、主要符号表、缩略词表 289 | 290 | 在文档中的对应位置使用对应命令即可生成各种目录和符号表: 291 | 292 | 1. 目录:`\tableofcontents`; 293 | 2. 图目录:`\listoffigures`; 294 | 3. 表目录:`\listoftables`; 295 | 4. 主要符号表:`\listofsymbs`命令+`symbtable`环境; 296 | * 在需要插入主要符号表的位置使用`\listofsymbs`命令生成主要符号表的章标题; 297 | * 紧接着使用`symbtable`环境排版主要符号表的内容。该环境基于`longtable`环境进行封装,依次接受两项可选参数:`\begin{symbtable}[<表格整体位置>](<主要符号表的列控制参数>)`。 298 | - 第一项可选参数用于设置`longtable`环境的可选参数,其默认值与`longtable`环境保持一致; 299 | - 第二项可选参数用于设置`longtable`环境的必选参数,其默认值设置为`p{3.5em} p{\linewidth-9em} p{3em}<{\centering}`。 300 | 301 | 若非必要,用户不应指定`symbtable`环境的可选参数。但若出于对排版美观性的考虑,可适当调整主要符号表各列的宽度。 :warning: 注意,按照学位论文撰写规范中的示例,**主要符号表有且仅有三列**。因此,切勿对第二项可选参数设置其他列数。 302 | 5. 排版缩略词表要相对复杂一些: 303 | * 先使用`\printnomenclature[<英文缩写宽度>](<中文全称宽度>)`,第一项可选参数控制**英文缩写**的列宽,默认为`5em`;第二项可选参数控制**中文全称**的列宽,默认为`7.5em`。 304 | 305 | * 然后在正文中出现缩略词的位置使用命令`\nomchn[<排序前缀>]{<缩略词>}{<英文全称>}{<中文全称>}`添加该缩略词条目。只需要添加一次。其中,`排序前缀`仅在对特定条目有特殊排序需求时才使用。具体细节参考[nomencl](https://mirrors.hust.edu.cn/CTAN/macros/latex/contrib/nomencl/nomencl.pdf)宏包对`\nomenclature`命令的参数说明。 306 | 307 | * 另外,本地用户需要先编译生成缩略词表的辅助文件,再编译完整文档才能获得预期的结果,教程参见[编译缩略词表](https://zhuanlan.zhihu.com/p/46442713 "本地缩略词表编译教程")或**下方操作截图** :point_down:。Overleaf用户则可以一键搞定,无需额外操作。 308 | 309 | * :bulb: 使用TeXstudio时,按下图中步骤配置用户命令:`makeindex %.nlo -s nomencl.ist -o %.nls | txs:///compile | makeindex %.nlo -s nomencl.ist -o %.nls | txs:///compile`,然后在工具栏执行该命令(一次),后续不再需要编译整个文档: 310 |

311 | 312 | 313 | 314 |

315 | 316 | 若缩略词表有更新,则只需要再执行上述步骤7、8、9即可,无需再次定义命令。 317 | 318 | * :bulb: 使用VSCode时,需要呼出终端并键入命令:`makeindex %.nlo -s nomencl.ist -o %.nls`,执行(两次),之后还需要编译整个文档: 319 |

320 | 321 |

322 | 323 | 若缩略词表有更新,则要再次在终端中键入上述命令并执行,接着再次编译整个文档。 324 | 325 | 326 | ## 7. 论文主体部分 327 | 328 | ### 7.1 写在最前面(2025.01.07) 329 | 330 | 曾经频繁收到同一类问题:**为什么文中的段间距过大?为什么行间公式前的空间过大?** 331 | 332 | 当论文中某节的内容接近填满页面且其后紧随几项标题时,LaTeX更倾向于在后续的标题前分页,并且纵向拉伸当前页内容的段间距,以实现纵向分散对齐,也就是很多人在问的现象。这并不是模板bug,而是LaTeX特性。 333 | 334 | 导致这种情况的“罪魁祸首”是用户的内容,常见于有图、表、行间公式、标题的页面,它们的高度很可能不是正文行距的整数倍,因此更容易造成这种现象。 335 | 336 | 如果你觉得Word从上到下直接堆叠内容,然后在页尾留下明显空白的处理方式更合你意,那就在文档开头使用`\raggedbottom`命令。顾名思义,其作用是允许参差不齐的页尾,也就是类似Word那种形式。 337 | 338 | 另外,行间公式前不应该有空行,`equation`环境会自行换行。加了空行,垂直间距自然就宽了。 339 | 340 | 341 | ### 7.2 各级标题 342 | 343 | 本模板基于`book`类实现,所以章标题需要使用`\chapter{<章标题>}`生成,其他各级标题依次为`\section{<节标题>}`、`\subsection{<子节标题>}`、`\subsubsection{<孙节标题>}`。 344 | 345 | 规范要求:**两个标题之间无正文时,第二个标题的段前距设置为0磅**。亲测LaTeX原本就会自动压缩连续标题间的垂直距离,且其采用的规则正是直接忽略下侧标题的段前距。 346 | 347 | 然而,在实际使用中有时会出现连续标题间的垂直间隔仍然较大的情况,这一现象本质上仍是因为[7.1节](#71-写在最前面20250107)提到的LaTeX排版特性。在默认情况下(即未使用`\raggedbottom`),当中间某页的实际内容并非恰好填满当页区域时,LaTeX会在该页的各段之间均匀插入额外的垂直空间,从而让整页的内容纵向对齐到页面的上下边界。正是这一特性在某些情况下导致了连续标题间的垂直距离过大。 348 | 349 | 理论上讲,中间页的内容越充足,段落数越多,LaTeX对连续标题的排版结果越接近规范要求。若确实因为页面内容不足等原因,造成连续标题间的垂直间隔过大,则用户需要手动特调。操作方式是在连续的标题之间用`\vspace*{}`插入负垂直距离来进行补偿,负距离的取值并不固定,取决于当页的内容情况,需要用户自行尝试。`tutorial.tex`中提供了有关示例。 350 | 351 | ### 7.3 图片 352 | 353 | 本模板使用`graphicx`和`subfig`宏包来处理插入的图片及子图。细节请参考`tutorial.tex`中的源码。 354 | 355 | 需要将待排版图片文件放入项目目录`./fig/`中。 356 | 357 | ### 7.4 表格 358 | 359 | **写在最开始**:由于一些实现上的问题,对于**确定非置底排版**的任何表格,用户在通过`table`环境的选项指定可选择的排版模式时, :warning: **不可提供`b`模式**,否则表格的上间距将过窄;反之,对于一页内**确定置底排版**的第一个表格,用户需要 :warning: **显式在选项中指定`b`或`!b`**,否则表格上间距将过宽。 360 | 361 | 若出现意料之外的情况,用户可以通过在`table`环境开始后和结束前的位置插入`\vspace*{<距离长度>}`来调整其上下间距,使之看起来协调。 362 | 363 | #### 7.4.1 普通表格 364 | 365 | 排版普通表格本身无需多言,使用`table`+`tabular`环境即可,但是要注意:生成三线表中的三条线分别需要使用`\toprule`、`\midrule`、`\bottomrule`,这样才符合研究生规范中对线粗的要求(`1.5`磅、`0.75`磅、`1.5`磅)。注意不要用`\hline`。而对于本科生,学士学位论文规范要求表格中的线粗统一为`0.5`磅。因此,在`bachelor`和`doublebachelor`选项下,`\toprule`、`\midrule`、`\bottomrule`和`\cmidrule`的线粗均设置为`0.5`磅 **(2025.05.01调整)**。 366 | 367 | 在需要为表格中的某些单元格添加水平框线时,应使用`\cmidrule[<线粗>](<修剪>){<起始列-终止列>}`而`\cline{<起始列-终止列>}`。后者似乎无法调整线粗,也无法对框线的端点进行修剪。 368 | 369 | * 前者的第一项可选参数允许用户设置框线粗细,其默认值在`bachelor`和`doublebachelor`选项下设置为了`0.5`磅,而在其他论文类型下设置为了`0.75`磅。如非必要,用户无需设置该可选参数; 370 | 371 | * 第二项可选参数允许用户对框线的端点进行修剪,当需要在视觉上分割同行的相邻框线时,该选项将很有用。有关第二项可选参数可取的值,建议用户查阅[booktabs](https://mirrors.sustech.edu.cn/CTAN/macros/latex/contrib/booktabs/booktabs.pdf)宏包的官方文档。 372 | 373 | #### 7.4.2 带附注表格 374 | 375 | 更需要说明的是该如何生成带附注的表格。本模板采用`threeparttable`宏包实现将表格中的附注内容顶格排版在表格底部: 376 | 377 | 1. 使用`\tnote{