commit 61174433d0b847b183f88fccbcacd85f2b35f64c Author: panda361 <35888512+panda361@users.noreply.github.com> Date: Fri Mar 13 16:44:17 2026 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..68ad6d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,333 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bbl-SAVE-ERROR +*.bcf +*.bcf-SAVE-ERROR +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync +*.rubbercache +rubber.cache + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# attachfile2 +*.atfi + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc +*.loc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glg-abr +*.glo +*.glo-abr +*.gls +*.gls-abr +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hypdoc +*.hd + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# latexindent will create succesive backup files by default +#*.bak* + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.data.minted +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# spelling +*.spell.bad +*.spell.txt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# latexindent.pl +*.bak[0-9]* + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib +.DS_Store +对话记录/ +main.pdf +temp.md +_markdown_main/ +main.markdown.in +main.luabridge.lua diff --git a/README.md b/README.md new file mode 100644 index 0000000..b48b033 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# 北京航空航天大学硕博学位论文LaTeX模板4.1.0 + +本项目为北京航空航天大学学位硕士博士论文模板BUAAThesis,包含Word模板和LaTeX模板。模板参照二〇二五年九月版《北京航空航天大学研究生学位论文撰写规范》制定,适用于博士、硕士学位论文(中文)。 + +#版本修改 +相比于3.2版本,3.2.1版本解决了之前英文无法加粗的问题、博士论文中页眉为硕士学位论文的问题,以及之前论文题目为25字时,标题页排版错误的问题。 +在3.2.1版本中,在取得的学位成果板块,加入了书写的样例。 + +3.2.2相比于3.2.1版本,该3.2.2版本解决了部分学院名称对不上的问题,本版本按照北航官网的学院名称进行了对应。 +3.2.3相比于3.2.2版本,该3.2.3版本重新调整了公式和上下文之间的页间距,使其不会出现过大的问题,同时标注了参考文献不显示的操作方法,具体可看写作提示部分。 +3.2.4相比于3.2.3版本,调整了4级,5级和6级标题前后的间距,修改了副教授的标识,由Prof.修改为A.P., 第一页栏的培养院系修改为培养学院。首页中图分类号和论文编号已经根据格式要求加粗,作者姓名、专业名称、指导教师、培养学院等改为了4号黑体字。 +4.0.0相比于3.2.4版本,修改了目录中小节标题、封面及提名页的中文分类-号和论文编号和正文页码的字体。添加了切换长短标题模板的功能,使得标题较长时提名页信息也能正常排版。修改了参考文献格式,现在使用GBT7714-2015-NoWarning.bst导入参考文献时可正确屏蔽出版社和出版地缺失提示符\[s.n.\]和\[S.L.\]。修改了页边距设置,现在左右边距均为25mm,打印版本预留空白页,非打印版不留空白页。删除了中文学院到英文学院的自动翻译,现在需要手动输入学院中英文名称。此外,在原来版本的基础上完善了使用说明,编写了模板示例文档。 +适应24.11版撰写规范:调整了封面北航标识等内容的大小和位置;添加了专项计划信息;修改英文封面信息项的大小和位置,添加申请学位类型的输入;调整了提名页各内容的大小和位置;修改了摘要关键词的字体,调整了摘要内容;调整了独创性声明页各部分内容的位置;调整了目录和图表目录的文字内容、字体和字号;调整了符号和缩略语说明页的内容和字体字号;添加了脚注命令,重定义了脚注编号和文字字体字号;调整了页眉文字和页眉线的距离,将正文之后内容的页眉设置为不区分奇偶页;重定义了附录命令,按撰写规范的规定定义了附录编号和附录内图、表和公式的编号,目前支持到节标题;取消了研究成果页对学术型和专业型学位的区分;定义了新的页眉页脚样式,从参考文献开始的页眉固定设置为当前页所在章标题;添加了学科类型选项,理工类和社科及文学类的论文各级标题具有不同的编号形式,在目录中的位置也有所区分;修改了README、输出示例、使用说明和论文示例。 +4.0.1 为学术型学位论文模板信息页添加了“一级学科”和“学科方向”项;调整了表格行距和图表编号与题注之间的距离;设置参考文献字体为五号宋体,调整了缩进和行距。 +4.0.2 +添加了英文封面页学术学位和专业学位类型的区分;删除了中英文摘要关键字的空格和冒号加粗;调整了参考文献编号后的距离和行距 +4.1.0 +删除了\beginright命令,现版本是否右侧新起页均通过documentclass里的“打印设置”参数切换;添加了\emptypage命令,可以手动插入不计页码的空白页;调整了英文封面各信息的位置;调整了题名页作者信息行距;调整了中英文摘要部分段间距;将“符号和缩略语说明”拆分成“主要符号表”和“缩略语说明”,添加了新命令\Signs和\Abbreviations;修改了图表编号格式;将子图宏包替换为subcaption,规定了子图题编号格式,修改了正文中子图示例命令;修改了示例文档等涉及命令变化的内容。 +修改了中文摘要关键词字体;修改了目录的缩进距离;修改中文封面标题字号为32pt;修改参考文献正文字号为10.5pt,行距10.5pt;修改了部分正文文本内容。 +## 项目结构 +``` +- BUAAThesis +|-- def +| |-- GBT7714-2015.bst // 国标参考文献BibTeX样式文件 +| |-- GBT7714-2015-NoWarning.bst // 国标参考文献BibTeX样式文件,取消了对于关键信息缺失的警示消息 +| |-- buaa.cls // LaTeX宏模板文件 +| |-- simfang.ttf // 仿宋字 +| |-- simhei.ttf // 黑体字 +| |-- simkai.ttf // 楷体字 +| |-- simsun.ttc // 宋体字 +| |-- head-doctor.eps // 论文封皮学术博士学位论文标题 +| |-- head-prodoctor.eps // 论文封皮专业博士学位论文标题 +| |-- head-master.eps // 论文封皮学术硕士学位论文标题 +| |-- head-professional.eps // 论文封皮专业硕士学位论文标题 +| |-- logo-buaa.eps // 论文封皮北航字样 +|-- pic +| |-- logo-buaa.eps // 论文封皮北航字样 +| |-- question_survey.jpg // 论文出现问题后可参与的问卷二维码 +|-- tex/*.tex // LaTeX模板样例中的独立章节 +|-- main.tex // LaTeX模板 +|-- README.md // 本文件 +|-- ref.bib // LaTeX模板中的参考文献Bib文件 +|-- 输出示例.pdf // 用本模板输出的示例 +``` + +## 模板使用 +1. 参考下方 `环境配置` 部分配置 `LaTeX` 写作环境 +2. 参考下方 `写作提示` 部分撰写论文 + +## 环境配置 + +常见的 `LaTeX` 写作环境有两种,一种是使用 Overleaf 的在线环境,另一种是使用 `TexLive` 的本地环境。两种写作环境各有优劣: +- 在线环境基本无需配置,本地环境需要较复杂的配置 +- 在线环境的免费账户有着**严苛**的编译时长限制,类似毕业论文这样的长篇文章**基本不可能**通过编译,需要开通订阅才能解锁编译时长限制 + +### 1. Overleaf 环境 + +将项目压缩包上传至 [Overleaf](https://cn.overleaf.com/) 后,修改编译选项为 `XeLaTeX` 即可开始写作。 + +### 2. 本地编译环境 + +编译环境请选择 'TexLive' + ‘Texstdio' 方案 + +#### 2.1 TexLive安装 + +- MacOS用户点击 [MacTeX](https://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg) 下载并安装 `MacTex` 即可(这是一个包含了`TexLive` 环境的程序) +- Windows 和 Linux 用户需要参考以下步骤安装 `TexLive+TexStdio` + +1. 前往 [TexLive Images - 清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/) 下载 `texlive.iso` 安装包 +2. 装载 `texlive.iso` 后,Windows 用户点击 `install-tl-windows.exe` 启动安装程序,Linux 用户请使用`sudo install-pl`启动安装 +3. 修改安装路径(否则默认安装在系统盘,会占据巨大的系统空间!) +4. 点击 `安装`,等待漫长的安装过程(可能会持续几十分钟) +5. 安装结束后,使用终端输入 `tex`,出现下方结果即表示安装成功 + +具体详细的安装步骤可前往 https://blog.csdn.net/qq_43431934/article/details/124079142 +注意!!!! +在安装之后,需要在计算机的环境变量Path中加入bin的路径。 + +## 写作提示 + +- 参看示例模板 `main.tex` 或 `example.tex` 及其中插入的各章节 `tex/*.tex` 或 `example_tex/*.tex` 熟悉模板结构和 $LaTeX$ 语法,撰写论文正文。 +- 在写公式时,请不要在公式之后加入额外的空行,避免空行所导致的公式与下一行距离过大的问题。 +- 在编译时,请使用xelatex进行编译。 +- 在写参考文献时,可以先选用GBT7714-2015.bst来查看缺少哪些关键内容,进行补全,如果存在某些内容找不到的问题,则可以使用GBT7714-2015-NoWarning.bst来不表示这些缺乏信息。 +- 在写表时,如果存在上下两个线加粗的需求,可以使用\toprule[], \midrule[] 和 \bottomrule[] 来加粗三线表的三条线。 +- 在写论文时,可根据tex文件里的注释信息来修改本文的密级,专硕学硕等内容。 +- 在编译时,可能会出现参考文献无法出现的现象,此时,可以先运行texstudio界面上方工具栏的参考文献,然后进行重新的构建和编译,即可出现参考文献内容。 +- 在编译时,有可能会出现两行间距过小的情况,这是由于本页的图的大小导致的,当遇到这种情况时,可在间距较小的第二行之前加入\newpage使其进入下一页,可解决这个问题。 diff --git a/def/GBT7714-2015-NoWarning.bst b/def/GBT7714-2015-NoWarning.bst new file mode 100644 index 0000000..536c62f --- /dev/null +++ b/def/GBT7714-2015-NoWarning.bst @@ -0,0 +1,1633 @@ +%% +%% This is file `gbt-7714-2015-numerical.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt-7714-2015.dtx (with options: `numerical') +%% +%% Copyright (C) 2016-2017 by Zeping Lee +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.2 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of +%% LaTeX version 1999/12/01 or later. +%% +%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, +%% which was designed for use with the `natbib.sty' package. +%% +ENTRY + { address + author + booktitle + chapter + date + doi + eid + edition + editor + howpublished + institution + isbn + issn + journal + key + language + mark + media + month + note + number + organization + pages + publisher + school + series + title + translator + type + url + urldate + volume + year + } + { entry.lang } + { label extra.label sort.label short.list entry.mark } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru } + +INTEGERS { charptr stringlength } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #2 'lang.zh := + #3 'lang.ja := + #0 'lang.en := + #1 'lang.ru := +} + +STRINGS { s t } + +FUNCTION {debug} +{ 's := + duplicate$ + "DEBUG: " s * " -> `" * + swap$ * "'" * + top$ +} + +FUNCTION {debug.int} +{ 's := + duplicate$ int.to.str$ + "DEBUG: " s * " == " * + swap$ * + top$ +} + +FUNCTION {punct.colon} +{ ": " +} + +FUNCTION {punct.slash} +{ "//\allowbreak{}" +} + +FUNCTION {punct.space} +{ " " +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { after.slash 'output.state := } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +INTEGERS { ascii } + +FUNCTION {get.char.lang} +{ chr.to.int$ 'ascii := + ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ +} + +INTEGERS { char.lang lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.en 'lang := + tmp.str empty$ + { "Empty string!" warning$ } + { #1 'charptr := + tmp.str text.length$ #1 + 'stringlength := + { charptr stringlength < } + { tmp.str charptr #1 substring$ get.char.lang 'char.lang := + char.lang lang > + { char.lang 'lang := } + 'skip$ + if$ + + char.lang lang.zh = char.lang lang.ja = or + { charptr #3 + 'charptr := } + { char.lang lang.ru = + { charptr #2 + 'charptr := } + { charptr #1 + 'charptr := } + if$ + } + if$ + } + while$ + } + if$ + lang +} + +FUNCTION {is.in.chinese} +{ entry.lang lang.zh = +} + +FUNCTION {format.et.al} +{ is.in.chinese + { "等"} + { "et~al." } + if$ +} + +FUNCTION {format.anonymous} +{ is.in.chinese + { "佚名" } + { "Anon" } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > nameptr #4 < and } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ "\textup{" swap$ * "}" * %"u" change.case$ + t #1 "{, jj}" format.name$ * + 't := + } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { ", " * format.et.al * } + { ", " * t * } + if$ + } + if$ + nameptr #3 = namesleft #1 > and + { ", " * format.et.al * } + 'skip$ + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + is.in.chinese + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { new.block "\url{" url * "}" * } + if$ +} + +FUNCTION {is.doi.in.url} +{ url empty$ + { #0 } + { doi text.length$ 'stringlength := + url text.length$ 'charptr := + { url charptr stringlength substring$ doi = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { is.doi.in.url + { "" } + { new.block "\doi{" doi * "}" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {set.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + media empty$ not + { entry.mark "/" * media * 'entry.mark := } + { url empty$ not + { entry.mark "/OL" * 'entry.mark := } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ "\allowbreak[" entry.mark * "]" * } + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr stringlength < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {contains.dash} +{ duplicate$ empty$ + { pop$ #0 } + { 's := + { s empty$ not + s #1 #1 substring$ "-" = not + and + } + { s #2 global.max$ substring$ 's := } + while$ + s empty$ not + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.dash } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + "" + } + if$ + } + if$ + extra.label * +} + +FUNCTION {format.date} +{ type$ "patent" = type$ "newspaper" = or + date empty$ not and + { date } + { year } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + type$ "newspaper" = not and + url empty$ not doi empty$ not or + and + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ urldate empty$ not + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ + { "" } + { volume is.number + { is.in.chinese + { "第" volume * "卷" * } + { "volume" volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + if$ +} + +FUNCTION {format.number} +{ number empty$ + { "" } + { number is.number + { is.in.chinese + { "第" number * "册" * } + { "number" number tie.or.space.connect } + if$ + } + { number } + if$ + } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + title * + } + { title + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ + "t" change.case$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + booktitle * + } + { booktitle + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { is.in.chinese + { edition "版" * } + { edition num.to.ordinal " ed." * } + if$ + } + { entry.lang lang.en = + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." *} + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco} +{ is.in.chinese + { "" } + { "" } + if$ +} + +FUNCTION {format.address} +{ address } + +FUNCTION {format.sine.nomine} +{ is.in.chinese + { "" } + { "" } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco.sine.nomine} +{ is.in.chinese + { "" } + { "" } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address + format.publisher empty$ not + { ": " * format.publisher * } + { url empty$ doi empty$ and + { "" * format.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { url empty$ doi empty$ and + { format.publisher empty$ not + { format.sine.loco "" * format.publisher * } + { format.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.journal.volume} +{ volume } + +FUNCTION {format.journal.number} +{ number empty$ not + { "\penalty0 (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.dash } + { "No year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.before.dash * ")" * } + 'skip$ + if$ + year contains.dash + { "--" * + year extract.after.dash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.dash empty$ not + { year extract.after.dash * } + { year extract.before.dash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In \emph{" journal * "}" * } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "\emph{" * series * "}" * } + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {monograph} +{ output.bibitem + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "" } + if$ + } + if$ + output + new.block + format.series.vol.num.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {article.in.journal} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + journal "journal" output.check + format.date "year" output.check + volume output + format.journal.number "" output.after + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + format.authors output + author format.key output + new.block + format.title + number empty$ not + { punct.colon * number * } + 'skip$ + if$ + "title" output.check + "P" set.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {online} +{ output.bibitem + format.authors output + author format.key output + new.block + format.series.vol.num.title "title" output.check + "EB" set.mark + format.mark "" output.after + new.block + format.address.publisher output + date empty$ + { format.date output } + 'skip$ + if$ + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {misc} +{ journal empty$ not + { article.in.journal } + { booktitle empty$ not + { incollection } + { url empty$ not + { online } + { monograph } + if$ + } + if$ + } + if$ +} + +FUNCTION {archive} +{ "A" set.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {collection} +{ "G" set.mark + monograph } + +FUNCTION {database} +{ "DB" set.mark + misc +} + +FUNCTION {dataset} +{ "DS" set.mark + misc +} + +FUNCTION {inbook} { book } + +FUNCTION {inproceedings} +{ "C" set.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {map} +{ "CM" set.mark + misc +} + +FUNCTION {mastersthesis} +{ "D" set.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.mark + article.in.journal +} + +FUNCTION {phdthesis} { mastersthesis } + +FUNCTION {proceedings} +{ "C" set.mark + monograph +} + +FUNCTION {program} +{ "CP" set.mark + misc +} + +FUNCTION {standard} +{ "S" set.mark + misc +} + +FUNCTION {techreport} +{ "R" set.mark + misc +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +EXECUTE {init.state.consts} + +FUNCTION {set.entry.lang} +{ language empty$ + { author field.or.null title field.or.null * get.str.lang } + { language "english" = + { lang.en } + { language "chinese" = + { lang.zh } + { language "japanese" = + { lang.ja } + { language "russian" = + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$} + { t #1 "{ll}{ff}" format.name$} + if$ + s num.names$ #1 > + { "\ " * format.et.al * } + 'skip$ + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + type$ "collection" = + or + 'author.editor.key.label + { type$ "proceedings" = + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + format.year extract.before.dash duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +EXECUTE {init.seq} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {presort} +{ set.entry.lang + calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\providecommand{\href}[2]{\url{#2}}" + write$ newline$ + "\providecommand{\doi}[1]{DOI: \href{http://dx.doi.org/#1}{#1}}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/def/GBT7714-2015.bst b/def/GBT7714-2015.bst new file mode 100644 index 0000000..00bcc43 --- /dev/null +++ b/def/GBT7714-2015.bst @@ -0,0 +1,1633 @@ +%% +%% This is file `gbt-7714-2015-numerical.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt-7714-2015.dtx (with options: `numerical') +%% +%% Copyright (C) 2016-2017 by Zeping Lee +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.2 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of +%% LaTeX version 1999/12/01 or later. +%% +%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, +%% which was designed for use with the `natbib.sty' package. +%% +ENTRY + { address + author + booktitle + chapter + date + doi + eid + edition + editor + howpublished + institution + isbn + issn + journal + key + language + mark + media + month + note + number + organization + pages + publisher + school + series + title + translator + type + url + urldate + volume + year + } + { entry.lang } + { label extra.label sort.label short.list entry.mark } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru } + +INTEGERS { charptr stringlength } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #2 'lang.zh := + #3 'lang.ja := + #0 'lang.en := + #1 'lang.ru := +} + +STRINGS { s t } + +FUNCTION {debug} +{ 's := + duplicate$ + "DEBUG: " s * " -> `" * + swap$ * "'" * + top$ +} + +FUNCTION {debug.int} +{ 's := + duplicate$ int.to.str$ + "DEBUG: " s * " == " * + swap$ * + top$ +} + +FUNCTION {punct.colon} +{ ": " +} + +FUNCTION {punct.slash} +{ "//\allowbreak{}" +} + +FUNCTION {punct.space} +{ " " +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { after.slash 'output.state := } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +INTEGERS { ascii } + +FUNCTION {get.char.lang} +{ chr.to.int$ 'ascii := + ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ +} + +INTEGERS { char.lang lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.en 'lang := + tmp.str empty$ + { "Empty string!" warning$ } + { #1 'charptr := + tmp.str text.length$ #1 + 'stringlength := + { charptr stringlength < } + { tmp.str charptr #1 substring$ get.char.lang 'char.lang := + char.lang lang > + { char.lang 'lang := } + 'skip$ + if$ + + char.lang lang.zh = char.lang lang.ja = or + { charptr #3 + 'charptr := } + { char.lang lang.ru = + { charptr #2 + 'charptr := } + { charptr #1 + 'charptr := } + if$ + } + if$ + } + while$ + } + if$ + lang +} + +FUNCTION {is.in.chinese} +{ entry.lang lang.zh = +} + +FUNCTION {format.et.al} +{ is.in.chinese + { "等"} + { "et~al." } + if$ +} + +FUNCTION {format.anonymous} +{ is.in.chinese + { "佚名" } + { "Anon" } + if$ +} + +INTEGERS { nameptr namesleft numnames name.lang} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > nameptr #4 < and } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ "\textup{" swap$ * "}" * %"u" change.case$ + t #1 "{, jj}" format.name$ * + 't := + } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { ", " * format.et.al * } + { ", " * t * } + if$ + } + if$ + nameptr #3 = namesleft #1 > and + { ", " * format.et.al * } + 'skip$ + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + is.in.chinese + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { new.block "\url{" url * "}" * } + if$ +} + +FUNCTION {is.doi.in.url} +{ url empty$ + { #0 } + { doi text.length$ 'stringlength := + url text.length$ 'charptr := + { url charptr stringlength substring$ doi = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { is.doi.in.url + { "" } + { new.block "\doi{" doi * "}" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {set.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + media empty$ not + { entry.mark "/" * media * 'entry.mark := } + { url empty$ not + { entry.mark "/OL" * 'entry.mark := } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ "\allowbreak[" entry.mark * "]" * } + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr stringlength < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {contains.dash} +{ duplicate$ empty$ + { pop$ #0 } + { 's := + { s empty$ not + s #1 #1 substring$ "-" = not + and + } + { s #2 global.max$ substring$ 's := } + while$ + s empty$ not + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year extract.before.dash } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + "" + } + if$ + } + if$ + extra.label * +} + +FUNCTION {format.date} +{ type$ "patent" = type$ "newspaper" = or + date empty$ not and + { date } + { year } + if$ +} + +FUNCTION {format.editdate} +{ date empty$ not + type$ "newspaper" = not and + url empty$ not doi empty$ not or + and + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ urldate empty$ not + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ + { "" } + { volume is.number + { is.in.chinese + { "第" volume * "卷" * } + { "volume" volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + if$ +} + +FUNCTION {format.number} +{ number empty$ + { "" } + { number is.number + { is.in.chinese + { "第" number * "册" * } + { "number" number tie.or.space.connect } + if$ + } + { number } + if$ + } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + title * + } + { title + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ + "t" change.case$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + booktitle * + } + { booktitle + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { is.in.chinese + { edition "版" * } + { edition num.to.ordinal " ed." * } + if$ + } + { entry.lang lang.en = + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." *} + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco} +{ is.in.chinese + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {format.address} +{ address } + +FUNCTION {format.sine.nomine} +{ is.in.chinese + { "[出版地不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco.sine.nomine} +{ is.in.chinese + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address + format.publisher empty$ not + { ": " * format.publisher * } + { url empty$ doi empty$ and + { ": " * format.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { url empty$ doi empty$ and + { format.publisher empty$ not + { format.sine.loco "" * format.publisher * } + { format.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.journal.volume} +{ volume } + +FUNCTION {format.journal.number} +{ number empty$ not + { "\penalty0 (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.dash } + { "No year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.before.dash * ")" * } + 'skip$ + if$ + year contains.dash + { "--" * + year extract.after.dash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.dash empty$ not + { year extract.after.dash * } + { year extract.before.dash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In \emph{" journal * "}" * } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "\emph{" * series * "}" * } + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {monograph} +{ output.bibitem + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "" } + if$ + } + if$ + output + new.block + format.series.vol.num.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {article.in.journal} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + journal "journal" output.check + format.date "year" output.check + volume output + format.journal.number "" output.after + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + format.authors output + author format.key output + new.block + format.title + number empty$ not + { punct.colon * number * } + 'skip$ + if$ + "title" output.check + "P" set.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {online} +{ output.bibitem + format.authors output + author format.key output + new.block + format.series.vol.num.title "title" output.check + "EB" set.mark + format.mark "" output.after + new.block + format.address.publisher output + date empty$ + { format.date output } + 'skip$ + if$ + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {misc} +{ journal empty$ not + { article.in.journal } + { booktitle empty$ not + { incollection } + { url empty$ not + { online } + { monograph } + if$ + } + if$ + } + if$ +} + +FUNCTION {archive} +{ "A" set.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {collection} +{ "G" set.mark + monograph } + +FUNCTION {database} +{ "DB" set.mark + misc +} + +FUNCTION {dataset} +{ "DS" set.mark + misc +} + +FUNCTION {inbook} { book } + +FUNCTION {inproceedings} +{ "C" set.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {map} +{ "CM" set.mark + misc +} + +FUNCTION {mastersthesis} +{ "D" set.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.mark + article.in.journal +} + +FUNCTION {phdthesis} { mastersthesis } + +FUNCTION {proceedings} +{ "C" set.mark + monograph +} + +FUNCTION {program} +{ "CP" set.mark + misc +} + +FUNCTION {standard} +{ "S" set.mark + misc +} + +FUNCTION {techreport} +{ "R" set.mark + misc +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +EXECUTE {init.state.consts} + +FUNCTION {set.entry.lang} +{ language empty$ + { author field.or.null title field.or.null * get.str.lang } + { language "english" = + { lang.en } + { language "chinese" = + { lang.zh } + { language "japanese" = + { lang.ja } + { language "russian" = + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$} + { t #1 "{ll}{ff}" format.name$} + if$ + s num.names$ #1 > + { "\ " * format.et.al * } + 'skip$ + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + type$ "collection" = + or + 'author.editor.key.label + { type$ "proceedings" = + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + format.year extract.before.dash duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +EXECUTE {init.seq} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {presort} +{ set.entry.lang + calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\providecommand{\href}[2]{\url{#2}}" + write$ newline$ + "\providecommand{\doi}[1]{DOI: \href{http://dx.doi.org/#1}{#1}}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/def/buaa.cls b/def/buaa.cls new file mode 100644 index 0000000..0732b9c --- /dev/null +++ b/def/buaa.cls @@ -0,0 +1,1175 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% +%% %% 北航研究生毕业论文模板 - LaTeX 01-09-2025 +%% %% 论文样式参考自二〇二五年九月版《北京航空航天大学研究生学位论文撰写规范》 +%% %% 基于ctexbook +%% %% +%% %% 初始版本作者: +%% %% Wei Quanmao (weiqm@buaa.edu.cn) +%% %% 当前版本作者: +%% %% Wei Xiaoyuan (shiaoyuan@buaa.edu.cn) +%% %% 参与修改: +%% %% Cao Yan, Chen Yiwu, Cui Yikai,Dong Hanyuan, Du Huipeng, Fan Yu, Guo Yanpei, Ling Sucheng, Pu Guohang, Sheng Jie, Wu Jiayan, Zhu Leyan, Han Zhexin +%% %% +%% %% Versions: +%% %% v4.1.0 WeiXY (01-09-2025) +%% %% v4.0.2 WeiXY (03-06-2025) +%% %% v4.0.1 WeiXY (14-04-2025) +%% %% v4.0.0 WeiXY (14-02-2025) +%% %% v3.2.4 HanZX WeiXY (11-24-2023) +%% %% v3.2.3 HanZX WeiXY (08-30-2023) +%% %% v3.2.2 HanZX WeiXY (07-23-2023) +%% %% v3.2.1 HanZX WeiXY (06-05-2023) +%% %% v3.2 HanZX WeiXY (05-09-2023) +%% %% v3.1 WeiQM (01-24-2022) +%% %% v3.0 WeiQM (03-07-2020) +%% %% v2.2 WeiQM (11-30-2019) +%% %% v2.1 QiaoJF, WeiQM (12-19-2018) +%% %% v2.0 WeiQM, QiaoJF (11-22-2018) +%% %% v1.3 Wei Quanmao (10-15-2018) +%% %% v1.2 Wei Quanmao (07-31-2018) +%% %% v1.1 Wei Quanmao (01-04-2018) +%% %% v1.0a Wei Quanmao (12-17-2017) +%% %% +%% %% 建议采用等宽字体查看本文档 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% 模板标识 +\RequirePackage[T1]{fontenc} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{buaa}[2025/09/01 v4.1.0 BUAA thesis class] +\typeout{This is LaTeX template buaa. Version 4.1.0 (based on XeLaTeX) 01-09-2025} + +%% 选项 +%% 论文类型 +\DeclareOption{master}{\gdef\@thesis{master}} % 学术硕士论文 +\DeclareOption{professional}{\gdef\@thesis{professional}} % 专业硕士论文 +\DeclareOption{doctor}{\gdef\@thesis{doctor}} % 博士论文 +\DeclareOption{prodoctor}{\gdef\@thesis{prodoctor}} % 专业博士论文 +\DeclareOption{thesis}{\ClassWarning{buaa}{% + You have not specified the THESIS option. The word thesis should be replaced by one of the following thesis type: master(default), professional, doctor, prodoctor. +}} + +%% 密级 +\DeclareOption{public}{\gdef\@permission{public}} % 公开 +\DeclareOption{privacy}{\gdef\@permission{privacy}} % 内部 +\DeclareOption{secret}{\gdef\@permission{secret3}} % 秘密 = 秘密3年 +\DeclareOption{secret3}{\gdef\@permission{secret3}} % 秘密3年 +\DeclareOption{secret5}{\gdef\@permission{secret5}} % 秘密5年 +\DeclareOption{secret10}{\gdef\@permission{secret10}} % 秘密10年 +\DeclareOption{secret*}{\gdef\@permission{secret*}} % 秘密永久 +\DeclareOption{classified}{\gdef\@permission{classified5}} % 机密 = 机密5年 +\DeclareOption{classified3}{\gdef\@permission{classified3}} % 机密3年 +\DeclareOption{classified5}{\gdef\@permission{classified5}} % 机密5年 +\DeclareOption{classified10}{\gdef\@permission{classified10}} % 机密10年 +\DeclareOption{classified*}{\gdef\@permission{classified*}} % 机密永久 +\DeclareOption{topsecret}{\gdef\@permission{topsecret10}} % 绝密 = 绝密10年 +\DeclareOption{topsecret3}{\gdef\@permission{topsecret3}} % 绝密3年 +\DeclareOption{topsecret5}{\gdef\@permission{topsecret5}} % 绝密5年 +\DeclareOption{topsecret10}{\gdef\@permission{topsecret10}} % 绝密10年 +\DeclareOption{topsecret*}{\gdef\@permission{topsecret*}} % 绝密永久 +\DeclareOption{permission}{\ClassWarning{buaa}{% + You have not specified the PERMISSION option. The word permission should be replaced by one of the following thesis type: public, privacy, secret, classified, topsecret. +}} + +%% 打印设置 +\DeclareOption{library}{\gdef\@printtype{library}} % 图书馆版本,不留空白页 +\DeclareOption{print}{\gdef\@printtype{print}} % 打印版本,留空白页 +\DeclareOption{printtype}{\ClassWarning{buaa}{% + You have not specified the PRINTTYPE option. The word printtype should be replaced by one of the following thesis type: library, print. +}} + +%% 系统设置 +\DeclareOption{win}{\gdef\@ostype{win}} % windows +\DeclareOption{linux}{\gdef\@ostype{linux}} % linux +\DeclareOption{mac}{\gdef\@ostype{mac}} % mac +\DeclareOption{ostype}{\ClassWarning{buaa}{% + You have not specified the OSTYPE option. The word ostype should be replaced by one of the following thesis type: win, linux, mac. +}} + +%% 标题长度 +\DeclareOption{short}{\gdef\@titlelength{short}} % 短标题 +\DeclareOption{long}{\gdef\@titlelength{long}} % 长标题 +\DeclareOption{titlelength}{\ClassWarning{buaa}{% + You have not specified the TITLELENGTH option. The word titlelength should be replaced by one of the following thesis type: short, long. +}} + +%% 学科类型 +\DeclareOption{STEM}{\gdef\@subjecttype{STEM}} % 理工类 +\DeclareOption{HSS}{\gdef\@subjecttype{HSS}} % 社科及文学类 +\DeclareOption{subjecttype}{\ClassWarning{buaa}{% + You have not specified the SUBJECTTYPE option. The word subjecttype should be replaced by one of the following thesis type: STEM, HSS. +}} + +%% 适应首字母大写 +\DeclareOption{Master}{\gdef\@thesis{master}} +\DeclareOption{Professional}{\gdef\@thesis{professional}} +\DeclareOption{Doctor}{\gdef\@thesis{doctor}} +\DeclareOption{ProDoctor}{\gdef\@thesis{prodoctor}} +\DeclareOption{Public}{\gdef\@permission{public}} +\DeclareOption{Privacy}{\gdef\@permission{privacy}} +\DeclareOption{Secret}{\gdef\@permission{secret3}} +\DeclareOption{Secret3}{\gdef\@permission{secret3}} +\DeclareOption{Secret5}{\gdef\@permission{secret5}} +\DeclareOption{Secret10}{\gdef\@permission{secret10}} +\DeclareOption{Secret*}{\gdef\@permission{secret*}} +\DeclareOption{Classified}{\gdef\@permission{classified5}} +\DeclareOption{Classified3}{\gdef\@permission{classified3}} +\DeclareOption{Classified5}{\gdef\@permission{classified5}} +\DeclareOption{Classified10}{\gdef\@permission{classified10}} +\DeclareOption{Classified*}{\gdef\@permission{classified*}} +\DeclareOption{TopSecret}{\gdef\@permission{topsecret10}} +\DeclareOption{TopSecret3}{\gdef\@permission{topsecret3}} +\DeclareOption{TopSecret5}{\gdef\@permission{topsecret5}} +\DeclareOption{TopSecret10}{\gdef\@permission{topsecret10}} +\DeclareOption{TopSecret*}{\gdef\@permission{topsecret*}} +\DeclareOption{Library}{\gdef\@printtype{library}} +\DeclareOption{Print}{\gdef\@printtype{print}} +\DeclareOption{Win}{\gdef\@ostype{win}} +\DeclareOption{Linux}{\gdef\@ostype{linux}} +\DeclareOption{Mac}{\gdef\@ostype{mac}} +\DeclareOption{Short}{\gdef\@titlelength{short}} +\DeclareOption{Long}{\gdef\@titlelength{long}} + +%% 选项传递给ctexbook +\DeclareOption*{\PassOptionsToClass{\CurrentOption,fontset=none}{ctexbook}} + +%% 默认选项配置 +\ExecuteOptions{master,public,library,win,short,STEM,a4paper,sub4section} +\ProcessOptions\relax + +%% 引用ctexbook: 小4,1.5倍行距 +\LoadClass[UTF8,zihao=-4,linespread=1.7]{ctexbook}%1.5+0.2行间距 +\setcounter{secnumdepth}{5} + +%% BUAAThesis字样及版本信息 +\usepackage{graphicx} +\def\BUAAThesisVer{v4.1.0 01-09-2025} +\def\BUAAThesis{% + B% + {\fontsize{0.8em}{\baselineskip}\selectfont + \kern-.12em\lower.5ex\hbox{U}% + \kern-.46em\raise.47ex\hbox{A}% + \kern-.12em A% + } + \kern-.35emT% + \kern-.22em\lower.5ex\hbox{H}% + \kern-.08em E% + \kern-.05em\lower.5ex\hbox{S}% + \kern-.26em I% + \kern-.26em\raise.5ex\hbox{\rotatebox[origin=c]{180}{S}}% +} + +%% 预声明 +\RequirePackage{ifthen} % ifthenelse/equal/isundefined等判断比较命令 +\RequirePackage{etoolbox} % \AtBeginDocument等宏命令 +\RequirePackage{titletoc} % 目录 +\RequirePackage{remreset} % 计数器设置 +\RequirePackage{geometry} % 设置页边距 +\RequirePackage{fancyhdr} % 设置页眉页脚 +\RequirePackage[nodisplayskipstretch]{setspace} % 设置行间距 +\RequirePackage{float} % 图片 +\RequirePackage{graphicx} % 图片 +\RequirePackage{subcaption} % 子图 +\RequirePackage{epstopdf} % 图片 +\RequirePackage{array} % 列举 +\RequirePackage{enumitem} % 列举 +\RequirePackage{booktabs} % 表格上下粗线 +\RequirePackage{longtable} % 长表格 +\RequirePackage{multirow} % 多行表格 +\RequirePackage{caption} % 标题设置 +\RequirePackage{listings} % 代码环境 +\RequirePackage{algorithm2e} % 算法环境 +\RequirePackage{amsmath} % 数学 +\RequirePackage{amsthm} % 定理 +\RequirePackage[hypertexnames=false]{hyperref} % 超链接 +\RequirePackage{pifont} % 画五角星 +\RequirePackage[symbol*,perpage,marginal]{footmisc} % 重绘脚注编号 +\RequirePackage{color} % To provide color for soul +\RequirePackage{soul} % To highlight text +\RequirePackage[sort&compress]{natbib} % BibTex +\DeclareGraphicsExtensions{.eps,.ps,.png,.jpg,.bmp,.pdf} % 声明使用图像格式 +\newcommand{\highlight}[1]{\colorbox{yellow}{#1}} % 高亮注释 + +% 根据不同系统调整 +\ifthenelse{\equal{\@ostype}{win}}{ % win 配置 + \RequirePackage{times} % Times New Roman字体 +}{} +\ifthenelse{\equal{\@ostype}{linux}}{ % linux 配置 + \RequirePackage{newtxtext} % Times New Roman字体 + \RequirePackage{newtxmath} % 公式的Times New Roman字体 (!After package amsthm!) +}{} +\ifthenelse{\equal{\@ostype}{mac}}{ % mac 配置 + \RequirePackage{times} % Times New Roman字体 + \RequirePackage{fontspec} % 字体设置 (!Only for XeLaTeX!) +}{} + +% 根据不同编译系统选择正确的 Times New Roman字体 +\usepackage{iftex} +\ifPDFTeX +\else +\setmainfont{Times New Roman} +\newfontfamily\SimSunPageNum{simsun}[ +Path = ./def/ , +Extension = .ttc +] +\fi + +\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{none}}{% + \setCJKmainfont{simsun.ttc}[Path=./def/] + \setCJKsansfont{simhei.ttf}[Path=./def/] + \setCJKmonofont{simfang.ttf}[Path=./def/] + \setCJKfamilyfont{zhsong}{simsun.ttc}[Path=./def/] + \setCJKfamilyfont{zhhei}{simhei.ttf}[Path=./def/] + \setCJKfamilyfont{zhkai}{simkai.ttf}[Path=./def/] + \setCJKfamilyfont{zhfs}{simfang.ttf}[Path=./def/] + \newcommand*{\songti}{\CJKfamily{zhsong}} + \newcommand*{\heiti}{\CJKfamily{zhhei}} + \newcommand*{\kaishu}{\CJKfamily{zhkai}} + \newcommand*{\fangsong}{\CJKfamily{zhfs}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 数学环境 +% 数学符号: +\newcommand\eu{\mathrm{e}} +\newcommand\iu{\mathrm{i}} +\newcommand*{\diff}{\mathop{}\!\mathrm{d}} +\DeclareMathOperator*{\argmax}{arg\,max} +\DeclareMathOperator*{\argmin}{arg\,min} + +% 数学定理: +% 以下定义数学定理环境默认风格为 buaa +\newtheoremstyle{buaa}% +{0pt}% measure of space to leave above the theorem. +{0pt}% measure of space to leave below the theorem. +{}% name of font to use in the body of the theorem. +{2\ccwd}% measure of space to indent. +{\bfseries}% name of head font. +{.}% punctuation between head and body. +{\ccwd}% space after theorem head; " " = normal interword space +{}% manually specify head (can be left empty, meaning `normal'). +\theoremstyle{buaa} + +% 定义新的定理 +\newcommand{\theoremname}{定理} +\newcommand{\assertionname}{断言} +\newcommand{\axiomname}{公理} +\newcommand{\corollaryname}{推论} +\newcommand{\lemmaname}{引理} +\newcommand{\propositionname}{命题} +\newcommand{\definitionname}{定义} +\newcommand{\examplename}{例} +\newcommand{\remarkname}{注} +\renewcommand{\proofname}{证明} +\renewcommand{\lstlistingname}{代码} +\renewcommand{\algorithmcfname}{算法} + +\newtheorem{theorem} {\theoremname} [chapter] +\newtheorem{assertion} [theorem] {\assertionname} +\newtheorem{axiom} [theorem] {\axiomname} +\newtheorem{corollary} [theorem] {\corollaryname} +\newtheorem{lemma} [theorem] {\lemmaname} +\newtheorem{proposition}[theorem] {\propositionname} +\newtheorem{definition} {\definitionname} [chapter] +\newtheorem{example} {\examplename} [chapter] +\newtheorem*{remark} {\remarkname} + +% From MDPI.cls +%\renewcommand{\qed}{\unskip\nobreak\quad\qedsymbol} %% This places the symbol right after the text instead of placing it at the end on the line. +\renewenvironment{proof}[1][\proofname]{\par %% \proofname allows to have "Proof of my theorem" + \pushQED{\qed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\hskip\labelsep + \bfseries %% "Proof" is bold + #1\@addpunct{.}]\ignorespaces %% Period instead of colon +}{% + \popQED\endtrivlist\@endpefalse +} + +% 代码环境 +\lstset{ + basicstyle=\small\ttfamily, + xleftmargin=2pc, + xrightmargin=2pc, + frame=single, + columns=flexible, + numbers=left, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 输入 +\def\@refcolor{} % 给注释及引用使用颜色 on/off +\newcommand{\refcolor}[1]{\gdef\@refcolor{#1}} +\def\@emptypagewords{} % 空白页留字 +\newcommand{\emptypagewords}[1]{\gdef\@emptypagewords{#1}} +%\def\@beginright{} % 第一章右侧页起 on/off +%\newcommand{\beginright}[1]{\gdef\@beginright{#1}} + +\newcommand{\Title}[2]{\gdef\@titlecn{#1} \gdef\@titleen{#2}} +\newcommand{\Subtitle}[2]{\gdef\@subtitlecn{#1} \gdef\@subtitleen{#2}} +\newcommand{\Department}[2]{\gdef\@department{#1} \gdef\@departmenten{#2}} +\def\@branch{\ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{doctor}}{工学}{ \ifthenelse{\equal{\@thesis}{professional} \OR \equal{\@thesis}{prodoctor}}{工程}{}}} % 学科大类 +\newcommand{\Branch}[1]{\gdef\@branch{#1}} +\newcommand{\Degree}[1]{\gdef\@degree{#1}} +\newcommand{\Major}[1]{\gdef\@major{#1}} +\newcommand{\Feild}[1]{\gdef\@feild{#1}} +\newcommand{\Discipline}[1]{\gdef\@discipline{#1}} +\newcommand{\Direction}[1]{\gdef\@direction{#1}} +\newcommand{\Tutor}[3]{\gdef\@tutorcn{#1} \gdef\@tutoren{#2} \gdef\@tutordegree{#3}} +\newcommand{\Cotutor}[3]{% + \gdef\@cotutorcn{#1} + \gdef\@cotutoren{#2} + \gdef\@cotutordegree{#3}} +\newcommand{\Author}[2]{\gdef\@authorcn{#1} \gdef\@authoren{#2}} +\newcommand{\StudentID}[1]{\gdef\@studentid{#1}} +\newcommand{\SpecialProg}[1]{\gdef\@specialprog{#1}} + +\newcommand{\CLC}[1]{\gdef\@clc{#1}} +\newcommand{\DateEnroll}[3]{% + \gdef\@dateenrollm{#1} + \gdef\@dateenrolld{#2} + \gdef\@dateenrolly{#3}} +\newcommand{\DateGraduate}[3]{% + \gdef\@dategraduatem{#1} + \gdef\@dategraduated{#2} + \gdef\@dategraduatey{#3}} +\newcommand{\DateSubmit}[3]{% + \gdef\@datesubmitm{#1} + \gdef\@datesubmitd{#2} + \gdef\@datesubmity{#3}} +\newcommand{\DateDefence}[3]{% + \gdef\@datedefencem{#1} + \gdef\@datedefenced{#2} + \gdef\@datedefencey{#3}} + +\newcommand{\Abstract}[2]{\gdef\@abstrctcn{#1} \gdef\@abstrcten{#2}} +\newcommand{\Keyword}[2]{\gdef\@keywordcn{#1} \gdef\@keyworden{#2}} +\newcommand{\Listfigtab}[1]{\gdef\@listfigtab{#1}} % on/off +\newcommand{\Abbreviations}[1]{\gdef\@abbreviations{#1}} +\newcommand{\Signs}[1]{\gdef\@signs{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 页面设置 +% 设置页面大小 +% 页边距均25mm +\geometry{papersize={210mm,297mm}} +\ifthenelse{\equal{\@printtype}{print}}{% 打印版本 + \geometry{top=25mm,bottom=25mm,inner=25mm,outer=25mm} +}{% + \ifthenelse{\equal{\@printtype}{library}}{% 图书馆版本 + \geometry{top=25mm,bottom=25mm,left=25mm,right=25mm}}{} +} + +% 设置空白页眉页脚 +\pagestyle{fancy} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} + +% 脚注环境设置 +\DefineFNsymbols{circled}{% 设置圆数字序号 + {\ding{192}}{\ding{193}}{\ding{194}}% + {\ding{195}}{\ding{196}}{\ding{197}}% + {\ding{198}}{\ding{199}}{\ding{200}}{\ding{201}}} +\setfnsymbol{circled} +% 修改行内标记 +\renewcommand{\@makefnmark}{% + \hbox{\@textsuperscript{% 上标模式 + \@thefnmark% 实际编号 + }}% +} +% 修改底部标记 +\renewcommand{\@makefntext}[1]{% + \zihao{-5}\songti % 字号:小五宋体 + \setlength{\hangindent}{2em}% 悬挂缩进1.5em + \noindent% 取消首行缩进 + \hb@xt@2em{\hss\normalfont\@thefnmark\hspace{0.8em}}% 编号右对齐于2em宽度 + #1% 脚注内容 +} + +% 设置目录格式 +\ifthenelse{\equal{\@subjecttype}{STEM}}{ + \titlecontents{chapter}[0pt]{\addvspace{0.5em}\settowidth{\hangindent}{\thecontentslabel}\heiti\zihao{-4}} + {\thecontentslabel}{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + + \titlecontents{section}[1.0\ccwd]{\settowidth{\hangindent}{\thecontentslabel\ \ }\songti\zihao{-4}} + {\thecontentslabel\ \ }{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + + \titlecontents{subsection}[2.0\ccwd]{\settowidth{\hangindent}{\thecontentslabel\ \ }\songti\zihao{5}} + {\thecontentslabel\ \ }{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} +}{ + \titlecontents{chapter}[0pt]{\addvspace{0.5em}\settowidth{\hangindent}{\thecontentslabel}\heiti\zihao{-4}} + {\thecontentslabel}{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + + \titlecontents{section}[1.0\ccwd]{\settowidth{\hangindent}{\thecontentslabel}\songti\zihao{-4}} + {\thecontentslabel}{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + + \titlecontents{subsection}[2.0\ccwd]{\settowidth{\hangindent}{\thecontentslabel}\songti\zihao{5}} + {\thecontentslabel}{} + {\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} +} + + +\titlecontents{figure}[0pt]{\settowidth{\hangindent}{图~\thecontentslabel\ \ }\songti\zihao{-4}} +{图~\thecontentslabel\ \ }{} +{\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + +\titlecontents{table}[0pt]{\settowidth{\hangindent}{表~\thecontentslabel\ \ }\songti\zihao{-4}} +{表~\thecontentslabel\ \ }{} +{\hspace{.25em}\songti\zihao{-4}\titlerule*[4pt]{$\cdot$}\contentspage} + +% 图表环境设置 +\let\org@table\table +\let\org@endtable\endtable +\renewenvironment{table}[1][h!] +{\begin{spacing}{1.2} \org@table[#1] \songti\zihao{5}\renewcommand{\arraystretch}{1.4}} + {\org@endtable \end{spacing}} + +\let\org@longtable\longtable +\let\org@endlongtable\endlongtable +\renewenvironment{longtable}[1][h!] +{\begin{spacing}{1.2} \songti\zihao{5}\renewcommand{\arraystretch}{1.4}\org@longtable[#1]} + {\org@endlongtable \end{spacing}} + +\counterwithin{figure}{chapter} +\counterwithin{table}{chapter} +\renewcommand{\thefigure}{\thechapter.\arabic{figure}} +\renewcommand{\thetable}{\thechapter.\arabic{table}} +\renewcommand{\p@subfigure}{\thefigure} + +% 图表题字体、距离 +\DeclareCaptionFormat{tabfigformat}{\bf\songti\zihao{5}{#1\hspace{10pt}#3}} +\captionsetup[figure]{ + position=bottom, margin=0mm, format=tabfigformat, + aboveskip=6pt, belowskip=-15pt, justification=centerlast} +\captionsetup[table]{ + position=top, margin=0mm, format=tabfigformat, + aboveskip=6pt, belowskip=0pt, justification=centerlast} +% 子图题字体、距离 +\DeclareCaptionFormat{subfigureformat}{\songti\zihao{5}{#1\hspace{10pt}#3}} +\captionsetup[subfigure]{ + position=bottom, margin=0mm, format=subfigureformat, aboveskip=6pt, belowskip=0pt, singlelinecheck=off, justification=centerlast} + +%出现在页面中间的浮动对象与上下方文本之间的垂直距离 +%缺省为 12pt plus 2pt minus 2pt。 +%\setlength{\intextsep}{12pt \@plus2pt \@minus 2pt} + +%出现在页面的顶部或底部的浮动对象之间的垂直距离 +%缺省为 12pt plus 2pt minus 2pt +%\setlength{\floatsep}{12pt \@plus2pt \@minus2pt} + +%出现在页面的顶部或底部的浮动对象与文本之间的垂直距离 +% 缺省为 20pt plus 2pt minus 4pt。 +%\setlength{\textfloatsep}{20bp \@plus2pt \@minus4pt} + +% 设置行间距 +\setlength{\parskip}{0pt} + +\AtBeginDocument{ + \setlength{\abovedisplayskip}{5pt} + \setlength{\belowdisplayskip}{5pt} + \setlength{\abovedisplayshortskip}{5pt} + \setlength{\belowdisplayshortskip}{5pt} +} + +% 列表间接设置 +\setlist{ + topsep=0pt, % 列表环境与上文距离 + itemsep=0pt, % 条目间距离 + parsep=\parskip, % 条目内段落距离 + partopsep=0pt % 列表环境与下文距离 +} + +% 设置参考文献格式 +\usepackage{notoccite} +% 设置编号字体和间距 +\renewcommand{\NAT@biblabelnum}[1]{% + {\songti\zihao{5} [#1]\hspace{0.1em}} +} +% 设置内容字体和字号 +\renewcommand{\bibfont}{ + \songti\fontsize{10.5pt}{10.5pt}\selectfont + } +\newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\newcommand\bibstyle@numbers{\bibpunct{[}{]}{,}{n}{,}{,}} +\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} +\bibpunct{[}{]}{,}{n}{}{} +\setlength{\bibsep}{0pt} +\newcommand{\upcite}[1]{\textsuperscript{\cite{#1}}} + +% 设置PDF +\hypersetup{% + colorlinks=true, + bookmarksnumbered=true, + bookmarksopen=true, + pdffitwindow=true, + pdfsubject={BUAAers}, + pdfcreator={BUAA Template v4.1.0} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 工具函数 +\newcommand{\checkinput}{%检测输入元素 + \ifthenelse{\isundefined{\@titlecn}}{\errmessage{% + Please set title by 'Title'.}}{} + \ifthenelse{\isundefined{\@department}}{\errmessage{% + Please set department by 'Department'.}}{} + \ifthenelse{\isundefined{\@departmenten}}{\errmessage{% + Please set departmenten by 'Department'.}}{} + \ifthenelse{\isundefined{\@major}}{\errmessage{% + Please set major by 'Major'.}}{} + \ifthenelse{\isundefined{\@feild}}{\errmessage{% + Please set feild by 'Feild'.}}{} + \ifthenelse{\isundefined{\@discipline}}{\errmessage{% + Please set discipline by 'Discipline'.}}{} + \ifthenelse{\isundefined{\@direction}}{\errmessage{% + Please set direction by 'Direction'.}}{} + \ifthenelse{\isundefined{\@tutorcn}}{\errmessage{% + Please set tutor name by 'Tutor'.}}{} + \ifthenelse{\isundefined{\@authorcn}}{\errmessage{% + Please set author name by 'Author'.}}{} + \ifthenelse{\isundefined{\@studentid}}{\errmessage{% + Please set student ID date by 'StudentID'.}}{} + \ifthenelse{\isundefined{\@dateenrolly}}{\errmessage{% + Please set enroll date by 'DateEnroll'.}}{} + \ifthenelse{\isundefined{\@dategraduatey}}{\errmessage{% + Please set graduate date by 'DateGraduate'.}}{} + \ifthenelse{\isundefined{\@datesubmity}}{\errmessage{% + Please set submite date by 'DateSubmit'.}}{} + \ifthenelse{\isundefined{\@datedefencey}}{\errmessage{% + Please set defence date by 'DateDefence'.}}{} + \ifthenelse{\equal{\@refcolor}{\empty}}{}{% + \ifthenelse{\equal{\@refcolor}{on} \OR \equal{\@refcolor}{off}}{}{ + \errmessage{Please use 'on' of 'off' for refcolor.}} + } +% \ifthenelse{\equal{\@beginright}{\empty}}{}{% +% \ifthenelse{\equal{\@beginright}{on} \OR \equal{\@beginright}{off}}{}{ +% \errmessage{Please use 'on' of 'off' for beginright.}} +% } + \ifthenelse{\isundefined{\@listfigtab}}{}{% + \ifthenelse{\equal{\@listfigtab}{on} \OR \equal{\@listfigtab}{off}}{}{ + \errmessage{Please use 'on' of 'off' for listfigtab.}} + } +} +\newcommand{\clearautopage}{%右侧起新页 + \clearpage + \ifthenelse{\equal{\@printtype}{print}}{% 打印版本 + \ifodd\c@page + \else + \hbox{} + \vspace*{\fill} + \begin{center} + {\textcolor[rgb]{0.75,0.75,0.75}{\@emptypagewords}} + \end{center} + \vspace{\fill} + \thispagestyle{empty} + \newpage + \if@twocolumn \hbox{} \newpage \fi + \fi + }{} +} + +\newcommand{\emptypage}{%插入不计页码的空白页 + \clearpage + \hbox{} + \vspace*{\fill} + \begin{center} + {\textcolor[rgb]{0.75,0.75,0.75}{\@emptypagewords}} + \end{center} + \vspace{\fill} + \thispagestyle{empty} + \addtocounter{page}{-1} + \newpage + \if@twocolumn \hbox{} \newpage \fi +} + +\newcommand{\sethyper}{%设置链接引用颜色 + \hypersetup{% + pdftitle={\@titlecn}, + pdfkeywords={\@keywordcn}, + pdfauthor={\@authorcn} + } + \ifthenelse{\equal{\@refcolor}{on}}{% + \hypersetup{ + allcolors=blue, + } + }{% + \hypersetup{ + allcolors=black, + } + } +} +\newcommand{\TranSecretLevel}[1]{%密级翻译 + \ifthenelse{\equal{\@permission}{public}}{\relax}{% + \ifthenelse{\equal{\@permission}{privacy}}{内~~部}{% + \ifthenelse{\equal{\@permission}{secret3}}{秘密~\ding{72}~{\bfseries 3}年}{% + \ifthenelse{\equal{\@permission}{secret5}}{秘密~\ding{72}~{\bfseries 5}年}{% + \ifthenelse{\equal{\@permission}{secret10}}{秘密~\ding{72}~{\bfseries 10}年}{% + \ifthenelse{\equal{\@permission}{secret*}}{秘密~\ding{72}~永久}{% + \ifthenelse{\equal{\@permission}{classified3}}{机密~\ding{72}~{\bfseries 3}年}{% + \ifthenelse{\equal{\@permission}{classified5}}{机密~\ding{72}~{\bfseries 5}年}{% + \ifthenelse{\equal{\@permission}{classified10}}{机密~\ding{72}~{\bfseries 10}年}{% + \ifthenelse{\equal{\@permission}{classified*}}{机密~\ding{72}~永久}{% + \ifthenelse{\equal{\@permission}{topsecret3}}{绝密~\ding{72}~{\bfseries 3}年}{% + \ifthenelse{\equal{\@permission}{topsecret5}}{绝密~\ding{72}~{\bfseries 5}年}{% + \ifthenelse{\equal{\@permission}{topsecret10}}{绝密~\ding{72}~{\bfseries 10}年}{% + \ifthenelse{\equal{\@permission}{topsecret*}}{绝密~\ding{72}~永久}{% + \ifthenelse{\equal{\@permission}{permission*}}{密级~\ding{72}~保密期限}{% + }}}}}}}}}}}}}}} +} +\newcommand{\TranDegree}[1]{%职称翻译 + \frenchspacing + \ifthenelse{\equal{#1}{教授}}{Prof.}{% + \ifthenelse{\equal{#1}{副教授}}{A.P.}{% + \ifthenelse{\equal{#1}{讲师}}{Teacher}{% + \ifthenelse{\equal{#1}{高工}}{Engineer}{% + \ifthenelse{\equal{#1}{研究员}}{Researcher}{% + \ifthenelse{\equal{#1}{副研究员}}{Researcher}{% + }}}}}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% CTeX调整 +% 半角/缩进/行伸缩设置 +\ctexset{% + punct=quanjiao, % 全角 + autoindent=2, % 缩进 + linestretch=2, % 行伸缩 +} +% 部分标题修改 +\ctexset{% + contentsname={\zihao{-2} \heiti 目\hspace{\ccwd}录}, + listfigurename={\zihao{3} \heiti 插图清单}, + listtablename={\zihao{3} \heiti 附表清单}, +} +% 标题样式修改 +\ifthenelse{\equal{\@subjecttype}{STEM}} +{\ctexset{% + chapter={%章标题 : 三号黑体居中 单倍行距 段前/段后0.5行 另起新页 + format=\zihao{3} \heiti \centering \thispagestyle{fancy}, + fixskip=true, + beforeskip=19.27pt, + afterskip=22.48pt, + break=\clearpage, + }, + section={%节标题 : 四号黑体居左 单倍行距 段前/段后0.5行 + format=\zihao{4} \heiti \raggedright, + beforeskip=8.43pt, + afterskip=11.24pt, + }, + subsection={%二级节标题 : 小四号黑体居左 单倍行距 段前/段后0.5行 + format=\zihao{-4} \heiti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + }, + subsubsection={%三级节标题 : 小四号黑体居左 + format=\zihao{-4} \heiti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + }, + paragraph={% 附加四级标题 : 小四号宋体居左 + format=\zihao{-4} \songti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + }, + subparagraph={% 附加五级标题 : 小四号宋体居左 + format=\zihao{-4} \songti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + } +}} +{\ctexset{ + chapter={%章标题 : 三号黑体居中 单倍行距 段前/段后0.5行 另起新页 + name = {,、}, + number = {\chinese{chapter}}, + format=\zihao{3} \heiti \centering \thispagestyle{fancy}, + fixskip=true, + beforeskip=19.27pt, + afterskip=22.48pt, + aftername = \hspace{0.2\ccwd}, + break=\clearpage, + }, + section={%节标题 : 四号黑体居左 单倍行距 段前/段后0.5行 + name = {(,)}, + number = {\chinese{section}}, + format=\zihao{4} \heiti \raggedright, + beforeskip=8.43pt, + afterskip=11.24pt, + aftername = \hspace{0.2\ccwd}, + }, + subsection={%二级节标题 : 小四号黑体居左 单倍行距 段前/段后0.5行 + name = {,、}, + number = {\arabic{subsection}}, + format=\zihao{-4} \heiti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + aftername = \hspace{0.2\ccwd}, + }, + subsubsection={%三级节标题 : 小四号黑体居左 + name = {(,)}, + number = {\arabic{subsubsection}}, + format=\zihao{-4} \heiti \raggedright, + beforeskip=3.61pt, + afterskip=3.61pt, + aftername = \hspace{0.2\ccwd}, + } +}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% AfterPreamble = AtBeginDocument +% AtEndPreamble -> AtBeginDocument -> AfterEndPreamble -> AtEndDocument -> AfterEndDocument +\AtBeginDocument{% + \checkinput + \sethyper +} +\AfterEndPreamble{% + \makecovercn + \makecoveren + \makecoverinner + \makestatementbuaa + + \fancyfoot[C]{\zihao{5} \uppercase\expandafter{\romannumeral \thepage}} + \setcounter{page}{1} + \abstructkeyword + \makecontextlist + \sign + \abbreviation + + % 自定义全局页眉 + \renewcommand{\headrulewidth}{0.4pt} + \fancyfoot[C]{\zihao{5}{\thepage}} + %\fancyhead[CE]{\zihao{-5} \leftmark} + \fancyhead[CE]{\vspace{-6pt} \zihao{-5} {\SimSunPageNum \parbox{15cm}{\centering \leftmark \\ {\quad } }}} + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{professional}}{% + \fancyhead[CO]{\vspace{-6pt} \zihao{-5} \parbox{15cm}{\centering 北京航空航天大学硕士学位论文 \\ {\quad } }}}{} + \ifthenelse{\equal{\@thesis}{doctor} \OR \equal{\@thesis}{prodoctor}}{% + \fancyhead[CO]{\vspace{-6pt} \zihao{-5} \parbox{15cm}{\centering 北京航空航天大学博士学位论文 \\ {\quad} }}}{} + + \setcounter{page}{1} +} + +\fancypagestyle{postref}{% 参考文献及之后的页眉页脚 + \renewcommand{\headrulewidth}{0.4pt} + \fancyfoot[C]{\zihao{5}\thepage} + \fancyhead[CE,CO]{\vspace{-6pt} \zihao{-5} {\SimSunPageNum \parbox{15cm}{\centering \leftmark \\ {\quad } }}} +} + +%% 制作封面及声明 +\newcommand{\makecovercn}{% 中文封面 + {\pdfbookmark[0]{中文封面}{makecovercn} + + {\zihao{5} \heiti \bfseries \noindent + \makebox[5\ccwd][s]{中图分类号}:{\@clc}% + \\ + \makebox[5\ccwd][s]{论文编号}:{10006\@studentid}% + \\ + \TranSecretLevel{\@permission} + } + + \vspace{25pt} + + \begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{def/logo-buaa} + \end{figure} + \vspace{-10pt} + \begin{figure}[h] + \centering + \ifthenelse{\equal{\@thesis}{master}}{\includegraphics[width=0.8\linewidth]{def/head-master}}{% + \ifthenelse{\equal{\@thesis}{professional}}{\includegraphics[width=0.8\linewidth]{def/head-professional}}{% + \ifthenelse{\equal{\@thesis}{doctor}}{\includegraphics[width=0.8\linewidth]{def/head-doctor}}{% + \ifthenelse{\equal{\@thesis}{prodoctor}}{\includegraphics[width=0.8\linewidth]{def/head-prodoctor}}{% + }}}} + \end{figure} + + \centering + + \vspace{75pt} + \begin{spacing}{1.2} + \ifthenelse{\isundefined{\@subtitlecn}}{\vspace{20pt}}{} + \fontsize{32pt}{38.4pt}\selectfont \songti \bfseries \@titlecn + \ifthenelse{\isundefined{\@subtitlecn}}{\vspace{20pt}}{% + \\ \vspace{10pt} + \zihao{1} \@subtitlecn + } + \end{spacing} + + \vspace{50pt} + \begin{spacing}{1.8} + \ziju{0.2} \zihao{4} \heiti + \hspace{100pt} + \begin{tabular}{p{3cm}<{\centering}p{8cm}<{\raggedright}} + 作者姓名 & \@authorcn \\ + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{doctor}}{学科专业}{\ifthenelse{\equal{\@thesis}{professional} \OR \equal{\@thesis}{prodoctor}}{专业名称}{}} & \@major \\ + 指导教师 & \@tutorcn\hspace{1.4em}\@tutordegree \\ + \ifthenelse{\isundefined{\@cotutorcn}}{}{% + & \@cotutorcn\hspace{1.4em}\@cotutordegree\\ + } + 培养学院 & \@department + \ifthenelse{\isundefined{\@specialprog}}{}{ + \\ 专项计划 & \@specialprog + } + \end{tabular} + \end{spacing} + \clearautopage +}} +\newcommand{\makecoveren}{% 英文封面 + {\pdfbookmark[0]{英文封面}{makecoveren} + \centering + + \ \vspace{100pt} + + \begin{spacing}{1.2} + + {\begin{spacing}{1.2} + \zihao{-2} \bfseries + \ifthenelse{\isundefined{\@subtitleen}}{\vspace{20pt}}{} + \@titleen + \ifthenelse{\isundefined{\@subtitleen}}{\vspace{20pt}}{% + \\ \vspace{10pt} + \zihao{3} \@subtitleen} + \end{spacing} + } + + \vspace{50pt} + + {\zihao{4} + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{doctor}}{A Dissertation Submitted for the Degree of \@degree}{\ifthenelse{\equal{\@thesis}{professional} \OR \equal{\@thesis}{prodoctor}}{A Dissertation Submitted for the Professional Degree of \@degree}{}} + } + + \vspace{120pt} + {\zihao{-3} \bfseries + \hspace{3.0cm} + \begin{tabular}{p{3.5cm}<{\raggedright}p{7cm}<{\raggedright}} + \ifthenelse{\isundefined{\@cotutorcn}}{% + \makebox[70pt][s]{Candidate}: & \@authoren \\ + \vspace{11pt} \makebox[70pt][s]{Supervisor}: & \vspace{11pt} \TranDegree{\@tutordegree} \hspace{-8pt} \@tutoren \\ + }{% + \makebox[77pt][s]{Candidate}: & \@authoren \\ + \vspace{11pt}\makebox[77pt][s]{Supervisors}: & \vspace{11pt}\TranDegree{\@tutordegree} \hspace{-8pt} \@tutoren \\ + & \TranDegree{\@cotutordegree} \hspace{-8pt} \@cotutoren\\ + } + \end{tabular} + } + \end{spacing} + + \vspace{150pt} + + \begin{spacing}{2.2} + {\zihao{-3} + \@departmenten \\ + \vspace{0pt} + Beihang University, Beijing, China + } + \end{spacing} + + \clearautopage +}} +\newcommand{\makecoverinner}{% 题名页 + {\pdfbookmark[0]{题名页}{makecoverinner} + + {\zihao{5} \heiti \bfseries \noindent + \makebox[5\ccwd][s]{中图分类号}:{\@clc} + \\ + \makebox[5\ccwd][s]{论文编号}:{10006\@studentid} + } + + \centering + \vspace{122pt} + + \begin{spacing}{1.3} + {\zihao{-2} \heiti + \ifthenelse{\equal{\@thesis}{master}}{% + \makebox[11\ccwd][s]{硕士学位论文}}{ + \ifthenelse{\equal{\@thesis}{professional}}{% + \makebox[11\ccwd][s]{硕士学位论文}}{ + \ifthenelse{\equal{\@thesis}{doctor}}{% + \makebox[11\ccwd][s]{博士学位论文}}{ + \ifthenelse{\equal{\@thesis}{prodoctor}}{% + \makebox[11\ccwd][s]{博士学位论文}}{} + }}} + } + + \vspace{80pt} + {\begin{spacing}{1.2} + \zihao{-1} \heiti \bfseries + \ifthenelse{\isundefined{\@subtitlecn}}{\vspace{20pt}}{} + \@titlecn + \ifthenelse{\isundefined{\@subtitlecn}}{\vspace{20pt}}{% + \\ \vspace{10pt} + \zihao{-1} \@subtitlecn} + \end{spacing} + } + \end{spacing} + + \ifthenelse{\equal{\@titlelength}{short}}{\vspace{105pt}}{\ifthenelse{\equal{\@titlelength}{long}}{\vspace{90pt}}{}} + \begin{spacing}{2.2} + \zihao{-4} \songti \hspace{-20pt} + \begin{tabular}{lrrrlrrr} + 作者姓名 & \multicolumn{3}{l}{\@authorcn} & 申请学位级别 & \multicolumn{3}{l}{ + \@branch + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{professional}}{硕士}{\ifthenelse{\equal{\@thesis}{doctor} \OR \equal{\@thesis}{prodoctor}}{博士}{}} + } \\ + 指导教师姓名 & \multicolumn{3}{l}{\@tutorcn} & 职\hspace{2\ccwd}称 & \multicolumn{3}{l}{\@tutordegree} \\ + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{doctor}}{学科专业}{\ifthenelse{\equal{\@thesis}{professional} \OR \equal{\@thesis}{prodoctor}}{专业名称}{}} & \multicolumn{3}{l}{\@major} & 研究方向 & \multicolumn{3}{l}{\@feild} \\ + \ifthenelse{\equal{\@thesis}{master} \OR \equal{\@thesis}{doctor}}{一级学科 & \multicolumn{3}{l}{\@discipline} & 学科方向 & \multicolumn{3}{l}{\@direction} \\}{}学习时间自 & \@dateenrolly\ 年 & \@dateenrollm\ 月 & \@dateenrolld\ 日起 & 至 & \@dategraduatey\ 年 & \@dategraduatem\ 月 & \@dategraduated\ 日止 \\ + 论文提交日期 & \@datesubmity\ 年 & \@datesubmitm\ 月 & \@datesubmitd\ 日\hspace{\ccwd} & 论文答辩日期 & \@datedefencey \ 年 & \@datedefencem \ 月 & \@datedefenced \ 日\hspace{\ccwd} \\ + 学位授予单位 & \multicolumn{3}{l}{北京航空航天大学} & 学位授予日期 & 年 & 月 & 日\hspace{\ccwd} \\ + \end{tabular} + \end{spacing} + \clearautopage +}} +\newcommand{\makestatementbuaa}{% 北航声明 + {\pdfbookmark[0]{北航声明}{makestatementbuaa} + + \begin{spacing}{1.7}%1.5+0.2 + {\zihao{3} \heiti \centerline{关于学位论文的独创性声明}} + {\zihao{-4} \songti ~\par + 本人郑重声明:所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的 + 成果,论文中有关资料和数据是实事求是的。尽我所知,除文中已经加以标注和致谢外, + 本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得北京航空 + 航天大学或其它教育机构的学位或学历证书而使用过的材料。与我一同工作的同志对研 + 究所做的任何贡献均已在论文中作出了明确的说明。 + + 若有不实之处,本人愿意承担相关法律责任。 \\ + + {\zihao{5}\ \ 学位论文作者签名:\underline{\hspace{7\ccwd}} \hspace{4\ccwd} + 日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日} + } + + \vspace{115pt} + + {\zihao{3} \heiti \centerline{学位论文使用授权}} + {\zihao{-4} \songti ~\par + 本人完全同意北京航空航天大学有权使用本学位论文(包括但不限于其印刷版和电 + 子版),使用方式包括但不限于:保留学位论文,按规定向国家有关部门(机构)送交学 + 位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、借阅和复印, + 将学位论文的全部或部分内容编入有关数据库进行检索,采用影印、缩印或其他复制手 + 段保存学位论文。 + + 保密学位论文在解密后的使用授权同上。 \\ + + {\zihao{5}\ \ 学位论文作者签名:\underline{\hspace{7\ccwd}} \hspace{4\ccwd} + 日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日} + + {\zihao{5}\ \ 指导教师签名:\underline{\hspace{9\ccwd}} \hspace{4\ccwd} + 日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日} + } + + \end{spacing} + \clearautopage +}} + + +\newcommand{\abstructkeyword}{% 摘要 + {\pdfbookmark[0]{中英摘要}{abstructkeyword} + + \begin{spacing}{1.7}%1.5+0.2 + + {\zihao{3} \heiti \centerline{摘~~~~要}} + {\vspace{10pt} \zihao{-4} \songti ~\par + \@abstrctcn \par + {\zihao{-4} \heiti {\bfseries 关键词}:\@keywordcn} + } + + \clearpage + %\ifthenelse{\equal{\@beginright}{off}}{\clearpage}{\clearautopage} + + {\zihao{3} \bfseries \centerline{Abstract}} + {\zihao{-4} ~\par + \@abstrcten \par + {\bfseries Keywords}: \@keyworden + } + + \end{spacing} + + \clearpage +}} +\newcommand{\makecontextlist}{% 目录 + {\pdfbookmark[0]{目录}{makecontextlist} + \tableofcontents + \renewcommand\addvspace[1]{} + \ifthenelse{\isundefined{\@listfigtab}}{}{% + \ifthenelse{\equal{\@listfigtab}{on}}{% + \renewcommand{\addvspace}[1]{} + \clearpage + \pdfbookmark[0]{图目录}{listoffigures} + \listoffigures + \clearpage + \pdfbookmark[0]{表目录}{listoftables} + \listoftables + }{} + } + \clearpage +}} + +\newcommand{\sign}{% 符号定义 + {\ifthenelse{\isundefined{\@signs}}{}{% + \pdfbookmark[0]{主要符号表}{sign} + \chapter*{\heiti \zihao{3} 主要符号表} + %\centering + %\begin{tabular}{cl} + \songti \zihao{-4} + \@signs + %\end{tabular}% + \clearpage + } +}} + +\newcommand{\abbreviation}{% 缩写定义 + {\ifthenelse{\isundefined{\@abbreviations}}{}{% + \pdfbookmark[0]{缩略语说明}{abbreviation} + \chapter*{\heiti \zihao{3} 缩略语说明} + %\centering + %\begin{tabular}{cl} + \songti \zihao{-4} + \@abbreviations + %\end{tabular}% + \clearpage + } +}} + +\newcommand{\chaptera}[1]{%无章号但编入目录 + \ctexset{chapter/numbering=false} + \chapter{#1} + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + % + \gdef\thesection{\@Alph\c@section}% + \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% + % + + \renewcommand{\thefigure}{A\arabic{figure}} + \setcounter{figure}{0} + \renewcommand{\thetable}{A\arabic{table}} + \setcounter{table}{0} + \renewcommand{\theequation}{A\arabic{equation}} + \setcounter{equation}{0} +} +\newcommand{\summary}{%结论 + \ctexset{chapter/numbering=false} + \chapter{结~~~~论} + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + % + \gdef\thesection{\@Alph\c@section}% + \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% + % + + \renewcommand{\thefigure}{A\arabic{figure}} + \setcounter{figure}{0} + \renewcommand{\thetable}{A\arabic{table}} + \setcounter{table}{0} + \renewcommand{\theequation}{A\arabic{equation}} + \setcounter{equation}{0} +} + +\newcommand{\Bib}[2]{%参考文献 + \bibliographystyle{#1} + \clearpage + \pagestyle{postref} + \phantomsection + \addcontentsline{toc}{chapter}{参考文献} + \bibliography{#2} +} + +\renewcommand{\appendix}{% + \par + \ctexset{chapter/numbering=true} + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thechapter{\@Alph\c@chapter}% 强制章节编号为字母 + \ctexset{ + chapter = { + name = {附录,}, + number = \thechapter, % 使用已定义的编号 + aftername = \hspace{1em}, + }, + section = { + number = \thechapter.\@arabic\c@section, + aftername = \hspace{\ccwd}, + } + } + % 图表公式编号设置 + \renewcommand{\thefigure}{\thechapter.\arabic{figure}} + \renewcommand{\thetable}{\thechapter.\arabic{table}} + \renewcommand{\theequation}{(\thechapter.\arabic{equation})} % + % 计数器关联与重置 + \counterwithin{figure}{chapter} + \counterwithin{table}{chapter} + \counterwithin{equation}{chapter} +} + +\newcommand{\achievement}{%学术成果 + \ctexset{chapter/numbering=false} + \ifthenelse{\equal{\@thesis}{master}}{\chapter{攻读硕士学位期间取得的研究成果}}{ + \ifthenelse{\equal{\@thesis}{professional}}{\chapter{攻读硕士学位期间取得的研究成果}}{ + \ifthenelse{\equal{\@thesis}{doctor}}{\chapter{攻读博士学位期间取得的研究成果}}{ + \ifthenelse{\equal{\@thesis}{prodoctor}}{\chapter{攻读博士学位期间取得的研究成果}}{ + }}}} + + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + % + \gdef\thesection{\zhnum{section}}% + \gdef\thesubsection{\@arabic\c@section.\@arabic\c@subsection}% + % + + \renewcommand{\thefigure}{A\arabic{figure}} + \setcounter{figure}{0} + \renewcommand{\thetable}{A\arabic{table}} + \setcounter{table}{0} + \renewcommand{\theequation}{A\arabic{equation}} + \setcounter{equation}{0} +} +\newcommand{\acknowledgments}{%致谢 + \ctexset{chapter/numbering=false} + \chapter{致~~~~谢} + + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + % + \gdef\thesection{\@Alph\c@section}% + \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% + % + + \renewcommand{\thefigure}{A\arabic{figure}} + \setcounter{figure}{0} + \renewcommand{\thetable}{A\arabic{table}} + \setcounter{table}{0} + \renewcommand{\theequation}{A\arabic{equation}} + \setcounter{equation}{0} +} +\newcommand{\biography}{%作者简介 + \ctexset{chapter/numbering=false} + \chapter{作者简介} + + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + % + \gdef\thesection{\@Alph\c@section}% + \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}% + % + + \renewcommand{\thefigure}{A\arabic{figure}} + \setcounter{figure}{0} + \renewcommand{\thetable}{A\arabic{table}} + \setcounter{table}{0} + \renewcommand{\theequation}{A\arabic{equation}} + \setcounter{equation}{0} +} + +%% --END-- +\endinput diff --git a/def/head-doctor.eps b/def/head-doctor.eps new file mode 100644 index 0000000..6d80e4e Binary files /dev/null and b/def/head-doctor.eps differ diff --git a/def/head-master.eps b/def/head-master.eps new file mode 100644 index 0000000..0adaad1 Binary files /dev/null and b/def/head-master.eps differ diff --git a/def/head-prodoctor.eps b/def/head-prodoctor.eps new file mode 100644 index 0000000..9e8dd6d Binary files /dev/null and b/def/head-prodoctor.eps differ diff --git a/def/head-professional.eps b/def/head-professional.eps new file mode 100644 index 0000000..c969892 Binary files /dev/null and b/def/head-professional.eps differ diff --git a/def/logo-buaa.eps b/def/logo-buaa.eps new file mode 100644 index 0000000..4dfac18 Binary files /dev/null and b/def/logo-buaa.eps differ diff --git a/def/simfang.ttf b/def/simfang.ttf new file mode 100644 index 0000000..68334e2 Binary files /dev/null and b/def/simfang.ttf differ diff --git a/def/simhei.ttf b/def/simhei.ttf new file mode 100644 index 0000000..5bd4687 Binary files /dev/null and b/def/simhei.ttf differ diff --git a/def/simkai.ttf b/def/simkai.ttf new file mode 100644 index 0000000..d7c3b90 Binary files /dev/null and b/def/simkai.ttf differ diff --git a/def/simsun.ttc b/def/simsun.ttc new file mode 100644 index 0000000..e360db7 Binary files /dev/null and b/def/simsun.ttc differ diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..c0f2084 --- /dev/null +++ b/main.tex @@ -0,0 +1,274 @@ +%% %%================================================================= +%% %% +%% %% 北航学位论文模板使用样例 +%% %% 请检查下列文件是否完整. +%% %%----------- +%% %% def/buaa.cls : LaTeX宏模板文件 +%% %% simfang.ttf : 仿宋字 +%% %% simhei.ttf : 黑体字 +%% %% simkai.ttf : 楷体字 +%% %% simsun.ttc : 宋体字 +%% %% def/GBT7714-2015.bst : 国标参考文献BibTeX样式文件2015(https://github.com/zepinglee/gbt7714-bibtex-style) +%% %% def/GBT7714-2015-NoWarning.bst : 国标参考文献BibTeX样式文件2015,在参考文献中不再提示缺失信息 +%% %% def/logo-buaa.eps : 论文封皮北航字样 +%% %% def/head-doctor.eps : 论文封皮学术博士学位论文标题(华文行楷字体替代解决方案) +%% %% def/head-prodoctor.eps : 论文封皮专业博士学位论文标题(华文行楷字体替代解决方案) +%% %% def/head-master.eps : 论文封皮学术硕士学位论文标题(华文行楷字体替代解决方案) +%% %% def/head-professional.eps : 论文封皮专业硕士学位论文标题(华文行楷字体替代解决方案) +%% %% tex/*.tex : 本模板样例中的独立章节 +%% %%----------- +%% %% 请统一使用UTF-8编码. +%% %%================================================================= + +%================================================================= +% buaa基于ctexbook模板 +% 论文样式参考自二〇二五年九月版《北京航空航天大学研究生学位论文撰写规范》 +%====================== +% 模板导入: +% \documentclass[thesis,permission,printtype,ostype,titlelength,subjecttype,]{buaa} +%====================== +% 模板选项: +%====================== +% I.论文类型(thesis) +%-------------------- +% a.学术硕士论文(master)[缺省值] +% b.专业硕士论文(professional) +% c.学术博士论文(doctor) +% d.专业博士论文(prodoctor) +%-------------------- +% II.密级(permission) +%-------------------- +% a.公开(public)[缺省值] +% b.内部(privacy) +% c.秘密(secret=secret3) +% c.1.秘密3年(secret3) +% c.2.秘密5年(secret5) +% c.3.秘密10年(secret10) +% c.4.秘密永久(secret*) +% d.机密(classified=classified5) +% d.1.机密3年(classified3) +% d.2.机密5年(classified5) +% d.3.机密10年(classified10) +% d.4.机密永久(classified*) +% e.绝密(topsecret=topsecret10) +% e.1.绝密3年(topsecret3) +% e.2.绝密5年(topsecret5) +% e.3.绝密10年(topsecret10) +% e.4.绝密永久(topsecret*) +%-------------------- +% III.打印设置(printtype) +%-------------------- +% a.图书馆版本(library)[缺省值] +% b.打印版本(print) +%-------------------- +% IV.系统类型(ostype) +%-------------------- +% a.win(win)[缺省值] +% b.linux (linux) +% c.mac (mac) +%-------------------- +% V.标题长度(titlelength) % 如果标题过长导致提名页信息移位,请将该项设置为long +%-------------------- +% a.short(short)[缺省值] +% b.long (long) +%-------------------- +% V.学科类型(subjecttype) % 理工类选择STEM,社科及文学类选择HSS +%-------------------- +% a.理工类(STEM)[缺省值] +% b.社科及文学类 (HSS) +%-------------------- +% VI.ctexbook设置选项() +%-------------------- +% ... +%====================== +% 其他说明: +% 1. Mac系统请使用mac选项,并使用XeLaTeX编译。 +% 2. 可加入额外ctexbook文档类的选项,其将会被传递给ctexbook。 +% 3. 参看示例模板 `main.tex` 及其中插入的各章节 `tex/*.tex` 熟悉模板结构和 $LaTeX$ 语法,撰写论文正文。 +% 4. 在写公式时,请不要在公式之后加入额外的空行,避免空行所导致的公式与下一行距离过大的问题。 +% 5. 在编译时,请使用xelatex进行编译。 +% 6. 在写参考文献时,可以先选用GBT7714-2015.bst来查看缺少哪些关键内容,进行补全,如果存在某些内容找不到的问题,则可以使用GBT7714-2015-NoWarning.bst来不显示这些缺乏信息。 +% 7. 在写表时,如果存在上下两个线加粗的需求,可以使用\toprule[], \midrule[] 和 \bottomrule[] 来加粗三线表的三条线。 +% 8. 在写论文时,可根据tex文件里的注释信息来修改本文的密级,专硕学硕等内容。 +% 9. 如果标题过长导致提名页信息移位,请将标题长度项设置为long。 + +%================================================================= + +% 在此修改 论文类型,密级,打印设置,系统类型,标题长短,学科类型 +% 学科类型需填写“STEM”或者“HSS”,该项会影响章节条标题的形式 +\documentclass[master,public,library,win,short,STEM,AutoFakeBold]{def/buaa} + +%\setlength{\abovedisplayskip}{1pt} +%\setlength{\belowdisplayskip}{1pt} +%\setlength{\abovedisplayshortskip}{1pt} +%\setlength{\belowdisplayshortskip}{1pt} + +%================================================================= +% 开启/关闭引用编号颜色:参考文献,公式,图,表,算法 等…… +\refcolor{off} % 开启: on; 关闭: off[默认]; +% 空白页留字,如果不需要空白页显示任何内容则删去方括号及其中的内容即可 +\emptypagewords{[ -- This page is a preset empty page -- ]} + +%================================================================= +% buaa模板已内嵌以下LaTeX工具包: +%-------------------- +% ifthen, etoolbox, titletoc, remreset, +% geometry, fancyhdr, setspace, +% float, graphicx, subfigure, epstopdf, +% array, enumitem, +% booktabs, longtable, multirow, caption, +% listings, algorithm2e, amsmath, amsthm, +% hyperref, pifont, color, soul, +% --- +% For Win: times +% For Lin: newtxtext, newtxmath +% For Mac: times, fontspec +%-------------------- +% 请在此处添加额外工具包>> + +%================================================================= +% buaa模板已内嵌以下LaTeX宏: +%-------------------- +% \highlight{text} % 黄色高亮 +%-------------------- +% 请在此处添加自定义宏>> +\usepackage{txfonts} +\usepackage{amsmath} +\usepackage{enumitem} +\usepackage[T1]{fontenc} + +%%================================================================= +% 论文题目及副标题-{中文}{英文} 注意:论文题目应严格控制在25个汉字(符)以内 +\Title{北航硕博士学位论文~\LaTeX{}模板\BUAAThesis{}}{\LaTeX{} Template of Beihang University Thesis \BUAAThesis{}} +\Subtitle{版本 \BUAAThesisVer{}}{Version \BUAAThesisVer{}} + +% 学科大类,对应信息页中“申请学位级别”一项的内容,默认工学 +\Branch{工学} + +% 英文封面申请学位的类型。 +% 学术学位博士学位论文填写“Doctor of Philosophy in 学科英文名称”。 +% 学术学位硕士学位论文填写“Master of Arts in 学科英文名称”(哲学、文学、历史学、法学、教育学、艺术学)或“Master of Science in 学科英文名称”。获得一级学科授权的填写一级学科英文名称,获得二级学科授权的填写二级学科英文名称。 +% 专业学位博士学位论文根据实际填写“Doctor of 加专业英文名称”。 +% 专业学位硕士学位论文根据实际填写“Master of 加授予学位专业英文名称”。英文名称可参考“中国学位与研究生教育学会”网站信息。 +\Degree{Master of Science in Control Science and Engineering} + +% 院系-{中文}{英文},专业,研究方向,一级学科,学科方向(学术型学位) +\Department{宇航学院}{School of Astronautics} +\Major{控制科学与工程} +\Feild{控制理论与智能系统} +\Discipline{控制科学与工程} +\Direction{控制理论与智能系统} + +% 导师信息-{中文名}{英文名}{职称} +\Tutor{导师姓名}{Tutor}{教授} +\Cotutor{副导师姓名}{Cotutor}{研究员} + +% 学生姓名-{中文名}{英文名} +\Author{学生姓名}{Student} +% 学生学号 +\StudentID{ID123456} +% 专项计划,如无则删除 +\SpecialProg{本行仅专项计划研究生添加} + +% 中图分类号 +\CLC{TP391.4} + +% 时间节点-{月}{日}{年} +\DateEnroll{09}{01}{2015} +\DateGraduate{03}{31}{2018} +\DateSubmit{01}{10}{2018} +\DateDefence{03}{01}{2018} + +%%================================================================= +% 摘要-{中文}{英文} +\Abstract{% + 论文摘要是对论文研究内容的高度概括,应体现论文工作的核心思想。博士学 + 位论文的中文摘要一般约800~1200字;硕士学位论文的中文摘要一般约500字。摘 + 要内容应涉及本项科研工作的目的和意义、研究思想和方法、研究成果和结论,博 + 士学位论文应突出论文的创造性成果,硕士学位论文应突出论文的新见解。应具有 + 独立性和自含性,即应是一篇简短但意义完整的文章。论文摘要中不要出现图片、 + 图表、表格或其他插图材料。 + + 论文的关键词,是为了文献标引工作从论文中选取出来用以表示全文主题内容 + 信息的单词或术语,关键词一般为3~5个,按词条的外延层次排列(外延大的排在 + 前面)。每个关键词之间用逗号间隔,最后一个关键词后不缀标点符号。 + + 论文摘要的中文版与英文版文字内容要对应。从中文摘要开始编写页码并采用 + 双面印刷。“Keywords”与中文摘要部分的关键词对应,每个关键词之间用逗号间隔。 + }{ + The abstract is a concise summary of the research content of the thesis, reflecting the core ideas of the work. For a doctoral dissertation, the Chinese abstract is typically around 800–1,200 words, while for a master's thesis, it is generally about 500 words. The abstract should address the purpose and significance of the research, the methodology and approach, as well as the key findings and conclusions. Doctoral dissertations should emphasize original contributions, while master's theses should highlight novel insights. The abstract must be self-contained and independent, functioning as a complete yet concise standalone text. Figures, charts, tables, or other illustrative materials should not appear in the abstract. + + Keywords are terms or phrases selected from the thesis to represent the main thematic content for indexing purposes. Typically, 3–5 keywords are required, arranged in hierarchical order of scope (with broader terms listed first). Keywords are separated by semicolons, with no punctuation following the last keyword. + + The Chinese and English versions of the abstract must align in content. Page numbering begins with the Chinese abstract, and the document should be printed double-sided. The "Keywords" section in the English abstract corresponds to the Chinese version, with terms similarly separated by semicolons. +} +% 关键字-{中文}{英文} +\Keyword{北航,学位论文,博士,硕士,中文,\LaTeX{}模板,\BUAAThesis{}}{BeiHang, Degree thesis, PhD, Master, Chinese, \LaTeX{} template, \BUAAThesis{}} + +% 图表目录 +\Listfigtab{on} % 启用: on[默认]; 关闭: off; + +% 符号定义 按tabular环境或其他列表环境编写 不需要可直接删除 +\Signs{ \centering + \begin{tabular}{cl} + $E$ & 能量 \\ + $m$ & 质量 \\ + $c$ & 光速 \\ + $P$ & 概率 \\ + $T$ & 时间 \\ + $v$ & 速度 \\ + \end{tabular} +} + +% 缩写定义 按tabular环境或其他列表环境编写 不需要可直接删除 +\Abbreviations{ \centering +\begin{tabular}{lll} + 外文缩略字母 & 外文全称 & 中文说明\\ + LIF & Laster-induced fluorenscene & 激光诱导荧光\\ + NTC & Negative temperature coefficient & 负温度效应\\ +\end{tabular} +} + +\begin{document} +%%================================================================= +% 标题级别 +%-------------------- +% \chapter{第一章} +% \section{1.1 小节} +% \subsection{1.1.1 条} +% \subsubsection{1.1.1.1} +% \paragraph{1.1.1.1.1} +% \subparagraph{1.1.1.1.1.1} +%-------------------- +%%================================================================= +% \emptypage:插入不计页码的空白页。如果需要第一章第一页从右页起,可以用这条命令插入一张空白页。 + +% 说明 +\input{tex/chap_instruction} + +% 示例 +\input{tex/chap_sample} + +% 总结 +\input{tex/chap_summary} + +% 参考文献 +% 选用参考文献格式 + +\Bib{def/GBT7714-2015-NoWarning.bst}{ref.bib} + +% 附录 +\input{tex/chap_appendix} + +% 攻读学位期间成果 +\input{tex/chap_achievement} + +% 致谢 +\input{tex/chap_acknowledge} + +% 作者简介 +\input{tex/chap_biography} + +\vspace{5cm} + +\end{document} diff --git a/pic/buaa-mark.jpg b/pic/buaa-mark.jpg new file mode 100644 index 0000000..aae5d58 Binary files /dev/null and b/pic/buaa-mark.jpg differ diff --git a/pic/logo-buaa.eps b/pic/logo-buaa.eps new file mode 100644 index 0000000..4dfac18 Binary files /dev/null and b/pic/logo-buaa.eps differ diff --git a/pic/question_survey.jpg b/pic/question_survey.jpg new file mode 100644 index 0000000..b20f6e5 Binary files /dev/null and b/pic/question_survey.jpg differ diff --git a/ref.bib b/ref.bib new file mode 100644 index 0000000..e381f28 --- /dev/null +++ b/ref.bib @@ -0,0 +1,76 @@ +@article{knuth84, + author = {Donald E. KNUTH}, + title = {Literate Programming}, + journal = {The Computer Journal}, + year = {1984}, + number = {2}, + volume = {27}, + pages = {97--111}, +} + +@book{knuth86a, + author = {Donald E. KNUTH}, + title = {The {\TeX}book}, + volume = {A}, + publisher = {Addison-Wesley}, + address = {Reading, MA, USA}, + year = {1986}, + series = {Computers and Typesetting}, +} + +@book{lamport94, + author = {Leslie Lamport}, + title = {{\LaTeX}: a Document Preparation System}, + publisher = {Addison-Wesley}, + address = {Reading, MA, USA}, + edition = {2}, + year = {1994}, +} + +@book{tlc2, + author = {Frank MITTELBACH and Michel GOOSSENS and Johannes BRAAMS and David CARLISLE}, + title = {The {\LaTeX} Companion}, + publisher = {Addison-Wesley}, + address = {Reading, MA, USA}, + edition = {2}, + year = {2004}, +} + +@article{twh, + author = {{The White House}}, + journal = {Technology for Economic Growth}, + address = {Washington}, + year = {1993}, +} + +@article{huston, + author = {Hutson, J M}, + journal = {J. Phys. Chem.}, + year = {1992}, + volume = {96}, + pages = {4237}, +} + +@article{zhangzhiqiang2013, +title={众包质量控制策略及评估算法研究}, +author={张志强 and 逄居升 and 谢晓芹 and 周永}, +journal={计算机学报}, +volume={36}, +number={8}, +pages={1636-1649}, +year={2013}, +} +@misc{db, + author={王明亮}, + title = {中国学系统工程}, + url={http://www.cajcd.cn/put/980810-2.html}, + year = {1998}, + citedate = {1922}, +} + +@phdthesis{zhudaoqian, + author = "朱道乾", + title = "新型自旋轨道矩器件和机理研究", + school = "集成电路科学与工程学院,北京航空航天大学", + year = "2022" +} diff --git a/tex/chap_achievement.tex b/tex/chap_achievement.tex new file mode 100644 index 0000000..bc513d9 --- /dev/null +++ b/tex/chap_achievement.tex @@ -0,0 +1,49 @@ +% !TeX root = ../main.tex +% [攻读学位期间取得的成果] +\achievement + +本模板定义的研究成果页与正文章属于同一标题等级。 +攻读博/硕士学位期间取得的研究成果包括“攻读博/硕士学位期间取得的创新成果”和“攻读博/硕士学位期间参与的主要科研工作”两项。 + +\section*{攻读博/硕士学位期间取得的创新成果} + +可包括攻读博/硕士学位期间发表(含录用)的与学位论文相关的学术论文、发明专利、著作、获奖项目、作品等。 + +\section*{攻读博/硕士学位期间参与的主要科研工作} + +可包括攻读博/硕士学位期间参与的与学位论文相关的主要科研项目等,应列明项目名称,项目来源,研制时间,本人承担的主要工作。 + +若在学期间未取得相关研究成果,在相应标题下的内容写“无”。各种类型研究成果的书写要求如下: + +\section*{学术论文} + +参照参考文献书写,尚未刊载但已经接到正式录用函的学术论文加括号注明已被xxxx期刊录用。 + +\section*{发明专利} + +参照参考文献书写,处于申请阶段的专利在专利号位置填写专利申请号,并加括号注明是专利申请号。 +当专利申请者或所有者为单位时,可以将专利发明人单独注明列在该条目最后。 + +\section*{著作} + +参照参考文献书写,尚未出版但已被出版社决定出版的专著/译著加括号注明出版社名称和预计出版时间。 + +\section*{获奖项目} + +大致按作者.获奖项目名称.获奖时间方式书写。 + +\section*{作品} + +大致按作者.作品名称.创作时间.材料形式.作品尺寸.作品地点.参展信息.是否获奖等信息方式书写。 + +\section*{研究报告} + +公开的研究报告参照参考文献书写。 + +\section*{其他} + +按适当合理的方式书写。 + +\section*{科研工作} + +大致按项目名称.项目来源.研制时间.本人承担的主要工作方式书写。 diff --git a/tex/chap_acknowledge.tex b/tex/chap_acknowledge.tex new file mode 100644 index 0000000..4f677cd --- /dev/null +++ b/tex/chap_acknowledge.tex @@ -0,0 +1,5 @@ +% !TeX root = ../main.tex +% [致谢] +\acknowledgments + +致谢中主要感谢指导教师和在学术方面对论文的完成有直接贡献及重要帮助的团体和人士,以及感谢给予转载和引用权的资料、图片、文献、研究思想和设想的所有者。致谢中还可以感谢提供研究经费及实验装置的基金会或企业等单位和人士。致谢辞应谦虚诚恳,实事求是,切忌浮夸与庸俗之词。 diff --git a/tex/chap_appendix.tex b/tex/chap_appendix.tex new file mode 100644 index 0000000..cdf3cc0 --- /dev/null +++ b/tex/chap_appendix.tex @@ -0,0 +1,16 @@ +% !TeX root = ../main.tex +% [附录] +\appendix + +\chapter{附录说明} + +附录是与论文内容密切相关、但编入正文又影响整篇论文编排的条理和逻辑性的资料,是论文主体的补充内容,可根据需要设置。 +本模板定义的附录与正文章属于同一等级,支持节、图、表和公式在附录中的特殊编号形式。下列可能需要编入附录的内容: + +\begin{enumerate}[label=\arabic*、] +\item 为了整篇论文材料的完整,但编入正文又有损于编排的条理和逻辑性,这一材料包括比正文更为详尽的信息、研究方法和技术更深入的叙述,建议可以阅读的参考文献题录,对了解正文内容有用的补充信息等; +\item 由于篇幅过大或取材于复制品而不便于编入正文的材料; +\item 不便于编入正文的罕见的珍贵或需要特别保密的技术细节和详细方案(这种情况可单列成册); +\item 对一般读者并非必要阅读,但对专业同行有参考价值的资料; +\item 某些重要的原始数据、过长的数学推导、计算程序、框图、结构图、注释、统计表、计算机打印输出文件等。 +\end{enumerate} diff --git a/tex/chap_biography.tex b/tex/chap_biography.tex new file mode 100644 index 0000000..0c90495 --- /dev/null +++ b/tex/chap_biography.tex @@ -0,0 +1,11 @@ +% !TeX root = ../main.tex +% [作者简介] +\biography +硕士学位论文不必提供作者简介(在main.tex中不插入本文件即可)。 + +博士学位论文应该提供作者简介,主要包括:姓名、性别、出生年月、民族、出生地;简要学历、工作经历(职务);以及攻读学位期间获得的其它奖励(除攻读学位期间取得的研究成果之外)。 + +\newpage +\chapter{导师对学位论文的评语和答辩决议书} + +硕士学位论文不必提供导师对学位论文的评语和答辩决议书(在main.tex中不插入本文件即可)。 \ No newline at end of file diff --git a/tex/chap_instruction.tex b/tex/chap_instruction.tex new file mode 100644 index 0000000..e546452 --- /dev/null +++ b/tex/chap_instruction.tex @@ -0,0 +1,233 @@ +% !TeX root = ../main.tex +% 本LaTeX模板的一般使用说明 +\chapter{模板简介} + +这是北航论文\LaTeX{}模板(\CTeX{}-Based)\BUAAThesis{}。本\LaTeX{}模板为北航研究生学位论文模板,适用于硕博士研究生。本\LaTeX{}模板参考自《北京航空航天大学研究生学位论文撰写规范》,根据2025年9月修订版调整,具体要求请参见北航官网研究生院主页“学位工作政策性文件”《北京航空航天大学研究生学位论文撰写规范》及附件,最终成文格式需参考学院要求及打印方意见。 + + +%----------------------------- +\section{项目结构} + +本模板共包含以下文件,请对照解压后的压缩包检查文件是否有缺失。 + +-BUAAThesis + +\quad--def + +\quad \quad--GBT7714-2015.bst // 国标参考文献BibTeX样式文件 + +\quad \quad--GBT7714-2015-NoWarning.bst // 取消了对于关键信息缺失的告警 + +\quad \quad--buaa.cls // LaTeX宏模板文件 + +\quad \quad--simfang.ttf // 仿宋字 + +\quad \quad--simhei.ttf // 黑体字 + +\quad \quad--simkai.ttf // 楷体字 + +\quad \quad--simsun.ttc // 宋体字 + +\quad \quad--head-doctor.eps // 论文封皮学术博士学位论文标题 + +\quad \quad--head-prodoctor.eps // 论文封皮专业博士学位论文标题 + +\quad \quad--head-master.eps // 论文封皮学术硕士学位论文标题 + +\quad \quad--head-professional.eps // 论文封皮专业硕士学位论文标题 + +\quad \quad--logo-buaa.eps // 论文封皮北航字样 + +\quad--pic + +\quad \quad--logo-buaa.eps // 论文封皮北航字样 + +\quad \quad--question\_survey.jpg // 论文出现问题后可参与的问卷二维码 + +\quad--tex/*.tex // LaTeX模板使用说明中的独立章节 + +\quad--main.tex // LaTeX模板使用说明 + +\quad--ref.bib // LaTeX模板中的参考文献Bib文件 + +\quad-- 输出示例.pdf // main.tex的编译结果 + +\subsection{各文件的作用} + +./def子文件夹下的内容为学位论文模板格式控制文件,通常同学们无需修改该部分内容。 +./pic子文件夹存放的是插图文件,用户可以按章节在该文件夹中新建子文件夹,然后存放论文对应章节插图,这样可以方便管理论文插图。 +./tex子文件夹中的文件是输出示例各章节的TeX源码,建议同学们也按照分章节的形式建立并管理自己的论文TeX源码。 +./main.tex文件是示例TeX主文件源码,这个文件的作用是定义论文基本格式并组织./tex文件夹中的各章节内容和参考文献。 +./ref.bib是管理参考文献的Bib文件,包含一些编写模板说明时用到的参考文献。 +./README.md是本模板的项目简介,以及版本更新说明。 +如果是对\LaTeX 或者编写代码不熟悉的同学,建议直接在./main.tex、./ref.bib和./tex的基础上撰写自己的学位论文,这样可以降低上手难度,相关命令直接对照各文件已有的代码和编译结果学习其效果。 + +\section{环境配置} + +常见的\LaTeX 写作环境有两种,一种是使用Overleaf的在线环境,另一种是使用TeXLive的本地环境。两种写作环境各有优劣: +\begin{itemize} + \item 在线环境基本无需配置,本地环境需要较复杂的配置。 + \item 在线环境的免费账户有着严苛的编译时长限制,类似毕业论文这样的长篇文章基本不可能通过编译,需要开通订阅才能解锁编译时长限制。 +\end{itemize} + +\subsection{Overleaf 环境} + +将项目压缩包上传至Overleaf(https://cn.overleaf.com/) 后,修改编译选项为 `XeLaTeX` 即可开始写作。 + +\subsection{本地编译环境} + +编译环境请选择“TeXLive+TeXStudio”方案 + +\subsubsection{TeXLive安装} + +MacOS用户点击\href{https://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg}{\textcolor{blue}{MacTeX}}下载并安装“MacTeX”即可(这是一个包含了“TeXLive”环境的程序)。 +Windows 和 Linux 用户可参考以下步骤安装“TeXLive+TeXStudio”: +\begin{enumerate} + \item 前往\href{https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/}{\textcolor{blue}{TeXLive Images - 清华大学开源软件镜像站}}下载“texlive.iso”安装包 + \item 装载“texlive.iso”后,Windows 用户点击“install-tl-windows.exe”启动安装程序,Linux 用户请使用“sudo install-pl”启动安装 + \item 修改安装路径(建议安装在非系统盘),点击“安装”,等待安装过程结束 + \item 在终端输入“tex”,出现版本信息等即表示安装成功 + \item 安装TeXStudio编辑器,修改编译器为“XeLaTeX” + \item 在TeXStudio中打开“main.tex”即可开始写作 +\end{enumerate} + +具体的安装配置步骤可参考网上教程。 +注意在安装之后,可能需要将TeXLive添加到计算机的环境变量。 + +\section{宏包使用} + +本模板必须的文件包括: + +\begin{tabular}{ll} + \verb|def/buaa.cls | & $\triangleright$ LaTeX宏模板文件 \\ + \verb|def/GBT7714-2015.bst| & $\triangleright$ 国标参考文献BibTeX样式文件 \\ + \verb|def/GBT7714-2015-NoWarning.bst| & $\triangleright$ 不提示缺失信息的参考文献样式文件 \\ + \verb|def/simfang.ttf| & $\triangleright$ 仿宋\\ + \verb|def/simhei.ttf| & $\triangleright$ 黑体\\ + \verb|def/simkai.ttf| & $\triangleright$ 楷体\\ + \verb|def/simsun.ttc| & $\triangleright$ 宋体\\ + \verb|def/logo-buaa.eps| & $\triangleright$ 论文封皮北航字样 \\ + \verb|def/head-master.eps| & $\triangleright$ 论文封皮学术硕士学位论文标题\\ + \verb|def/head-professional.eps| & $\triangleright$ 论文封皮专业硕士学位论文标题\\ + \verb|def/head-doctor.eps| & $\triangleright$ 论文封皮学术博士学位论文标题\\ + \verb|def/head-prodoctor.eps| & $\triangleright$ 论文封皮专业博士学位论文标题\\ + \verb|tex/*.tex| & $\triangleright$ 本模板样例中的独立章节\\ +\end{tabular}\\ + +在./tex文件中,通过 \verb|\documentclass[| \verb|,| \verb|,| \verb|,| \verb|,| \verb|,| \verb|,| \verb|| \verb|]{buaa}|载入宏包: +\begin{itemize}[leftmargin=3cm] + \item[{\tt thesis} $\triangleright$] 论文类型(thesis),可选值:\\ + a) 学术硕士论文(\verb|master|)[缺省值]\\ + b) 专业硕士论文(\verb|professional|)\\ + c) 学术博士论文(\verb|doctor|)\\ + d) 专业博士论文(\verb|prodoctor|) + \item[{\tt permission} $\triangleright$] 密级(permission),可选值: \\ + a) 公开(\verb|public|)[缺省值]\\ + b) 内部(\verb|privacy|)\\ + c) 秘密(\verb|secret|=\verb|secret3|)\\ + --- c.1) 秘密3年(\verb|secret3|)\\ + --- c.2) 秘密5年(\verb|secret5|)\\ + --- c.3) 秘密10年(\verb|secret10|)\\ + --- c.4) 秘密永久(\verb|secret*|)\\ + d) 机密(\verb|classified|=\verb|classified5|)\\ + --- d.1) 机密3年(\verb|classified3|)\\ + --- d.2) 机密5年(\verb|classified5|)\\ + --- d.3) 机密10年(\verb|classified10|)\\ + --- d.4) 机密永久(\verb|classified*|)\\ + e) 绝密(\verb|topsecret|=\verb|topsecret10|)\\ + --- e.1) 绝密3年(\verb|topsecret3|)\\ + --- e.2) 绝密5年(\verb|topsecret5|)\\ + --- e.3) 绝密10年(\verb|topsecret10|)\\ + --- e.4) 绝密永久(\verb|topsecret*|) + \item[{\tt printtype} $\triangleright$] 打印设置(printtype),可选值: \\ + a) 图书馆版本,不从奇数页开始(\verb|library|)[缺省值]\\ + b) 打印版本,从奇数页开始,上一部分补足空白页(\verb|print|) + \item[{\tt ostype} $\triangleright$] 系统类型(ostype),可选值: \\ + a) Windows(\verb|win|)[缺省值]\\ + b) Linux(\verb|linux|)\\ + c) Mac(\verb|mac|) + \item[{\tt titlelength} $\triangleright$] 标题长短(titlelength),可选值: \\ + a) 短标题(通常二十字以下)(\verb|short|)[缺省值]\\ + b) 长标题(通常二十字及以上)(\verb|long|) + \item[{\tt subjecttype} $\triangleright$] 学科类型(subjecttype),该选项会影响章节条标题的编号形式,可选值: \\ + a) 理工类(\verb|STEM|)[缺省值]\\ + b) 社科及文学类(\verb|HSS|) + \item[{\tt ctexbookoptions} $\triangleright$] {\tt ctexbook}文档类支持的其他选项: \\ + 使用{\tt ctexbookoptions}选项传递{\tt ctexbook}文档类支持的其他选项。 + 例如,使用{\tt fontset=founder}选项启用方正字体以避免生僻字乱码的问题\footnote{需要系统安装方正字体。}。 +\end{itemize} + + +\setlength{\hangindent}{4em} +模板已内嵌LaTeX工具包:\\ +{\tt ifthen},{\tt etoolbox},{\tt titletoc},{\tt remreset}, +{\tt geometry},{\tt fancyhdr},{\tt setspace},{\tt float}, +{\tt graphicx},{\tt subfigure},{\tt epstopdf},{\tt array},{\tt enumitem}, +{\tt booktabs},{\tt longtable},{\tt multirow},{\tt caption}, +{\tt listings},{\tt algorithm2e},{\tt amsmath},{\tt amsthm}, +{\tt hyperref},{\tt pifont},{\tt color},{\tt soul};\\ +For Windows: {\tt times}, {\tt newtxmath};\\ +For Linux: {\tt newtxtext}, {\tt newtxmath};\\ +For Mac: {\tt times}, {\tt fontspec}。 + + +模板已内嵌宏:\verb|\highlight{text}|(黄色高亮)。 + +请统一使用UTF-8编码。 + + + +%----------------------------- +\section{选项设置} + +模板提供了以下功能可选项,同学们可在论文项目主文件(如./main.tex)中设置。 + +\begin{itemize}[leftmargin=3cm] + \item[{\tt $\backslash$refcolor} $\triangleright$] 开启/关闭引用编号颜色,包括参考文献,公式,图,表,算法等\\ + \texttt{on}:开启\\ + \texttt{off}:关闭 [默认] + \item[{\tt $\backslash$emptypageword} $\triangleright$] 空白页留字 + \item[{\tt $\backslash$Listfigtab} $\triangleright$] 是否使用图表清单目录\\ + \texttt{on}:开启 [默认]\\ + \texttt{off}:关闭 +\end{itemize} + +\section{章节撰写} +本模板支持以下标题级别,一般情况下不建议使用三级节和更小级别的标题: + +\begin{tabular}{ll} + \verb|\chapter{章}| & $\triangleright$ 理工类:第一章;社科及文学类:一、章 \\ + \verb|\chapter*{无章号章}| & $\triangleright$ 无章号章 \\ + \verb|\chaptera{无章号有目录章}| & $\triangleright$ 无章号有目录章 \\ + \verb|\section{节}| & $\triangleright$ 理工类:1.1 节;社科及文学类:(一)节\\ + \verb|\subsection{小节}| & $\triangleright$ 理工类:1.1.1 小节;社科及文学类:1、小节\\ + \verb|\subsubsection{三级节}| & $\triangleright$ 理工类:1.1.1.1 三级节;社科及文学类:(1)三级节\\ + \verb|\paragraph{段}| & $\triangleright$ 1.1.1.1.1 段\\ + \verb|\subparagraph{小段}| & $\triangleright$ 1.1.1.1.1.1 小段\\ + \verb|\summary| & $\triangleright$ 总结\\ + \verb|\appendix| & $\triangleright$ 附录\\ + \verb|\achievement| & $\triangleright$ 攻读学位期间取得的成果\\ + \verb|\acknowledgments| & $\triangleright$ 致谢\\ + \verb|\biography| & $\triangleright$ 作者简介\\ + \verb|\footnote{脚注}| & $\triangleright$ \ding{192} 脚注\\ +\end{tabular} +%----------------------------- +\section{注意事项} +\begin{itemize} + \item[$\triangleright$] \textit{中文斜体}将转换为楷体; + \item[$\triangleright$] \verb|\label{}|中不能使用中文; + \item[$\triangleright$] 浮动体与正文之间的距离是弹性的,需要根据内容调整; + \item[$\triangleright$] 命令符与汉字之间请注意加空格以避免undefined错误; + \item[$\triangleright$] 模板重定义了脚注命令\verb|\footnote{脚注内容}|,需要注意本模板仅支持单页插入最多10条脚注;\footnote{正文中某句话需要具体注释、且注释内容与正文内容关系不大时可以采用脚注方式。} +\end{itemize} +%----------------------------- +\section{意见及问题反馈} + +\indent 请作答该问卷:https://www.wjx.cn/vm/PpalYru.aspx\\ + +\begin{figure}[!h] + \centering + \includegraphics[width=.5\textwidth]{pic/question_survey.jpg} + \caption{问题反馈问卷二维码} + \label{fig:survey_ques} +\end{figure} \ No newline at end of file diff --git a/tex/chap_sample.tex b/tex/chap_sample.tex new file mode 100644 index 0000000..1fe71bc --- /dev/null +++ b/tex/chap_sample.tex @@ -0,0 +1,451 @@ +% !TeX root = ../main.tex +% 本LaTeX模板的使用示例 +\chapter{模板使用说明} + +本章给出了撰写论文时可能用到的\LaTeX 基本命令,同学们可以对照./main.tex源码和“输出示例.pdf”文件各部分的对应内容学习模板各命令的作用。 + +%============================== +\section{参考文献引用} + +\BUAAThesis{} 使用BibTeX处理参考文献,方便使用者管理参考文献条目。 +参考文献的具体内容以纯文本形式保存在根目录下的ref.bib文件中,每条参考文献信息都严格按照BibTeX格式写入文件。 +大部分文献数据库均支持将参考文献导出为BibTeX格式,使用者只需将导出的文献信息顺序写入ref.bib,并在文中按索引引用即可。 +参考文献引用按照参考国标7714和北航学位论文撰写规范执行,如果导出参考文献信息时缺失出版地等项目导致引用内容出现“[出版地不详]”等缺省提示,请使用本模板提供的“GBT7714-2015-NoWarning.bst”格式文件屏蔽提示信息。 +本模板提供了多种引用参考文献命令,通常在正文中使用\verb|\upcite{}|以上标形式引用文献。 + +%-------------------------------- +\subsection{数字标注} +\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\cite{knuth86a}| & \cite{knuth86a}\\ + \verb|\citet{knuth86a}| & \citet{knuth86a}\\ + \verb|\citet[chap.~2]{knuth86a}| & \citet[chap.~2]{knuth86a}\\[0.5ex] + \verb|\citep{knuth86a}| & \citep{knuth86a}\\ + \verb|\citep[chap.~2]{knuth86a}| & \citep[chap.~2]{knuth86a}\\ + \verb|\citep[see][]{knuth86a}| & \citep[see][]{knuth86a}\\ + \verb|\citep[see][chap.~2]{knuth86a}| & \citep[see][chap.~2]{knuth86a}\\[0.5ex] + \verb|\citet*{knuth86a}| & \citet*{knuth86a}\\ + \verb|\citep*{knuth86a}| & \citep*{knuth86a}\\ +\end{tabular} +\par\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\citet{knuth86a,tlc2}| & \citet{knuth86a,tlc2}\\ + \verb|\citep{knuth86a,tlc2}| & \citep{knuth86a,tlc2}\\ + \verb|\cite{knuth86a,knuth84}| & \cite{knuth86a,knuth84}\\ + \verb|\upcite{knuth86a,knuth84}| & \upcite{knuth86a,knuth84}\\ + \verb|\citet{knuth86a,knuth84}| & \citet{knuth86a,knuth84}\\ + \verb|\citep{knuth86a,knuth84}| & \citep{knuth86a,knuth84}\\ + \verb|\cite{knuth86a,knuth84,tlc2}| & \cite{knuth86a,knuth84,tlc2}\\ +\end{tabular} + +%-------------------------------- +\subsection{数字标注-上标形式} +\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\upcite{knuth86a}| & \upcite{knuth86a}\\ + \verb|\upcite{knuth86a,knuth84,tlc2}| & \upcite{knuth86a,knuth84,tlc2}\\ +\end{tabular} +\par\noindent + +%-------------------------------- +\subsection{著者-出版年制标} +正文中引用参考文献的标注方法可以采用“顺序编码制”,也可以采用“著者-出版年制”。 +撰写学位论文时仅选择一种,并全文保持统一。 +本模板默认的标注形式为顺序编码制,如果要切换成著者-出版年制,需采用命令\verb|\citestyle{authoryear}|切换。 +著者-出版年制标注形式如下: + +\citestyle{authoryear} +\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\cite{db}| & \cite{db}\\ + \verb|\citet{knuth86a}| & \citet{knuth86a}\\ + \verb|\citet[chap.~2]{knuth86a}| & \citet[chap.~2]{knuth86a}\\[0.5ex] + \verb|\citep{knuth86a}| & \citep{knuth86a}\\ + \verb|\citep[chap.~2]{knuth86a}| & \citep[chap.~2]{knuth86a}\\ + \verb|\citep[see][]{knuth86a}| & \citep[see][]{knuth86a}\\ + \verb|\citep[see][chap.~2]{knuth86a}| & \citep[see][chap.~2]{knuth86a}\\[0.5ex] + \verb|\citet*{knuth86a}| & \citet*{knuth86a}\\ + \verb|\citep*{knuth86a}| & \citep*{knuth86a}\\ +\end{tabular} +\par\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\citet{knuth86a,tlc2}| & \citet{knuth86a,tlc2}\\ + \verb|\citep{knuth86a,tlc2}| & \citep{knuth86a,tlc2}\\ + \verb|\cite{knuth86a,knuth84}| & \cite{knuth86a,knuth84}\\ + \verb|\citet{knuth86a,knuth84}| & \citet{knuth86a,knuth84}\\ + \verb|\citep{knuth86a,knuth84}| & \citep{knuth86a,knuth84}\\ +\end{tabular} +\citestyle{numbers} + +%-------------------------------- +\subsection{其他形式的标注} +\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\citealt{tlc2}| & \citealt{tlc2}\\ + \verb|\citealt*{tlc2}| & \citealt*{tlc2}\\ + \verb|\citealp{tlc2}| & \citealp{tlc2}\\ + \verb|\citealp*{tlc2}| & \citealp*{tlc2}\\ + \verb|\citealp{tlc2,knuth86a}| & \citealp{tlc2,knuth86a}\\ + \verb|\citealp[pg.~32]{tlc2}| & \citealp[pg.~32]{tlc2}\\ + \verb|\citenum{tlc2}| & \citenum{tlc2}\\ + \verb|\citetext{priv.\ comm.}| & \citetext{priv.\ comm.}\\ +\end{tabular} + +\noindent +\begin{tabular}{l@{\quad$\Rightarrow$\quad}l} + \verb|\citeauthor{tlc2}| & \citeauthor{tlc2}\\ + \verb|\citeauthor*{tlc2}| & \citeauthor*{tlc2}\\ + \verb|\citeyear{tlc2}| & \citeyear{tlc2}\\ + \verb|\citeyearpar{tlc2}| & \citeyearpar{tlc2}\\ +\end{tabular} + +\section{算法、表格和插图} + +根据北航学位论文撰写规范要求,本模板重写了部分图表浮动体环境,但使用方法与官方宏包一致,使用者可查看各宏包的官方文档获取详细使用说明。 +需要注意的是图表浮动体与正文之间的距离是弹性的,撰写论文时可以根据内容进行调整。 + +\subsection{算法环境} + +本模板使用 \texttt{algorithm2e} 宏包实现算法环境。下面是四种算法环境示例。 + +\begin{algorithm}[htp] + %\SetAlgoLined + %\SetAlgoVlined + \caption{A How to (plain).} + \KwData{this text} + \KwResult{how to write algorithm with \LaTeX2e{} } + + initialization\; + \While{not at end of this document}{ + read current\; + \eIf{understand}{ + go to next section\; + current section becomes this one\; + }{ + go back to the beginning of current section\; + } + } +\end{algorithm} + +\RestyleAlgo{ruled} +\begin{algorithm}[htp] + \caption{A How to (ruled).} + \KwData{this text} + \KwResult{how to write algorithm with \LaTeX2e{} } + + initialization\; + \While{not at end of this document}{ + read current\; + \eIf{understand}{ + go to next section\; + current section becomes this one\; + }{ + go back to the beginning of current section\; + } + } +\end{algorithm} + +\RestyleAlgo{boxed} +\begin{algorithm}[htp] + \caption{A How to (boxed).} + \KwData{this text} + \KwResult{how to write algorithm with \LaTeX2e{} } + + initialization\; + \While{not at end of this document}{ + read current\; + \eIf{understand}{ + go to next section\; + current section becomes this one\; + }{ + go back to the beginning of current section\; + } + } +\end{algorithm} + +\RestyleAlgo{boxruled} +\begin{algorithm}[htp] + \caption{A How to (boxruled).} + \KwData{this text} + \KwResult{how to write algorithm with \LaTeX2e{} } + + initialization\; + \While{not at end of this document}{ + read current\; + \eIf{understand}{ + go to next section\; + current section becomes this one\; + }{ + go back to the beginning of current section\; + } + } +\end{algorithm} +\vspace{5em} +\subsection{三线表} +学位论文中的表格推荐使用三线表形式,如表~\ref{tab:exampletable}。 + +\begin{table}[!h] + \centering + \caption{表的标题} + \label{tab:exampletable} + \begin{tabular}{>{\centering\arraybackslash}p{4cm}>{\centering\arraybackslash}p{4cm}} + \toprule + 操作系统 & TeX 发行版 \\ + \midrule + 所有 & TeX Live \\ + macOS & MacTeX \\ + Windows & MikTeX \\ + \bottomrule + \end{tabular} +\end{table} + +当表题较长时,本模板会自适应换行处理,如表~\ref{tab:example_long_table}。 + +\begin{table}[!h] + \centering + \caption{长表题示例\upcite{zhudaoqian}:考虑到实验中使用到的面内磁场的大小,以及得到的磁矩稳定翻转条件,在计算中使$\alpha$固定,其余参数则与实验中相同} + \label{tab:example_long_table} + \begin{tabular}{c c c c c c c} + \toprule + \multirow{2}{*}{\textbf{材料体系}} & \multicolumn{6}{c}{\textbf{参数}} \\ + & $t_F$ & $\mu_0H_{K,eff}$ & $M_s(A\cdot m^(-1))$ & $|\Theta_SH|$ & $\iota$ & $\mu_0H_x$ \\ \midrule + W/CoFeB & 1 nm & 0.29T & $9\times 10^5$ & 0.32 & 0.31 & 24mT \\ + Ta/CoFeB & 1.2 nm & 0.25T & $1\times 10^6$ & 0.03 & 2 & 20mT \\ \bottomrule + \end{tabular} +\end{table} + +\vspace{-1pt} +\subsection{长表格} + +超过一页的表格要使用专门的 \texttt{longtable} 环境(表~\ref{tab:longtable})。\\ + +\begin{longtable}[h]{ccc} + % 首页表头 + \caption[长表格演示]{长表格演示} + \label{tab:longtable}\\ + \toprule + 名称 & 说明 & 备注\\ + \midrule + \endfirsthead + % 续页表头 + \caption[]{长表格演示(续)} \\ + \toprule + 名称 & 说明 & 备注 \\ + \midrule + \endhead + % 首页表尾 + \hline + \multicolumn{3}{r}{\small 续下页} + \endfoot + % 续页表尾 + \bottomrule + \endlastfoot + + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ + AAAAAAAAAAAA & BBBBBBBBBBB & CCCCCCCCCCCCCC \\ +\end{longtable} + +\subsection{插图} + +本模板支持插入pdf、eps、jpg和png等格式的图片。 + +\begin{figure}[!h] + \centering + \includegraphics[width=.5\textwidth]{pic/logo-buaa} + \caption{测试图片\\第二行题注} + \label{fig:logo} +\end{figure} + +模板使用了subcaption子图宏包,使用者也可自行替换惯用的宏包,一个简单的子图环境如图所示。 + +\begin{figure}[!h] + \centering + \subcaptionbox{子图1}{\includegraphics[width = 0.45\linewidth]{pic/logo-buaa.eps}\vspace{50pt}} + \hfill + \subcaptionbox{子图2}{\includegraphics[width = 0.3\linewidth]{pic/buaa-mark.jpg}} + \caption{测试图片} +\end{figure} + +\section{数学环境} + +\subsection{数学符号} + +模板定义了一些正体(upright)的数学符号: +\begin{center} + \begin{tabular}{>{\centering\arraybackslash}p{4cm}>{\centering \arraybackslash}p{4cm}} + \toprule + 符号 & 命令 \\ + \midrule + 常数$\eu$ & \verb|\eu| \\ + 复数单位$\iu$ & \verb|\iu| \\ + 微分符号$\diff$ & \verb|\diff| \\ + $\argmax$ & \verb|\argmax| \\ + $\argmin$ & \verb|\argmin| \\ + \bottomrule + \end{tabular} +\end{center} + +更多的例子: +\begin{equation} +\eu^{\iu\pi} + 1 = 0 +\end{equation} +\begin{equation} +\frac{\diff^2u}{\diff t^2} = \int f(x) \diff x +\end{equation} +\begin{equation} +\argmin_x f(x) +\end{equation} + +\subsection{定理、引理和证明} +模板中使用amsmath和amsthm宏包配置了定理、引理和证明等环境。举例如下。 +\begin{definition} + 如果函数$f$的积分是可测的且非负的,我们通过以下方式定义其(扩展)\textbf{Lebesgue积分}: + \begin{equation} + \int f = \sup_g \int g, + \end{equation} + 其中,上确界是在所有满足 $0 \leq g \leq f$ 的可测函数 $g$ 上取得的,且 $g$ 是有界的,并且其支撑集具有有限测度。 +\end{definition} + +\begin{example} + $\mathbf{R}^d$ 上的可积(或不可积)函数的简单示例如下: + \begin{equation} + f_a(x) = + \begin{cases} + |x|^{-a} & \text{if } |x| \leq 1,\\ + 0 & \text{if } x > 1. + \end{cases} + \end{equation} + \begin{equation} + F_a(x) = \frac{1}{1 + |x|^a}, \qquad \text{对所有~} x \in \mathbf{R}^d. + \end{equation} + 那么 $f_a$ 在 $a < d$ 时恰好是可积的,而 $F_a$ 在 $a > d$ 时恰好是可积的。 +\end{example} + +\begin{lemma}[Fatou] + 假设 $\{f_n\}$ 是一列满足 $f_n \geq 0$ 的可测函数。如果对几乎处处的 $x$ 都有 $\lim_{n \to \infty} f_n(x) = f(x)$,那么 + \begin{equation} + \int f \leq \liminf_{n \to \infty} \int f_n. + \end{equation} +\end{lemma} + +\begin{remark} + 我们不排除 $\int f = \infty$ 或 $\liminf_{n \to \infty} f_n = \infty$ 的情况。 +\end{remark} + +\begin{corollary} + 假设 $f$ 是一个非负可测函数,$\{f_n\}$ 是一列非负可测函数,满足对几乎处处的 $x$ 有 $f_n(x) \leq f(x)$ 且 $f_n(x) \to f(x)$。那么 + \begin{equation} + \lim_{n \to \infty} \int f_n = \int f. + \end{equation} +\end{corollary} + +\begin{proposition} + 假设 $f$ 在 $\mathbf{R}^d$ 上可积。那么对于每一个 $\epsilon > 0$: + \begin{enumerate} + \renewcommand{\theenumi}{\roman{enumi}} + \item 存在一个有限测度的集合 $B$(例如一个球),使得 + \begin{equation} + \int_{B^c} |f| < \epsilon. + \end{equation} + \item 存在一个 $\delta > 0$,使得 + \begin{equation} + \int_E |f| < \epsilon \qquad \text{每当~} m(E) < \delta. + \end{equation} + \end{enumerate} +\end{proposition} + +\begin{theorem} + 假设 $\{f_n\}$ 是一列可测函数,满足当 $n$ 趋向无穷时,$f_n(x)$ 几乎处处收敛于 $f(x)$。如果 $|f_n(x)| \leq g(x)$,其中 $g$ 是可积函数,那么 + \begin{equation} + \int |f_n - f| \to 0 \qquad \text{当~} n \to \infty, + \end{equation} + 因此 + \begin{equation} + \int f_n \to \int f \qquad \text{当~} n \to \infty. + \end{equation} +\end{theorem} + +\begin{proof} + 略。 +\end{proof} + +\subsection{自定义} + +\newtheorem*{axiomofchoice}{选择公理} +\begin{axiomofchoice} + 假设 $E$ 是一个集合,${E_\alpha}$ 是 $E$ 的一组非空子集。那么存在一个函数 $\alpha \mapsto x_\alpha$(一个“选择函数”),使得 + \begin{equation} + x_\alpha \in E_\alpha,\qquad \text{对所有 }\alpha. + \end{equation} +\end{axiomofchoice} + +\newtheorem{observation}{定理}[chapter] +\begin{observation} + 假设一个偏序集 $P$ 具有这样的性质,即每个链在 $P$ 中都有一个上界。那么集合 $P$ 至少包含一个最大元素。 +\end{observation} +\begin{proof}[证明] + 略。 +\end{proof} + +\newtheorem{observationvar2}[observation]{定理2} +\begin{observationvar2} + 假设一个偏序集 $P$ 满足每个链在 $P$ 中都有一个上界。那么集合 $P$ 至少包含一个最大元素。 +\end{observationvar2} +\begin{proof}[证明] + 略。 +\end{proof} + +\clearpage + diff --git a/tex/chap_summary.tex b/tex/chap_summary.tex new file mode 100644 index 0000000..e115395 --- /dev/null +++ b/tex/chap_summary.tex @@ -0,0 +1,5 @@ +% !TeX root = ../main.tex +% 总结 +\summary +学位论文的结论单独作为一章,但不加章号。如果不可能导出应有的结论,也可以没有结论而进行必要的讨论。 +