├── .gitattributes ├── buaascseproposal.cls ├── content ├── abstract.tex ├── appendix.tex ├── info.tex ├── reference.tex ├── related_work.tex ├── sec_1.tex ├── sec_2.tex ├── sec_3.tex ├── title_page.tex └── toc.tex ├── figs ├── fig_1.png ├── fig_2.png └── fig_direction.png ├── gbt7714-author-year.bst ├── gbt7714-numerical.bst ├── gbt7714.sty ├── readme.md ├── refs.bib ├── report.tex ├── review.tex └── word ├── 附件3:北京航空航天大学计算机学院博士研究生学位论文_开题报告模板(供参考).docx └── 附件4:北京航空航天大学计算机学院博士研究生学位论文_文献综述模板(供参考).docx /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /buaascseproposal.cls: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%% 模板声明 %%%%%%%%%%%%%%%%% 2 | \NeedsTeXFormat{LaTeX2e}[2007/10/19] 3 | \ProvidesClass{buaascseproposal}[The LaTeX template for thesis proposal of SCSE, BUAA] 4 | \typeout{Document Class `buaascseproposal' v0.1 by ZKL (2022/07/01)} 5 | 6 | %%%%%%%%%%%%%%%%% 模板选项 %%%%%%%%%%%%%%%%% 7 | \newif\ifbuaaatmaster\buaaatmasterfalse 8 | \newif\ifbuaaatdoctor\buaaatdoctorfalse 9 | \newif\ifbuaaatproposal\buaaatproposalfalse 10 | \newif\ifbuaaatreview\buaaatreviewfalse 11 | \newif\ifbuaaatcolor\buaaatcolorfalse 12 | 13 | \DeclareOption{master}{\buaaatmastertrue} 14 | \DeclareOption{doctor}{\buaaatdoctortrue} 15 | \DeclareOption{proposal}{\buaaatproposaltrue} 16 | \DeclareOption{review}{\buaaatreviewtrue} 17 | \DeclareOption{color}{\buaaatcolortrue} 18 | 19 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexart}} 20 | \ProcessOptions\relax 21 | % 引用ctexart及基本设置 22 | \LoadClass[a4paper,UTF8,titlepage,zihao=-4]{ctexart} 23 | 24 | %%%%%%%%%% 宏包 %%%%%%%%%% 25 | % 全局通用宏包 26 | \RequirePackage{ifthen} 27 | 28 | % 数学相关和字体设置 29 | \RequirePackage{amsmath,amssymb,amsfonts,mathrsfs,bm,bbm} 30 | % \RequirePackage{mathptmx} 31 | \RequirePackage[amsmath,thmmarks,hyperref]{ntheorem} 32 | % \RequirePackage{txfonts} 33 | \RequirePackage{anyfontsize} 34 | 35 | \setmainfont{Times New Roman} 36 | \let\songti\relax 37 | \let\heiti\relax 38 | 39 | \setCJKfamilyfont{songti}[AutoFakeBold={1.25}]{SimSun} 40 | \setCJKfamilyfont{heiti}[AutoFakeBold={1.25}]{SimHei} 41 | \setCJKfamilyfont{hwxingkai}[AutoFakeBold={1.25}]{STXingkai} 42 | \setCJKfamilyfont{hwkaiti}[AutoFakeBold={1.25}]{STKaiti} 43 | 44 | \newcommand{\songti}{\CJKfamily{songti}} 45 | \newcommand{\heiti}{\CJKfamily{heiti}} 46 | \newcommand{\hwxingkai}{\CJKfamily{hwxingkai}} 47 | \newcommand{\hwkaiti}{\CJKfamily{hwkaiti}} 48 | 49 | \renewcommand{\textbf}[1]{{\bfseries\songti #1}} 50 | 51 | % 预定义的字体大小,以后用得着 52 | \newcommand{\xiaochuhao}{\fontsize{32pt}{\baselineskip}\selectfont} 53 | \newcommand{\yihao}{\fontsize{26pt}{39pt}\selectfont} 54 | \newcommand{\xiaoyi}{\fontsize{24pt}{36pt}\selectfont} 55 | \newcommand{\erhao}{\fontsize{22pt}{33pt}\selectfont} 56 | \newcommand{\xiaoer}{\fontsize{18pt}{27pt}\selectfont} 57 | \newcommand{\sanhao}{\fontsize{16pt}{24pt}\selectfont} 58 | \newcommand{\xiaosan}{\fontsize{15pt}{22.5pt}\selectfont} 59 | \newcommand{\sihao}{\fontsize{14pt}{21pt}\selectfont} 60 | \newcommand{\xiaosi}{\fontsize{12pt}{18pt}\selectfont} 61 | \newcommand{\wuhao}{\fontsize{10.5pt}{15.75pt}\selectfont} 62 | \newcommand{\xiaowu}{\fontsize{9pt}{13.5pt}\selectfont} 63 | \newcommand{\liuhao}{\fontsize{7.5pt}{11.25pt}\selectfont} 64 | 65 | % 只用于电子版 66 | \RequirePackage{color} 67 | \definecolor{dkgreen}{rgb}{0,0.6,0} 68 | \definecolor{gray}{rgb}{0.5,0.5,0.5} 69 | \definecolor{mauve}{rgb}{0.58,0,0.82} 70 | \definecolor{rowgray}{gray}{0.5} 71 | 72 | 73 | %%%%%%%%%% 学生信息 %%%%%%%%%% 74 | % 学校名称 75 | \gdef\buaaatuniversity{北京航空航天大学} 76 | \newcommand{\university}[1]{% 77 | \gdef\buaaatuniversity{#1} 78 | } 79 | % 学院 80 | \gdef\buaaatschool{计算机学院} 81 | \newcommand{\school}[1]{% 82 | \gdef\buaaatschool{#1} 83 | } 84 | % 专业 85 | \gdef\buaaatmajor{计算机应用技术} 86 | \newcommand{\major}[1]{% 87 | \gdef\buaaatmajor{#1} 88 | } 89 | % 方向 90 | \gdef\buaaatdirection{虚拟现实技术} 91 | \newcommand{\direction}[1]{% 92 | \gdef\buaaatdirection{#1} 93 | } 94 | % 专业 95 | \gdef\buaaatauthorname{作者姓名} 96 | \newcommand{\authorname}[1]{% 97 | \gdef\buaaatauthorname{#1} 98 | } 99 | % 专业 100 | \gdef\buaaattutor{导师} 101 | \newcommand{\tutor}[1]{% 102 | \gdef\buaaattutor{#1} 103 | } 104 | % 题目 105 | \gdef\buaaatthesistitle{论文题目} 106 | \newcommand{\thesistilte}[1]{% 107 | \gdef\buaaatthesistitle{#1} 108 | } 109 | % 学号 110 | \gdef\buaaatstuno{学生学号} 111 | \newcommand{\stuno}[1]{% 112 | \gdef\buaaatstuno{#1} 113 | } 114 | % 中文关键词 115 | \gdef\buaaatckeyword{中文关键词} 116 | \newcommand{\ckeyword}[1]{% 117 | \gdef\buaaatckeyword{#1} 118 | } 119 | % 英文关键词 120 | \gdef\buaaatekeyword{English key words} 121 | \newcommand{\ekeyword}[1]{% 122 | \gdef\buaaatekeyword{#1} 123 | } 124 | 125 | 126 | \ifbuaaatdoctor 127 | \gdef\buaaatdegree{博士} 128 | \else 129 | \gdef\buaaatdegree{硕士} 130 | \fi 131 | 132 | \ifbuaaatproposal 133 | \gdef\buaaatdoctype{开题报告} 134 | \else 135 | \gdef\buaaatdoctype{文献综述} 136 | \fi 137 | 138 | %%%%%%%%%% 页面设置 %%%%%%%%%% 139 | % 页面边距 140 | \RequirePackage{geometry} 141 | \newgeometry{ 142 | top=25.4mm, bottom=25.4mm, left=31.7mm, right=31.7mm, 143 | headsep=5mm, headheight=10mm, footskip=10mm, 144 | } 145 | \savegeometry{a4pagesize} 146 | 147 | \newgeometry{ 148 | top=25mm, bottom=25mm, left=30mm, right=30mm, 149 | headsep=5mm, headheight=10mm, footskip=10mm, 150 | } 151 | \savegeometry{custompagesize} 152 | 153 | \loadgeometry{a4pagesize} 154 | 155 | %%%%%%%%%% 其他间距 %%%%%%%%%% 156 | \renewcommand{\baselinestretch}{1.625} 157 | \setlength{\parindent}{2em} 158 | \setlength{\floatsep}{3pt plus 3pt minus 2pt} % 图形之间或图形与正文之间的距离 159 | \setlength{\abovecaptionskip}{10pt plus 1pt minus 1pt} % 图形中的图与标题之间的距离 160 | \setlength{\belowcaptionskip}{3pt plus 1pt minus 2pt} % 表格中的表与标题之间的距离 161 | 162 | % 页眉页脚 163 | \RequirePackage{fancyhdr} 164 | \newif\iff@nch@compatViii 165 | \let\f@nch@gbl\relax 166 | \let\f@nch@gbl\global 167 | \f@nch@compatViiitrue 168 | 169 | \fancypagestyle{frontmatter}{ 170 | \fancyhead{} 171 | \fancyfoot{} 172 | \pagenumbering{roman} 173 | 174 | \fancyhead[L]{\zihao{-5}\hwkaiti 175 | \buaaatthesistitle \vspace{1.5mm} 176 | } 177 | \fancyfoot[C]{ 178 | \hspace{1.5mm} 179 | \hwkaiti\zihao{-5}\buaaatuniversity\buaaatschool\buaaatdegree 学位论文\buaaatdoctype 180 | \hfill\hfill 181 | \songti\zihao{-5}$\cdot$\quad\thepage\quad$\cdot$ 182 | \hspace{1.5mm} 183 | } 184 | 185 | \renewcommand{\footrulewidth}{0.4bp} 186 | \renewcommand{\headrulewidth}{0.5bp} % 页眉线宽度 187 | } 188 | 189 | \fancypagestyle{mainmatter}{ 190 | \fancyhead{} 191 | \fancyfoot{} 192 | \setcounter{page}{1} 193 | \pagenumbering{arabic} 194 | 195 | \fancyhead[L]{\zihao{-5}\hwkaiti 196 | \buaaatthesistitle \vspace{1.5mm} 197 | } 198 | \fancyfoot[C]{ 199 | \hspace{1.5mm} 200 | \hwkaiti\zihao{-5}\buaaatuniversity\buaaatschool\buaaatdegree 学位论文\buaaatdoctype 201 | \hfill\hfill 202 | \songti\zihao{-5}$\cdot$\quad\thepage\quad$\cdot$ 203 | \hspace{1.5mm} 204 | } 205 | 206 | \renewcommand{\footrulewidth}{0.4bp} 207 | \renewcommand{\headrulewidth}{0.5bp} % 页眉线宽度 208 | } 209 | 210 | \fancypagestyle{plain}{ 211 | \pagestyle{fancy} 212 | } 213 | 214 | 215 | %%%%%%%%%% 封面 %%%%%%%%%% 216 | \RequirePackage{booktabs} 217 | \RequirePackage{titling} 218 | \RequirePackage{makecell} 219 | \renewcommand*\maketitle{ 220 | \begin{titlepage} 221 | \linespread{1.2} 222 | \vspace*{\fill} 223 | \begin{center} 224 | {\xiaoer \bfseries \hwkaiti \buaaatuniversity \buaaatschool \par} 225 | \vspace{3cm} 226 | {\yihao \bfseries \heiti \buaaatdegree 研究生学位论文 \par \buaaatdoctype \par} 227 | \vspace{4cm} 228 | {\xiaosan \hwkaiti \linespread{1.5} 229 | \begin{tabular}{lp{8cm}<{\centering}} % 8cm是单元格宽度,如果希望换行垂直居中则改为lm{8cm}<{\centering} 230 | 论文题目: & \buaaatthesistitle \\ \cline{2-2} 231 | 专~~~~~~~~业: & \buaaatmajor \\ \cline{2-2} 232 | 研究方向: & \buaaatdirection \\ \cline{2-2} 233 | 研~~究~~生: & \buaaatauthorname \\ \cline{2-2} 234 | 学~~~~~~~~号: & \buaaatstuno \\ \cline{2-2} 235 | 指导教师: & \buaaattutor \\ \cline{2-2} 236 | \end{tabular} \par} 237 | \vspace{3cm} 238 | {\sanhao \heiti \buaaatuniversity \buaaatschool \par 239 | \heiti \@date \par } 240 | \end{center} 241 | \vspace{\fill} 242 | \end{titlepage} 243 | } 244 | 245 | %%%%%%%%%% cross reference %%%%%%%%%% 246 | \RequirePackage{hyperref} 247 | \ifbuaaatcolor 248 | \hypersetup{colorlinks, linkcolor=blue} 249 | \else 250 | \hypersetup{hidelinks} 251 | \fi 252 | \hypersetup{ 253 | bookmarksnumbered, 254 | bookmarksopen, 255 | pdftitle={\buaaatthesistitle}, 256 | pdfauthor={\buaaatauthorname}, 257 | pdfsubject={\buaaatuniversity \buaaatschool \buaaatdegree 研究生学位论文\buaaatdoctype}, 258 | pdfcreator={LaTeXed~By~BUAA}, 259 | } 260 | 261 | \RequirePackage{bookmark} 262 | 263 | %%%%%%%%%% 参考文献 %%%%%%%%%% 264 | \RequirePackage[sort,compress]{natbib} 265 | \bibpunct{[}{]}{,}{n}{}{} 266 | \setlength{\bibsep}{0pt} 267 | \newcommand{\upcite}[1]{\textsuperscript{\cite{#1}}} 268 | 269 | \RequirePackage{gbt7714} 270 | \citestyle{numerical} 271 | 272 | 273 | %%%%%%%%%% 交叉引用 %%%%%%%%%% 274 | \RequirePackage[noabbrev,capitalize,nameinlink]{cleveref} 275 | \crefname{equation}{式}{式} 276 | \crefname{figure}{图}{图} 277 | \crefname{table}{表}{表} 278 | \crefname{page}{页}{页} 279 | \crefname{chapter}{章}{章} 280 | \crefname{section}{节}{节} 281 | \crefname{appendix}{附录}{附录} 282 | \crefname{theorem}{定理}{定理} 283 | \crefname{lemma}{引理}{引理} 284 | \crefname{corollary}{推论}{推论} 285 | \crefname{proposition}{命题}{命题} 286 | \crefname{definition}{定义}{定义} 287 | \crefname{example}{例}{例} 288 | \crefname{algorithm}{算法}{算法} 289 | \crefname{listing}{列表}{列表} 290 | \crefname{line}{行}{行} 291 | 292 | \crefformat{chapter}{#2第#1章#3} 293 | \crefformat{section}{#2#1#3} 294 | \crefformat{subsection}{#2第#1节#3} 295 | \crefformat{subsubsection}{#2第#1节#3} 296 | 297 | \crefrangeformat{chapter}{#3第#1章#4至#5第#2章#6} 298 | \crefrangeformat{section}{#3第#1节#4至#5第#2节#6} 299 | \crefrangeformat{subsection}{#3第#1节#4至#5第#2节#6} 300 | \crefrangeformat{subsubsection}{#3第#1节#4至#5第#2节#6} 301 | 302 | \crefmultiformat{chapter}{#2第#1章#3}{和#2第#1章#3}{,#2第#1章#3}{和#2第#1章#3} 303 | \crefmultiformat{section}{#2第#1节#3}{和#2第#1节#3}{,#2第#1节#3}{和#2第#1节#3} 304 | \crefmultiformat{subsection}{#2第#1节#3}{和#2第#1节#3}{,#2第#1节#3}{和#2第#1节#3} 305 | \crefmultiformat{subsubsection}{#2第#1节#3}{和#2第#1节#3}{,#2第#1节#3}{和#2第#1节#3} 306 | 307 | \newcommand{\crefpairconjunction}{~和~} 308 | \newcommand{\crefmiddleconjunction}{, } 309 | \newcommand{\creflastconjunction}{~和~} 310 | \newcommand{\crefpairgroupconjunction}{~和~} 311 | \newcommand{\crefmiddlegroupconjunction}{, } 312 | \newcommand{\creflastgroupconjunction}{~和~} 313 | \newcommand{\crefrangeconjunction}{~至~} 314 | 315 | 316 | %%%%%%%%%% 标题 %%%%%%%%%% 317 | \newcommand{\contentname}{目~~~~~~~~录} 318 | \newcommand{\figurecontentname}{图~~~~~~~~目} 319 | \newcommand{\tablecontentname}{表~~~~~~~~目} 320 | 321 | \renewcommand{\contentsname}{\centerline{\contentname}} 322 | \renewcommand{\listfigurename}{\centerline{\figurecontentname}} 323 | \renewcommand{\listtablename}{\centerline{\tablecontentname}} 324 | \renewcommand{\bibname}{主要参考文献} 325 | \renewcommand{\refname}{\hspace*{\fill} \bibname \hspace*{\fill}} 326 | 327 | \renewcommand{\figurename}{图} 328 | \renewcommand{\tablename}{表} 329 | 330 | % 格式 331 | \ctexset{ 332 | section={ 333 | format={\zihao{3}\heiti}, 334 | aftername={\quad}, 335 | beforeskip={.5\baselineskip}, 336 | afterskip={.25\baselineskip}, 337 | }, 338 | subsection={ 339 | format={\zihao{-3}\heiti}, 340 | aftername={\quad}, 341 | beforeskip={.25\baselineskip}, 342 | afterskip={.25\baselineskip}, 343 | }, 344 | subsubsection={ 345 | format={\zihao{4}\heiti}, 346 | aftername={\quad}, 347 | beforeskip={.25\baselineskip}, 348 | afterskip={.25\baselineskip}, 349 | }, 350 | section/break={}, 351 | paragraph={ 352 | % format={\bfseries \zihao{-4}\songti}, 353 | beforeskip={.0\baselineskip}, 354 | indent={2em} 355 | } 356 | } 357 | 358 | 359 | %%%%%%%%% 公式 %%%%%%%%%% 360 | \newcommand{\splitatcommas}[1]{% 361 | \begingroup 362 | \begingroup\lccode`~=`, \lowercase{\endgroup 363 | \edef~{\mathchar\the\mathcode`, \penalty0 \noexpand\hspace{0pt plus 1em}}% 364 | }\mathcode`,="8000 #1% 365 | \endgroup 366 | } 367 | 368 | %%%%%%%%% 公式 %%%%%%%%%% 369 | \newcommand{\bfemph}[1]{\textbf{#1}} 370 | % \renewcommand{\emph}[1]{\bfemph{#1}} 371 | 372 | % 取消强制换页 373 | % \renewcommand{\clearpage}{\par} 374 | 375 | %%%%%%%%%% 目录 %%%%%%%%%% 376 | \RequirePackage{titletoc} 377 | 378 | % 表目录图目录的格式设置 379 | % 表目录与图目录数字前增加“表”与“图”字,并且使目录行间距与section行间距一致 380 | \titlecontents{figure}[0pt]{\vspace{0.15\baselineskip}\songti\zihao{-4}}{\makebox[3em][l]{图~\thecontentslabel\quad}}{} 381 | {\hspace{.5em}\titlerule*[4pt]{$\cdot$}\contentspage}[\vspace{0.15\baselineskip}] 382 | \titlecontents{table}[0pt]{\vspace{0.15\baselineskip}\songti\zihao{-4}}{\makebox[3em][l]{表~\thecontentslabel\quad}}{} 383 | {\hspace{.5em}\titlerule*[4pt]{$\cdot$}\contentspage}[\vspace{0.15\baselineskip}] 384 | 385 | \DeclareMathOperator*{\Bigcdot}{\scalerel*{\cdot}{\bigodot}} 386 | \titlecontents{section}[0em]{\bfseries \songti\zihao{-4}}{\thecontentslabel\quad}{} 387 | {\hspace{.5em}\titlerule*[5pt]{$\boldsymbol{\cdot}$}{\zihao{-4}\contentspage}}[\vspace{0.15\baselineskip}] 388 | \titlecontents{subsection}[2em]{\vspace{-0.2\baselineskip}\songti\zihao{-4}}{\thecontentslabel\quad}{} 389 | {\hspace{.5em}\titlerule*[4pt]{$\cdot$}{\zihao{-4}\contentspage}}[\vspace{0.15\baselineskip}] 390 | \titlecontents{subsubsection}[4em]{\vspace{-0.2\baselineskip}\songti\zihao{-4}}{\thecontentslabel\quad}{} 391 | {\hspace{.5em}\titlerule*[4pt]{$\cdot$}{\zihao{-4}\contentspage}}[\vspace{0.15\baselineskip}] 392 | 393 | 394 | %%%%%%%%%% 图 %%%%%%%%%% 395 | \RequirePackage{graphicx} 396 | \graphicspath{{./figs/}{./fig/}{./figures/}{./figure/}} 397 | \RequirePackage{pifont} % “秘级”后的五角星 398 | \RequirePackage{overpic} 399 | \RequirePackage{subfigure} 400 | \RequirePackage{booktabs} 401 | \RequirePackage{caption} 402 | \DeclareCaptionFont{kai}{\hwkaiti} 403 | \captionsetup[table]{labelsep=quad, font=kai} 404 | \captionsetup[figure]{labelsep=quad, font=kai} 405 | \captionsetup[figure]{ 406 | position=bottom, margin=0mm, font=kai, 407 | aboveskip=6pt, belowskip=-15pt, justification=centerlast} 408 | \captionsetup[table]{ 409 | position=top, margin=0mm, font=kai, 410 | aboveskip=0pt, belowskip=0pt, justification=centerlast} 411 | 412 | %%%%%%%%%% 表 %%%%%%%%%% 413 | \RequirePackage{makecell} 414 | \RequirePackage{colortbl} 415 | \RequirePackage{enumerate} 416 | \RequirePackage{ulem} 417 | 418 | % 长表格 419 | \RequirePackage{longtable} 420 | 421 | % 表格中的行合并 422 | \RequirePackage{multirow} 423 | 424 | % 重定义table/tabular/tabularx环境,使表格内为5号字 425 | % TODO(huxuan): 支持 longtable 426 | \let\oldtable\table 427 | \let\endoldtable\endtable 428 | \renewenvironment{table}[1][!ht] 429 | {\renewcommand{\arraystretch}{1} 430 | \oldtable[#1] \zihao{5}} 431 | {\renewcommand{\arraystretch}{1} 432 | \endoldtable} 433 | 434 | % \let\oldtabular\tabular 435 | % \let\endoldtabular\endtabular 436 | % \renewenvironment{tabular}[1][h!] 437 | % {\renewcommand{\arraystretch}{1.5} 438 | % \oldtabular[#1] \zihao{5}} 439 | % {\renewcommand{\arraystretch}{1} 440 | % \endoldtabular} 441 | 442 | \RequirePackage{tabularx} 443 | % \let\oldtabularx\tabularx 444 | % \let\endoldtabularx\endtabularx 445 | % \renewenvironment{tabularx}[2] 446 | % {\renewcommand{\arraystretch}{1.5} 447 | % \zihao{5}\oldtabularx{#1}{#2}} 448 | % {\renewcommand{\arraystretch}{1} 449 | % \endoldtabularx} 450 | 451 | %%%%%%%%%% 列表 %%%%%%%%%% 452 | \RequirePackage{enumitem} 453 | \setlist{noitemsep} 454 | \setlist[1,2]{labelindent=\parindent} 455 | \setlist[enumerate,1]{wide, label=(\arabic*), labelsep=0pt, noitemsep} 456 | \setlist[enumerate,2]{label=\arabic*)} 457 | \setlist{ 458 | topsep=0pt, 459 | itemsep=0pt, 460 | partopsep=0pt, 461 | parsep=\parskip, 462 | } 463 | 464 | %%%%%%%%%% 交叉引用 %%%%%%%%%% 465 | \RequirePackage{tcolorbox} 466 | \RequirePackage{xcolor} 467 | \definecolor{Gray}{gray}{0.85} 468 | \definecolor{LightCyan}{rgb}{0.88,1,1} 469 | \definecolor{bg}{rgb}{0.95,0.95,0.95} 470 | 471 | % \RequirePackage{minted} 472 | % \setminted{ 473 | % frame=single, 474 | % bgcolor=bg, 475 | % breaklines=true, 476 | % breakanywhere=true, 477 | % linenos, 478 | % tabsize=4, 479 | % tabcolor=black, 480 | % encoding=utf8 481 | % } 482 | 483 | 484 | %%%%%%%%%% 附录 %%%%%%%%%% 485 | \RequirePackage[toc,page]{appendix} 486 | 487 | \renewcommand{\appendix}{ 488 | \newpage 489 | \setcounter{section}{0} 490 | \setcounter{subsection}{0} 491 | 492 | \renewcommand{\tablename}{附表} 493 | \renewcommand{\figurename}{附图} 494 | \renewcommand{\thesection}{附录 \Alph{section}} 495 | } 496 | 497 | %%%%%%%%%% 摘要 %%%%%%%%%% 498 | % 中文摘要 499 | \newcommand{\cabstractname}{摘~~~~~~~~要} 500 | \newenvironment{cabstract}{% 501 | \vspace{5ex} 502 | \centerline{\heiti\zihao{3} \cabstractname} 503 | \vspace{5ex} 504 | \setlength{\parindent}{24bp} 505 | }{% 506 | \vskip 21bp 507 | {\heiti\zihao{-4} 关键词:} \buaaatckeyword 508 | } 509 | 510 | % 英文摘要 511 | \newcommand{\eabstractname}{Abstract} 512 | \newenvironment{eabstract}{% 513 | \vspace{5ex} 514 | \centerline{\bfseries \zihao{3} \eabstractname} 515 | \vspace{5ex} 516 | \setlength{\parindent}{24bp} 517 | }{% 518 | \vskip 21bp 519 | {\bfseries \zihao{-4} Key words: } \buaaatekeyword 520 | } 521 | -------------------------------------------------------------------------------- /content/abstract.tex: -------------------------------------------------------------------------------- 1 | 2 | \addcontentsline{toc}{section}{\cabstractname} 3 | \begin{cabstract} 4 | 此处是摘要 5 | \end{cabstract} 6 | 7 | 8 | \addcontentsline{toc}{section}{\eabstractname} 9 | \begin{eabstract} 10 | Please put your abstract here. 11 | \end{eabstract} -------------------------------------------------------------------------------- /content/appendix.tex: -------------------------------------------------------------------------------- 1 | \appendix 2 | 3 | 4 | 5 | \section{儿童肌炎评定量表(CMAS-14)} \label{appendix_cmas} 6 | 7 | \begin{table}[h] 8 | \zihao{7} 9 | \centering 10 | \caption{儿童肌炎评定量表(CMAS-14)} 11 | \label{cmas_14} 12 | \begin{tabular}{|p{0.5\textwidth}||p{0.5\textwidth}|} 13 | \hline 14 | \textbf{1.抬头(这里指的是平卧位时抬头)} & \textbf{8.举手维持(将手腕举过头顶,并维持)}\\ \cline{1-2} 15 | 0=不能 & 0=不能 \\ 16 | 1=维持1$\sim$9秒 & 1=1$\sim$9秒\\ 17 | 2=10$\sim$29秒 & 2=10$\sim$29秒 \\ 18 | 3=30$\sim$59秒 & 3=30$\sim$59秒 \\ 19 | 4=60$\sim$119秒 & 4=≥60秒\\ 20 | 5=≥2分钟 & \\ \cline{2-2} 21 | & \cellcolor{LightCyan} \textbf{9.坐下(从站立位转成坐在地上)} \\ \cline{1-2} 22 | \textbf{2.腿/触物(测试者的手放在患儿两只脚的高度)} & 0=不能 即便允许使用椅子作为帮扶也害怕 \\ \cline{1-1} 23 | 0=不能将腿抬离桌面 & 1=非常困难:需要扶椅子才能坐下,如果不扶椅子不愿意尝试 \\ 24 | 1=可以将腿抬离桌面不能触及测试者的手 & 2=有点困难:坐下时不需要扶椅子,但仍会有点困难,会缓慢小心地坐下,不能完全平衡自己的身体 \\ 25 | 2=可以将腿抬高至触及测试者的手 & 3=没有困难:没有多余的动作 \\ 26 | & \\ \cline{1-2} 27 | \textbf{3.伸腿/推持(抬至患儿一只脚的高度)} & \textbf{10.四肢动作} \\ \cline{1-2} 28 | 0=不能 & 0=俯卧时不能用手和膝关节把身体撑起 \\ 29 | 1=1$\sim$9秒& 1=可以撑起,但不能保持跪姿,更不能抬头直视前方 \\ 30 | 2=10$\sim$29秒 & 2=可以保持跪姿,并且能够背部挺直抬头直视前方,但不能向前爬 \\ 31 | 3=30$\sim$59秒 & 3=可以保持跪姿,并且能抬头向前爬 \\ 32 | 4=60$\sim$119秒 & 4=可以保持跪姿,并且抬起伸展一条腿时能保持平衡 \\ 33 | 5=≥2分钟& \\ \cline{2-2} 34 | & \cellcolor{LightCyan} \textbf{11.起身(从跪到站)} \\ \cline{1-2} 35 | \cellcolor{LightCyan} \textbf{4.翻身(仰卧至俯卧)} & 0=不能 即便允许使用椅子作为帮扶也不行 \\ \cline{1-1} 36 | 0=翻身困难,只能轻微或者根本不能将屈曲的右臂压拉到躯干下 & 1=非常困难 需要扶椅子才能站起来 \\ 37 | 1=翻身尚容易,可以将右臂拉到躯干下方,但不能完全将压在躯干下的右臂拉出,因此不能摆出俯卧姿势 & 2=中等困难 可以不用扶着椅子站起来,但需要按着膝盖、大腿或者地板才能站起 \\ 38 | 2=翻身很容易,可以完全摆出俯卧姿势,但将右臂从躯干下拉出时有些困难 & 3=轻度困难 不需要协助就可以站起来,但仍有点困难\\ 39 | 3=轻松翻身,胳膊运动灵活 & 4=没有困难\\ 40 | & \\ \cline{1-2} 41 | \textbf{5.仰卧起坐(每项完成得1分,共6分)} & \cellcolor{LightCyan} \textbf{12.从椅上坐起}\\ \cline{1-2} 42 | 双手掌紧贴大腿,平衡辅助 & 0=完全不能:即便用手按着椅边也不能坐起 \\ 43 | 双手臂交叉胸前,平衡辅助 & 1=非常困难:需要用手按着椅边才能坐起 \\ 44 | 双手握紧置于枕后,平衡辅助 & 2=中等困难 可以不用手按着椅边坐起,但需要用手按着膝或腿才能坐起 \\ 45 | 双手掌紧贴大腿,无平衡辅助 & 3=轻度困难:不需协助就可以坐起,但仍会有点困难 \\ 46 | 双手臂交叉胸前,无平衡辅助 & 4=没有困难\\ 47 | 双手握紧置于枕后,无平衡辅助 & \\ \cline{2-2} 48 | & \textbf{13.踏上凳子} \\ \cline{1-2} 49 | \cellcolor{LightCyan} \textbf{6.坐起(仰卧到端坐)} & 0=不能 \\ \cline{1-1} 50 | 0=不能独立坐起 & 1=非常困难 需要用手扶着测试桌/测试者的手才能踏上 \\ 51 | 1=相当困雄,非常缓慢费力,几乎不能坐起 & 2=有点困难 可以不用手扶测试桌/测试者的手就能踏上,但需要手按着膝或腿才能踏上 \\ 52 | 2=有点困难,能够坐起,但是有点缓慢费力 & 3=不需要协助就能完成 \\ 53 | 3=没有困难& \\ \cline{2-2} 54 | & \cellcolor{LightCyan} \textbf{14.拾物} \\ \cline{1-2} 55 | \textbf{7.举起/伸直手臂} & 0=不能弯腰捡起地上的铅笔 \\ \cline{1-1} 56 | 0=不能将手腕举至肩锁关节平面 & 1=能但非常困难 很大程度上依赖于膝盖和大腿的支撑\\ 57 | 1=可以举至肩锁关节平面,但低于头顶 & 2=能但有些困雄 至少得扶着膝或腿才能检起,并且动作有些慢\\ 58 | 2=可以举过头顶,但不能将肘关节完全伸直 & 3=不需要协助就能完成 \\ 59 | 3=可以举过头顶,并能将肘关节完全伸直 & \\ \hline 60 | \end{tabular} 61 | \end{table} 62 | -------------------------------------------------------------------------------- /content/info.tex: -------------------------------------------------------------------------------- 1 | \thesistilte{\textcolor{red}{请在此处写各位同学的论文题目}} 2 | \title{\buaaatthesistitle} 3 | \authorname{研究生姓名} 4 | \author{\buaaatauthorname} 5 | 6 | \tutor{导师姓名} 7 | \stuno{XXXX} 8 | \major{专业名称} 9 | \direction{研究方向} 10 | 11 | \ckeyword{姿态估计、动作分割、行为识别、动作质量评估} 12 | \ekeyword{Pose estimation, Action localization, Action recognition, Action quality assessment} 13 | 14 | \hypersetup{ 15 | bookmarksnumbered, 16 | bookmarksopen, 17 | pdftitle={\buaaatthesistitle}, 18 | pdfauthor={\buaaatauthorname}, 19 | pdfsubject={\buaaatuniversity \buaaatschool \buaaatdegree 研究生学位论文\buaaatdoctype}, 20 | pdfcreator={LaTeXed~By~BUAA}, 21 | } -------------------------------------------------------------------------------- /content/reference.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \nocite{*} 4 | \phantomsection 5 | \addcontentsline{toc}{section}{\bibname} 6 | \bibliography{refs} 7 | -------------------------------------------------------------------------------- /content/related_work.tex: -------------------------------------------------------------------------------- 1 | \section{研究方向概述} 2 | 简要介绍论文研究方向主要研究分支,每个分支做了哪方面的研究 3 | 4 | 5 | \begin{figure}[h] 6 | \centering 7 | \includegraphics[width=\linewidth]{fig_direction} 8 | \caption{碰撞检测算法分类} 9 | \end{figure} 10 | 11 | \section{国内外研究现状} 12 | 详细介绍各分支的理论、方法或技术研究现状 13 | 14 | \subsection{XXX研究现状} 15 | XXX研究现状 16 | \subsection{XXX研究现状} 17 | XXX研究现状 18 | \subsection{XXX研究现状} 19 | XXX研究现状 20 | \section{研究现状总结与分析} 21 | \subsection{论文研究领域存在的问题} 22 | 论文研究领域存在哪些尚未解决的问题 23 | \subsection{论文研究领域的发展趋势} 24 | 论文研究方向的未来发展趋势 25 | \subsection{研究现状分析结论} 26 | 描述哪些问题是本论文需要解决的 27 | -------------------------------------------------------------------------------- /content/sec_1.tex: -------------------------------------------------------------------------------- 1 | \section{论文研究背景与意义} 2 | 3 | \subsection{论文选题背景} 4 | 参考文献引用如下\upcite{yan2018spatial,wu2020comprehensive,hu2015,jdmsugg,lovell1999development} 5 | 6 | \textbf{\color{red}(可以从如下几个方面进行论述:1、学术界理论研究背景,2、项目研究背景,3、实际应用背景)} 7 | 8 | \subsection{研究现状概述} 9 | 10 | 针对本论文遇到的问题,XXX等人的方法存在XXXX问题。 11 | \textbf{\color{red} 12 | (用2页左右的篇幅,对文献综述所罗列的研究现状进行总结和分析,并列举与论文密切相关的几项工作)} 13 | 14 | 15 | \subsection{研究目标与创新性} 16 | 17 | \textbf{\color{red}(描述论文的目标以及成果,目标是解决什么问题/探索新的方向,成果可以是以下几种形式:1发表论文、2申请专利、3获得软件著作权、4开发装置、5开发软件模块或者系统、6构建一个数据集)} 18 | 19 | 针对XXX领域的不足,研究XXXX方法/开发XXX系统,解决XXX问题或者:探索XXX领域某方面的新思路。研究成果计划发表于XXX会议、申请XXX项发明专利、获得XXX项软件著作权、开发的软件系统将用于XXX、构建的数据集将在学术界公开。 20 | 21 | \textbf{\color{red}(描述论文工作的创新性,与现有研究和工程方案的区别,侧重于理论方法研究的论文可以写方法思路的创新性,侧重于工程实践的论文,可以写系统方案、解决问题的新思路)} 22 | 23 | 论文将引入XXX思路、改进XXX方法、探索XXX理论,从而提高XXX准确率,实现XXX效果、解决XXX问题。 24 | -------------------------------------------------------------------------------- /content/sec_2.tex: -------------------------------------------------------------------------------- 1 | \section{研究内容与技术路线} 2 | 3 | \textbf{\color{red}(用一段文字+图说明论文研究内容的设置情况,以及研究内容间的逻辑关系。逻辑关系可以是并列、先后,总分等)} 4 | 5 | 针对上述问题,本论文的工作分为如下几个方面,如\cref{fig_1}所示。首先研究XXX,在此基础上研究XXX,基于上述研究成果实现XXX。 6 | 7 | \begin{figure}[h] 8 | \centering 9 | \includegraphics[width=0.4\linewidth]{fig_1.png} 10 | \caption{研究内容关系示意图} 11 | \label{fig_1} 12 | \end{figure} 13 | 14 | \textbf{\color{red}(下面分别介绍每个研究内容)} 15 | 16 | 17 | \subsection{研究内容一:xxxxxxxxx} 18 | 19 | \subsection{研究内容二:xxxxxxxxx} 20 | 21 | \subsection{研究内容三:xxxxxxxxx} 22 | 23 | \textbf{\color{red}(下面通过图文的形式说明论文技术方案)} 24 | 25 | \subsection{XXXXX方法技术路线} 26 | 27 | 本文使用XXX方法技术路线,如\cref{fig_2}所示。 28 | 29 | \begin{figure}[h] 30 | \centering 31 | \includegraphics[width=0.6\linewidth]{fig_2.png} 32 | \caption{本论文拟构建的物理仿真模型示意图} 33 | \label{fig_2} 34 | \end{figure} 35 | 36 | \subsection{XXXXX方法技术路线} 37 | 38 | \subsection{XXXXX方法技术路线} -------------------------------------------------------------------------------- /content/sec_3.tex: -------------------------------------------------------------------------------- 1 | \section{论文工作安排计划} 2 | 3 | \subsection{工作进度安排} 4 | \subsection{论文工作基础} 5 | 6 | 7 | \textbf{\color{red}(在以下几个方面选择几个方面进行说明:1)收集或者准备的数据集、2)完成或者正在进行的调研工作;3)已完成或者正在进行的理论推导、4)已经完成或者正在进行的开发系统或软件模块、5)正在进行或者完成的实验与实验结果)} 8 | 9 | \subsection{可能遇到的问题以及解决途径} 10 | \textbf{\color{red} 11 | (描述论文可能遇到理论证明、工程开发、核心算法不足、实验数据等方面困难以及应对措施)} -------------------------------------------------------------------------------- /content/title_page.tex: -------------------------------------------------------------------------------- 1 | \pdfbookmark[0]{\buaaatthesistitle}{cover} 2 | \maketitle 3 | 4 | \linespread{1.5} 5 | \pagestyle{frontmatter} 6 | -------------------------------------------------------------------------------- /content/toc.tex: -------------------------------------------------------------------------------- 1 | \newpage 2 | \phantomsection 3 | \pdfbookmark[section]{\contentname}{contents} 4 | \tableofcontents 5 | \newpage 6 | \phantomsection 7 | \pdfbookmark[section]{\figurecontentname}{lof} 8 | \listoffigures 9 | \newpage 10 | \phantomsection 11 | \pdfbookmark[section]{\tablecontentname}{lot} 12 | \listoftables 13 | \newpage 14 | 15 | \pagestyle{mainmatter} -------------------------------------------------------------------------------- /figs/fig_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhouKanglei/BUAAProposal/8451ad39b227273076d2d6dca8879a30366bdc54/figs/fig_1.png -------------------------------------------------------------------------------- /figs/fig_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhouKanglei/BUAAProposal/8451ad39b227273076d2d6dca8879a30366bdc54/figs/fig_2.png -------------------------------------------------------------------------------- /figs/fig_direction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhouKanglei/BUAAProposal/8451ad39b227273076d2d6dca8879a30366bdc54/figs/fig_direction.png -------------------------------------------------------------------------------- /gbt7714-author-year.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-author-year.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,authoryear') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | INTEGERS { 24 | uppercase.name 25 | max.num.authors 26 | period.between.author.year 27 | sentence.case.title 28 | link.title 29 | title.in.journal 30 | show.mark 31 | show.medium.type 32 | slash.for.extraction 33 | in.booktitle 34 | abbreviate.journal 35 | italic.journal 36 | bold.journal.volume 37 | show.missing.address.publisher 38 | space.before.pages 39 | only.start.page 40 | show.url 41 | show.doi 42 | show.note 43 | show.english.translation 44 | lang.zh.order 45 | lang.ja.order 46 | lang.en.order 47 | lang.ru.order 48 | lang.other.order 49 | } 50 | 51 | FUNCTION {load.config} 52 | { 53 | #1 'uppercase.name := 54 | #3 'max.num.authors := 55 | #0 'period.between.author.year := 56 | #1 'sentence.case.title := 57 | #0 'link.title := 58 | #1 'title.in.journal := 59 | #1 'show.mark := 60 | #1 'show.medium.type := 61 | #1 'slash.for.extraction := 62 | #0 'in.booktitle := 63 | #0 'abbreviate.journal := 64 | #0 'italic.journal := 65 | #0 'bold.journal.volume := 66 | #1 'show.missing.address.publisher := 67 | #0 'space.before.pages := 68 | #0 'only.start.page := 69 | #1 'show.url := 70 | #1 'show.doi := 71 | #0 'show.note := 72 | #0 'show.english.translation := 73 | #1 'lang.zh.order := 74 | #2 'lang.ja.order := 75 | #3 'lang.en.order := 76 | #4 'lang.ru.order := 77 | #5 'lang.other.order := 78 | } 79 | 80 | ENTRY 81 | { address 82 | author 83 | booktitle 84 | date 85 | doi 86 | edition 87 | editor 88 | howpublished 89 | institution 90 | journal 91 | key 92 | language 93 | mark 94 | medium 95 | note 96 | number 97 | organization 98 | pages 99 | publisher 100 | school 101 | series 102 | title 103 | translator 104 | translation 105 | url 106 | urldate 107 | volume 108 | year 109 | } 110 | { entry.lang entry.is.electronic entry.numbered } 111 | { label extra.label sort.label short.list entry.mark entry.url } 112 | 113 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 114 | 115 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 116 | 117 | INTEGERS { charptr len } 118 | 119 | FUNCTION {init.state.consts} 120 | { #0 'before.all := 121 | #1 'mid.sentence := 122 | #2 'after.sentence := 123 | #3 'after.block := 124 | #4 'after.slash := 125 | #3 'lang.zh := 126 | #4 'lang.ja := 127 | #1 'lang.en := 128 | #2 'lang.ru := 129 | #0 'lang.other := 130 | } 131 | 132 | FUNCTION {bbl.anonymous} 133 | { entry.lang lang.zh = 134 | { "佚名" } 135 | { "Anon" } 136 | if$ 137 | } 138 | 139 | FUNCTION {bbl.space} 140 | { entry.lang lang.zh = 141 | { "\ " } 142 | { " " } 143 | if$ 144 | } 145 | 146 | FUNCTION {bbl.et.al} 147 | { entry.lang lang.zh = 148 | { "等" } 149 | { entry.lang lang.ja = 150 | { "他" } 151 | { entry.lang lang.ru = 152 | { "идр" } 153 | { "et~al." } 154 | if$ 155 | } 156 | if$ 157 | } 158 | if$ 159 | } 160 | 161 | FUNCTION {citation.et.al} 162 | { bbl.et.al } 163 | 164 | FUNCTION {bbl.colon} { ": " } 165 | 166 | FUNCTION {bbl.wide.space} { "\quad " } 167 | 168 | FUNCTION {bbl.slash} { "//\allowbreak " } 169 | 170 | FUNCTION {bbl.sine.loco} 171 | { entry.lang lang.zh = 172 | { "[出版地不详]" } 173 | { "[S.l.]" } 174 | if$ 175 | } 176 | 177 | FUNCTION {bbl.sine.nomine} 178 | { entry.lang lang.zh = 179 | { "[出版者不详]" } 180 | { "[s.n.]" } 181 | if$ 182 | } 183 | 184 | FUNCTION {bbl.sine.loco.sine.nomine} 185 | { entry.lang lang.zh = 186 | { "[出版地不详: 出版者不详]" } 187 | { "[S.l.: s.n.]" } 188 | if$ 189 | } 190 | 191 | FUNCTION {not} 192 | { { #0 } 193 | { #1 } 194 | if$ 195 | } 196 | 197 | FUNCTION {and} 198 | { 'skip$ 199 | { pop$ #0 } 200 | if$ 201 | } 202 | 203 | FUNCTION {or} 204 | { { pop$ #1 } 205 | 'skip$ 206 | if$ 207 | } 208 | 209 | STRINGS { s t } 210 | 211 | FUNCTION {output.nonnull} 212 | { 's := 213 | output.state mid.sentence = 214 | { ", " * write$ } 215 | { output.state after.block = 216 | { add.period$ write$ 217 | newline$ 218 | "\newblock " write$ 219 | } 220 | { output.state before.all = 221 | 'write$ 222 | { output.state after.slash = 223 | { bbl.slash * write$ 224 | newline$ 225 | } 226 | { add.period$ " " * write$ } 227 | if$ 228 | } 229 | if$ 230 | } 231 | if$ 232 | mid.sentence 'output.state := 233 | } 234 | if$ 235 | s 236 | } 237 | 238 | FUNCTION {output} 239 | { duplicate$ empty$ 240 | 'pop$ 241 | 'output.nonnull 242 | if$ 243 | } 244 | 245 | FUNCTION {output.after} 246 | { 't := 247 | duplicate$ empty$ 248 | 'pop$ 249 | { 's := 250 | output.state mid.sentence = 251 | { t * write$ } 252 | { output.state after.block = 253 | { add.period$ write$ 254 | newline$ 255 | "\newblock " write$ 256 | } 257 | { output.state before.all = 258 | 'write$ 259 | { output.state after.slash = 260 | { bbl.slash * write$ } 261 | { add.period$ " " * write$ } 262 | if$ 263 | } 264 | if$ 265 | } 266 | if$ 267 | mid.sentence 'output.state := 268 | } 269 | if$ 270 | s 271 | } 272 | if$ 273 | } 274 | 275 | FUNCTION {output.check} 276 | { 't := 277 | duplicate$ empty$ 278 | { pop$ "empty " t * " in " * cite$ * warning$ } 279 | 'output.nonnull 280 | if$ 281 | } 282 | 283 | FUNCTION {fin.entry} 284 | { add.period$ 285 | write$ 286 | show.english.translation entry.lang lang.zh = and 287 | { ")" 288 | write$ 289 | } 290 | 'skip$ 291 | if$ 292 | newline$ 293 | } 294 | 295 | FUNCTION {new.block} 296 | { output.state before.all = 297 | 'skip$ 298 | { output.state after.slash = 299 | 'skip$ 300 | { after.block 'output.state := } 301 | if$ 302 | } 303 | if$ 304 | } 305 | 306 | FUNCTION {new.sentence} 307 | { output.state after.block = 308 | 'skip$ 309 | { output.state before.all = 310 | 'skip$ 311 | { output.state after.slash = 312 | 'skip$ 313 | { after.sentence 'output.state := } 314 | if$ 315 | } 316 | if$ 317 | } 318 | if$ 319 | } 320 | 321 | FUNCTION {new.slash} 322 | { output.state before.all = 323 | 'skip$ 324 | { slash.for.extraction 325 | { after.slash 'output.state := } 326 | { after.block 'output.state := } 327 | if$ 328 | } 329 | if$ 330 | } 331 | 332 | FUNCTION {new.block.checka} 333 | { empty$ 334 | 'skip$ 335 | 'new.block 336 | if$ 337 | } 338 | 339 | FUNCTION {new.block.checkb} 340 | { empty$ 341 | swap$ empty$ 342 | and 343 | 'skip$ 344 | 'new.block 345 | if$ 346 | } 347 | 348 | FUNCTION {new.sentence.checka} 349 | { empty$ 350 | 'skip$ 351 | 'new.sentence 352 | if$ 353 | } 354 | 355 | FUNCTION {new.sentence.checkb} 356 | { empty$ 357 | swap$ empty$ 358 | and 359 | 'skip$ 360 | 'new.sentence 361 | if$ 362 | } 363 | 364 | FUNCTION {field.or.null} 365 | { duplicate$ empty$ 366 | { pop$ "" } 367 | 'skip$ 368 | if$ 369 | } 370 | 371 | FUNCTION {italicize} 372 | { duplicate$ empty$ 373 | { pop$ "" } 374 | { "\textit{" swap$ * "}" * } 375 | if$ 376 | } 377 | 378 | INTEGERS { byte second.byte } 379 | 380 | INTEGERS { char.lang tmp.lang } 381 | 382 | STRINGS { tmp.str } 383 | 384 | FUNCTION {get.str.lang} 385 | { 'tmp.str := 386 | lang.other 'tmp.lang := 387 | #1 'charptr := 388 | tmp.str text.length$ #1 + 'len := 389 | { charptr len < } 390 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 391 | byte #128 < 392 | { charptr #1 + 'charptr := 393 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 394 | { lang.en 'char.lang := } 395 | { lang.other 'char.lang := } 396 | if$ 397 | } 398 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 399 | byte #224 < 400 | { charptr #2 + 'charptr := 401 | byte #207 > byte #212 < and 402 | byte #212 = second.byte #176 < and or 403 | { lang.ru 'char.lang := } 404 | { lang.other 'char.lang := } 405 | if$ 406 | } 407 | { byte #240 < 408 | { charptr #3 + 'charptr := 409 | byte #227 > byte #234 < and 410 | { lang.zh 'char.lang := } 411 | { byte #227 = 412 | { second.byte #143 > 413 | { lang.zh 'char.lang := } 414 | { second.byte #128 > second.byte #132 < and 415 | { lang.ja 'char.lang := } 416 | { lang.other 'char.lang := } 417 | if$ 418 | } 419 | if$ 420 | } 421 | { byte #239 = 422 | second.byte #163 > second.byte #172 < and and 423 | { lang.zh 'char.lang := } 424 | { lang.other 'char.lang := } 425 | if$ 426 | } 427 | if$ 428 | } 429 | if$ 430 | } 431 | { charptr #4 + 'charptr := 432 | byte #240 = second.byte #159 > and 433 | { lang.zh 'char.lang := } 434 | { lang.other 'char.lang := } 435 | if$ 436 | } 437 | if$ 438 | } 439 | if$ 440 | } 441 | if$ 442 | char.lang tmp.lang > 443 | { char.lang 'tmp.lang := } 444 | 'skip$ 445 | if$ 446 | } 447 | while$ 448 | tmp.lang 449 | } 450 | 451 | FUNCTION {check.entry.lang} 452 | { author field.or.null 453 | title field.or.null * 454 | get.str.lang 455 | } 456 | 457 | FUNCTION {set.entry.lang} 458 | { language empty$ 459 | { check.entry.lang } 460 | { language "english" = language "american" = or language "british" = or 461 | { lang.en } 462 | { language "chinese" = 463 | { lang.zh } 464 | { language "japanese" = 465 | { lang.ja } 466 | { language "russian" = 467 | { lang.ru } 468 | { check.entry.lang } 469 | if$ 470 | } 471 | if$ 472 | } 473 | if$ 474 | } 475 | if$ 476 | } 477 | if$ 478 | 'entry.lang := 479 | } 480 | 481 | FUNCTION {set.entry.numbered} 482 | { type$ "patent" = 483 | type$ "standard" = or 484 | type$ "techreport" = or 485 | { #1 'entry.numbered := } 486 | { #0 'entry.numbered := } 487 | if$ 488 | } 489 | 490 | INTEGERS { nameptr namesleft numnames name.lang } 491 | 492 | FUNCTION {format.names} 493 | { 's := 494 | #1 'nameptr := 495 | s num.names$ 'numnames := 496 | numnames 'namesleft := 497 | { namesleft #0 > } 498 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 499 | nameptr max.num.authors > 500 | { bbl.et.al 501 | #1 'namesleft := 502 | } 503 | { t "others" = 504 | { bbl.et.al } 505 | { t get.str.lang 'name.lang := 506 | name.lang lang.en = 507 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 508 | uppercase.name 509 | { "u" change.case$ } 510 | 'skip$ 511 | if$ 512 | t #1 "{, jj}" format.name$ * 513 | } 514 | { t #1 "{ll}{ff}" format.name$ } 515 | if$ 516 | } 517 | if$ 518 | } 519 | if$ 520 | nameptr #1 > 521 | { ", " swap$ * * } 522 | 'skip$ 523 | if$ 524 | nameptr #1 + 'nameptr := 525 | namesleft #1 - 'namesleft := 526 | } 527 | while$ 528 | } 529 | 530 | FUNCTION {format.key} 531 | { empty$ 532 | { key field.or.null } 533 | { "" } 534 | if$ 535 | } 536 | 537 | FUNCTION {format.authors} 538 | { author empty$ not 539 | { author format.names } 540 | { "empty author in " cite$ * warning$ 541 | bbl.anonymous 542 | } 543 | if$ 544 | } 545 | 546 | FUNCTION {format.editors} 547 | { editor empty$ 548 | { "" } 549 | { editor format.names } 550 | if$ 551 | } 552 | 553 | FUNCTION {format.translators} 554 | { translator empty$ 555 | { "" } 556 | { translator format.names 557 | entry.lang lang.zh = 558 | { translator num.names$ #3 > 559 | { "译" * } 560 | { ", 译" * } 561 | if$ 562 | } 563 | 'skip$ 564 | if$ 565 | } 566 | if$ 567 | } 568 | 569 | FUNCTION {format.full.names} 570 | {'s := 571 | #1 'nameptr := 572 | s num.names$ 'numnames := 573 | numnames 'namesleft := 574 | { namesleft #0 > } 575 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 576 | t get.str.lang 'name.lang := 577 | name.lang lang.en = 578 | { t #1 "{vv~}{ll}" format.name$ 't := } 579 | { t #1 "{ll}{ff}" format.name$ 't := } 580 | if$ 581 | nameptr #1 > 582 | { 583 | namesleft #1 > 584 | { ", " * t * } 585 | { 586 | numnames #2 > 587 | { "," * } 588 | 'skip$ 589 | if$ 590 | t "others" = 591 | { " et~al." * } 592 | { " and " * t * } 593 | if$ 594 | } 595 | if$ 596 | } 597 | 't 598 | if$ 599 | nameptr #1 + 'nameptr := 600 | namesleft #1 - 'namesleft := 601 | } 602 | while$ 603 | } 604 | 605 | FUNCTION {author.editor.full} 606 | { author empty$ 607 | { editor empty$ 608 | { "" } 609 | { editor format.full.names } 610 | if$ 611 | } 612 | { author format.full.names } 613 | if$ 614 | } 615 | 616 | FUNCTION {author.full} 617 | { author empty$ 618 | { "" } 619 | { author format.full.names } 620 | if$ 621 | } 622 | 623 | FUNCTION {editor.full} 624 | { editor empty$ 625 | { "" } 626 | { editor format.full.names } 627 | if$ 628 | } 629 | 630 | FUNCTION {make.full.names} 631 | { type$ "book" = 632 | type$ "inbook" = 633 | or 634 | 'author.editor.full 635 | { type$ "collection" = 636 | type$ "proceedings" = 637 | or 638 | 'editor.full 639 | 'author.full 640 | if$ 641 | } 642 | if$ 643 | } 644 | 645 | FUNCTION {output.bibitem} 646 | { newline$ 647 | "\bibitem[" write$ 648 | label ")" * 649 | make.full.names duplicate$ short.list = 650 | { pop$ } 651 | { * } 652 | if$ 653 | 's := 654 | s text.length$ 'charptr := 655 | { charptr #0 > s charptr #1 substring$ "[" = not and } 656 | { charptr #1 - 'charptr := } 657 | while$ 658 | charptr #0 > 659 | { "{" s * "}" * } 660 | { s } 661 | if$ 662 | "]{" * write$ 663 | cite$ write$ 664 | "}" write$ 665 | newline$ 666 | "" 667 | before.all 'output.state := 668 | } 669 | 670 | FUNCTION {change.sentence.case} 671 | { entry.lang lang.en = 672 | { "t" change.case$ } 673 | 'skip$ 674 | if$ 675 | } 676 | 677 | FUNCTION {add.link} 678 | { url empty$ not 679 | { "\href{" url * "}{" * swap$ * "}" * } 680 | { doi empty$ not 681 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 682 | 'skip$ 683 | if$ 684 | } 685 | if$ 686 | } 687 | 688 | FUNCTION {format.title} 689 | { title empty$ 690 | { "" } 691 | { title 692 | sentence.case.title 693 | 'change.sentence.case 694 | 'skip$ 695 | if$ 696 | entry.numbered number empty$ not and 697 | { bbl.colon * number * } 698 | 'skip$ 699 | if$ 700 | link.title 701 | 'add.link 702 | 'skip$ 703 | if$ 704 | } 705 | if$ 706 | } 707 | 708 | FUNCTION {tie.or.space.connect} 709 | { duplicate$ text.length$ #3 < 710 | { "~" } 711 | { " " } 712 | if$ 713 | swap$ * * 714 | } 715 | 716 | FUNCTION {either.or.check} 717 | { empty$ 718 | 'pop$ 719 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 720 | if$ 721 | } 722 | 723 | FUNCTION {is.digit} 724 | { duplicate$ empty$ 725 | { pop$ #0 } 726 | { chr.to.int$ 727 | duplicate$ "0" chr.to.int$ < 728 | { pop$ #0 } 729 | { "9" chr.to.int$ > 730 | { #0 } 731 | { #1 } 732 | if$ 733 | } 734 | if$ 735 | } 736 | if$ 737 | } 738 | 739 | FUNCTION {is.number} 740 | { 's := 741 | s empty$ 742 | { #0 } 743 | { s text.length$ 'charptr := 744 | { charptr #0 > 745 | s charptr #1 substring$ is.digit 746 | and 747 | } 748 | { charptr #1 - 'charptr := } 749 | while$ 750 | charptr not 751 | } 752 | if$ 753 | } 754 | 755 | FUNCTION {format.volume} 756 | { volume empty$ not 757 | { volume is.number 758 | { entry.lang lang.zh = 759 | { "第 " volume * " 卷" * } 760 | { "volume" volume tie.or.space.connect } 761 | if$ 762 | } 763 | { volume } 764 | if$ 765 | } 766 | { "" } 767 | if$ 768 | } 769 | 770 | FUNCTION {format.number} 771 | { number empty$ not 772 | { number is.number 773 | { entry.lang lang.zh = 774 | { "第 " number * " 册" * } 775 | { "number" number tie.or.space.connect } 776 | if$ 777 | } 778 | { number } 779 | if$ 780 | } 781 | { "" } 782 | if$ 783 | } 784 | 785 | FUNCTION {format.volume.number} 786 | { volume empty$ not 787 | { format.volume } 788 | { format.number } 789 | if$ 790 | } 791 | 792 | FUNCTION {format.title.vol.num} 793 | { title 794 | sentence.case.title 795 | 'change.sentence.case 796 | 'skip$ 797 | if$ 798 | entry.numbered 799 | { number empty$ not 800 | { bbl.colon * number * } 801 | 'skip$ 802 | if$ 803 | } 804 | { format.volume.number 's := 805 | s empty$ not 806 | { bbl.colon * s * } 807 | 'skip$ 808 | if$ 809 | } 810 | if$ 811 | } 812 | 813 | FUNCTION {format.series.vol.num.title} 814 | { format.volume.number 's := 815 | series empty$ not 816 | { series 817 | sentence.case.title 818 | 'change.sentence.case 819 | 'skip$ 820 | if$ 821 | entry.numbered 822 | { bbl.wide.space * } 823 | { bbl.colon * 824 | s empty$ not 825 | { s * bbl.wide.space * } 826 | 'skip$ 827 | if$ 828 | } 829 | if$ 830 | title * 831 | sentence.case.title 832 | 'change.sentence.case 833 | 'skip$ 834 | if$ 835 | entry.numbered number empty$ not and 836 | { bbl.colon * number * } 837 | 'skip$ 838 | if$ 839 | } 840 | { format.title.vol.num } 841 | if$ 842 | link.title 843 | 'add.link 844 | 'skip$ 845 | if$ 846 | } 847 | 848 | FUNCTION {format.booktitle.vol.num} 849 | { booktitle 850 | entry.numbered 851 | 'skip$ 852 | { format.volume.number 's := 853 | s empty$ not 854 | { bbl.colon * s * } 855 | 'skip$ 856 | if$ 857 | } 858 | if$ 859 | } 860 | 861 | FUNCTION {format.series.vol.num.booktitle} 862 | { format.volume.number 's := 863 | series empty$ not 864 | { series bbl.colon * 865 | entry.numbered not s empty$ not and 866 | { s * bbl.wide.space * } 867 | 'skip$ 868 | if$ 869 | booktitle * 870 | } 871 | { format.booktitle.vol.num } 872 | if$ 873 | in.booktitle 874 | { duplicate$ empty$ not entry.lang lang.en = and 875 | { "In: " swap$ * } 876 | 'skip$ 877 | if$ 878 | } 879 | 'skip$ 880 | if$ 881 | } 882 | 883 | FUNCTION {remove.period} 884 | { 't := 885 | "" 's := 886 | { t empty$ not } 887 | { t #1 #1 substring$ 'tmp.str := 888 | tmp.str "." = not 889 | { s tmp.str * 's := } 890 | 'skip$ 891 | if$ 892 | t #2 global.max$ substring$ 't := 893 | } 894 | while$ 895 | s 896 | } 897 | 898 | FUNCTION {abbreviate} 899 | { remove.period 900 | 't := 901 | t "l" change.case$ 's := 902 | "" 903 | s "physical review letters" = 904 | { "Phys Rev Lett" } 905 | 'skip$ 906 | if$ 907 | 's := 908 | s empty$ 909 | { t } 910 | { pop$ s } 911 | if$ 912 | } 913 | 914 | FUNCTION {format.journal} 915 | { journal empty$ not 916 | { journal 917 | abbreviate.journal 918 | 'abbreviate 919 | 'skip$ 920 | if$ 921 | italic.journal entry.lang lang.en = and 922 | 'italicize 923 | 'skip$ 924 | if$ 925 | } 926 | { "" } 927 | if$ 928 | } 929 | 930 | FUNCTION {set.entry.mark} 931 | { entry.mark empty$ not 932 | 'pop$ 933 | { mark empty$ not 934 | { pop$ mark 'entry.mark := } 935 | { 'entry.mark := } 936 | if$ 937 | } 938 | if$ 939 | } 940 | 941 | FUNCTION {format.mark} 942 | { show.mark 943 | { entry.mark 944 | show.medium.type 945 | { medium empty$ not 946 | { "/" * medium * } 947 | { entry.is.electronic 948 | { "/OL" * } 949 | 'skip$ 950 | if$ 951 | } 952 | if$ 953 | } 954 | 'skip$ 955 | if$ 956 | 'entry.mark := 957 | "\allowbreak[" entry.mark * "]" * 958 | } 959 | { "" } 960 | if$ 961 | } 962 | 963 | FUNCTION {num.to.ordinal} 964 | { duplicate$ text.length$ 'charptr := 965 | duplicate$ charptr #1 substring$ 's := 966 | s "1" = 967 | { "st" * } 968 | { s "2" = 969 | { "nd" * } 970 | { s "3" = 971 | { "rd" * } 972 | { "th" * } 973 | if$ 974 | } 975 | if$ 976 | } 977 | if$ 978 | } 979 | 980 | FUNCTION {format.edition} 981 | { edition empty$ 982 | { "" } 983 | { edition is.number 984 | { entry.lang lang.zh = 985 | { edition " 版" * } 986 | { edition num.to.ordinal " ed." * } 987 | if$ 988 | } 989 | { entry.lang lang.en = 990 | { edition change.sentence.case 's := 991 | s "Revised" = s "Revised edition" = or 992 | { "Rev. ed." } 993 | { s " ed." *} 994 | if$ 995 | } 996 | { edition } 997 | if$ 998 | } 999 | if$ 1000 | } 1001 | if$ 1002 | } 1003 | 1004 | FUNCTION {format.publisher} 1005 | { publisher empty$ not 1006 | { publisher } 1007 | { school empty$ not 1008 | { school } 1009 | { organization empty$ not 1010 | { organization } 1011 | { institution empty$ not 1012 | { institution } 1013 | { "" } 1014 | if$ 1015 | } 1016 | if$ 1017 | } 1018 | if$ 1019 | } 1020 | if$ 1021 | } 1022 | 1023 | FUNCTION {format.address.publisher} 1024 | { address empty$ not 1025 | { address 1026 | format.publisher empty$ not 1027 | { bbl.colon * format.publisher * } 1028 | { entry.is.electronic not show.missing.address.publisher and 1029 | { bbl.colon * bbl.sine.nomine * } 1030 | 'skip$ 1031 | if$ 1032 | } 1033 | if$ 1034 | } 1035 | { entry.is.electronic not show.missing.address.publisher and 1036 | { format.publisher empty$ not 1037 | { bbl.sine.loco bbl.colon * format.publisher * } 1038 | { bbl.sine.loco.sine.nomine } 1039 | if$ 1040 | } 1041 | { format.publisher empty$ not 1042 | { format.publisher } 1043 | { "" } 1044 | if$ 1045 | } 1046 | if$ 1047 | } 1048 | if$ 1049 | } 1050 | 1051 | FUNCTION {extract.before.dash} 1052 | { duplicate$ empty$ 1053 | { pop$ "" } 1054 | { 's := 1055 | #1 'charptr := 1056 | s text.length$ #1 + 'len := 1057 | { charptr len < 1058 | s charptr #1 substring$ "-" = not 1059 | and 1060 | } 1061 | { charptr #1 + 'charptr := } 1062 | while$ 1063 | s #1 charptr #1 - substring$ 1064 | } 1065 | if$ 1066 | } 1067 | 1068 | FUNCTION {extract.after.dash} 1069 | { duplicate$ empty$ 1070 | { pop$ "" } 1071 | { 's := 1072 | #1 'charptr := 1073 | s text.length$ #1 + 'len := 1074 | { charptr len < 1075 | s charptr #1 substring$ "-" = not 1076 | and 1077 | } 1078 | { charptr #1 + 'charptr := } 1079 | while$ 1080 | { charptr len < 1081 | s charptr #1 substring$ "-" = 1082 | and 1083 | } 1084 | { charptr #1 + 'charptr := } 1085 | while$ 1086 | s charptr global.max$ substring$ 1087 | } 1088 | if$ 1089 | } 1090 | 1091 | FUNCTION {contains.dash} 1092 | { duplicate$ empty$ 1093 | { pop$ #0 } 1094 | { 's := 1095 | { s empty$ not 1096 | s #1 #1 substring$ "-" = not 1097 | and 1098 | } 1099 | { s #2 global.max$ substring$ 's := } 1100 | while$ 1101 | s empty$ not 1102 | } 1103 | if$ 1104 | } 1105 | 1106 | FUNCTION {format.year} 1107 | { year empty$ not 1108 | { year extract.before.dash } 1109 | { date empty$ not 1110 | { date extract.before.dash } 1111 | { "empty year in " cite$ * warning$ 1112 | urldate empty$ not 1113 | { "[" urldate extract.before.dash * "]" * } 1114 | { "" } 1115 | if$ 1116 | } 1117 | if$ 1118 | } 1119 | if$ 1120 | extra.label * 1121 | } 1122 | 1123 | FUNCTION {format.date} 1124 | { type$ "patent" = type$ "newspaper" = or 1125 | date empty$ not and 1126 | { date } 1127 | { year } 1128 | if$ 1129 | } 1130 | 1131 | FUNCTION {format.editdate} 1132 | { date empty$ not 1133 | { "\allowbreak(" date * ")" * } 1134 | { "" } 1135 | if$ 1136 | } 1137 | 1138 | FUNCTION {format.urldate} 1139 | { urldate empty$ not entry.is.electronic and 1140 | { "\allowbreak[" urldate * "]" * } 1141 | { "" } 1142 | if$ 1143 | } 1144 | 1145 | FUNCTION {hyphenate} 1146 | { 't := 1147 | "" 1148 | { t empty$ not } 1149 | { t #1 #1 substring$ "-" = 1150 | { "-" * 1151 | { t #1 #1 substring$ "-" = } 1152 | { t #2 global.max$ substring$ 't := } 1153 | while$ 1154 | } 1155 | { t #1 #1 substring$ * 1156 | t #2 global.max$ substring$ 't := 1157 | } 1158 | if$ 1159 | } 1160 | while$ 1161 | } 1162 | 1163 | FUNCTION {format.pages} 1164 | { pages empty$ 1165 | { "" } 1166 | { pages 1167 | only.start.page 1168 | 'extract.before.dash 1169 | 'hyphenate 1170 | if$ 1171 | } 1172 | if$ 1173 | } 1174 | 1175 | FUNCTION {format.journal.volume} 1176 | { volume empty$ not 1177 | { bold.journal.volume 1178 | { "\textbf{" volume * "}" * } 1179 | { volume } 1180 | if$ 1181 | } 1182 | { "" } 1183 | if$ 1184 | } 1185 | 1186 | FUNCTION {format.journal.number} 1187 | { number empty$ not 1188 | { "\penalty0 (" number * ")" * } 1189 | { "" } 1190 | if$ 1191 | } 1192 | 1193 | FUNCTION {format.journal.pages} 1194 | { pages empty$ 1195 | { "" } 1196 | { space.before.pages 1197 | { ": " } 1198 | { ":\penalty0 " } 1199 | if$ 1200 | format.pages * 1201 | } 1202 | if$ 1203 | } 1204 | 1205 | FUNCTION {format.periodical.year.volume.number} 1206 | { year empty$ not 1207 | { year extract.before.dash } 1208 | { "empty year in periodical " cite$ * warning$ } 1209 | if$ 1210 | volume empty$ not 1211 | { ", " * volume extract.before.dash * } 1212 | 'skip$ 1213 | if$ 1214 | number empty$ not 1215 | { "\penalty0 (" * number extract.before.dash * ")" * } 1216 | 'skip$ 1217 | if$ 1218 | year contains.dash 1219 | { "--" * 1220 | year extract.after.dash empty$ 1221 | volume extract.after.dash empty$ and 1222 | number extract.after.dash empty$ and not 1223 | { year extract.after.dash empty$ not 1224 | { year extract.after.dash * } 1225 | { year extract.before.dash * } 1226 | if$ 1227 | volume empty$ not 1228 | { ", " * volume extract.after.dash * } 1229 | 'skip$ 1230 | if$ 1231 | number empty$ not 1232 | { "\penalty0 (" * number extract.after.dash * ")" * } 1233 | 'skip$ 1234 | if$ 1235 | } 1236 | 'skip$ 1237 | if$ 1238 | } 1239 | 'skip$ 1240 | if$ 1241 | } 1242 | 1243 | FUNCTION {check.url} 1244 | { url empty$ not 1245 | { "\url{" url * "}" * 'entry.url := 1246 | #1 'entry.is.electronic := 1247 | } 1248 | { howpublished empty$ not 1249 | { howpublished #1 #5 substring$ "\url{" = 1250 | { howpublished 'entry.url := 1251 | #1 'entry.is.electronic := 1252 | } 1253 | 'skip$ 1254 | if$ 1255 | } 1256 | { note empty$ not 1257 | { note #1 #5 substring$ "\url{" = 1258 | { note 'entry.url := 1259 | #1 'entry.is.electronic := 1260 | } 1261 | 'skip$ 1262 | if$ 1263 | } 1264 | 'skip$ 1265 | if$ 1266 | } 1267 | if$ 1268 | } 1269 | if$ 1270 | } 1271 | 1272 | FUNCTION {format.url} 1273 | { entry.url 1274 | } 1275 | 1276 | FUNCTION {output.url} 1277 | { entry.url empty$ not 1278 | { new.block 1279 | entry.url output 1280 | } 1281 | 'skip$ 1282 | if$ 1283 | } 1284 | 1285 | FUNCTION {check.doi} 1286 | { doi empty$ not 1287 | { #1 'entry.is.electronic := } 1288 | 'skip$ 1289 | if$ 1290 | } 1291 | 1292 | FUNCTION {is.in.url} 1293 | { 's := 1294 | s empty$ 1295 | { #1 } 1296 | { entry.url empty$ 1297 | { #0 } 1298 | { s text.length$ 'len := 1299 | entry.url text.length$ 'charptr := 1300 | { entry.url charptr len substring$ s = not 1301 | charptr #0 > 1302 | and 1303 | } 1304 | { charptr #1 - 'charptr := } 1305 | while$ 1306 | charptr 1307 | } 1308 | if$ 1309 | } 1310 | if$ 1311 | } 1312 | 1313 | FUNCTION {format.doi} 1314 | { "" 1315 | doi empty$ not 1316 | { "" 's := 1317 | doi 't := 1318 | #0 'numnames := 1319 | { t empty$ not} 1320 | { t #1 #1 substring$ 'tmp.str := 1321 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1322 | { t #2 #1 substring$ empty$ 1323 | { s tmp.str * 's := } 1324 | 'skip$ 1325 | if$ 1326 | s empty$ s is.in.url or 1327 | 'skip$ 1328 | { numnames #1 + 'numnames := 1329 | numnames #1 > 1330 | { ", " * } 1331 | { "DOI: " * } 1332 | if$ 1333 | "\doi{" s * "}" * * 1334 | } 1335 | if$ 1336 | "" 's := 1337 | } 1338 | { s tmp.str * 's := } 1339 | if$ 1340 | t #2 global.max$ substring$ 't := 1341 | } 1342 | while$ 1343 | } 1344 | 'skip$ 1345 | if$ 1346 | } 1347 | 1348 | FUNCTION {output.doi} 1349 | { doi empty$ not show.doi and 1350 | show.english.translation entry.lang lang.zh = and not and 1351 | { new.block 1352 | format.doi output 1353 | } 1354 | 'skip$ 1355 | if$ 1356 | } 1357 | 1358 | FUNCTION {check.electronic} 1359 | { "" 'entry.url := 1360 | #0 'entry.is.electronic := 1361 | 'check.doi 1362 | 'skip$ 1363 | if$ 1364 | 'check.url 1365 | 'skip$ 1366 | if$ 1367 | medium empty$ not 1368 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1369 | { #1 'entry.is.electronic := } 1370 | 'skip$ 1371 | if$ 1372 | } 1373 | 'skip$ 1374 | if$ 1375 | } 1376 | 1377 | FUNCTION {format.note} 1378 | { note empty$ not show.note and 1379 | { note } 1380 | { "" } 1381 | if$ 1382 | } 1383 | 1384 | FUNCTION {output.translation} 1385 | { show.english.translation entry.lang lang.zh = and 1386 | { translation empty$ not 1387 | { translation } 1388 | { "[English translation missing!]" } 1389 | if$ 1390 | " (in Chinese)" * output 1391 | write$ 1392 | format.doi duplicate$ empty$ not 1393 | { newline$ 1394 | write$ 1395 | } 1396 | 'pop$ 1397 | if$ 1398 | " \\" write$ 1399 | newline$ 1400 | "(" write$ 1401 | "" 1402 | before.all 'output.state := 1403 | } 1404 | 'skip$ 1405 | if$ 1406 | } 1407 | 1408 | FUNCTION {empty.misc.check} 1409 | { author empty$ title empty$ 1410 | year empty$ 1411 | and and 1412 | key empty$ not and 1413 | { "all relevant fields are empty in " cite$ * warning$ } 1414 | 'skip$ 1415 | if$ 1416 | } 1417 | 1418 | FUNCTION {monograph} 1419 | { output.bibitem 1420 | output.translation 1421 | author empty$ not 1422 | { format.authors } 1423 | { editor empty$ not 1424 | { format.editors } 1425 | { "empty author and editor in " cite$ * warning$ 1426 | bbl.anonymous 1427 | } 1428 | if$ 1429 | } 1430 | if$ 1431 | output 1432 | period.between.author.year 1433 | 'new.sentence 1434 | 'skip$ 1435 | if$ 1436 | format.year "year" output.check 1437 | new.block 1438 | format.series.vol.num.title "title" output.check 1439 | "M" set.entry.mark 1440 | format.mark "" output.after 1441 | new.block 1442 | format.translators output 1443 | new.sentence 1444 | format.edition output 1445 | new.block 1446 | format.address.publisher output 1447 | format.pages bbl.colon output.after 1448 | format.urldate "" output.after 1449 | output.url 1450 | output.doi 1451 | new.block 1452 | format.note output 1453 | fin.entry 1454 | } 1455 | 1456 | FUNCTION {incollection} 1457 | { output.bibitem 1458 | output.translation 1459 | format.authors output 1460 | author format.key output 1461 | period.between.author.year 1462 | 'new.sentence 1463 | 'skip$ 1464 | if$ 1465 | format.year "year" output.check 1466 | new.block 1467 | format.title "title" output.check 1468 | "M" set.entry.mark 1469 | format.mark "" output.after 1470 | new.block 1471 | format.translators output 1472 | new.slash 1473 | format.editors output 1474 | new.block 1475 | format.series.vol.num.booktitle "booktitle" output.check 1476 | new.block 1477 | format.edition output 1478 | new.block 1479 | format.address.publisher output 1480 | format.pages bbl.colon output.after 1481 | format.urldate "" output.after 1482 | output.url 1483 | output.doi 1484 | new.block 1485 | format.note output 1486 | fin.entry 1487 | } 1488 | 1489 | FUNCTION {periodical} 1490 | { output.bibitem 1491 | output.translation 1492 | format.authors output 1493 | author format.key output 1494 | period.between.author.year 1495 | 'new.sentence 1496 | 'skip$ 1497 | if$ 1498 | format.year "year" output.check 1499 | new.block 1500 | format.title "title" output.check 1501 | "J" set.entry.mark 1502 | format.mark "" output.after 1503 | new.block 1504 | format.periodical.year.volume.number output 1505 | new.block 1506 | format.address.publisher output 1507 | format.urldate "" output.after 1508 | output.url 1509 | output.doi 1510 | new.block 1511 | format.note output 1512 | fin.entry 1513 | } 1514 | 1515 | FUNCTION {article} 1516 | { output.bibitem 1517 | output.translation 1518 | format.authors output 1519 | author format.key output 1520 | period.between.author.year 1521 | 'new.sentence 1522 | 'skip$ 1523 | if$ 1524 | format.year "year" output.check 1525 | new.block 1526 | title.in.journal 1527 | { format.title "title" output.check 1528 | "J" set.entry.mark 1529 | format.mark "" output.after 1530 | new.block 1531 | } 1532 | 'skip$ 1533 | if$ 1534 | format.journal "journal" output.check 1535 | format.journal.volume output 1536 | format.journal.number "" output.after 1537 | format.journal.pages "" output.after 1538 | format.urldate "" output.after 1539 | output.url 1540 | output.doi 1541 | new.block 1542 | format.note output 1543 | fin.entry 1544 | } 1545 | 1546 | FUNCTION {patent} 1547 | { output.bibitem 1548 | output.translation 1549 | format.authors output 1550 | author format.key output 1551 | period.between.author.year 1552 | 'new.sentence 1553 | 'skip$ 1554 | if$ 1555 | format.year "year" output.check 1556 | new.block 1557 | format.title "title" output.check 1558 | "P" set.entry.mark 1559 | format.mark "" output.after 1560 | new.block 1561 | format.date "year" output.check 1562 | format.urldate "" output.after 1563 | output.url 1564 | output.doi 1565 | new.block 1566 | format.note output 1567 | fin.entry 1568 | } 1569 | 1570 | FUNCTION {electronic} 1571 | { #1 #1 check.electronic 1572 | #1 'entry.is.electronic := 1573 | output.bibitem 1574 | output.translation 1575 | format.authors output 1576 | author format.key output 1577 | period.between.author.year 1578 | 'new.sentence 1579 | 'skip$ 1580 | if$ 1581 | format.year "year" output.check 1582 | new.block 1583 | format.series.vol.num.title "title" output.check 1584 | "EB" set.entry.mark 1585 | format.mark "" output.after 1586 | new.block 1587 | format.address.publisher output 1588 | format.pages bbl.colon output.after 1589 | format.editdate "" output.after 1590 | format.urldate "" output.after 1591 | output.url 1592 | output.doi 1593 | new.block 1594 | format.note output 1595 | fin.entry 1596 | } 1597 | 1598 | FUNCTION {misc} 1599 | { journal empty$ not 1600 | 'article 1601 | { booktitle empty$ not 1602 | 'incollection 1603 | { publisher empty$ not 1604 | 'monograph 1605 | { entry.is.electronic 1606 | 'electronic 1607 | { "Z" set.entry.mark 1608 | monograph 1609 | } 1610 | if$ 1611 | } 1612 | if$ 1613 | } 1614 | if$ 1615 | } 1616 | if$ 1617 | empty.misc.check 1618 | } 1619 | 1620 | FUNCTION {archive} 1621 | { "A" set.entry.mark 1622 | misc 1623 | } 1624 | 1625 | FUNCTION {book} { monograph } 1626 | 1627 | FUNCTION {booklet} { book } 1628 | 1629 | FUNCTION {collection} 1630 | { "G" set.entry.mark 1631 | monograph 1632 | } 1633 | 1634 | FUNCTION {database} 1635 | { "DB" set.entry.mark 1636 | electronic 1637 | } 1638 | 1639 | FUNCTION {dataset} 1640 | { "DS" set.entry.mark 1641 | electronic 1642 | } 1643 | 1644 | FUNCTION {inbook} { book } 1645 | 1646 | FUNCTION {inproceedings} 1647 | { "C" set.entry.mark 1648 | incollection 1649 | } 1650 | 1651 | FUNCTION {conference} { inproceedings } 1652 | 1653 | FUNCTION {map} 1654 | { "CM" set.entry.mark 1655 | misc 1656 | } 1657 | 1658 | FUNCTION {manual} { monograph } 1659 | 1660 | FUNCTION {mastersthesis} 1661 | { "D" set.entry.mark 1662 | monograph 1663 | } 1664 | 1665 | FUNCTION {newspaper} 1666 | { "N" set.entry.mark 1667 | article 1668 | } 1669 | 1670 | FUNCTION {online} 1671 | { "EB" set.entry.mark 1672 | electronic 1673 | } 1674 | 1675 | FUNCTION {phdthesis} { mastersthesis } 1676 | 1677 | FUNCTION {proceedings} 1678 | { "C" set.entry.mark 1679 | monograph 1680 | } 1681 | 1682 | FUNCTION {software} 1683 | { "CP" set.entry.mark 1684 | electronic 1685 | } 1686 | 1687 | FUNCTION {standard} 1688 | { "S" set.entry.mark 1689 | misc 1690 | } 1691 | 1692 | FUNCTION {techreport} 1693 | { "R" set.entry.mark 1694 | misc 1695 | } 1696 | 1697 | FUNCTION {unpublished} 1698 | { "Z" set.entry.mark 1699 | misc 1700 | } 1701 | 1702 | FUNCTION {default.type} { misc } 1703 | 1704 | MACRO {jan} {"January"} 1705 | 1706 | MACRO {feb} {"February"} 1707 | 1708 | MACRO {mar} {"March"} 1709 | 1710 | MACRO {apr} {"April"} 1711 | 1712 | MACRO {may} {"May"} 1713 | 1714 | MACRO {jun} {"June"} 1715 | 1716 | MACRO {jul} {"July"} 1717 | 1718 | MACRO {aug} {"August"} 1719 | 1720 | MACRO {sep} {"September"} 1721 | 1722 | MACRO {oct} {"October"} 1723 | 1724 | MACRO {nov} {"November"} 1725 | 1726 | MACRO {dec} {"December"} 1727 | 1728 | MACRO {acmcs} {"ACM Computing Surveys"} 1729 | 1730 | MACRO {acta} {"Acta Informatica"} 1731 | 1732 | MACRO {cacm} {"Communications of the ACM"} 1733 | 1734 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1735 | 1736 | MACRO {ibmsj} {"IBM Systems Journal"} 1737 | 1738 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1739 | 1740 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1741 | 1742 | MACRO {ieeetcad} 1743 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1744 | 1745 | MACRO {ipl} {"Information Processing Letters"} 1746 | 1747 | MACRO {jacm} {"Journal of the ACM"} 1748 | 1749 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1750 | 1751 | MACRO {scp} {"Science of Computer Programming"} 1752 | 1753 | MACRO {sicomp} {"SIAM Journal on Computing"} 1754 | 1755 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1756 | 1757 | MACRO {tods} {"ACM Transactions on Database Systems"} 1758 | 1759 | MACRO {tog} {"ACM Transactions on Graphics"} 1760 | 1761 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1762 | 1763 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1764 | 1765 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1766 | 1767 | MACRO {tcs} {"Theoretical Computer Science"} 1768 | 1769 | FUNCTION {sortify} 1770 | { purify$ 1771 | "l" change.case$ 1772 | } 1773 | 1774 | FUNCTION {chop.word} 1775 | { 's := 1776 | 'len := 1777 | s #1 len substring$ = 1778 | { s len #1 + global.max$ substring$ } 1779 | 's 1780 | if$ 1781 | } 1782 | 1783 | FUNCTION {format.lab.names} 1784 | { 's := 1785 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1786 | t get.str.lang 'name.lang := 1787 | name.lang lang.en = 1788 | { t #1 "{vv~}{ll}" format.name$} 1789 | { t #1 "{ll}{ff}" format.name$} 1790 | if$ 1791 | s num.names$ #1 > 1792 | { bbl.space * citation.et.al * } 1793 | 'skip$ 1794 | if$ 1795 | } 1796 | 1797 | FUNCTION {author.key.label} 1798 | { author empty$ 1799 | { key empty$ 1800 | { cite$ #1 #3 substring$ } 1801 | 'key 1802 | if$ 1803 | } 1804 | { author format.lab.names } 1805 | if$ 1806 | } 1807 | 1808 | FUNCTION {author.editor.key.label} 1809 | { author empty$ 1810 | { editor empty$ 1811 | { key empty$ 1812 | { cite$ #1 #3 substring$ } 1813 | 'key 1814 | if$ 1815 | } 1816 | { editor format.lab.names } 1817 | if$ 1818 | } 1819 | { author format.lab.names } 1820 | if$ 1821 | } 1822 | 1823 | FUNCTION {author.key.organization.label} 1824 | { author empty$ 1825 | { key empty$ 1826 | { organization empty$ 1827 | { cite$ #1 #3 substring$ } 1828 | { "The " #4 organization chop.word #3 text.prefix$ } 1829 | if$ 1830 | } 1831 | 'key 1832 | if$ 1833 | } 1834 | { author format.lab.names } 1835 | if$ 1836 | } 1837 | 1838 | FUNCTION {editor.key.organization.label} 1839 | { editor empty$ 1840 | { key empty$ 1841 | { organization empty$ 1842 | { cite$ #1 #3 substring$ } 1843 | { "The " #4 organization chop.word #3 text.prefix$ } 1844 | if$ 1845 | } 1846 | 'key 1847 | if$ 1848 | } 1849 | { editor format.lab.names } 1850 | if$ 1851 | } 1852 | 1853 | FUNCTION {calc.short.authors} 1854 | { type$ "book" = 1855 | type$ "inbook" = 1856 | or 1857 | 'author.editor.key.label 1858 | { type$ "collection" = 1859 | type$ "proceedings" = 1860 | or 1861 | { editor empty$ not 1862 | 'editor.key.organization.label 1863 | 'author.key.organization.label 1864 | if$ 1865 | } 1866 | 'author.key.label 1867 | if$ 1868 | } 1869 | if$ 1870 | 'short.list := 1871 | } 1872 | 1873 | FUNCTION {calc.label} 1874 | { calc.short.authors 1875 | short.list 1876 | "(" 1877 | * 1878 | format.year duplicate$ empty$ 1879 | short.list key field.or.null = or 1880 | { pop$ "" } 1881 | 'skip$ 1882 | if$ 1883 | * 1884 | 'label := 1885 | } 1886 | 1887 | FUNCTION {sort.language.label} 1888 | { entry.lang lang.zh = 1889 | { lang.zh.order } 1890 | { entry.lang lang.ja = 1891 | { lang.ja.order } 1892 | { entry.lang lang.en = 1893 | { lang.en.order } 1894 | { entry.lang lang.ru = 1895 | { lang.ru.order } 1896 | { lang.other.order } 1897 | if$ 1898 | } 1899 | if$ 1900 | } 1901 | if$ 1902 | } 1903 | if$ 1904 | int.to.chr$ 1905 | } 1906 | 1907 | FUNCTION {sort.format.names} 1908 | { 's := 1909 | #1 'nameptr := 1910 | "" 1911 | s num.names$ 'numnames := 1912 | numnames 'namesleft := 1913 | { namesleft #0 > } 1914 | { 1915 | s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := 1916 | nameptr #1 > 1917 | { 1918 | " " * 1919 | namesleft #1 = t "others" = and 1920 | { "zzzzz" * } 1921 | { numnames #2 > nameptr #2 = and 1922 | { "zz" * year field.or.null * " " * } 1923 | 'skip$ 1924 | if$ 1925 | t sortify * 1926 | } 1927 | if$ 1928 | } 1929 | { t sortify * } 1930 | if$ 1931 | nameptr #1 + 'nameptr := 1932 | namesleft #1 - 'namesleft := 1933 | } 1934 | while$ 1935 | } 1936 | 1937 | FUNCTION {sort.format.title} 1938 | { 't := 1939 | "A " #2 1940 | "An " #3 1941 | "The " #4 t chop.word 1942 | chop.word 1943 | chop.word 1944 | sortify 1945 | #1 global.max$ substring$ 1946 | } 1947 | 1948 | FUNCTION {anonymous.sort} 1949 | { entry.lang lang.zh = 1950 | { "yi4 ming2" } 1951 | { "anon" } 1952 | if$ 1953 | } 1954 | 1955 | FUNCTION {warn.empty.key} 1956 | { entry.lang lang.zh = 1957 | { "empty key in " cite$ * warning$ } 1958 | 'skip$ 1959 | if$ 1960 | } 1961 | 1962 | FUNCTION {author.sort} 1963 | { key empty$ 1964 | { warn.empty.key 1965 | author empty$ 1966 | { anonymous.sort } 1967 | { author sort.format.names } 1968 | if$ 1969 | } 1970 | { key sortify } 1971 | if$ 1972 | } 1973 | 1974 | FUNCTION {author.editor.sort} 1975 | { key empty$ 1976 | { warn.empty.key 1977 | author empty$ 1978 | { editor empty$ 1979 | { anonymous.sort } 1980 | { editor sort.format.names } 1981 | if$ 1982 | } 1983 | { author sort.format.names } 1984 | if$ 1985 | } 1986 | { key sortify } 1987 | if$ 1988 | } 1989 | 1990 | FUNCTION {author.organization.sort} 1991 | { key empty$ 1992 | { warn.empty.key 1993 | author empty$ 1994 | { organization empty$ 1995 | { anonymous.sort } 1996 | { "The " #4 organization chop.word sortify } 1997 | if$ 1998 | } 1999 | { author sort.format.names } 2000 | if$ 2001 | } 2002 | { key sortify } 2003 | if$ 2004 | } 2005 | 2006 | FUNCTION {editor.organization.sort} 2007 | { key empty$ 2008 | { warn.empty.key 2009 | editor empty$ 2010 | { organization empty$ 2011 | { anonymous.sort } 2012 | { "The " #4 organization chop.word sortify } 2013 | if$ 2014 | } 2015 | { editor sort.format.names } 2016 | if$ 2017 | } 2018 | { key sortify } 2019 | if$ 2020 | } 2021 | 2022 | FUNCTION {presort} 2023 | { set.entry.lang 2024 | set.entry.numbered 2025 | show.url show.doi check.electronic 2026 | calc.label 2027 | label sortify 2028 | " " 2029 | * 2030 | sort.language.label 2031 | type$ "book" = 2032 | type$ "inbook" = 2033 | or 2034 | 'author.editor.sort 2035 | { type$ "collection" = 2036 | type$ "proceedings" = 2037 | or 2038 | 'editor.organization.sort 2039 | 'author.sort 2040 | if$ 2041 | } 2042 | if$ 2043 | * 2044 | " " 2045 | * 2046 | year field.or.null sortify 2047 | * 2048 | " " 2049 | * 2050 | cite$ 2051 | * 2052 | #1 entry.max$ substring$ 2053 | 'sort.label := 2054 | sort.label * 2055 | #1 entry.max$ substring$ 2056 | 'sort.key$ := 2057 | } 2058 | 2059 | STRINGS { longest.label last.label next.extra } 2060 | 2061 | INTEGERS { longest.label.width last.extra.num number.label } 2062 | 2063 | FUNCTION {initialize.longest.label} 2064 | { "" 'longest.label := 2065 | #0 int.to.chr$ 'last.label := 2066 | "" 'next.extra := 2067 | #0 'longest.label.width := 2068 | #0 'last.extra.num := 2069 | #0 'number.label := 2070 | } 2071 | 2072 | FUNCTION {forward.pass} 2073 | { last.label label = 2074 | { last.extra.num #1 + 'last.extra.num := 2075 | last.extra.num int.to.chr$ 'extra.label := 2076 | } 2077 | { "a" chr.to.int$ 'last.extra.num := 2078 | "" 'extra.label := 2079 | label 'last.label := 2080 | } 2081 | if$ 2082 | number.label #1 + 'number.label := 2083 | } 2084 | 2085 | FUNCTION {reverse.pass} 2086 | { next.extra "b" = 2087 | { "a" 'extra.label := } 2088 | 'skip$ 2089 | if$ 2090 | extra.label 'next.extra := 2091 | extra.label 2092 | duplicate$ empty$ 2093 | 'skip$ 2094 | { "{\natexlab{" swap$ * "}}" * } 2095 | if$ 2096 | 'extra.label := 2097 | label extra.label * 'label := 2098 | } 2099 | 2100 | FUNCTION {bib.sort.order} 2101 | { sort.label 'sort.key$ := 2102 | } 2103 | 2104 | FUNCTION {begin.bib} 2105 | { preamble$ empty$ 2106 | 'skip$ 2107 | { preamble$ write$ newline$ } 2108 | if$ 2109 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 2110 | write$ newline$ 2111 | "\providecommand{\natexlab}[1]{#1}" 2112 | write$ newline$ 2113 | "\providecommand{\url}[1]{#1}" 2114 | write$ newline$ 2115 | "\expandafter\ifx\csname urlstyle\endcsname\relax\else" 2116 | write$ newline$ 2117 | " \urlstyle{same}\fi" 2118 | write$ newline$ 2119 | show.doi 2120 | { "\expandafter\ifx\csname href\endcsname\relax" 2121 | write$ newline$ 2122 | " \DeclareUrlCommand\doi{\urlstyle{rm}}\else" 2123 | write$ newline$ 2124 | " \providecommand\doi[1]{\href{https://doi.org/#1}{\nolinkurl{#1}}}\fi" 2125 | write$ newline$ 2126 | } 2127 | 'skip$ 2128 | if$ 2129 | } 2130 | 2131 | FUNCTION {end.bib} 2132 | { newline$ 2133 | "\end{thebibliography}" write$ newline$ 2134 | } 2135 | 2136 | READ 2137 | 2138 | EXECUTE {init.state.consts} 2139 | 2140 | EXECUTE {load.config} 2141 | 2142 | ITERATE {presort} 2143 | 2144 | SORT 2145 | 2146 | EXECUTE {initialize.longest.label} 2147 | 2148 | ITERATE {forward.pass} 2149 | 2150 | REVERSE {reverse.pass} 2151 | 2152 | ITERATE {bib.sort.order} 2153 | 2154 | SORT 2155 | 2156 | EXECUTE {begin.bib} 2157 | 2158 | ITERATE {call.type$} 2159 | 2160 | EXECUTE {end.bib} -------------------------------------------------------------------------------- /gbt7714-numerical.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-numerical.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,numerical') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | INTEGERS { 24 | uppercase.name 25 | max.num.authors 26 | period.between.author.year 27 | sentence.case.title 28 | link.title 29 | title.in.journal 30 | show.mark 31 | show.medium.type 32 | slash.for.extraction 33 | in.booktitle 34 | abbreviate.journal 35 | italic.journal 36 | bold.journal.volume 37 | show.missing.address.publisher 38 | space.before.pages 39 | only.start.page 40 | show.url 41 | show.doi 42 | show.note 43 | show.english.translation 44 | } 45 | 46 | FUNCTION {load.config} 47 | { 48 | #0 'uppercase.name := 49 | #3 'max.num.authors := 50 | #1 'sentence.case.title := 51 | #0 'link.title := 52 | #1 'title.in.journal := 53 | #1 'show.mark := 54 | #1 'show.medium.type := 55 | #1 'slash.for.extraction := 56 | #0 'in.booktitle := 57 | #0 'abbreviate.journal := 58 | #0 'italic.journal := 59 | #0 'bold.journal.volume := 60 | #0 'show.missing.address.publisher := 61 | #0 'space.before.pages := 62 | #0 'only.start.page := 63 | #1 'show.url := 64 | #1 'show.doi := 65 | #0 'show.note := 66 | #0 'show.english.translation := 67 | } 68 | 69 | ENTRY 70 | { address 71 | author 72 | booktitle 73 | date 74 | doi 75 | edition 76 | editor 77 | howpublished 78 | institution 79 | journal 80 | key 81 | language 82 | mark 83 | medium 84 | note 85 | number 86 | organization 87 | pages 88 | publisher 89 | school 90 | series 91 | title 92 | translator 93 | translation 94 | url 95 | urldate 96 | volume 97 | year 98 | } 99 | { entry.lang entry.is.electronic entry.numbered } 100 | { label extra.label sort.label short.list entry.mark entry.url } 101 | 102 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 103 | 104 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 105 | 106 | INTEGERS { charptr len } 107 | 108 | FUNCTION {init.state.consts} 109 | { #0 'before.all := 110 | #1 'mid.sentence := 111 | #2 'after.sentence := 112 | #3 'after.block := 113 | #4 'after.slash := 114 | #3 'lang.zh := 115 | #4 'lang.ja := 116 | #1 'lang.en := 117 | #2 'lang.ru := 118 | #0 'lang.other := 119 | } 120 | 121 | FUNCTION {bbl.anonymous} 122 | { entry.lang lang.zh = 123 | { "佚名" } 124 | { "Anon" } 125 | if$ 126 | } 127 | 128 | FUNCTION {bbl.space} 129 | { entry.lang lang.zh = 130 | { "\ " } 131 | { " " } 132 | if$ 133 | } 134 | 135 | FUNCTION {bbl.et.al} 136 | { entry.lang lang.zh = 137 | { "等" } 138 | { entry.lang lang.ja = 139 | { "他" } 140 | { entry.lang lang.ru = 141 | { "идр" } 142 | { "et~al." } 143 | if$ 144 | } 145 | if$ 146 | } 147 | if$ 148 | } 149 | 150 | FUNCTION {citation.et.al} 151 | { bbl.et.al } 152 | 153 | FUNCTION {bbl.colon} { ": " } 154 | 155 | FUNCTION {bbl.wide.space} { "\quad " } 156 | 157 | FUNCTION {bbl.slash} { "//\allowbreak " } 158 | 159 | FUNCTION {bbl.sine.loco} 160 | { entry.lang lang.zh = 161 | { "[出版地不详]" } 162 | { "[S.l.]" } 163 | if$ 164 | } 165 | 166 | FUNCTION {bbl.sine.nomine} 167 | { entry.lang lang.zh = 168 | { "[出版者不详]" } 169 | { "[s.n.]" } 170 | if$ 171 | } 172 | 173 | FUNCTION {bbl.sine.loco.sine.nomine} 174 | { entry.lang lang.zh = 175 | { "[出版地不详: 出版者不详]" } 176 | { "[S.l.: s.n.]" } 177 | if$ 178 | } 179 | 180 | FUNCTION {not} 181 | { { #0 } 182 | { #1 } 183 | if$ 184 | } 185 | 186 | FUNCTION {and} 187 | { 'skip$ 188 | { pop$ #0 } 189 | if$ 190 | } 191 | 192 | FUNCTION {or} 193 | { { pop$ #1 } 194 | 'skip$ 195 | if$ 196 | } 197 | 198 | STRINGS { s t } 199 | 200 | FUNCTION {output.nonnull} 201 | { 's := 202 | output.state mid.sentence = 203 | { ", " * write$ } 204 | { output.state after.block = 205 | { add.period$ write$ 206 | newline$ 207 | "\newblock " write$ 208 | } 209 | { output.state before.all = 210 | 'write$ 211 | { output.state after.slash = 212 | { bbl.slash * write$ 213 | newline$ 214 | } 215 | { add.period$ " " * write$ } 216 | if$ 217 | } 218 | if$ 219 | } 220 | if$ 221 | mid.sentence 'output.state := 222 | } 223 | if$ 224 | s 225 | } 226 | 227 | FUNCTION {output} 228 | { duplicate$ empty$ 229 | 'pop$ 230 | 'output.nonnull 231 | if$ 232 | } 233 | 234 | FUNCTION {output.after} 235 | { 't := 236 | duplicate$ empty$ 237 | 'pop$ 238 | { 's := 239 | output.state mid.sentence = 240 | { t * write$ } 241 | { output.state after.block = 242 | { add.period$ write$ 243 | newline$ 244 | "\newblock " write$ 245 | } 246 | { output.state before.all = 247 | 'write$ 248 | { output.state after.slash = 249 | { bbl.slash * write$ } 250 | { add.period$ " " * write$ } 251 | if$ 252 | } 253 | if$ 254 | } 255 | if$ 256 | mid.sentence 'output.state := 257 | } 258 | if$ 259 | s 260 | } 261 | if$ 262 | } 263 | 264 | FUNCTION {output.check} 265 | { 't := 266 | duplicate$ empty$ 267 | { pop$ "empty " t * " in " * cite$ * warning$ } 268 | 'output.nonnull 269 | if$ 270 | } 271 | 272 | FUNCTION {fin.entry} 273 | { add.period$ 274 | write$ 275 | show.english.translation entry.lang lang.zh = and 276 | { ")" 277 | write$ 278 | } 279 | 'skip$ 280 | if$ 281 | newline$ 282 | } 283 | 284 | FUNCTION {new.block} 285 | { output.state before.all = 286 | 'skip$ 287 | { output.state after.slash = 288 | 'skip$ 289 | { after.block 'output.state := } 290 | if$ 291 | } 292 | if$ 293 | } 294 | 295 | FUNCTION {new.sentence} 296 | { output.state after.block = 297 | 'skip$ 298 | { output.state before.all = 299 | 'skip$ 300 | { output.state after.slash = 301 | 'skip$ 302 | { after.sentence 'output.state := } 303 | if$ 304 | } 305 | if$ 306 | } 307 | if$ 308 | } 309 | 310 | FUNCTION {new.slash} 311 | { output.state before.all = 312 | 'skip$ 313 | { slash.for.extraction 314 | { after.slash 'output.state := } 315 | { after.block 'output.state := } 316 | if$ 317 | } 318 | if$ 319 | } 320 | 321 | FUNCTION {new.block.checka} 322 | { empty$ 323 | 'skip$ 324 | 'new.block 325 | if$ 326 | } 327 | 328 | FUNCTION {new.block.checkb} 329 | { empty$ 330 | swap$ empty$ 331 | and 332 | 'skip$ 333 | 'new.block 334 | if$ 335 | } 336 | 337 | FUNCTION {new.sentence.checka} 338 | { empty$ 339 | 'skip$ 340 | 'new.sentence 341 | if$ 342 | } 343 | 344 | FUNCTION {new.sentence.checkb} 345 | { empty$ 346 | swap$ empty$ 347 | and 348 | 'skip$ 349 | 'new.sentence 350 | if$ 351 | } 352 | 353 | FUNCTION {field.or.null} 354 | { duplicate$ empty$ 355 | { pop$ "" } 356 | 'skip$ 357 | if$ 358 | } 359 | 360 | FUNCTION {italicize} 361 | { duplicate$ empty$ 362 | { pop$ "" } 363 | { "\textit{" swap$ * "}" * } 364 | if$ 365 | } 366 | 367 | INTEGERS { byte second.byte } 368 | 369 | INTEGERS { char.lang tmp.lang } 370 | 371 | STRINGS { tmp.str } 372 | 373 | FUNCTION {get.str.lang} 374 | { 'tmp.str := 375 | lang.other 'tmp.lang := 376 | #1 'charptr := 377 | tmp.str text.length$ #1 + 'len := 378 | { charptr len < } 379 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 380 | byte #128 < 381 | { charptr #1 + 'charptr := 382 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 383 | { lang.en 'char.lang := } 384 | { lang.other 'char.lang := } 385 | if$ 386 | } 387 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 388 | byte #224 < 389 | { charptr #2 + 'charptr := 390 | byte #207 > byte #212 < and 391 | byte #212 = second.byte #176 < and or 392 | { lang.ru 'char.lang := } 393 | { lang.other 'char.lang := } 394 | if$ 395 | } 396 | { byte #240 < 397 | { charptr #3 + 'charptr := 398 | byte #227 > byte #234 < and 399 | { lang.zh 'char.lang := } 400 | { byte #227 = 401 | { second.byte #143 > 402 | { lang.zh 'char.lang := } 403 | { second.byte #128 > second.byte #132 < and 404 | { lang.ja 'char.lang := } 405 | { lang.other 'char.lang := } 406 | if$ 407 | } 408 | if$ 409 | } 410 | { byte #239 = 411 | second.byte #163 > second.byte #172 < and and 412 | { lang.zh 'char.lang := } 413 | { lang.other 'char.lang := } 414 | if$ 415 | } 416 | if$ 417 | } 418 | if$ 419 | } 420 | { charptr #4 + 'charptr := 421 | byte #240 = second.byte #159 > and 422 | { lang.zh 'char.lang := } 423 | { lang.other 'char.lang := } 424 | if$ 425 | } 426 | if$ 427 | } 428 | if$ 429 | } 430 | if$ 431 | char.lang tmp.lang > 432 | { char.lang 'tmp.lang := } 433 | 'skip$ 434 | if$ 435 | } 436 | while$ 437 | tmp.lang 438 | } 439 | 440 | FUNCTION {check.entry.lang} 441 | { author field.or.null 442 | title field.or.null * 443 | get.str.lang 444 | } 445 | 446 | FUNCTION {set.entry.lang} 447 | { language empty$ 448 | { check.entry.lang } 449 | { language "english" = language "american" = or language "british" = or 450 | { lang.en } 451 | { language "chinese" = 452 | { lang.zh } 453 | { language "japanese" = 454 | { lang.ja } 455 | { language "russian" = 456 | { lang.ru } 457 | { check.entry.lang } 458 | if$ 459 | } 460 | if$ 461 | } 462 | if$ 463 | } 464 | if$ 465 | } 466 | if$ 467 | 'entry.lang := 468 | } 469 | 470 | FUNCTION {set.entry.numbered} 471 | { type$ "patent" = 472 | type$ "standard" = or 473 | type$ "techreport" = or 474 | { #1 'entry.numbered := } 475 | { #0 'entry.numbered := } 476 | if$ 477 | } 478 | 479 | INTEGERS { nameptr namesleft numnames name.lang } 480 | 481 | FUNCTION {format.names} 482 | { 's := 483 | #1 'nameptr := 484 | s num.names$ 'numnames := 485 | numnames 'namesleft := 486 | { namesleft #0 > } 487 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 488 | nameptr max.num.authors > 489 | { bbl.et.al 490 | #1 'namesleft := 491 | } 492 | { t "others" = 493 | { bbl.et.al } 494 | { t get.str.lang 'name.lang := 495 | name.lang lang.en = 496 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 497 | uppercase.name 498 | { "u" change.case$ } 499 | 'skip$ 500 | if$ 501 | t #1 "{, jj}" format.name$ * 502 | } 503 | { t #1 "{ll}{ff}" format.name$ } 504 | if$ 505 | } 506 | if$ 507 | } 508 | if$ 509 | nameptr #1 > 510 | { ", " swap$ * * } 511 | 'skip$ 512 | if$ 513 | nameptr #1 + 'nameptr := 514 | namesleft #1 - 'namesleft := 515 | } 516 | while$ 517 | } 518 | 519 | FUNCTION {format.key} 520 | { empty$ 521 | { key field.or.null } 522 | { "" } 523 | if$ 524 | } 525 | 526 | FUNCTION {format.authors} 527 | { author empty$ not 528 | { author format.names } 529 | { "empty author in " cite$ * warning$ 530 | "" 531 | } 532 | if$ 533 | } 534 | 535 | FUNCTION {format.editors} 536 | { editor empty$ 537 | { "" } 538 | { editor format.names } 539 | if$ 540 | } 541 | 542 | FUNCTION {format.translators} 543 | { translator empty$ 544 | { "" } 545 | { translator format.names 546 | entry.lang lang.zh = 547 | { translator num.names$ #3 > 548 | { "译" * } 549 | { ", 译" * } 550 | if$ 551 | } 552 | 'skip$ 553 | if$ 554 | } 555 | if$ 556 | } 557 | 558 | FUNCTION {format.full.names} 559 | {'s := 560 | #1 'nameptr := 561 | s num.names$ 'numnames := 562 | numnames 'namesleft := 563 | { namesleft #0 > } 564 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 565 | t get.str.lang 'name.lang := 566 | name.lang lang.en = 567 | { t #1 "{vv~}{ll}" format.name$ 't := } 568 | { t #1 "{ll}{ff}" format.name$ 't := } 569 | if$ 570 | nameptr #1 > 571 | { 572 | namesleft #1 > 573 | { ", " * t * } 574 | { 575 | numnames #2 > 576 | { "," * } 577 | 'skip$ 578 | if$ 579 | t "others" = 580 | { " et~al." * } 581 | { " and " * t * } 582 | if$ 583 | } 584 | if$ 585 | } 586 | 't 587 | if$ 588 | nameptr #1 + 'nameptr := 589 | namesleft #1 - 'namesleft := 590 | } 591 | while$ 592 | } 593 | 594 | FUNCTION {author.editor.full} 595 | { author empty$ 596 | { editor empty$ 597 | { "" } 598 | { editor format.full.names } 599 | if$ 600 | } 601 | { author format.full.names } 602 | if$ 603 | } 604 | 605 | FUNCTION {author.full} 606 | { author empty$ 607 | { "" } 608 | { author format.full.names } 609 | if$ 610 | } 611 | 612 | FUNCTION {editor.full} 613 | { editor empty$ 614 | { "" } 615 | { editor format.full.names } 616 | if$ 617 | } 618 | 619 | FUNCTION {make.full.names} 620 | { type$ "book" = 621 | type$ "inbook" = 622 | or 623 | 'author.editor.full 624 | { type$ "collection" = 625 | type$ "proceedings" = 626 | or 627 | 'editor.full 628 | 'author.full 629 | if$ 630 | } 631 | if$ 632 | } 633 | 634 | FUNCTION {output.bibitem} 635 | { newline$ 636 | "\bibitem[" write$ 637 | label ")" * 638 | make.full.names duplicate$ short.list = 639 | { pop$ } 640 | { * } 641 | if$ 642 | 's := 643 | s text.length$ 'charptr := 644 | { charptr #0 > s charptr #1 substring$ "[" = not and } 645 | { charptr #1 - 'charptr := } 646 | while$ 647 | charptr #0 > 648 | { "{" s * "}" * } 649 | { s } 650 | if$ 651 | "]{" * write$ 652 | cite$ write$ 653 | "}" write$ 654 | newline$ 655 | "" 656 | before.all 'output.state := 657 | } 658 | 659 | FUNCTION {change.sentence.case} 660 | { entry.lang lang.en = 661 | { "t" change.case$ } 662 | 'skip$ 663 | if$ 664 | } 665 | 666 | FUNCTION {add.link} 667 | { url empty$ not 668 | { "\href{" url * "}{" * swap$ * "}" * } 669 | { doi empty$ not 670 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 671 | 'skip$ 672 | if$ 673 | } 674 | if$ 675 | } 676 | 677 | FUNCTION {format.title} 678 | { title empty$ 679 | { "" } 680 | { title 681 | sentence.case.title 682 | 'change.sentence.case 683 | 'skip$ 684 | if$ 685 | entry.numbered number empty$ not and 686 | { bbl.colon * number * } 687 | 'skip$ 688 | if$ 689 | link.title 690 | 'add.link 691 | 'skip$ 692 | if$ 693 | } 694 | if$ 695 | } 696 | 697 | FUNCTION {tie.or.space.connect} 698 | { duplicate$ text.length$ #3 < 699 | { "~" } 700 | { " " } 701 | if$ 702 | swap$ * * 703 | } 704 | 705 | FUNCTION {either.or.check} 706 | { empty$ 707 | 'pop$ 708 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 709 | if$ 710 | } 711 | 712 | FUNCTION {is.digit} 713 | { duplicate$ empty$ 714 | { pop$ #0 } 715 | { chr.to.int$ 716 | duplicate$ "0" chr.to.int$ < 717 | { pop$ #0 } 718 | { "9" chr.to.int$ > 719 | { #0 } 720 | { #1 } 721 | if$ 722 | } 723 | if$ 724 | } 725 | if$ 726 | } 727 | 728 | FUNCTION {is.number} 729 | { 's := 730 | s empty$ 731 | { #0 } 732 | { s text.length$ 'charptr := 733 | { charptr #0 > 734 | s charptr #1 substring$ is.digit 735 | and 736 | } 737 | { charptr #1 - 'charptr := } 738 | while$ 739 | charptr not 740 | } 741 | if$ 742 | } 743 | 744 | FUNCTION {format.volume} 745 | { volume empty$ not 746 | { volume is.number 747 | { entry.lang lang.zh = 748 | { "第 " volume * " 卷" * } 749 | { "volume" volume tie.or.space.connect } 750 | if$ 751 | } 752 | { volume } 753 | if$ 754 | } 755 | { "" } 756 | if$ 757 | } 758 | 759 | FUNCTION {format.number} 760 | { number empty$ not 761 | { number is.number 762 | { entry.lang lang.zh = 763 | { "第 " number * " 册" * } 764 | { "number" number tie.or.space.connect } 765 | if$ 766 | } 767 | { number } 768 | if$ 769 | } 770 | { "" } 771 | if$ 772 | } 773 | 774 | FUNCTION {format.volume.number} 775 | { volume empty$ not 776 | { format.volume } 777 | { format.number } 778 | if$ 779 | } 780 | 781 | FUNCTION {format.title.vol.num} 782 | { title 783 | sentence.case.title 784 | 'change.sentence.case 785 | 'skip$ 786 | if$ 787 | entry.numbered 788 | { number empty$ not 789 | { bbl.colon * number * } 790 | 'skip$ 791 | if$ 792 | } 793 | { format.volume.number 's := 794 | s empty$ not 795 | { bbl.colon * s * } 796 | 'skip$ 797 | if$ 798 | } 799 | if$ 800 | } 801 | 802 | FUNCTION {format.series.vol.num.title} 803 | { format.volume.number 's := 804 | series empty$ not 805 | { series 806 | sentence.case.title 807 | 'change.sentence.case 808 | 'skip$ 809 | if$ 810 | entry.numbered 811 | { bbl.wide.space * } 812 | { bbl.colon * 813 | s empty$ not 814 | { s * bbl.wide.space * } 815 | 'skip$ 816 | if$ 817 | } 818 | if$ 819 | title * 820 | sentence.case.title 821 | 'change.sentence.case 822 | 'skip$ 823 | if$ 824 | entry.numbered number empty$ not and 825 | { bbl.colon * number * } 826 | 'skip$ 827 | if$ 828 | } 829 | { format.title.vol.num } 830 | if$ 831 | link.title 832 | 'add.link 833 | 'skip$ 834 | if$ 835 | } 836 | 837 | FUNCTION {format.booktitle.vol.num} 838 | { booktitle 839 | entry.numbered 840 | 'skip$ 841 | { format.volume.number 's := 842 | s empty$ not 843 | { bbl.colon * s * } 844 | 'skip$ 845 | if$ 846 | } 847 | if$ 848 | } 849 | 850 | FUNCTION {format.series.vol.num.booktitle} 851 | { format.volume.number 's := 852 | series empty$ not 853 | { series bbl.colon * 854 | entry.numbered not s empty$ not and 855 | { s * bbl.wide.space * } 856 | 'skip$ 857 | if$ 858 | booktitle * 859 | } 860 | { format.booktitle.vol.num } 861 | if$ 862 | in.booktitle 863 | { duplicate$ empty$ not entry.lang lang.en = and 864 | { "In: " swap$ * } 865 | 'skip$ 866 | if$ 867 | } 868 | 'skip$ 869 | if$ 870 | } 871 | 872 | FUNCTION {remove.period} 873 | { 't := 874 | "" 's := 875 | { t empty$ not } 876 | { t #1 #1 substring$ 'tmp.str := 877 | tmp.str "." = not 878 | { s tmp.str * 's := } 879 | 'skip$ 880 | if$ 881 | t #2 global.max$ substring$ 't := 882 | } 883 | while$ 884 | s 885 | } 886 | 887 | FUNCTION {abbreviate} 888 | { remove.period 889 | 't := 890 | t "l" change.case$ 's := 891 | "" 892 | s "physical review letters" = 893 | { "Phys Rev Lett" } 894 | 'skip$ 895 | if$ 896 | 's := 897 | s empty$ 898 | { t } 899 | { pop$ s } 900 | if$ 901 | } 902 | 903 | FUNCTION {format.journal} 904 | { journal empty$ not 905 | { journal 906 | abbreviate.journal 907 | 'abbreviate 908 | 'skip$ 909 | if$ 910 | italic.journal entry.lang lang.en = and 911 | 'italicize 912 | 'skip$ 913 | if$ 914 | } 915 | { "" } 916 | if$ 917 | } 918 | 919 | FUNCTION {set.entry.mark} 920 | { entry.mark empty$ not 921 | 'pop$ 922 | { mark empty$ not 923 | { pop$ mark 'entry.mark := } 924 | { 'entry.mark := } 925 | if$ 926 | } 927 | if$ 928 | } 929 | 930 | FUNCTION {format.mark} 931 | { show.mark 932 | { entry.mark 933 | show.medium.type 934 | { medium empty$ not 935 | { "/" * medium * } 936 | { entry.is.electronic 937 | { "/OL" * } 938 | 'skip$ 939 | if$ 940 | } 941 | if$ 942 | } 943 | 'skip$ 944 | if$ 945 | 'entry.mark := 946 | "\allowbreak[" entry.mark * "]" * 947 | } 948 | { "" } 949 | if$ 950 | } 951 | 952 | FUNCTION {num.to.ordinal} 953 | { duplicate$ text.length$ 'charptr := 954 | duplicate$ charptr #1 substring$ 's := 955 | s "1" = 956 | { "st" * } 957 | { s "2" = 958 | { "nd" * } 959 | { s "3" = 960 | { "rd" * } 961 | { "th" * } 962 | if$ 963 | } 964 | if$ 965 | } 966 | if$ 967 | } 968 | 969 | FUNCTION {format.edition} 970 | { edition empty$ 971 | { "" } 972 | { edition is.number 973 | { entry.lang lang.zh = 974 | { edition " 版" * } 975 | { edition num.to.ordinal " ed." * } 976 | if$ 977 | } 978 | { entry.lang lang.en = 979 | { edition change.sentence.case 's := 980 | s "Revised" = s "Revised edition" = or 981 | { "Rev. ed." } 982 | { s " ed." *} 983 | if$ 984 | } 985 | { edition } 986 | if$ 987 | } 988 | if$ 989 | } 990 | if$ 991 | } 992 | 993 | FUNCTION {format.publisher} 994 | { publisher empty$ not 995 | { publisher } 996 | { school empty$ not 997 | { school } 998 | { organization empty$ not 999 | { organization } 1000 | { institution empty$ not 1001 | { institution } 1002 | { "" } 1003 | if$ 1004 | } 1005 | if$ 1006 | } 1007 | if$ 1008 | } 1009 | if$ 1010 | } 1011 | 1012 | FUNCTION {format.address.publisher} 1013 | { address empty$ not 1014 | { address 1015 | format.publisher empty$ not 1016 | { bbl.colon * format.publisher * } 1017 | { entry.is.electronic not show.missing.address.publisher and 1018 | { bbl.colon * bbl.sine.nomine * } 1019 | 'skip$ 1020 | if$ 1021 | } 1022 | if$ 1023 | } 1024 | { entry.is.electronic not show.missing.address.publisher and 1025 | { format.publisher empty$ not 1026 | { bbl.sine.loco bbl.colon * format.publisher * } 1027 | { bbl.sine.loco.sine.nomine } 1028 | if$ 1029 | } 1030 | { format.publisher empty$ not 1031 | { format.publisher } 1032 | { "" } 1033 | if$ 1034 | } 1035 | if$ 1036 | } 1037 | if$ 1038 | } 1039 | 1040 | FUNCTION {extract.before.dash} 1041 | { duplicate$ empty$ 1042 | { pop$ "" } 1043 | { 's := 1044 | #1 'charptr := 1045 | s text.length$ #1 + 'len := 1046 | { charptr len < 1047 | s charptr #1 substring$ "-" = not 1048 | and 1049 | } 1050 | { charptr #1 + 'charptr := } 1051 | while$ 1052 | s #1 charptr #1 - substring$ 1053 | } 1054 | if$ 1055 | } 1056 | 1057 | FUNCTION {extract.after.dash} 1058 | { duplicate$ empty$ 1059 | { pop$ "" } 1060 | { 's := 1061 | #1 'charptr := 1062 | s text.length$ #1 + 'len := 1063 | { charptr len < 1064 | s charptr #1 substring$ "-" = not 1065 | and 1066 | } 1067 | { charptr #1 + 'charptr := } 1068 | while$ 1069 | { charptr len < 1070 | s charptr #1 substring$ "-" = 1071 | and 1072 | } 1073 | { charptr #1 + 'charptr := } 1074 | while$ 1075 | s charptr global.max$ substring$ 1076 | } 1077 | if$ 1078 | } 1079 | 1080 | FUNCTION {contains.dash} 1081 | { duplicate$ empty$ 1082 | { pop$ #0 } 1083 | { 's := 1084 | { s empty$ not 1085 | s #1 #1 substring$ "-" = not 1086 | and 1087 | } 1088 | { s #2 global.max$ substring$ 's := } 1089 | while$ 1090 | s empty$ not 1091 | } 1092 | if$ 1093 | } 1094 | 1095 | FUNCTION {format.year} 1096 | { year empty$ not 1097 | { year extract.before.dash } 1098 | { date empty$ not 1099 | { date extract.before.dash } 1100 | { "empty year in " cite$ * warning$ 1101 | urldate empty$ not 1102 | { "[" urldate extract.before.dash * "]" * } 1103 | { "" } 1104 | if$ 1105 | } 1106 | if$ 1107 | } 1108 | if$ 1109 | extra.label * 1110 | } 1111 | 1112 | FUNCTION {format.date} 1113 | { type$ "patent" = type$ "newspaper" = or 1114 | date empty$ not and 1115 | { date } 1116 | { year } 1117 | if$ 1118 | } 1119 | 1120 | FUNCTION {format.editdate} 1121 | { date empty$ not 1122 | { "\allowbreak(" date * ")" * } 1123 | { "" } 1124 | if$ 1125 | } 1126 | 1127 | FUNCTION {format.urldate} 1128 | { urldate empty$ not entry.is.electronic and 1129 | { "\allowbreak[" urldate * "]" * } 1130 | { "" } 1131 | if$ 1132 | } 1133 | 1134 | FUNCTION {hyphenate} 1135 | { 't := 1136 | "" 1137 | { t empty$ not } 1138 | { t #1 #1 substring$ "-" = 1139 | { "-" * 1140 | { t #1 #1 substring$ "-" = } 1141 | { t #2 global.max$ substring$ 't := } 1142 | while$ 1143 | } 1144 | { t #1 #1 substring$ * 1145 | t #2 global.max$ substring$ 't := 1146 | } 1147 | if$ 1148 | } 1149 | while$ 1150 | } 1151 | 1152 | FUNCTION {format.pages} 1153 | { pages empty$ 1154 | { "" } 1155 | { pages 1156 | only.start.page 1157 | 'extract.before.dash 1158 | 'hyphenate 1159 | if$ 1160 | } 1161 | if$ 1162 | } 1163 | 1164 | FUNCTION {format.journal.volume} 1165 | { volume empty$ not 1166 | { bold.journal.volume 1167 | { "\textbf{" volume * "}" * } 1168 | { volume } 1169 | if$ 1170 | } 1171 | { "" } 1172 | if$ 1173 | } 1174 | 1175 | FUNCTION {format.journal.number} 1176 | { number empty$ not 1177 | { "\penalty0 (" number * ")" * } 1178 | { "" } 1179 | if$ 1180 | } 1181 | 1182 | FUNCTION {format.journal.pages} 1183 | { pages empty$ 1184 | { "" } 1185 | { space.before.pages 1186 | { ": " } 1187 | { ":\penalty0 " } 1188 | if$ 1189 | format.pages * 1190 | } 1191 | if$ 1192 | } 1193 | 1194 | FUNCTION {format.periodical.year.volume.number} 1195 | { year empty$ not 1196 | { year extract.before.dash } 1197 | { "empty year in periodical " cite$ * warning$ } 1198 | if$ 1199 | volume empty$ not 1200 | { ", " * volume extract.before.dash * } 1201 | 'skip$ 1202 | if$ 1203 | number empty$ not 1204 | { "\penalty0 (" * number extract.before.dash * ")" * } 1205 | 'skip$ 1206 | if$ 1207 | year contains.dash 1208 | { "--" * 1209 | year extract.after.dash empty$ 1210 | volume extract.after.dash empty$ and 1211 | number extract.after.dash empty$ and not 1212 | { year extract.after.dash empty$ not 1213 | { year extract.after.dash * } 1214 | { year extract.before.dash * } 1215 | if$ 1216 | volume empty$ not 1217 | { ", " * volume extract.after.dash * } 1218 | 'skip$ 1219 | if$ 1220 | number empty$ not 1221 | { "\penalty0 (" * number extract.after.dash * ")" * } 1222 | 'skip$ 1223 | if$ 1224 | } 1225 | 'skip$ 1226 | if$ 1227 | } 1228 | 'skip$ 1229 | if$ 1230 | } 1231 | 1232 | FUNCTION {check.url} 1233 | { url empty$ not 1234 | { "\url{" url * "}" * 'entry.url := 1235 | #1 'entry.is.electronic := 1236 | } 1237 | { howpublished empty$ not 1238 | { howpublished #1 #5 substring$ "\url{" = 1239 | { howpublished 'entry.url := 1240 | #1 'entry.is.electronic := 1241 | } 1242 | 'skip$ 1243 | if$ 1244 | } 1245 | { note empty$ not 1246 | { note #1 #5 substring$ "\url{" = 1247 | { note 'entry.url := 1248 | #1 'entry.is.electronic := 1249 | } 1250 | 'skip$ 1251 | if$ 1252 | } 1253 | 'skip$ 1254 | if$ 1255 | } 1256 | if$ 1257 | } 1258 | if$ 1259 | } 1260 | 1261 | FUNCTION {format.url} 1262 | { entry.url 1263 | } 1264 | 1265 | FUNCTION {output.url} 1266 | { entry.url empty$ not 1267 | { new.block 1268 | entry.url output 1269 | } 1270 | 'skip$ 1271 | if$ 1272 | } 1273 | 1274 | FUNCTION {check.doi} 1275 | { doi empty$ not 1276 | { #1 'entry.is.electronic := } 1277 | 'skip$ 1278 | if$ 1279 | } 1280 | 1281 | FUNCTION {is.in.url} 1282 | { 's := 1283 | s empty$ 1284 | { #1 } 1285 | { entry.url empty$ 1286 | { #0 } 1287 | { s text.length$ 'len := 1288 | entry.url text.length$ 'charptr := 1289 | { entry.url charptr len substring$ s = not 1290 | charptr #0 > 1291 | and 1292 | } 1293 | { charptr #1 - 'charptr := } 1294 | while$ 1295 | charptr 1296 | } 1297 | if$ 1298 | } 1299 | if$ 1300 | } 1301 | 1302 | FUNCTION {format.doi} 1303 | { "" 1304 | doi empty$ not 1305 | { "" 's := 1306 | doi 't := 1307 | #0 'numnames := 1308 | { t empty$ not} 1309 | { t #1 #1 substring$ 'tmp.str := 1310 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1311 | { t #2 #1 substring$ empty$ 1312 | { s tmp.str * 's := } 1313 | 'skip$ 1314 | if$ 1315 | s empty$ s is.in.url or 1316 | 'skip$ 1317 | { numnames #1 + 'numnames := 1318 | numnames #1 > 1319 | { ", " * } 1320 | { "DOI: " * } 1321 | if$ 1322 | "\doi{" s * "}" * * 1323 | } 1324 | if$ 1325 | "" 's := 1326 | } 1327 | { s tmp.str * 's := } 1328 | if$ 1329 | t #2 global.max$ substring$ 't := 1330 | } 1331 | while$ 1332 | } 1333 | 'skip$ 1334 | if$ 1335 | } 1336 | 1337 | FUNCTION {output.doi} 1338 | { doi empty$ not show.doi and 1339 | show.english.translation entry.lang lang.zh = and not and 1340 | { new.block 1341 | format.doi output 1342 | } 1343 | 'skip$ 1344 | if$ 1345 | } 1346 | 1347 | FUNCTION {check.electronic} 1348 | { "" 'entry.url := 1349 | #0 'entry.is.electronic := 1350 | 'check.doi 1351 | 'skip$ 1352 | if$ 1353 | 'check.url 1354 | 'skip$ 1355 | if$ 1356 | medium empty$ not 1357 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1358 | { #1 'entry.is.electronic := } 1359 | 'skip$ 1360 | if$ 1361 | } 1362 | 'skip$ 1363 | if$ 1364 | } 1365 | 1366 | FUNCTION {format.note} 1367 | { note empty$ not show.note and 1368 | { note } 1369 | { "" } 1370 | if$ 1371 | } 1372 | 1373 | FUNCTION {output.translation} 1374 | { show.english.translation entry.lang lang.zh = and 1375 | { translation empty$ not 1376 | { translation } 1377 | { "[English translation missing!]" } 1378 | if$ 1379 | " (in Chinese)" * output 1380 | write$ 1381 | format.doi duplicate$ empty$ not 1382 | { newline$ 1383 | write$ 1384 | } 1385 | 'pop$ 1386 | if$ 1387 | " \\" write$ 1388 | newline$ 1389 | "(" write$ 1390 | "" 1391 | before.all 'output.state := 1392 | } 1393 | 'skip$ 1394 | if$ 1395 | } 1396 | 1397 | FUNCTION {empty.misc.check} 1398 | { author empty$ title empty$ 1399 | year empty$ 1400 | and and 1401 | key empty$ not and 1402 | { "all relevant fields are empty in " cite$ * warning$ } 1403 | 'skip$ 1404 | if$ 1405 | } 1406 | 1407 | FUNCTION {monograph} 1408 | { output.bibitem 1409 | output.translation 1410 | author empty$ not 1411 | { format.authors } 1412 | { editor empty$ not 1413 | { format.editors } 1414 | { "empty author and editor in " cite$ * warning$ 1415 | "" 1416 | } 1417 | if$ 1418 | } 1419 | if$ 1420 | output 1421 | new.block 1422 | format.series.vol.num.title "title" output.check 1423 | "M" set.entry.mark 1424 | format.mark "" output.after 1425 | new.block 1426 | format.translators output 1427 | new.sentence 1428 | format.edition output 1429 | new.block 1430 | format.address.publisher output 1431 | format.year "year" output.check 1432 | format.pages bbl.colon output.after 1433 | format.urldate "" output.after 1434 | output.url 1435 | output.doi 1436 | new.block 1437 | format.note output 1438 | fin.entry 1439 | } 1440 | 1441 | FUNCTION {incollection} 1442 | { output.bibitem 1443 | output.translation 1444 | format.authors output 1445 | author format.key output 1446 | new.block 1447 | format.title "title" output.check 1448 | "M" set.entry.mark 1449 | format.mark "" output.after 1450 | new.block 1451 | format.translators output 1452 | new.slash 1453 | format.editors output 1454 | new.block 1455 | format.series.vol.num.booktitle "booktitle" output.check 1456 | new.block 1457 | format.edition output 1458 | new.block 1459 | format.address.publisher output 1460 | format.year "year" output.check 1461 | format.pages bbl.colon output.after 1462 | format.urldate "" output.after 1463 | output.url 1464 | output.doi 1465 | new.block 1466 | format.note output 1467 | fin.entry 1468 | } 1469 | 1470 | FUNCTION {periodical} 1471 | { output.bibitem 1472 | output.translation 1473 | format.authors output 1474 | author format.key output 1475 | new.block 1476 | format.title "title" output.check 1477 | "J" set.entry.mark 1478 | format.mark "" output.after 1479 | new.block 1480 | format.periodical.year.volume.number output 1481 | new.block 1482 | format.address.publisher output 1483 | format.date "year" output.check 1484 | format.urldate "" output.after 1485 | output.url 1486 | output.doi 1487 | new.block 1488 | format.note output 1489 | fin.entry 1490 | } 1491 | 1492 | FUNCTION {article} 1493 | { output.bibitem 1494 | output.translation 1495 | format.authors output 1496 | author format.key output 1497 | new.block 1498 | title.in.journal 1499 | { format.title "title" output.check 1500 | "J" set.entry.mark 1501 | format.mark "" output.after 1502 | new.block 1503 | } 1504 | 'skip$ 1505 | if$ 1506 | format.journal "journal" output.check 1507 | format.date "year" output.check 1508 | format.journal.volume output 1509 | format.journal.number "" output.after 1510 | format.journal.pages "" output.after 1511 | format.urldate "" output.after 1512 | output.url 1513 | output.doi 1514 | new.block 1515 | format.note output 1516 | fin.entry 1517 | } 1518 | 1519 | FUNCTION {patent} 1520 | { output.bibitem 1521 | output.translation 1522 | format.authors output 1523 | author format.key output 1524 | new.block 1525 | format.title "title" output.check 1526 | "P" set.entry.mark 1527 | format.mark "" output.after 1528 | new.block 1529 | format.date "year" output.check 1530 | format.urldate "" output.after 1531 | output.url 1532 | output.doi 1533 | new.block 1534 | format.note output 1535 | fin.entry 1536 | } 1537 | 1538 | FUNCTION {electronic} 1539 | { #1 #1 check.electronic 1540 | #1 'entry.is.electronic := 1541 | output.bibitem 1542 | output.translation 1543 | format.authors output 1544 | author format.key output 1545 | new.block 1546 | format.series.vol.num.title "title" output.check 1547 | "EB" set.entry.mark 1548 | format.mark "" output.after 1549 | new.block 1550 | format.address.publisher output 1551 | date empty$ 1552 | { format.date output } 1553 | 'skip$ 1554 | if$ 1555 | format.pages bbl.colon output.after 1556 | format.editdate "" output.after 1557 | format.urldate "" output.after 1558 | output.url 1559 | output.doi 1560 | new.block 1561 | format.note output 1562 | fin.entry 1563 | } 1564 | 1565 | FUNCTION {misc} 1566 | { journal empty$ not 1567 | 'article 1568 | { booktitle empty$ not 1569 | 'incollection 1570 | { publisher empty$ not 1571 | 'monograph 1572 | { entry.is.electronic 1573 | 'electronic 1574 | { "Z" set.entry.mark 1575 | monograph 1576 | } 1577 | if$ 1578 | } 1579 | if$ 1580 | } 1581 | if$ 1582 | } 1583 | if$ 1584 | empty.misc.check 1585 | } 1586 | 1587 | FUNCTION {archive} 1588 | { "A" set.entry.mark 1589 | misc 1590 | } 1591 | 1592 | FUNCTION {book} { monograph } 1593 | 1594 | FUNCTION {booklet} { book } 1595 | 1596 | FUNCTION {collection} 1597 | { "G" set.entry.mark 1598 | monograph 1599 | } 1600 | 1601 | FUNCTION {database} 1602 | { "DB" set.entry.mark 1603 | electronic 1604 | } 1605 | 1606 | FUNCTION {dataset} 1607 | { "DS" set.entry.mark 1608 | electronic 1609 | } 1610 | 1611 | FUNCTION {inbook} { book } 1612 | 1613 | FUNCTION {inproceedings} 1614 | { "C" set.entry.mark 1615 | incollection 1616 | } 1617 | 1618 | FUNCTION {conference} { inproceedings } 1619 | 1620 | FUNCTION {map} 1621 | { "CM" set.entry.mark 1622 | misc 1623 | } 1624 | 1625 | FUNCTION {manual} { monograph } 1626 | 1627 | FUNCTION {mastersthesis} 1628 | { "D" set.entry.mark 1629 | monograph 1630 | } 1631 | 1632 | FUNCTION {newspaper} 1633 | { "N" set.entry.mark 1634 | article 1635 | } 1636 | 1637 | FUNCTION {online} 1638 | { "EB" set.entry.mark 1639 | electronic 1640 | } 1641 | 1642 | FUNCTION {phdthesis} { mastersthesis } 1643 | 1644 | FUNCTION {proceedings} 1645 | { "C" set.entry.mark 1646 | monograph 1647 | } 1648 | 1649 | FUNCTION {software} 1650 | { "CP" set.entry.mark 1651 | electronic 1652 | } 1653 | 1654 | FUNCTION {standard} 1655 | { "S" set.entry.mark 1656 | misc 1657 | } 1658 | 1659 | FUNCTION {techreport} 1660 | { "R" set.entry.mark 1661 | misc 1662 | } 1663 | 1664 | FUNCTION {unpublished} 1665 | { "Z" set.entry.mark 1666 | misc 1667 | } 1668 | 1669 | FUNCTION {default.type} { misc } 1670 | 1671 | MACRO {jan} {"January"} 1672 | 1673 | MACRO {feb} {"February"} 1674 | 1675 | MACRO {mar} {"March"} 1676 | 1677 | MACRO {apr} {"April"} 1678 | 1679 | MACRO {may} {"May"} 1680 | 1681 | MACRO {jun} {"June"} 1682 | 1683 | MACRO {jul} {"July"} 1684 | 1685 | MACRO {aug} {"August"} 1686 | 1687 | MACRO {sep} {"September"} 1688 | 1689 | MACRO {oct} {"October"} 1690 | 1691 | MACRO {nov} {"November"} 1692 | 1693 | MACRO {dec} {"December"} 1694 | 1695 | MACRO {acmcs} {"ACM Computing Surveys"} 1696 | 1697 | MACRO {acta} {"Acta Informatica"} 1698 | 1699 | MACRO {cacm} {"Communications of the ACM"} 1700 | 1701 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1702 | 1703 | MACRO {ibmsj} {"IBM Systems Journal"} 1704 | 1705 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1706 | 1707 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1708 | 1709 | MACRO {ieeetcad} 1710 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1711 | 1712 | MACRO {ipl} {"Information Processing Letters"} 1713 | 1714 | MACRO {jacm} {"Journal of the ACM"} 1715 | 1716 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1717 | 1718 | MACRO {scp} {"Science of Computer Programming"} 1719 | 1720 | MACRO {sicomp} {"SIAM Journal on Computing"} 1721 | 1722 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1723 | 1724 | MACRO {tods} {"ACM Transactions on Database Systems"} 1725 | 1726 | MACRO {tog} {"ACM Transactions on Graphics"} 1727 | 1728 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1729 | 1730 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1731 | 1732 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1733 | 1734 | MACRO {tcs} {"Theoretical Computer Science"} 1735 | 1736 | FUNCTION {sortify} 1737 | { purify$ 1738 | "l" change.case$ 1739 | } 1740 | 1741 | FUNCTION {chop.word} 1742 | { 's := 1743 | 'len := 1744 | s #1 len substring$ = 1745 | { s len #1 + global.max$ substring$ } 1746 | 's 1747 | if$ 1748 | } 1749 | 1750 | FUNCTION {format.lab.names} 1751 | { 's := 1752 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1753 | t get.str.lang 'name.lang := 1754 | name.lang lang.en = 1755 | { t #1 "{vv~}{ll}" format.name$} 1756 | { t #1 "{ll}{ff}" format.name$} 1757 | if$ 1758 | s num.names$ #1 > 1759 | { bbl.space * citation.et.al * } 1760 | 'skip$ 1761 | if$ 1762 | } 1763 | 1764 | FUNCTION {author.key.label} 1765 | { author empty$ 1766 | { key empty$ 1767 | { cite$ #1 #3 substring$ } 1768 | 'key 1769 | if$ 1770 | } 1771 | { author format.lab.names } 1772 | if$ 1773 | } 1774 | 1775 | FUNCTION {author.editor.key.label} 1776 | { author empty$ 1777 | { editor empty$ 1778 | { key empty$ 1779 | { cite$ #1 #3 substring$ } 1780 | 'key 1781 | if$ 1782 | } 1783 | { editor format.lab.names } 1784 | if$ 1785 | } 1786 | { author format.lab.names } 1787 | if$ 1788 | } 1789 | 1790 | FUNCTION {author.key.organization.label} 1791 | { author empty$ 1792 | { key empty$ 1793 | { organization empty$ 1794 | { cite$ #1 #3 substring$ } 1795 | { "The " #4 organization chop.word #3 text.prefix$ } 1796 | if$ 1797 | } 1798 | 'key 1799 | if$ 1800 | } 1801 | { author format.lab.names } 1802 | if$ 1803 | } 1804 | 1805 | FUNCTION {editor.key.organization.label} 1806 | { editor empty$ 1807 | { key empty$ 1808 | { organization empty$ 1809 | { cite$ #1 #3 substring$ } 1810 | { "The " #4 organization chop.word #3 text.prefix$ } 1811 | if$ 1812 | } 1813 | 'key 1814 | if$ 1815 | } 1816 | { editor format.lab.names } 1817 | if$ 1818 | } 1819 | 1820 | FUNCTION {calc.short.authors} 1821 | { type$ "book" = 1822 | type$ "inbook" = 1823 | or 1824 | 'author.editor.key.label 1825 | { type$ "collection" = 1826 | type$ "proceedings" = 1827 | or 1828 | { editor empty$ not 1829 | 'editor.key.organization.label 1830 | 'author.key.organization.label 1831 | if$ 1832 | } 1833 | 'author.key.label 1834 | if$ 1835 | } 1836 | if$ 1837 | 'short.list := 1838 | } 1839 | 1840 | FUNCTION {calc.label} 1841 | { calc.short.authors 1842 | short.list 1843 | "(" 1844 | * 1845 | format.year duplicate$ empty$ 1846 | short.list key field.or.null = or 1847 | { pop$ "" } 1848 | 'skip$ 1849 | if$ 1850 | * 1851 | 'label := 1852 | } 1853 | 1854 | INTEGERS { seq.num } 1855 | 1856 | FUNCTION {init.seq} 1857 | { #0 'seq.num :=} 1858 | 1859 | FUNCTION {int.to.fix} 1860 | { "000000000" swap$ int.to.str$ * 1861 | #-1 #10 substring$ 1862 | } 1863 | 1864 | FUNCTION {presort} 1865 | { set.entry.lang 1866 | set.entry.numbered 1867 | show.url show.doi check.electronic 1868 | calc.label 1869 | label sortify 1870 | " " 1871 | * 1872 | seq.num #1 + 'seq.num := 1873 | seq.num int.to.fix 1874 | 'sort.label := 1875 | sort.label * 1876 | #1 entry.max$ substring$ 1877 | 'sort.key$ := 1878 | } 1879 | 1880 | STRINGS { longest.label last.label next.extra } 1881 | 1882 | INTEGERS { longest.label.width last.extra.num number.label } 1883 | 1884 | FUNCTION {initialize.longest.label} 1885 | { "" 'longest.label := 1886 | #0 int.to.chr$ 'last.label := 1887 | "" 'next.extra := 1888 | #0 'longest.label.width := 1889 | #0 'last.extra.num := 1890 | #0 'number.label := 1891 | } 1892 | 1893 | FUNCTION {forward.pass} 1894 | { last.label label = 1895 | { last.extra.num #1 + 'last.extra.num := 1896 | last.extra.num int.to.chr$ 'extra.label := 1897 | } 1898 | { "a" chr.to.int$ 'last.extra.num := 1899 | "" 'extra.label := 1900 | label 'last.label := 1901 | } 1902 | if$ 1903 | number.label #1 + 'number.label := 1904 | } 1905 | 1906 | FUNCTION {reverse.pass} 1907 | { next.extra "b" = 1908 | { "a" 'extra.label := } 1909 | 'skip$ 1910 | if$ 1911 | extra.label 'next.extra := 1912 | extra.label 1913 | duplicate$ empty$ 1914 | 'skip$ 1915 | { "{\natexlab{" swap$ * "}}" * } 1916 | if$ 1917 | 'extra.label := 1918 | label extra.label * 'label := 1919 | } 1920 | 1921 | FUNCTION {bib.sort.order} 1922 | { sort.label 'sort.key$ := 1923 | } 1924 | 1925 | FUNCTION {begin.bib} 1926 | { preamble$ empty$ 1927 | 'skip$ 1928 | { preamble$ write$ newline$ } 1929 | if$ 1930 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1931 | write$ newline$ 1932 | "\providecommand{\natexlab}[1]{#1}" 1933 | write$ newline$ 1934 | "\providecommand{\url}[1]{#1}" 1935 | write$ newline$ 1936 | "\expandafter\ifx\csname urlstyle\endcsname\relax\else" 1937 | write$ newline$ 1938 | " \urlstyle{same}\fi" 1939 | write$ newline$ 1940 | show.doi 1941 | { "\expandafter\ifx\csname href\endcsname\relax" 1942 | write$ newline$ 1943 | " \DeclareUrlCommand\doi{\urlstyle{rm}}\else" 1944 | write$ newline$ 1945 | " \providecommand\doi[1]{\href{https://doi.org/#1}{\nolinkurl{#1}}}\fi" 1946 | write$ newline$ 1947 | } 1948 | 'skip$ 1949 | if$ 1950 | } 1951 | 1952 | FUNCTION {end.bib} 1953 | { newline$ 1954 | "\end{thebibliography}" write$ newline$ 1955 | } 1956 | 1957 | READ 1958 | 1959 | EXECUTE {init.state.consts} 1960 | 1961 | EXECUTE {load.config} 1962 | 1963 | EXECUTE {init.seq} 1964 | 1965 | ITERATE {presort} 1966 | 1967 | SORT 1968 | 1969 | EXECUTE {initialize.longest.label} 1970 | 1971 | ITERATE {forward.pass} 1972 | 1973 | REVERSE {reverse.pass} 1974 | 1975 | ITERATE {bib.sort.order} 1976 | 1977 | SORT 1978 | 1979 | EXECUTE {begin.bib} 1980 | 1981 | ITERATE {call.type$} 1982 | 1983 | EXECUTE {end.bib} -------------------------------------------------------------------------------- /gbt7714.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `package') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | \NeedsTeXFormat{LaTeX2e}[1999/12/01] 24 | \ProvidesPackage{gbt7714} 25 | [2020/03/14 v2.0.1 GB/T 7714-2015 BibTeX Style] 26 | \newif\ifgbt@legacy@interface 27 | \newif\ifgbt@mmxv 28 | \newif\ifgbt@numerical 29 | \newif\ifgbt@super 30 | \newcommand\gbt@obselete@option[1]{% 31 | \PackageWarning{gbt7714}{The option "#1" is obselete}% 32 | } 33 | \DeclareOption{2015}{% 34 | \gbt@obselete@option{2015}% 35 | \gbt@legacy@interfacetrue 36 | \gbt@mmxvtrue 37 | } 38 | \DeclareOption{2005}{% 39 | \gbt@obselete@option{2005}% 40 | \gbt@legacy@interfacetrue 41 | \gbt@mmxvfalse 42 | } 43 | \DeclareOption{super}{% 44 | \gbt@obselete@option{super}% 45 | \gbt@legacy@interfacetrue 46 | \gbt@numericaltrue 47 | \gbt@supertrue 48 | } 49 | \DeclareOption{numbers}{% 50 | \gbt@obselete@option{numbers}% 51 | \gbt@legacy@interfacetrue 52 | \gbt@numericaltrue 53 | \gbt@superfalse 54 | } 55 | \DeclareOption{authoryear}{% 56 | \gbt@obselete@option{authoryear}% 57 | \gbt@legacy@interfacetrue 58 | \gbt@numericalfalse 59 | } 60 | \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{natbib}} 61 | \ProcessOptions\relax 62 | \RequirePackage[compress]{natbib} 63 | \setcitestyle{compress} 64 | \RequirePackage{url} 65 | \renewcommand\newblock{\space} 66 | \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} 67 | \newcommand\bibstyle@numbers{\bibpunct{[}{]}{,}{n}{,}{,}} 68 | \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} 69 | \newcommand\bibstyle@inline{\bibstyle@numbers} 70 | \@namedef{bibstyle@gbt7714-numerical}{\bibstyle@super} 71 | \@namedef{bibstyle@gbt7714-author-year}{\bibstyle@authoryear} 72 | \@namedef{bibstyle@gbt7714-2005-numerical}{\bibstyle@super} 73 | \@namedef{bibstyle@gbt7714-2005-author-year}{\bibstyle@authoryear} 74 | \def\NAT@citexnum[#1][#2]#3{% 75 | \NAT@reset@parser 76 | \NAT@sort@cites{#3}% 77 | \NAT@reset@citea 78 | \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty 79 | \@for\@citeb:=\NAT@cite@list\do 80 | {\@safe@activestrue 81 | \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% 82 | \@safe@activesfalse 83 | \@ifundefined{b@\@citeb\@extra@b@citeb}{% 84 | {\reset@font\bfseries?} 85 | \NAT@citeundefined\PackageWarning{natbib}% 86 | {Citation `\@citeb' on page \thepage \space undefined}}% 87 | {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm 88 | \NAT@parse{\@citeb}% 89 | \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% 90 | \let\NAT@name=\NAT@all@names 91 | \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% 92 | \fi 93 | \ifNAT@full\let\NAT@nm\NAT@all@names\else 94 | \let\NAT@nm\NAT@name\fi 95 | \ifNAT@swa 96 | \@ifnum{\NAT@ctype>\@ne}{% 97 | \@citea 98 | \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}% 99 | }{% 100 | \@ifnum{\NAT@cmprs>\z@}{% 101 | \NAT@ifcat@num\NAT@num 102 | {\let\NAT@nm=\NAT@num}% 103 | {\def\NAT@nm{-2}}% 104 | \NAT@ifcat@num\NAT@last@num 105 | {\@tempcnta=\NAT@last@num\relax}% 106 | {\@tempcnta\m@ne}% 107 | \@ifnum{\NAT@nm=\@tempcnta}{% 108 | \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}% 109 | }{% 110 | \advance\@tempcnta by\@ne 111 | \@ifnum{\NAT@nm=\@tempcnta}{% 112 | % \ifx\NAT@last@yr\relax 113 | % \def@NAT@last@yr{\@citea}% 114 | % \else 115 | % \def@NAT@last@yr{--\NAT@penalty}% 116 | % \fi 117 | \def@NAT@last@yr{-\NAT@penalty}% 118 | }{% 119 | \NAT@last@yr@mbox 120 | }% 121 | }% 122 | }{% 123 | \@tempswatrue 124 | \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}% 125 | \if@tempswa\NAT@citea@mbox\fi 126 | }% 127 | }% 128 | \NAT@def@citea 129 | \else 130 | \ifcase\NAT@ctype 131 | \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else 132 | \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}% 133 | \fi 134 | \if*#1*\else#1\NAT@spacechar\fi 135 | \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}% 136 | \NAT@def@citea@box 137 | \or 138 | \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% 139 | \or 140 | \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% 141 | \or 142 | \NAT@hyper@citea@space\NAT@alias 143 | \fi 144 | \fi 145 | }% 146 | }% 147 | \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}% 148 | \ifNAT@swa\else 149 | % \@ifnum{\NAT@ctype=\z@}{% 150 | % \if*#2*\else\NAT@cmt#2\fi 151 | % }{}% 152 | \NAT@mbox{\NAT@@close}% 153 | \@ifnum{\NAT@ctype=\z@}{% 154 | \if*#2*\else\textsuperscript{#2}\fi 155 | }{}% 156 | \fi 157 | }{#1}{#2}% 158 | }% 159 | \renewcommand\NAT@citesuper[3]{\ifNAT@swa 160 | \if*#2*\else#2\NAT@spacechar\fi 161 | \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close\if*#3*\else#3\fi}% 162 | \else #1\fi\endgroup} 163 | \def\NAT@citex% 164 | [#1][#2]#3{% 165 | \NAT@reset@parser 166 | \NAT@sort@cites{#3}% 167 | \NAT@reset@citea 168 | \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty 169 | \@for\@citeb:=\NAT@cite@list\do 170 | {\@safe@activestrue 171 | \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% 172 | \@safe@activesfalse 173 | \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% 174 | {\reset@font\bfseries ?}\NAT@citeundefined 175 | \PackageWarning{natbib}% 176 | {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}% 177 | {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year 178 | \NAT@parse{\@citeb}% 179 | \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% 180 | \let\NAT@name=\NAT@all@names 181 | \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% 182 | \fi 183 | \ifNAT@full\let\NAT@nm\NAT@all@names\else 184 | \let\NAT@nm\NAT@name\fi 185 | \ifNAT@swa\ifcase\NAT@ctype 186 | \if\relax\NAT@date\relax 187 | \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}% 188 | \else 189 | \ifx\NAT@last@nm\NAT@nm\NAT@yrsep 190 | \ifx\NAT@last@yr\NAT@year 191 | \def\NAT@temp{{?}}% 192 | \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% 193 | {Multiple citation on page \thepage: same authors and 194 | year\MessageBreak without distinguishing extra 195 | letter,\MessageBreak appears as question mark}\fi 196 | \NAT@hyper@{\NAT@exlab}% 197 | \else\unskip\NAT@spacechar 198 | \NAT@hyper@{\NAT@date}% 199 | \fi 200 | \else 201 | \@citea\NAT@hyper@{% 202 | \NAT@nmfmt{\NAT@nm}% 203 | \hyper@natlinkbreak{% 204 | \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb 205 | }% 206 | \NAT@date 207 | }% 208 | \fi 209 | \fi 210 | \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 211 | \or\@citea\NAT@hyper@{\NAT@date}% 212 | \or\@citea\NAT@hyper@{\NAT@alias}% 213 | \fi \NAT@def@citea 214 | \else 215 | \ifcase\NAT@ctype 216 | \if\relax\NAT@date\relax 217 | \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 218 | \else 219 | \ifx\NAT@last@nm\NAT@nm\NAT@yrsep 220 | \ifx\NAT@last@yr\NAT@year 221 | \def\NAT@temp{{?}}% 222 | \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% 223 | {Multiple citation on page \thepage: same authors and 224 | year\MessageBreak without distinguishing extra 225 | letter,\MessageBreak appears as question mark}\fi 226 | \NAT@hyper@{\NAT@exlab}% 227 | \else 228 | \unskip\NAT@spacechar 229 | \NAT@hyper@{\NAT@date}% 230 | \fi 231 | \else 232 | \@citea\NAT@hyper@{% 233 | \NAT@nmfmt{\NAT@nm}% 234 | \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}% 235 | {\@citeb\@extra@b@citeb}% 236 | \NAT@date 237 | }% 238 | \fi 239 | \fi 240 | \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 241 | \or\@citea\NAT@hyper@{\NAT@date}% 242 | \or\@citea\NAT@hyper@{\NAT@alias}% 243 | \fi 244 | \if\relax\NAT@date\relax 245 | \NAT@def@citea 246 | \else 247 | \NAT@def@citea@close 248 | \fi 249 | \fi 250 | }}\ifNAT@swa\else 251 | % \if*#2*\else\NAT@cmt#2\fi 252 | \if\relax\NAT@date\relax\else\NAT@@close\fi 253 | \if*#2*\else\textsuperscript{#2}\fi 254 | \fi}{#1}{#2}} 255 | \renewcommand\NAT@cite% 256 | [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi 257 | #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup} 258 | \renewcommand\@biblabel[1]{[#1]\hfill} 259 | \g@addto@macro\UrlBreaks{% 260 | \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9% 261 | \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M 262 | \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z 263 | \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m 264 | \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z 265 | } 266 | \Urlmuskip=0mu plus 0.1mu 267 | \newif\ifgbt@bib@style@written 268 | \@ifpackageloaded{chapterbib}{}{% 269 | \def\bibliography#1{% 270 | \ifgbt@bib@style@written\else 271 | \bibliographystyle{gbt7714-numerical}% 272 | \fi 273 | \if@filesw 274 | \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}% 275 | \fi 276 | \@input@{\jobname.bbl}} 277 | \def\bibliographystyle#1{% 278 | \gbt@bib@style@writtentrue 279 | \ifx\@begindocumenthook\@undefined\else 280 | \expandafter\AtBeginDocument 281 | \fi 282 | {\if@filesw 283 | \immediate\write\@auxout{\string\bibstyle{#1}}% 284 | \fi}% 285 | }% 286 | } 287 | \ifgbt@legacy@interface 288 | \ifgbt@numerical 289 | \ifgbt@super\else 290 | \citestyle{numbers} 291 | \fi 292 | \bibliographystyle{gbt7714-numerical} 293 | \else 294 | \bibliographystyle{gbt7714-author-year} 295 | \fi 296 | \fi -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # 北京航空航天大学计算机学院开题报告/文献综述模板 2 | 3 | 用法如下: 4 | 5 | ```latex 6 | \documentclass[doctor,proposal,color]{buaascseproposal} 7 | ``` 8 | 9 | - color: 显示不同超链接颜色 10 | - doctor/master:博士/硕士研究生 11 | 12 | - proposal/review:开题报告/文献综述 13 | 14 | [Overleaf 在线编辑](https://www.overleaf.com/latex/templates/buaa-proposal-template/xtkhsqhrwgjw) 15 | 16 | 推荐使用[一个 LaTeX 中 Beamer 风格的 Powpoint 模版](https://github.com/ZhouKanglei/BUAA-PPT) 17 | -------------------------------------------------------------------------------- /refs.bib: -------------------------------------------------------------------------------- 1 | @inproceedings{yan2018spatial, 2 | title={Spatial temporal graph convolutional networks for skeleton-based action recognition}, 3 | author={Yan, Sijie and Xiong, Yuanjun and Lin, Dahua}, 4 | booktitle={Thirty-second AAAI conference on artificial intelligence}, 5 | year={2018} 6 | } 7 | 8 | 9 | @article{wu2020comprehensive, 10 | title={A comprehensive survey on graph neural networks}, 11 | author={Wu, Zonghan and Pan, Shirui and Chen, Fengwen and Long, Guodong and Zhang, Chengqi and Philip, S Yu}, 12 | journal={IEEE transactions on neural networks and learning systems}, 13 | volume={32}, 14 | number={1}, 15 | pages={4--24}, 16 | year={2020}, 17 | publisher={IEEE} 18 | } 19 | 20 | % Optional fields: volumeditor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate 21 | 22 | 23 | @book{hu2015, 24 | title={诸福棠实用儿科学(上册)}, 25 | edition = {8}, 26 | author={江载芳 and 申昆玲 and 沈颖}, 27 | publisher={人民卫生出版社}, 28 | location = {北京}, 29 | year={2015} 30 | } 31 | 32 | @article{jdmsugg, 33 | author = {胡坚 and 李崇巍 and 胡秀芬 and 周南}, 34 | title = {幼年皮肌炎诊治建议}, 35 | journal = {中华儿科杂志}, 36 | year = {2012}, 37 | volume = {50}, 38 | number = {8}, 39 | pages = {617-621}, 40 | } 41 | 42 | @article{lovell1999development, 43 | title={Development of validated disease activity and damage indices for the juvenile idiopathic inflammatory myopathies: II. The childhood myositis assessment scale (CMAS): a quantitative tool for the evaluation of muscle function}, 44 | author={Lovell, Daniel J and Lindsley, Carol B and Rennebohm, Robert M and Ballinger, Susan H and Bowyer, Suzanne L and Giannini, Edward H and Hicks, Jeanne E and Levinson, Joseph E and Mier, Richard and Pachman, Lauren M and others}, 45 | journal={Arthritis \& Rheumatism: Official Journal of the American College of Rheumatology}, 46 | volume={42}, 47 | number={10}, 48 | pages={2213--2219}, 49 | year={1999}, 50 | publisher={Wiley Online Library} 51 | } -------------------------------------------------------------------------------- /report.tex: -------------------------------------------------------------------------------- 1 | \documentclass[doctor,proposal,color]{buaascseproposal} 2 | 3 | \begin{document} 4 | \input{content/info} 5 | \input{content/title_page} 6 | \input{content/toc} 7 | \input{content/abstract} 8 | 9 | \input{content/sec_1} 10 | \input{content/sec_2} 11 | \input{content/reference} 12 | \input{content/appendix} 13 | 14 | 15 | \end{document} -------------------------------------------------------------------------------- /review.tex: -------------------------------------------------------------------------------- 1 | \documentclass[doctor,review,color]{buaascseproposal} 2 | 3 | \begin{document} 4 | \input{content/info} 5 | \input{content/title_page} 6 | \input{content/toc} 7 | \input{content/abstract} 8 | 9 | 10 | \input{content/related_work} 11 | 12 | \input{content/reference} 13 | \input{content/appendix} 14 | 15 | 16 | \end{document} -------------------------------------------------------------------------------- /word/附件3:北京航空航天大学计算机学院博士研究生学位论文_开题报告模板(供参考).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhouKanglei/BUAAProposal/8451ad39b227273076d2d6dca8879a30366bdc54/word/附件3:北京航空航天大学计算机学院博士研究生学位论文_开题报告模板(供参考).docx -------------------------------------------------------------------------------- /word/附件4:北京航空航天大学计算机学院博士研究生学位论文_文献综述模板(供参考).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhouKanglei/BUAAProposal/8451ad39b227273076d2d6dca8879a30366bdc54/word/附件4:北京航空航天大学计算机学院博士研究生学位论文_文献综述模板(供参考).docx --------------------------------------------------------------------------------