├── .gitattributes ├── .gitignore ├── .gitmodules ├── .latexmkrc ├── Chapters ├── 0_0_Abstract.tex ├── 0_1_Abbreviations.tex ├── 0_2_Symbols.tex ├── 1_Introduction.tex ├── 2_Structure.tex ├── 3_Writing.tex ├── 4_Printing.tex ├── 5_Conclusion.tex ├── Achievements.tex ├── CopyrightAuthorization.tex ├── Statement.tex └── Thanks.tex ├── Figures ├── demo.png └── levels.png ├── License ├── fdl-1.3.txt └── gpl-3.0.txt ├── MainBody.pdf ├── MainBody.tex ├── Makefile ├── README.md ├── Reference Document └── 1-3 《研究生学位论文规范写作指南》.pdf ├── ReferenceBase.bib ├── _config.yml ├── assets ├── cover.png └── icon.png ├── compile.bat ├── gbt7714-author-year.bst ├── gbt7714-numerical.bst └── gbt7714.sty /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | 14 | ## Intermediate documents: 15 | *.dvi 16 | *-converted-to.* 17 | # these rules might exclude image files for figures etc. 18 | # *.ps 19 | # *.eps 20 | # *.pdf 21 | 22 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 23 | *.bbl 24 | *.bcf 25 | *.blg 26 | *-blx.aux 27 | *-blx.bib 28 | *.brf 29 | *.run.xml 30 | 31 | ## Build tool auxiliary files: 32 | *.fdb_latexmk 33 | *.synctex 34 | *.synctex.gz 35 | *.synctex.gz(busy) 36 | *.pdfsync 37 | 38 | ## Auxiliary and intermediate files from other packages: 39 | # algorithms 40 | *.alg 41 | *.loa 42 | 43 | # achemso 44 | acs-*.bib 45 | 46 | # amsthm 47 | *.thm 48 | 49 | # beamer 50 | *.nav 51 | *.snm 52 | *.vrb 53 | 54 | # cprotect 55 | *.cpt 56 | 57 | # fixme 58 | *.lox 59 | 60 | #(r)(e)ledmac/(r)(e)ledpar 61 | *.end 62 | *.?end 63 | *.[1-9] 64 | *.[1-9][0-9] 65 | *.[1-9][0-9][0-9] 66 | *.[1-9]R 67 | *.[1-9][0-9]R 68 | *.[1-9][0-9][0-9]R 69 | *.eledsec[1-9] 70 | *.eledsec[1-9]R 71 | *.eledsec[1-9][0-9] 72 | *.eledsec[1-9][0-9]R 73 | *.eledsec[1-9][0-9][0-9] 74 | *.eledsec[1-9][0-9][0-9]R 75 | 76 | # glossaries 77 | *.acn 78 | *.acr 79 | *.glg 80 | *.glo 81 | *.gls 82 | *.glsdefs 83 | 84 | # gnuplottex 85 | *-gnuplottex-* 86 | 87 | # hyperref 88 | *.brf 89 | 90 | # knitr 91 | *-concordance.tex 92 | # TODO Comment the next line if you want to keep your tikz graphics files 93 | *.tikz 94 | *-tikzDictionary 95 | 96 | # listings 97 | *.lol 98 | 99 | # makeidx 100 | *.idx 101 | *.ilg 102 | *.ind 103 | *.ist 104 | 105 | # minitoc 106 | *.maf 107 | *.mlf 108 | *.mlt 109 | *.mtc 110 | *.mtc[0-9] 111 | *.mtc[1-9][0-9] 112 | 113 | # minted 114 | _minted* 115 | *.pyg 116 | 117 | # morewrites 118 | *.mw 119 | 120 | # mylatexformat 121 | *.fmt 122 | 123 | # nomencl 124 | *.nlo 125 | 126 | # sagetex 127 | *.sagetex.sage 128 | *.sagetex.py 129 | *.sagetex.scmd 130 | 131 | # sympy 132 | *.sout 133 | *.sympy 134 | sympy-plots-for-*.tex/ 135 | 136 | # pdfcomment 137 | *.upa 138 | *.upb 139 | 140 | # pythontex 141 | *.pytxcode 142 | pythontex-files-*/ 143 | 144 | # TikZ & PGF 145 | *.dpth 146 | *.md5 147 | *.auxlock 148 | 149 | # todonotes 150 | *.tdo 151 | 152 | # xindy 153 | *.xdy 154 | 155 | # xypic precompiled matrices 156 | *.xyc 157 | 158 | # endfloat 159 | *.ttt 160 | *.fff 161 | 162 | # Latexian 163 | TSWLatexianTemp* 164 | 165 | ## Editors: 166 | # WinEdt 167 | *.bak 168 | *.sav 169 | 170 | # Texpad 171 | .texpadtmp 172 | 173 | # Kile 174 | *.backup 175 | 176 | # KBibTeX 177 | *~[0-9]* 178 | 179 | # ========================= 180 | # Operating System Files 181 | # ========================= 182 | 183 | # OSX 184 | # ========================= 185 | 186 | .DS_Store 187 | .AppleDouble 188 | .LSOverride 189 | 190 | # Thumbnails 191 | ._* 192 | 193 | # Files that might appear in the root of a volume 194 | .DocumentRevisions-V100 195 | .fseventsd 196 | .Spotlight-V100 197 | .TemporaryItems 198 | .Trashes 199 | .VolumeIcon.icns 200 | 201 | # Directories potentially created on remote AFP share 202 | .AppleDB 203 | .AppleDesktop 204 | Network Trash Folder 205 | Temporary Items 206 | .apdisk 207 | 208 | # Windows 209 | # ========================= 210 | 211 | # Windows image file caches 212 | Thumbs.db 213 | ehthumbs.db 214 | 215 | # Folder config file 216 | Desktop.ini 217 | 218 | # Recycle Bin used on file shares 219 | $RECYCLE.BIN/ 220 | 221 | # Windows Installer files 222 | *.cab 223 | *.msi 224 | *.msm 225 | *.msp 226 | 227 | # Windows shortcuts 228 | *.lnk 229 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Template"] 2 | path = Template 3 | url = https://github.com/kevinleeex/scu_thesis_template.git 4 | -------------------------------------------------------------------------------- /.latexmkrc: -------------------------------------------------------------------------------- 1 | # Latexmk configuration file. 2 | 3 | # Set environment variables. 4 | 5 | # Set timezone. 6 | $ENV{'TZ'}='Asia/Shanghai'; 7 | 8 | # Ensure './texmf//' is in '$TEXINPUTS'. 9 | ensure_path( 'TEXINPUTS', './texmf//' ); 10 | 11 | # Use xelatex with latexmk. 12 | $pdf_mode = 5; 13 | # postscriptmode=dvi_mode = 0; 14 | 15 | # Always try to embed fonts, ignoring licensing flags, etc. 16 | $xdvipdfmx = 'xdvipdfmx -E -o %D %O %S'; 17 | 18 | # Files to clean. 19 | $clean_ext = 'bbl glo gls hd loa run.xml thm xdv'; -------------------------------------------------------------------------------- /Chapters/0_0_Abstract.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 中英文摘要 4 | \begin{CHSabstract} 5 | 学位论文是研究生科研工作成果的集中体现,是评判学位申请者学术水平、授予其学位的主要依据,是科研领域重要的文献资料。 6 | 7 | 博士学位论文表明作者在本门学科上掌握了坚实宽广的基础理论和系统深入的专门知识,在科学和专门技术上做出了创造性的成果,并具有独立从事创新科学研究工作或独立承担专门技术开发工作的能力。 8 | 9 | 硕士学位论文表明作者在本门学科上掌握了坚实的基础理论和系统的专业知识,对所研究课题有新的见解,并具有从事科学研究工作或独立承担专门技术工作的能力。 10 | 11 | 硕士专业学位论文表明作者在本专业领域掌握了重要的基础理论和系统的专门知识,对相关专业领域问题有新的见解,并具有解决实际问题的能力。 12 | 13 | 为提高研究生学位论文的撰写质量,促进学位论文在内容和格式上的规范化,根据《学位论文编写规则》(GB/T 7713.1-2006)和《信息与文献 参考文献著录规则》(GB/T 7714-¬2015)等国家有关标准,学院研究生办公室整理并撰写此文,作为指导性规范,供申请学位的研究生参考,以利于学位论文的撰写、收藏、存储、加工、检索和利用。 14 | 15 | 写作指南主要包括以下内容,分别为内容规范要求,格式规范要求,书写规范要求以及排版印制要求,同时提供了必要的相关附录材料。 16 | 17 | 本《写作指南与参考模板》将在使用过程中不断完善,如有问题和建议请及时向我们反馈,以便于改进。 谢谢! 18 | 19 | \end{CHSabstract} 20 | 21 | \begin{ENGabstract} 22 | \lipsum 23 | \end{ENGabstract} 24 | 25 | -------------------------------------------------------------------------------- /Chapters/0_1_Abbreviations.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 常用缩略词表 4 | \chapter{常用缩略词表} 5 | \begin{appendix*} 6 | \begin{tabular}{p{7em}p{25em}} 7 | Abbr. 1 & Abbreviation 1 \\ 8 | Abbr. 2 & Abbreviation 2 \\ 9 | Abbr. 3 & Abbreviation 3 \\ 10 | \end{tabular} 11 | \end{appendix*} -------------------------------------------------------------------------------- /Chapters/0_2_Symbols.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 常用符号表 4 | \chapter{常用符号表} 5 | \begin{appendix*} 6 | \begin{tabular}{p{7em}p{20em}} 7 | $Symbol_{1}$ & 符号$1$ \\ 8 | $Symbol_{2}$ & 符号$2$ \\ 9 | $Symbol_{3}$ & 符号$3$ \\ 10 | \end{tabular} 11 | \end{appendix*} -------------------------------------------------------------------------------- /Chapters/1_Introduction.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 第一章 4 | \chapter{绪论}% 使用\cite{}命令引用数据库中文献 5 | 引言(或绪论)应包括选题的背景和意义,国内外相关研究成果与进展述评,本论文所要解决的科学与技术问题、所运用的主要理论和方法、基本思路和论文结构等。引言应独立成章,用足够的文字叙述,不与摘要雷同。要求实事求是,不夸大、缩小前人的工作和自己的工作。 6 | \section{选题背景及意义} 7 | 要论述清楚为什么选择这个题目来研究,即阐述该研究对学科发展的贡献、对国计民生的理论与现实意义等。四川大学标志如\cref{fig:test1}所示。 8 | %插入图片示例 9 | \begin{figure}[!htb] 10 | \centering 11 | \begin{subfigure}[b]{0.6\textwidth} 12 | \includegraphics[width=\textwidth]{./Template/Components/Images/SCU_TITLE} 13 | \bicaption{红色标志}{Red logo} 14 | \label{fig:sub_a} 15 | \end{subfigure}% 16 | \vspace{0.5cm} 17 | \begin{subfigure}[b]{0.6\textwidth} 18 | \includegraphics[width=\textwidth]{./Template/Components/Images/SCU_TITLE_BW} 19 | \bicaption{黑色标志}{Black logo} 20 | \label{fig:sub_b} 21 | \end{subfigure}% 22 | \bicaption{四川大学标志}{Logo of Sichuan University} 23 | \label{fig:test1} 24 | \end{figure} 25 | 26 | % 另一种写法 27 | \begin{figure}[!htb] 28 | % \ContinuedFloat % 用于子图连续编号,以实现子图跨页 29 | \centering 30 | \bisubcaptionbox 31 | {黑色标志\label{fig:test:A}} 32 | {Black logo}{\includegraphics[width=4cm]{./Template/Components/Images/SCU_TITLE_BW}}% 33 | \qquad 34 | \bisubcaptionbox 35 | {红色标志\label{fig:test:B}} 36 | {Red logo}{ \includegraphics[width=4cm]{./Template/Components/Images/SCU_TITLE}}% 37 | \bicaption{四川大学标志}{Logo of Sichuan University} 38 | \label{fig:test2} 39 | \end{figure} 40 | 41 | \section{文献综述} 42 | 要对本研究主题范围内的文献进行详尽的综合述评,“述”的同时一定要有“评”,指出现有研究状态,仍存在哪些尚待解决的问题,讲出自己的研究有哪些探索性内容。曹敏\cite{曹敏GB,陈浩元2015gb}对修订后的GB/T 7714—2015《信息与文献参考文献著录规则》与上一版本GB/T 7714—2005《文后参考文献著录规则》的差异进行了分析,帮助读者尽快了解参考文献标准最新修订的内容。 43 | \section{研究目的与实施方案} 44 | 讲述本论文运用的主要理论与研究方法、基本思路及论文的结构安排等。 45 | 46 | -------------------------------------------------------------------------------- /Chapters/2_Structure.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | \chapter{结构内容} 4 | \section{文字要求} 5 | 研究生学位论文(thesis or dissertation)应以汉语撰写(外国语言文学专业学位论文可以要求用其它文字撰写)。 6 | 7 | 来华留学生(全英文项目)可以用英文撰写学位论文,但须有详细中文摘要(不少于6000字),英文摘要300-800英文实词。 8 | \section{结构组成} 9 | 学位论文一般由以下几部分内容构成,依次为: 10 | \begin{itemize} 11 | \item 中文封面 12 | \item 英文封面内页 13 | \item 声明 14 | \item 中英文摘要(关键词) 15 | \item 目录 16 | \item 插图和附表清单(如有) 17 | \item 符号、标志、缩略语等的注释表(如有) 18 | \item 引言(绪论) 19 | \item 正文 20 | \item 参考文献 21 | \item 附录(如有) 22 | \item 攻读学位期间取得的研究成果 23 | \item 致谢 24 | \end{itemize} 25 | \section{内容要求} 26 | 学位论文每部分应另页右页开始,各部分内容的要求如下: 27 | \subsection{封面} 28 | 封面(cover)是学位论文的外表面,对论文起装潢和保护作用,并提供相关的信息。封面分为正式存档和匿名评审两种版式(参见前页),不同学位类别的论文封面分别使用学院指定的不同封面。 29 | 30 | 封面包含内容如下: 31 | 32 | \textbf{单位代码:}10610 33 | 34 | \textbf{学号(送审编号):}填写研究生学号。 35 | 36 | \textbf{密级:}涉密论文必须在论文封面标注密级,同时注明保密年限。公开论文不标注密级,可删除。 37 | 38 | \textbf{题目:}论文题目应以简明词语恰当、准确地反映出论文最重要的特定内容,通常由名词性短语构成,应尽量避免使用不常用缩略词、首字母缩写字、字符、代号和公式等。 39 | 40 | 如论文题目内容层次很多,难以简化时,可采用论文题目和论文副标题相结合的方法,主标题和副标题之间用破折号间隔。副标题起补充、阐明题目的作用。 41 | 42 | 示例1:斑马鱼和人的造血相关基因以及表观遗传学调控基因——进化、表达谱和功能研究 43 | 44 | 示例2:阿片镇痛的调控机制研究:Delta 型阿片肽受体转运的调控机理及功能 45 | 46 | \textbf{培养单位:}指学位申请人学籍所在学院(所)名称,应规范填写全称。 47 | 48 | \textbf{学科专业:}学科名称以国务院学位委员会颁布的《授予博士、硕士学位和培养研究生的学科、专业目录》为准,学术学位研究生的学位类别填写为:理(工、农)学博士或理(工、农)学硕士,学科专业填写为:一级学科-二级学科,如:生物学-动物学,生态学-动物生态学。专业学位研究生的学位类别填写为:林业硕士或工程硕士,领域名称填写:生物医学工程或生物工程,林业硕士未分设领域,填写:无。 49 | 50 | \textbf{指导教师:}应填写经培养单位批准备案的的导师姓名,并加上专业技术职称(联合培养专项计划博士研究生填写双导师信息)。 51 | 52 | \textbf{论文答辩时间/学位授予时间(论文完成时间):}填写举行毕业答辩和申请学位授予的时间,完成论文时间填写提交论文送审的时间。 53 | 54 | \subsection{声明} 55 | 本部分放在学位论文原创性声明之后另起页,提交时须论文作者以及指导教师亲笔签名并填写日期。若申请学位时须对论文版本进行修改替换,须重新签名并填写日期。 56 | \subsection{摘要(关键词)} 57 | 论文摘要包括中文摘要和英文摘要(Abstract)两部分。摘要是论文内容的简要陈述,是一篇具有独立性和完整性的短文,应概括地反映出本论文的主要内容,说明本论文的主要研究目的、内容、方法、成果和结论。要突出本论文的创造性成果或新见解,不宜使用公式、图表、表格或其他插图材料,不标注引用文献。中文摘要力求语言精炼准确,博士论文一般约为1000字(word统计),硕士论文一般约为600字(word统计)。英文摘要与中文摘要内容应完全一致。 58 | 59 | 摘要正文内容一般包括:从事这项研究工作的目的和意义;作者独立进行的研究工作的概括性叙述;研究获得的主要结论或提出的主要观点。硕士学位论文摘要应突出论文的新见解,博士学位论文摘要应突出论文的创新点。 60 | 61 | 关键词在摘要正文内容后另起一行标明,一般3~5个,之间用分号分开, 最后一个关键词后不打标点符号。关键词是为了文献索引和检索工作,从论文中选取出来,用以表示全文主题内容信息的单词或术语,应体现论文特色,具有语义性,在论文中有明确出处。应尽量采用《汉语主题词表》或各专业主题词表提供的规范词。 62 | 摘要页应单独编页。 63 | 64 | \subsection{目录} 65 | 学位论文应有目录(目次) (table of contents)页,排在摘要之后,另起页。目录是论文各章节标题的顺序列表,附有相应的起始页码。目录应包括中英文摘要和论文正文中的全部内容的标题,以及参考文献、附录和致谢等。目录中的正文章节题名只编写到第三级标题,即×.×.×(如1.1.1)。一级标题顶格书写,二级标题缩进一个汉字符位置,三级标题缩进两个汉字符位置。 66 | 67 | 目录页应单独编页。 68 | 69 | \subsection{图和附表清单(如有)} 70 | 论文中如有图表,应有图表目录,置于目录页之后,另页编排。图表目录应有序号、图题或表题和页码。 71 | \subsection{符号、标志、缩略语等的注释表(如有)} 72 | 如果论文中使用了大量的物理量符号、标志、缩略词、专门计量单位、自定义名词和术语等,应编写成注释说明汇集表。若上述符号等使用数量不多,可以不设此部分,但必须在论文中首次出现时加以说明。 73 | \subsection{正文} 74 | 正文一般包括引言(或绪论)、论文主体以及结论等部分,正文是学位论文的主体部分,应从另页右页开始,每一章应另起页。博士学位论文总字数不应少于6万字,正文部分不应少于5万字(word统计),硕士学位论文总字数不应少于3万字,正文部分不应少于2万字(word统计)。正文部分的篇幅(包括绪论、结论、图、表和公式),按照规范排版,硕士学位论文一般为40~60页,博士学位论文一般为80~120页。 75 | \subsubsection{引言(或绪言)} 76 | 引言作为第一章,应包括:本研究的学术背景及理论与实际意义;国内外文献综述;本研究的来源以及研究目的、实施方案和主要研究内容与方法等。 77 | \subsubsection{论文主体} 78 | 论文主体是正文的核心部分,占主要篇幅,它是将学习、研究和调查过程中筛选、观察和测试所获得的材料,经过加工整理和分析研究,进而形成论点。由于不同学科专业及具体选题的差异,此部分不作统一规定,可以按照章节体表述,也可以按照“前言-实验材料与方法-结果与讨论”的表述形式组织论文。但总体内容必须实事求是,客观真切,准确完备,合乎逻辑,层次分明,简练可读。 79 | 主体部分写作时,可参考以下结构(适用于几部分相对独立又有联系的研究内容):第1章 引言、第2章 ××××(第一部分研究内容)、第3章 ××××(第二部分研究内容)、第4章 ××××(第三部分研究内容)、第5章 结论与展望。每部分研究内容包括:材料与方法、结果以及讨论。 80 | 81 | \subsubsection{结论与展望} 82 | 结论是对整个论文主要成果的总结,不是正文中各章小结的简单重复,应准确、完整、明确、精炼。应明确指出本研究的创新点,对论文的学术价值和应用价值等加以预测和评价,说明本项研究的局限性或研究中尚难解决的问题,并提出今后进一步在本研究方向进行研究工作的设想或建议。 83 | 84 | 结论部分应严格区分本人研究成果与他人科研成果的界限。 85 | 86 | \subsection{参考文献} 87 | 本着严谨求实的科学态度撰写论文,凡学位论文中有引用或参考、借用他人成果之处,均应按不同学科论文的引用规范,列于文末(通篇正文之后),严禁抄袭剽窃。 88 | 89 | 参考文献列示的内容务必实事求是。论文中引用过的文献必须著录,未引用的文献不得虚列。遵循学术道德规范,杜绝抄袭、剽窃等学术不端行为。 90 | 91 | 参考文献应有权威性,并注意所引文献的时效性。 92 | 93 | 参考文献的数量:硕士学位论文,不少于60篇,其中,国外文献不少于30篇,应以近5年的文献为主;博士学位论文,不少于100篇,其中,国外文献不少于50篇,应以近5年的文献为主。 94 | 95 | \subsection{附录(如有)} 96 | 主要列入正文内过分冗长的公式推导,供查读方便所需的辅助性数学工具或表格,重复性数据图表,论文使用的缩写,程序全文及说明等。 97 | \subsection{致谢} 98 | 致谢中主要感谢导师和对论文工作有直接贡献和帮助的人和单位。对象一般为:指导或协助指导完成论文的导师;资助基金、合同单位、其他提供资助或支持的企业、组织或个人;协助完成研究工作和提供便利条件的组织或个人;在研究工作中提出建议和提供帮助的人;给予转载和引用权的资料、图片和文献等,研究思路和设想的所有者。 99 | 致谢用语应谦虚诚恳,实事求是。字数不超过1000字(word统计)。 100 | 101 | \subsection{攻读学位期间取得的研究成果} 102 | 按研究成果发表的时间顺序,列出作者本人在攻读学位期间已发表或已正式录用待发表的成果清单(著录格式同参考文献)。成果形式可为学术论文、申请的专利、获得的奖项及完成的项目等。 -------------------------------------------------------------------------------- /Chapters/3_Writing.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | \chapter{书写规范} 4 | \section{文字、标点符号和数字} 5 | 汉字的使用应严格执行国家的有关规定,除特殊需要外,不得使用已废除的繁体字、异体字等不规范汉字。标点符号的用法应该以GB/T 15834—1995《标点符号用法》为准。数字用法应该以GB/T 15835—1995《出版物上数字用法的规定》为准。 6 | \section{章节及各章标题} 7 | 论文正文须由另页右页开始。分章节撰写时每章也为另页右页开始,论文排版时注 意让每一章节的最后一页尽量不出现空白页面。各章标题中尽量不采用英文缩写词,尽 量不使用标点符号。 8 | \section{序号} 9 | \subsection{标题序号} 10 | 论文标题分层设序。层次以少为宜,根据实际需要选择。各层次标题一律用阿拉伯数字连续编号;不同层次的数字之间用小圆点“.”相隔,末位数字后面不加点号,如“1.1”,“1.1.1”等;章的标题居中排版,各层次的序号均左起顶格排,后空一个字距接排标题。例如: 11 | \begin{figure}[!hbp] 12 | \includegraphics[width=13cm]{./Figures/levels} 13 | \centering 14 | \bicaption{图标题}{Title} 15 | \label{fig:levels} 16 | \end{figure} 17 | \subsection{图表等编号} 18 | 论文中的图、表、附注、公式、算式等,一律用阿拉伯数字分章依序连续编码。其 标注形式应便于互相区别,如:图 l.1(第 1 章第一个图)、图 2.2(第 2 章第二个图);3.2(第 3 章第二个表)等。 19 | \subsection{页码} 20 | 页码从引言(或绪论)开始按阿拉伯数字(1,2,3……)连续编排,页码位于页 面下方居中、右页右下角;此前的部分(中、英文摘要、目录等)用大写罗马数字(I, II, III…)单独编排, 页码位于页面下方居中。 21 | \subsection{页眉} 22 | \section{名词和术语} 23 | \section{量和单位} 24 | \section{图和表} 25 | \subsection{图} 26 | 插图须紧跟文述。在正文中,一般应先见图号及图的内容后再见图,一般情况下不能提前见图,特殊情况须延后的插图不应跨节;提供照片应大小适宜,主题明确,层次清楚,金相照片一定要有比例尺;图应具有“自明性”,即只看图、图题和图例,不阅读正文,就可理解图意。引用的图必须注明来源。 27 | 28 | 图的大小一般为宽6.67 cm×高5.00cm。特殊情况下,也可宽9.00 cm×高6.75cm,或宽13.5 cm×高9.00cm。同类图片的大小应尽量一致,编排美观、整齐。如\cref{fig:demo} 29 | \begin{figure}[H] 30 | \includegraphics[width=9cm]{./Figures/demo} 31 | \centering 32 | \bicaption{图标题}{Title} 33 | \label{fig:demo} 34 | \end{figure} 35 | 一幅图如有若干幅分图,均应编分图号,用(a),(b),(c),...... 按顺序编排,且各分图的分题注直接列在各自分图的正下方,总题注列在所有分图的下方正中。 36 | \subsection{表} 37 | 表的编排一般是内容和测试项目由左至右横读,数据依序竖排,应有自明性,引用的表必须注明来源。具体要求如下: 38 | 39 | 每一表应有简短确切的题名,连同表序号置于表上居中。必要时,应将表中的符号、标记、代码及需说明的事项,以最简练的文字横排于表下作为表注。论文表的题名需用中文及英文两种文字表达,表注可用中英文两种文字表达或只用中文表达。 40 | 41 | 表内同一栏数字必须上下对齐。表内不应用“同上”、“同左”等类似词及“″”符号,一律填入具体数字或文字,表内“空白”代表未测或无此项,“—”或“…”(因“—”可能与代表阴性反应相混)代表未发现,“0”该表实测结果为零。 42 | 43 | 表格尽量用“三线表”,避免出现竖线,避免使用过大的表格,确有必要时可采用卧排表,正确方位应为“顶左底右”,即表顶朝左,表底朝右。表格太大需要转页时,需要在续表表头上方注明“续表”,表头也应重复排出。 44 | 表中用字为五号字体。如排列过密,用五号字有困难时,可小于五号字,但不小于七号。表格必须通栏,即表格宽度与正文版面平齐。 45 | 示例: 46 | \begin{table}[htp] 47 | \bicaption{表标题}{Title} 48 | \centering 49 | % 调整表格,修改数字即可 50 | % \resizebox{\textwidth}{12mm}{ % 表格过宽 51 | \setlength{\tabcolsep}{1cm}{ %表格过窄 52 | \zihao{5} 53 | \begin{tabular}{cccc} 54 | \toprule 55 | 文献类型 & 标志代码 & 文献类型 & 标志代码 \\ 56 | \midrule 57 | 普通图书 & M & 会议录 & C \\ 58 | 汇编 & G & 报纸 & N \\ 59 | 期刊 & J & 学位论文 & D \\ 60 | 报告 & R & 标准 & S \\ 61 | 专利 & P & 数据库 & DB \\ 62 | 计算机程序 & CP & 电子公告 & EB \\ 63 | \bottomrule 64 | \end{tabular}} 65 | \label{tab:demo} 66 | \end{table} 67 | \section{表达式(公式)} 68 | 论文中的公式应另起一行,居中编排,较长的公式尽可能在等号后换行,或者在“+”、“-”等符号后换行。公式中分数线的横线,长短要分清,主要的横线应与等号取平。公式后应注明编号,公式号应置于小括号中,如公式(2-3)。写在右边行末,中间不加虚线;公式下面的“式中:”两字左起顶格编排,后接符号及其解释;解释顺序为先左后右,先上后下;解释与解释之间用“;”隔开。 69 | 70 | 公式中各物理量及量纲均按国际标准(SI)及国家规定的法定符号和法定计量单位标注,禁止使用已废弃的符号和计量单位。 71 | 示例: 72 | \begin{equation} 73 | \label{eq:demo} 74 | q=k_dH^x 75 | \end{equation} 76 | 式中:q\cdash 灌水器流量/L·h-1;kd\cdash 流量系数;H\cdash 工作压力/m;x\cdash 流态指数。 77 | 78 | (此处,“式中:”改为顶格输出) 79 | 80 | \section{算法(伪代码)} 81 | 本节介绍了一个伪代码示例,如\cref{alg:alg1}所示。 82 | \begin{algorithm} 83 | \caption{Calculate $y = x^n$} 84 | \label{alg:alg1} 85 | \begin{algorithmic}[1] 86 | % 输入 87 | \REQUIRE $n \geq 0 \vee x \neq 0$ 88 | % 输出 89 | \ENSURE $y = x^n$ 90 | 91 | % 初始化 92 | \STATE $y \leftarrow 1$ 93 | 94 | % 逻辑 95 | \IF{$n < 0$} 96 | \STATE $X \leftarrow 1 / x$ 97 | \STATE $N \leftarrow -n$ 98 | \ELSE 99 | \STATE $X \leftarrow x$ 100 | \STATE $N \leftarrow n$ 101 | \ENDIF 102 | 103 | \WHILE{$N \neq 0$} 104 | \IF{$N$ is even} 105 | \STATE $X \leftarrow X \times X$ 106 | \STATE $N \leftarrow N / 2$ 107 | \ELSIF{$N$ is odd} 108 | \STATE $y \leftarrow y \times X$ 109 | \STATE $N \leftarrow N - 1$ 110 | \ENDIF 111 | \ENDWHILE 112 | \end{algorithmic} 113 | \end{algorithm} 114 | 115 | \section{参考文献} 116 | 参照GB/T 7714—2015《信息与文献 参考文献著录规则》执行。 117 | \section{附录} 118 | 附录编号依次为附录A,附录B。附录标题各占一行,按一级标题编排。每一个附录一般应另起一页编排,如果有多个较短的附录,也可接排。附录中的图、表、公式另行编排序号,与正文分开,编号前加“附录A-”字样。 119 | 附录作为主体部分的补充(不是必需的)。下列内容可作为附录编于论文后。 120 | 121 | ——为了整篇论文材料的完整,但编于正文又有损于编排的条理性和逻辑性,这一材料包括比正文更为详尽的信息、研究方法和技术更深入的叙述,以及对了解正文内容有用的补充信息等。 122 | 123 | ——由于篇幅过大或取材于复制品而不便于编入正文的材料。 124 | 125 | ——不便于编入正文的罕见珍贵资料。 126 | 127 | ——对一般读者并非必要阅读,但对本专业同行有参考价值的资料。 128 | 129 | ——正文中未被引用但被阅读或具有补充信息的文献。 130 | 131 | ——某些重要的原始数据、数学推导、结构图、统计表、计算机打印输出件等。 132 | -------------------------------------------------------------------------------- /Chapters/4_Printing.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | \chapter{排版打印} 4 | \section{纸张规格和页面设置} 5 | \section{中文封面排版说明} 6 | \section{中、英文摘要排版要求} 7 | \section{目录排版要求} 8 | \section{正文排版要求} 9 | \section{其他部分排版要求} 10 | \section{评阅送审论文版式要求} 11 | 采用评阅送审论文封面格式,删除英文封面内页、声明页、致谢,攻读学位期间取得的研究成果参照写作指南的说明进行备注,其它格式参照《研究生学位论文规范写作指南》的要求。 12 | \section{论文印刷及装订要求} 13 | 论文自中文摘要起双面印刷,之前部分单面印刷,之后各部分须由另页右页开始(排版时注意微调,左页不要出现空白页)。论文须用热胶装订。博士(学术学位)论文封面颜色为红色,硕士(学术学位)论文封面颜色为蓝色,硕士(专业学位)论文封面颜色为绿色。 -------------------------------------------------------------------------------- /Chapters/5_Conclusion.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | \chapter{结论与展望} 4 | 结论是对论文主要研究结果、论点的提炼与概括,应准确、简明、完整、有条理,使人看后就能全面了解论文的意义、目的和工作内容。主要阐述自己的创造性工作及所取得的研究成果在本学术领域中的地位、作用和意义。 5 | 6 | 结论要严格区分自己取得的成果与导师及他人的科研工作成果。在评价自己的研究工作成果时,要实事求是,除非有足够的证据表明自己的研究是“首次”的、“领先”的、“填补空白”的,否则应避免使用这些或类似词语。 7 | 8 | 展望或建议,是在总结研究工作和现有结论的基础上,对该领域今后的发展方向及重要研究内容进行预测,同时对所获研究结果的应用前景和社会影响加以评价,从而对今后的研究有所启发。 -------------------------------------------------------------------------------- /Chapters/Achievements.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 作者在读期间科研成果简介 4 | \chapter{攻读学位期间取得的研究成果} 5 | 已发表或已录用的学术论文、已出版的专著/译著、已获授权的专利按参考文献格式 列出。未确定正式录用待发表的成果,不能写入此部分内容,成果若为录用待发表状态, 请备注。科研获奖,列出格式为:获奖人(排名情况).项目名称.奖项名称及等级, 发奖机构,获奖时间。与学位论文相关的其它成果参照参考文献格式列出。 6 | 7 | 全部研究成果连续编号编排。 8 | 9 | \textcolor{red}{ 10 | 说明:评语送审版本,须保留此页,已取得的研究成果,按照以下内容进行备注: 11 | \\ 12 | “攻读学位期间所取得的研究成果,以第一作者身份(或其他身份)已在《******》 SCI 期刊/核心期刊上正式发表(或被《******》SCI 期刊/核心期刊正式录用待发表), 按照双盲评阅的要求,成果的详细信息未在此匿名评审论文中列出。” 13 | } 14 | -------------------------------------------------------------------------------- /Chapters/CopyrightAuthorization.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 学位论文版权使用授权书 4 | \chapter*{学位论文版权使用授权书} 5 | 本学位论文作者完全了解{四川大学}有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权{四川大学}可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保持、汇编学位论文。 6 | 7 | 8 | (保密的学位论文在解密后适用本授权书) 9 | \vspace{4cm} 10 | \autograph 11 | -------------------------------------------------------------------------------- /Chapters/Statement.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 原创性声明 4 | \chapter*{声\hspace{1em}明} 5 | \thispagestyle{empty} 6 | 本人声明所呈交的学位论文是本人在导师指导下(或联合培养导师组合作指导下)进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得四川大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 7 | 8 | 本学位论文成果是本人在四川大学读书期间在导师指导下(或联合培养导师组合作指导下)取得的,论文成果归四川大学所有(或联合培养单位共有),特此声明。 9 | \vspace{4cm} 10 | \autograph 11 | -------------------------------------------------------------------------------- /Chapters/Thanks.tex: -------------------------------------------------------------------------------- 1 | %!TEX root = ../MainBody.tex 2 | 3 | % 致谢 4 | \begin{thanks*} 5 | 致谢中主要感谢导师和对论文工作有直接贡献和帮助的人士和单位。 6 | 7 | 致谢的内容有: 8 | 9 | (一)对指导或协助指导完成论文的导师; 10 | 11 | (二)对国家科学基金、资助研究工作的奖学金基金、合同单位、资助或支持的企业、组织或个人; 12 | 13 | (三)对协助完成研究工作和提供便利条件的组织或个人; 14 | 15 | (四)对在研究工作中提出建议和提供帮助的人; 16 | 17 | (五)对给予转载和引用权的资料、图片、文献、研究思想和设想的所有者; 18 | 19 | (六)对其他应感谢的组织和个人。 20 | 21 | 致谢言语应谦虚诚恳,实事求是。字数一般为600-1000字(word统计)。 22 | 23 | \textcolor{red}{ 24 | 说明:评阅送审版本,请删除此页。 25 | } 26 | \end{thanks*} -------------------------------------------------------------------------------- /Figures/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/Figures/demo.png -------------------------------------------------------------------------------- /Figures/levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/Figures/levels.png -------------------------------------------------------------------------------- /License/fdl-1.3.txt: -------------------------------------------------------------------------------- 1 | GNU Free Documentation License 2 | Version 1.3, 3 November 2008 3 | 4 | 5 | Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. 6 | Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 7 | 8 | 0. PREAMBLE 9 | 10 | The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to 11 | assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. 12 | Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible 13 | for modifications made by others. 14 | 15 | This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. 16 | 17 | We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 18 | 19 | 20 | 1. APPLICABILITY AND DEFINITIONS 21 | 22 | This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. 23 | 24 | A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. 25 | 26 | A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. 27 | 28 | The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. 29 | 30 | The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. 31 | 32 | A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". 33 | 34 | Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. 35 | 36 | The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 37 | 38 | The "publisher" means any person or entity that distributes copies of the Document to the public. 39 | 40 | A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. 41 | 42 | The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 43 | 44 | 45 | 2. VERBATIM COPYING 46 | 47 | You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. 48 | 49 | You may also lend copies, under the same conditions stated above, and you may publicly display copies. 50 | 51 | 52 | 3. COPYING IN QUANTITY 53 | 54 | If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated 55 | as verbatim copying in other respects. 56 | 57 | If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. 58 | 59 | If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. 60 | 61 | It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 62 | 63 | 64 | 4. MODIFICATIONS 65 | 66 | You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: 67 | 68 | A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. 69 | 70 | B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. 71 | 72 | C. State on the Title page the name of the publisher of the Modified Version, as the publisher. 73 | 74 | D. Preserve all the copyright notices of the Document. 75 | 76 | E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. 77 | 78 | F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. 79 | 80 | G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. 81 | 82 | H. Include an unaltered copy of this License. 83 | 84 | I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. 85 | 86 | J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. 87 | 88 | K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. 89 | 90 | L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. 91 | 92 | M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. 93 | 94 | N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. 95 | 96 | O. Preserve any Warranty Disclaimers. 97 | 98 | If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. 99 | 100 | You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. 101 | 102 | You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. 103 | 104 | The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 105 | 106 | 107 | 5. COMBINING DOCUMENTS 108 | 109 | You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. 110 | 111 | The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. 112 | 113 | In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 114 | 115 | 116 | 6. COLLECTIONS OF DOCUMENTS 117 | 118 | You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. 119 | 120 | You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 121 | 122 | 123 | 7. AGGREGATION WITH INDEPENDENT WORKS 124 | 125 | A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. 126 | 127 | If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 128 | 129 | 130 | 8. TRANSLATION 131 | 132 | Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. 133 | 134 | If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 135 | 136 | 137 | 9. TERMINATION 138 | 139 | You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. 140 | 141 | However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. 142 | 143 | Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. 144 | 145 | Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 146 | 147 | 148 | 10. FUTURE REVISIONS OF THIS LICENSE 149 | 150 | The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. 151 | 152 | Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the 153 | Document. 154 | 155 | 11. RELICENSING 156 | 157 | "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. 158 | 159 | "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. 160 | 161 | "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. 162 | 163 | An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. 164 | 165 | The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. 166 | 167 | 168 | ADDENDUM: How to use this License for your documents 169 | 170 | To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: 171 | 172 | Copyright (c) YEAR YOUR NAME. 173 | Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 174 | 175 | If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: 176 | 177 | with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. 178 | 179 | If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. 180 | 181 | If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. 182 | 183 | -------------------------------------------------------------------------------- /License/gpl-3.0.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 6 | 7 | Preamble 8 | 9 | The GNU General Public License is a free, copyleft license for software and other kinds of works. 10 | 11 | The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. 12 | 13 | When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. 14 | 15 | To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. 16 | 17 | For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. 18 | 19 | Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. 20 | 21 | For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. 22 | 23 | Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. 24 | 25 | Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. 26 | 27 | The precise terms and conditions for copying, distribution and modification follow. 28 | 29 | TERMS AND CONDITIONS 30 | 31 | 0. Definitions. 32 | 33 | "This License" refers to version 3 of the GNU General Public License. 34 | 35 | "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. 36 | 37 | "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. 38 | 39 | To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. 40 | 41 | A "covered work" means either the unmodified Program or a work based on the Program. 42 | 43 | To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. 44 | 45 | To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. 46 | 47 | An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 48 | 49 | 1. Source Code. 50 | 51 | The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. 52 | 53 | A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. 54 | 55 | The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. 56 | 57 | The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. 58 | 59 | The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. 60 | 61 | The Corresponding Source for a work in source code form is that same work. 62 | 63 | 2. Basic Permissions. 64 | 65 | All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. 66 | 67 | You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. 68 | 69 | Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 70 | 71 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 72 | 73 | No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. 74 | 75 | When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 76 | 77 | 4. Conveying Verbatim Copies. 78 | 79 | You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. 80 | 81 | You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 82 | 83 | 5. Conveying Modified Source Versions. 84 | 85 | You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: 86 | 87 | a) The work must carry prominent notices stating that you modified it, and giving a relevant date. 88 | 89 | b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". 90 | 91 | c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. 92 | 93 | d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. 94 | 95 | A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 96 | 97 | 6. Conveying Non-Source Forms. 98 | 99 | You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: 100 | 101 | a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. 102 | 103 | b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. 104 | 105 | c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. 106 | 107 | d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. 108 | 109 | e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. 110 | 111 | A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. 112 | 113 | A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. 114 | 115 | "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. 116 | 117 | If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). 118 | 119 | The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. 120 | 121 | Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 122 | 123 | 7. Additional Terms. 124 | 125 | "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. 126 | 127 | When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. 128 | 129 | Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: 130 | 131 | a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or 132 | 133 | b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or 134 | 135 | c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or 136 | 137 | d) Limiting the use for publicity purposes of names of licensors or authors of the material; or 138 | 139 | e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or 140 | 141 | f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. 142 | 143 | All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. 144 | 145 | If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. 146 | 147 | Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 148 | 149 | 8. Termination. 150 | 151 | You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). 152 | 153 | However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. 154 | 155 | Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. 156 | 157 | Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 158 | 159 | 9. Acceptance Not Required for Having Copies. 160 | 161 | You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 162 | 163 | 10. Automatic Licensing of Downstream Recipients. 164 | 165 | Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. 166 | 167 | An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. 168 | 169 | You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 170 | 171 | 11. Patents. 172 | 173 | A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". 174 | 175 | A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. 176 | 177 | Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to 178 | make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. 179 | 180 | In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. 181 | 182 | If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. 183 | 184 | If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. 185 | 186 | A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. 187 | 188 | Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 189 | 190 | 12. No Surrender of Others' Freedom. 191 | 192 | If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 193 | 194 | 13. Use with the GNU Affero General Public License. 195 | 196 | Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 197 | 198 | 14. Revised Versions of this License. 199 | 200 | The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. 201 | 202 | Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. 203 | 204 | If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. 205 | 206 | Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 207 | 208 | 15. Disclaimer of Warranty. 209 | 210 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 211 | 212 | 16. Limitation of Liability. 213 | 214 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 215 | 216 | 17. Interpretation of Sections 15 and 16. 217 | 218 | If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 219 | 220 | END OF TERMS AND CONDITIONS 221 | 222 | How to Apply These Terms to Your New Programs 223 | 224 | If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. 225 | 226 | To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. 227 | 228 | 229 | Copyright (C) 230 | 231 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 232 | 233 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 234 | 235 | You should have received a copy of the GNU General Public License along with this program. If not, see . 236 | 237 | Also add information on how to contact you by electronic and paper mail. 238 | 239 | If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: 240 | 241 | Copyright (C) 242 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 243 | This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. 244 | 245 | The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". 246 | 247 | You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . 248 | 249 | The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . 250 | 251 | -------------------------------------------------------------------------------- /MainBody.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/MainBody.pdf -------------------------------------------------------------------------------- /MainBody.tex: -------------------------------------------------------------------------------- 1 | % 文件名:MainBody.tex 2 | % 文件描述:四川大学2020研究生硕/博士 LaTeX 模版 3 | % 作者:Kevin T. Lee [hello@lidengju.com] 4 | % 修改日期:2020年6月1日 5 | 6 | % 设置文档属性 7 | % 参数说明 8 | % professional: 专业学位 9 | % academic: 学术学位 10 | % master: 硕士 11 | % doctor: 博士 12 | % approval: 送审版本,将不生成声明 13 | % secret: 保密论文,将显示密级 14 | % color: 红色川大logo 15 | % kfont=<⟨none|adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|windowsnew|windowsold|...⟩>, 16 | % 不填写则默认fandol 17 | \documentclass[professional,master]{./Template/scuthesis2020} 18 | \begin{document} 19 | % 设置文档信息 20 | \unitid{10610} % 单位代码 21 | \STUnumber{xxxxxxxxxxxxxxx} % 学号或送审编号 22 | \securityClassification{秘密} % 密级:公开/内部/秘密/机密/绝密。当不使用secret时,不显示 23 | \securityYear{3} % 保密年限 24 | \CoverTitle{论文标题可能很长} %封面标题 25 | \CoverSubTitle{所以你可以把一部分放到副标题里} %可做封面副标题 26 | \title{论文标题可能很长所以你可以把一部分放到副标题里} % 论文全称 27 | \ENGtitle{Title of graduate thesis could be very very long but do not worry it will break the line automatically……} %论文全称英文 28 | % \school{\zihao{5}{这里是特别长的单位名称甚至一行不能显示}} % 如果太长超出一行,可以根据显示效果修改字号,这里为5号字 29 | \school{计算机学院} % 培养单位 30 | \ENGschool{Computer Science} % 培养单位英文 31 | \author{XXX} % 作者姓名 32 | \ENGauthor{Kevin T. Lee} % 作者英文名 33 | \supervisor{XXX\quad 教授} % 指导教师 34 | \ENGsupervisor{Prof. XXX} % 指导教师英文 35 | \degreeclass{工程硕士} % 学位类别 36 | \ENGdegreeclass{Master of Engineering} % 学位类别英文 37 | \major{计算机技术/具体领域} % 学科专业或领域名称 38 | \ENGmajor{Computer Technology} % 学科专业或领域名称英文 39 | \hasmajor{1} % 若有领域则为1,否则改为0 40 | \defensedate{二〇二〇年二月} % 论文答辩时间 41 | \grantdate{二〇二〇年二月} % 学位授予时间 42 | \accomplishdate{二〇二〇年二月} % 论文完成时间 43 | \statementdate{February, 2020} % 声明时间 44 | \direction{XXX} 45 | \ENGdirection{Direction Name} 46 | \keywords{研究生学位论文;写作指南;参考模板} 47 | \ENGkeywords{graduate thesis;writing guide;reference template} 48 | 49 | % 自动制作封面 50 | \maketitle 51 | % 自动制作中英文声明 52 | \makestatement 53 | % 设置论文正文前的页码、页眉等 54 | \frontmatter\pagenumbering{Roman}\pagestyle{fancy} 55 | % 包含摘要 56 | \include{Chapters/0_0_Abstract} 57 | % 自动制作目录 58 | \maketoc 59 | % 自动制作图表目录 60 | \makefigtablist 61 | % 包含缩略词表 62 | \include{Chapters/0_1_Abbreviations} 63 | % 包含符号表 64 | \include{Chapters/0_2_Symbols} 65 | % 设置论文正文部分的页码、页眉等 66 | \mainmatter\pagenumbering{arabic}\pagestyle{fancy} 67 | % 包含第一章、第二章等等 68 | \include{Chapters/1_Introduction} 69 | \include{Chapters/2_Structure} 70 | \include{Chapters/3_Writing} 71 | \include{Chapters/4_Printing} 72 | \include{Chapters/5_Conclusion} 73 | 74 | % 设置论文正文后的式样 75 | \backmatter 76 | % 按国标自动制作参考文献 77 | % 参考文献数据文件为本目录下的ReferenceBase.bib 78 | \begin{reference} 79 | \bibliography{ReferenceBase} 80 | \end{reference} 81 | % 包含在读期间科研成果 82 | \include{Chapters/Achievements} 83 | % 包含致谢 84 | \makethanks 85 | \end{document} 86 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for scu_thesis_2020 2 | 3 | # Basename of thesis 4 | THESIS = MainBody 5 | 6 | # Option for latexmk 7 | LATEXMK_OPT = -quiet -file-line-error -halt-on-error -interaction=nonstopmode 8 | LATEXMK_OPT_PVC = $(LATEXMK_OPT_BASE) -pvc 9 | 10 | # make deletion work on Windows 11 | ifdef SystemRoot 12 | RM = del /Q 13 | OPEN = start 14 | else 15 | RM = rm -f 16 | OPEN = open 17 | endif 18 | 19 | .PHONY : all pdf pvc view wordcount clean cleanall FORCE_MAKE 20 | 21 | all :clean pdf clean 22 | 23 | pdf : $(THESIS).pdf 24 | 25 | $(THESIS).pdf : $(THESIS).tex FORCE_MAKE 26 | @latexmk $(LATEXMK_OPT) $< 27 | 28 | pvc : $(THESIS).tex 29 | @latexmk $(LATEXMK_OPT_PVC) $(THESIS) 30 | 31 | view : $(THESIS).pdf 32 | $(OPEN) $< 33 | 34 | wordcount : $(THESIS).tex 35 | @texcount $< -inc -ch-only | awk '/total/ {getline; print "纯中文字数\t\t\t:",$$4}'; \ 36 | 37 | @texcount $< -inc -chinese | awk '/total/ {getline; print "总字数(英文单词 + 中文字)\t:",$$4}' 38 | 39 | clean : 40 | -@latexmk -c -silent $(THESIS).tex 2> /dev/null 41 | 42 | cleanall : 43 | -@latexmk -C -silent $(THESIS).tex 2> /dev/null -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Version: 2022.03.23
3 | "2020年四川大学研究生学业论文LaTex模版"
4 | -- Modified by Kevin T. Lee -- 5 |

6 | GPL 7 | Code 8 | Version 9 |
10 | 11 | 12 | # 四川大学2020研究生学业论文LaTex模版 13 | 14 | SCU graduate thesis latex template. 15 | 16 | 根据学院给的2020版《研究生学位论文规范写作指南》Word模版需求([参见PDF](./Reference%20Document/1-3%20《研究生学位论文规范写作指南》.pdf)),制作的LaTex模版。 17 | 18 | 使用该模版的多篇论文经受了2020/21年硕、博士论文评审的考验,请放心食用! 19 | 20 | **注意:已知Mac下可能会产生中文加粗文字复制乱码问题,请及时更新模板样式文件,并移除文档参数的kfont=,或直接使用2022_03_23版本** 21 | 22 | **该模板已到稳定版本,可直接下载使用[scu_thesis_2022_03_23](https://github.com/kevinleeex/scu_thesis_2020/releases/download/v2022.03.23/scu_thesis_2022_03_23.zip)中的最新模板。** 23 | 24 | - 如果你习惯在Overleaf中写作,可以参考[相关链接](#overleaf用户)。 25 | 26 | - 独立的模版样式文件,[scu_thesis_template](https://github.com/kevinleeex/scu_thesis_template),可用于替换```./Template```目录用于更新样式。 27 | 28 | **国内网速不好可使用**Gitee**镜像:** 29 | 30 | - [scu_thesis_2020](https://gitee.com/kevinleeex/scu_thesis_2020) 31 | - [scu_thesis_template](https://gitee.com/kevinleeex/scu_thesis_template) 32 | 33 | 克隆后修改```.gitmodules```文件内容如下: 34 | 35 | ``` 36 | [submodule "Template"] 37 | path = Template 38 | url = https://gitee.com/kevinleeex/scu_thesis_template.git 39 | ``` 40 | 41 | ## :warning:NOTICE 42 | 43 | 现在发现几处给出范例与描述不一致,已根据理解修改,如下: 44 | 45 | - 页眉说明为五号字,范例为小五,修改为**小五**。 46 | - 一些标题描述间隔一个汉字符,范例为一个空格符,修改为**一个汉字符**。 47 | - 封面页校名标题没有居中,修改为**居中**。 48 | - 描述中公式居中,范例为右对齐,修改为**居中**。 49 | - 描述中图和表题注都为宋体加粗,范例的表为黑体,修改为**宋体加粗** 50 | - 描述中偶数页页眉为论文题目,范例为学校名+论文类型,修改为**论文题目**。 51 | - 没有保留封面等内容的说明内容。 52 | - 部分内容由于排版软件的关系有些微差别。 53 | - 使用插图/表格目录,假如图题/表题中有引用,请注意最后的引用顺序,若出现正文的第一个引用不是从[1]开始,请清理临时文件,重新编译。 54 | 55 | > 如您发现更多问题请您提交ISSUES,或PR。 56 | > 57 | > **免责声明:本项目开源用于格式参考,本模版的作者和贡献者不承担任何人使用该模版所引发的任何问题(如格式审查等)。** 58 | 59 | ## Features 60 | 61 | - [x] 🍞 通过配置项自动生成不同类型的论文格式,你专注内容就好 62 | - [x] 🍔 「像素级」复刻原Word模版 63 | - [x] 🧀 通过```\incite``` 来进行行内引用 64 | - [x] 🍟 ```\bicaption```图片双语题注示例 65 | - [x] 🍕 ```\cdash```公式说明的破折号 66 | - [x] 🌮 ```\cref```智能参考 67 | - [x] 🥘 ```\tabincell```多行单元格 68 | - [x] 🍗 ```\makefigtablist```添加图表目录 69 | 70 | ## Options 71 | 72 | | 参数 | 说明 | 73 | | ------------ | -------------------------- | 74 | | professional | 专业学位 | 75 | | academic | 学术学位 | 76 | | master | 硕士 | 77 | | docter | 博士 | 78 | | approval | 送审版本,不生成声明和致谢 | 79 | | secret | 保密论文,将显示密级 | 80 | | color | 红色川大logo,默认为黑色 | 81 | |kfont= | 字体库,可根据操作系统填写,默认fandol| 82 | 83 | ## Release Notes 84 | 85 | See [Releases](https://github.com/kevinleeex/scu_thesis_2020/releases) 86 | 87 | - [2020-02-19] 将Template作为[子模块](https://github.com/kevinleeex/scu_thesis_template)方便样式的后续更新。 88 | - [2021-11-27] 增强对2019以上Tex Live中CTEX的兼容性。 89 | - [2022-03-23] **推荐**[scu_thesis_2022_03_03](https://github.com/kevinleeex/scu_thesis_2020/releases/download/v2022.03.23/scu_thesis_2022_03_23.zip)点击下载。 90 | - [**重要**] 修复Mac下可能产生的中文加粗字体复制乱码问题!统一字体 91 | 92 | ## Previews 93 | 94 | 封面示例: 95 | ![image-20200301232656767](assets/cover.png) 96 | 97 | 98 | ## Getting Started 99 | 100 | ### Prerequisites 101 | 102 | 在你构建项目之前,需要先安装以下的软件。 103 | 104 | - TexLive (2019) 105 | - MacTex(on mac) 106 | - Visual Studio Code (optional) with LaTex workshop plugin 107 | 108 | ### Installation 109 | 110 | 克隆项目。 111 | 112 | ```bash 113 | cd path-to-dir 114 | git clone https://github.com/kevinleeex/scu_thesis_2020.git 115 | cd scu_thesis_2020 116 | git submodule init 117 | git submodule update --remote 118 | ``` 119 | 120 | **后续通过```git submodule update --remote```命令 更新样式子模块到最新版本,强制更新加上```-f```参数,合并更新加上```--merge```参数。** 121 | 122 | ### Usages 123 | 124 | 打开并编辑 ```MainBody.tex``` 125 | 126 | ```shell 127 | % 设置文档属性 128 | % 参数说明 129 | % professional: 专业学位 130 | % academic: 学术学位 131 | % master: 硕士 132 | % doctor: 博士 133 | % approval: 送审版本,将不生成声明 134 | % secret: 保密论文,将显示密级 135 | % color: 红色川大logo 136 | % kfont=<⟨none|adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|windowsnew|windowsold|...⟩>, 137 | % 不填写则默认fandol 138 | % 打开MainBody.tex根据需要填入 139 | \documentclass[professional,master]{./Template/scuthesis2020} 140 | 141 | % 在./Chapters/ 文件夹中写作,在MainBody.tex中包含 142 | % 在./Chapters/Statement.tex 中撰写中文声明 143 | % 在./Chapters/0_0_Abstract.tex 中撰写摘要 144 | % 在./Chapters/Achievements.tex 中撰写学术成果 145 | % 在./Chapters/Thanks.tex 中撰写致谢 146 | % 在./ReferenceDocument/ 文件夹中,存放用于参考的文献 147 | % 在./ReferenceBase.bib 文件中存放bibTex引用 148 | ``` 149 | 150 | 使用 **xelatex** 编译 LaTex 文件,执行```xeLatex->bibTex->xeLatex->xeLatex``` 方案. 151 | 152 | #### Linux 与 macOS 用户 153 | 154 | 推荐使用本模版提供的 ```Makefile``` 进行编译,可以使用如下几条可用的命令: 155 | 156 | ```shell 157 | make all # 执行清理、编译pdf、清理过程 158 | make pdf # 编译生成 MainBody.pdf 159 | make clean # 删除编译所产生的辅助文件 160 | make cleanall # 删除 MainBody.pdf 和所有辅助文件 161 | make wordcount # 论文字数统计 162 | ``` 163 | 164 | #### Windows 用户 165 | 166 | 对于 Windows 用户,模版提供了编译脚本```Compile.bat```。可以双击直接编译,也可以在命令提示符窗口中使用脚本提供的额外功能: 167 | 168 | ```shell 169 | .\Compile.bat thesis # 编译生成 MainBody.pdf 170 | .\Compile.bat clean # 删除编译所产生的辅助文件 171 | .\Compile.bat cleanall # 删除 MainBody.pdf 和所有辅助文件 172 | .\Compile.bat wordcount # 论文字数统计 173 | ``` 174 | 175 | #### Overleaf用户 176 | 177 | 可以通过[在线查看](https://www.overleaf.com/read/fsqsnqnptrns)来进行预览,也可以下载后作为自己的Overleaf项目,注意设置编译器为**xeLatex**,已经对高版本Tex Live进行兼容! 178 | 179 | ### Tips 180 | 181 | - 通过**Detexify**软件,可以通过手写来识别符号,给出相应的Latex符号标记。 182 | - 通过**Mathpix Snipping Tool**软件,可以通过截屏公式,来生成相应的Latex公式代码。 183 | - 通过**pandoc**命令行程序,可以将Tex文件生成其他格式文件,如```docx```,可以用于查重等。 184 | ```bash 185 | pandoc -s MainBody.tex -o MainBody.docx --bibliography=ReferenceBase.bib 186 | ``` 187 | 188 | ## Powered By 189 | 190 | - [cuiao's template](https://github.com/cuiao/SCU_ThesisDissertation_LaTeXTemplate) 191 | 192 | 向以上项目表示感谢。 193 | 194 | ## Support me 195 | 196 | 如果您喜欢这个项目可以点个Star,或提出Issue或通过PR提交有用的新特性,也欢迎推荐给其他人使用,这对我和项目都是很大的激励。 197 | 198 | 或者点击打赏我 通过支付宝或微信请我喝杯奶茶。 199 | 200 | ## License 201 | 202 | Copyright © 2020 Modified by [Kevin T. Lee](http://lidengju.com). 版权所有。 203 | 204 | 项目基于GPL开源协议,查看 [LICENSE](./License/) 获取详细内容。 205 | -------------------------------------------------------------------------------- /Reference Document/1-3 《研究生学位论文规范写作指南》.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/Reference Document/1-3 《研究生学位论文规范写作指南》.pdf -------------------------------------------------------------------------------- /ReferenceBase.bib: -------------------------------------------------------------------------------- 1 | @article{曹敏GB, 2 | title={GB/T 7714-2015《信息与文献 参考文献著录规则》标准解析}, 3 | author={曹敏}, 4 | journal={科技与出版}, 5 | number={9}, 6 | pages={47-50} 7 | } 8 | 9 | @article{陈浩元2015gb, 10 | title={GB/T 7714 新标准对旧标准的主要修改及实施要点提示}, 11 | author={陈浩元}, 12 | journal={编辑学报}, 13 | volume={27}, 14 | number={4}, 15 | pages={339--343}, 16 | year={2015} 17 | } -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect -------------------------------------------------------------------------------- /assets/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/assets/cover.png -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinleeex/scu_thesis_2020/26c1447712f849b39b1cee9b83cb04bf76ab02e7/assets/icon.png -------------------------------------------------------------------------------- /compile.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | chcp 65001 >nul 4 | 5 | call :setESC 6 | 7 | set THESIS=MainBody 8 | 9 | set flag=%1 10 | if %flag%x == x ( 11 | set flag=thesis 12 | ) 13 | 14 | if %flag%x == thesisx ( 15 | call :cleanall 16 | call :thesis 17 | if ERRORLEVEL 1 ( 18 | echo. 19 | echo %ESC%[31mError! Please check the %ESC%[7m'%THESIS%.log'%ESC%[0;31m for more details . . .%ESC%[0m 20 | pause 21 | ) else ( 22 | call :clean 23 | echo %ESC%[32mFinished!%ESC%[0m 24 | pause 25 | ) 26 | goto :EOF 27 | ) 28 | 29 | if %flag%x == cleanx ( 30 | call :clean 31 | goto :EOF 32 | ) 33 | 34 | if %flag%x == cleanallx ( 35 | call :cleanall 36 | goto :EOF 37 | ) 38 | 39 | if %flag%x == wordcountx ( 40 | call :wordcount 41 | goto :EOF 42 | ) 43 | 44 | :help 45 | echo %ESC%[33mThis is the compile batch script for SJTUThesis. 46 | echo Usage: 47 | echo compile.bat [option] 48 | echo options: 49 | echo thesis Compile the thesis (default) 50 | echo clean Clean all work files 51 | echo cleanall Clean all work files and main.pdf 52 | echo wordcount Count words in main.pdf 53 | echo help Print this help message%ESC%[0m 54 | goto :EOF 55 | 56 | :thesis 57 | echo %ESC%[33mCompile . . .%ESC%[0m 58 | latexmk -quiet -file-line-error -halt-on-error -interaction=nonstopmode %THESIS% 2>nul 59 | goto :EOF 60 | 61 | :clean 62 | echo %ESC%[33mClean files . . .%ESC%[0m 63 | latexmk -quiet -c %THESIS% 2>nul 64 | goto :EOF 65 | 66 | :cleanall 67 | echo %ESC%[33mClean files . . .%ESC%[0m 68 | latexmk -quiet -C %THESIS% 2>nul 69 | if exist %THESIS%.pdf ( 70 | echo %ESC%[31mClose the file: %ESC%[7m'%THESIS%.pdf'%ESC%[0;31m!%ESC%[0m 71 | pause 72 | call :cleanall 73 | ) 74 | goto :EOF 75 | 76 | :wordcount 77 | set found=0 78 | setlocal enabledelayedexpansion 79 | 80 | findstr "\\documentclass\[[^\[]*english" %THESIS%.tex > nul 81 | if %errorlevel% equ 0 ( 82 | for /f "delims=" %%i in ('texcount %THESIS%.tex -inc -char-only 2^>nul') do ( 83 | if !found! equ 1 ( 84 | echo %ESC%[33m英文字符数 :%ESC%[36m!%%i!%ESC%[0m 85 | goto :total 86 | ) 87 | echo %%i | findstr "total" > nul && set found=1 88 | ) 89 | ) else ( 90 | for /f "delims=" %%i in ('texcount %THESIS%.tex -inc -ch-only 2^>nul') do ( 91 | if !found! equ 1 ( 92 | echo %ESC%[33m纯中文字数 :%ESC%[36m!%%i!%ESC%[0m 93 | goto :total 94 | ) 95 | echo %%i | findstr "total" > nul && set found=1 96 | ) 97 | ) 98 | 99 | :total 100 | set found=0 101 | for /f "delims=" %%i in ('texcount %THESIS%.tex -inc -chinese 2^>nul') do ( 102 | if !found! equ 1 ( 103 | echo %ESC%[33m总字数(英文单词 + 中文字) :%ESC%[36m!%%i!%ESC%[0m 104 | goto :EOF 105 | ) 106 | echo %%i | findstr "total" > nul && set found=1 107 | ) 108 | goto :EOF 109 | 110 | :setESC 111 | for /F "tokens=1,2 delims=#" %%a in ('"prompt #You can't use 'macro parameter character #' in math modeE# & echo on & for %%b in (1) do rem"') do ( 112 | set ESC=%%b 113 | exit /B 0 114 | ) 115 | exit /B 0 -------------------------------------------------------------------------------- /gbt7714-author-year.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-author-year.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,authoryear') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | INTEGERS { 24 | uppercase.name 25 | max.num.authors 26 | period.between.author.year 27 | sentence.case.title 28 | link.title 29 | title.in.journal 30 | show.mark 31 | show.medium.type 32 | slash.for.extraction 33 | in.booktitle 34 | abbreviate.journal 35 | italic.journal 36 | bold.journal.volume 37 | show.missing.address.publisher 38 | space.before.pages 39 | only.start.page 40 | show.url 41 | show.doi 42 | show.note 43 | show.english.translation 44 | lang.zh.order 45 | lang.ja.order 46 | lang.en.order 47 | lang.ru.order 48 | lang.other.order 49 | } 50 | 51 | FUNCTION {load.config} 52 | { 53 | #1 'uppercase.name := 54 | #3 'max.num.authors := 55 | #0 'period.between.author.year := 56 | #1 'sentence.case.title := 57 | #0 'link.title := 58 | #1 'title.in.journal := 59 | #1 'show.mark := 60 | #1 'show.medium.type := 61 | #1 'slash.for.extraction := 62 | #0 'in.booktitle := 63 | #0 'abbreviate.journal := 64 | #0 'italic.journal := 65 | #0 'bold.journal.volume := 66 | #1 'show.missing.address.publisher := 67 | #0 'space.before.pages := 68 | #0 'only.start.page := 69 | #1 'show.url := 70 | #1 'show.doi := 71 | #0 'show.note := 72 | #0 'show.english.translation := 73 | #1 'lang.zh.order := 74 | #2 'lang.ja.order := 75 | #3 'lang.en.order := 76 | #4 'lang.ru.order := 77 | #5 'lang.other.order := 78 | } 79 | 80 | ENTRY 81 | { address 82 | author 83 | booktitle 84 | date 85 | doi 86 | edition 87 | editor 88 | howpublished 89 | institution 90 | journal 91 | key 92 | language 93 | mark 94 | medium 95 | note 96 | number 97 | organization 98 | pages 99 | publisher 100 | school 101 | series 102 | title 103 | translator 104 | translation 105 | url 106 | urldate 107 | volume 108 | year 109 | } 110 | { entry.lang entry.is.electronic entry.numbered } 111 | { label extra.label sort.label short.list entry.mark entry.url } 112 | 113 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 114 | 115 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 116 | 117 | INTEGERS { charptr len } 118 | 119 | FUNCTION {init.state.consts} 120 | { #0 'before.all := 121 | #1 'mid.sentence := 122 | #2 'after.sentence := 123 | #3 'after.block := 124 | #4 'after.slash := 125 | #3 'lang.zh := 126 | #4 'lang.ja := 127 | #1 'lang.en := 128 | #2 'lang.ru := 129 | #0 'lang.other := 130 | } 131 | 132 | FUNCTION {bbl.anonymous} 133 | { entry.lang lang.zh = 134 | { "佚名" } 135 | { "Anon" } 136 | if$ 137 | } 138 | 139 | FUNCTION {bbl.space} 140 | { entry.lang lang.zh = 141 | { "\ " } 142 | { " " } 143 | if$ 144 | } 145 | 146 | FUNCTION {bbl.et.al} 147 | { entry.lang lang.zh = 148 | { "等" } 149 | { entry.lang lang.ja = 150 | { "他" } 151 | { entry.lang lang.ru = 152 | { "идр" } 153 | { "et~al." } 154 | if$ 155 | } 156 | if$ 157 | } 158 | if$ 159 | } 160 | 161 | FUNCTION {citation.et.al} 162 | { bbl.et.al } 163 | 164 | FUNCTION {bbl.colon} { ": " } 165 | 166 | FUNCTION {bbl.wide.space} { "\quad " } 167 | 168 | FUNCTION {bbl.slash} { "//\allowbreak " } 169 | 170 | FUNCTION {bbl.sine.loco} 171 | { entry.lang lang.zh = 172 | { "[出版地不详]" } 173 | { "[S.l.]" } 174 | if$ 175 | } 176 | 177 | FUNCTION {bbl.sine.nomine} 178 | { entry.lang lang.zh = 179 | { "[出版者不详]" } 180 | { "[s.n.]" } 181 | if$ 182 | } 183 | 184 | FUNCTION {bbl.sine.loco.sine.nomine} 185 | { entry.lang lang.zh = 186 | { "[出版地不详: 出版者不详]" } 187 | { "[S.l.: s.n.]" } 188 | if$ 189 | } 190 | 191 | FUNCTION {not} 192 | { { #0 } 193 | { #1 } 194 | if$ 195 | } 196 | 197 | FUNCTION {and} 198 | { 'skip$ 199 | { pop$ #0 } 200 | if$ 201 | } 202 | 203 | FUNCTION {or} 204 | { { pop$ #1 } 205 | 'skip$ 206 | if$ 207 | } 208 | 209 | STRINGS { s t } 210 | 211 | FUNCTION {output.nonnull} 212 | { 's := 213 | output.state mid.sentence = 214 | { ", " * write$ } 215 | { output.state after.block = 216 | { add.period$ write$ 217 | newline$ 218 | "\newblock " write$ 219 | } 220 | { output.state before.all = 221 | 'write$ 222 | { output.state after.slash = 223 | { bbl.slash * write$ 224 | newline$ 225 | } 226 | { add.period$ " " * write$ } 227 | if$ 228 | } 229 | if$ 230 | } 231 | if$ 232 | mid.sentence 'output.state := 233 | } 234 | if$ 235 | s 236 | } 237 | 238 | FUNCTION {output} 239 | { duplicate$ empty$ 240 | 'pop$ 241 | 'output.nonnull 242 | if$ 243 | } 244 | 245 | FUNCTION {output.after} 246 | { 't := 247 | duplicate$ empty$ 248 | 'pop$ 249 | { 's := 250 | output.state mid.sentence = 251 | { t * write$ } 252 | { output.state after.block = 253 | { add.period$ write$ 254 | newline$ 255 | "\newblock " write$ 256 | } 257 | { output.state before.all = 258 | 'write$ 259 | { output.state after.slash = 260 | { bbl.slash * write$ } 261 | { add.period$ " " * write$ } 262 | if$ 263 | } 264 | if$ 265 | } 266 | if$ 267 | mid.sentence 'output.state := 268 | } 269 | if$ 270 | s 271 | } 272 | if$ 273 | } 274 | 275 | FUNCTION {output.check} 276 | { 't := 277 | duplicate$ empty$ 278 | { pop$ "empty " t * " in " * cite$ * warning$ } 279 | 'output.nonnull 280 | if$ 281 | } 282 | 283 | FUNCTION {fin.entry} 284 | { add.period$ 285 | write$ 286 | show.english.translation entry.lang lang.zh = and 287 | { ")" 288 | write$ 289 | } 290 | 'skip$ 291 | if$ 292 | newline$ 293 | } 294 | 295 | FUNCTION {new.block} 296 | { output.state before.all = 297 | 'skip$ 298 | { output.state after.slash = 299 | 'skip$ 300 | { after.block 'output.state := } 301 | if$ 302 | } 303 | if$ 304 | } 305 | 306 | FUNCTION {new.sentence} 307 | { output.state after.block = 308 | 'skip$ 309 | { output.state before.all = 310 | 'skip$ 311 | { output.state after.slash = 312 | 'skip$ 313 | { after.sentence 'output.state := } 314 | if$ 315 | } 316 | if$ 317 | } 318 | if$ 319 | } 320 | 321 | FUNCTION {new.slash} 322 | { output.state before.all = 323 | 'skip$ 324 | { slash.for.extraction 325 | { after.slash 'output.state := } 326 | { after.block 'output.state := } 327 | if$ 328 | } 329 | if$ 330 | } 331 | 332 | FUNCTION {new.block.checka} 333 | { empty$ 334 | 'skip$ 335 | 'new.block 336 | if$ 337 | } 338 | 339 | FUNCTION {new.block.checkb} 340 | { empty$ 341 | swap$ empty$ 342 | and 343 | 'skip$ 344 | 'new.block 345 | if$ 346 | } 347 | 348 | FUNCTION {new.sentence.checka} 349 | { empty$ 350 | 'skip$ 351 | 'new.sentence 352 | if$ 353 | } 354 | 355 | FUNCTION {new.sentence.checkb} 356 | { empty$ 357 | swap$ empty$ 358 | and 359 | 'skip$ 360 | 'new.sentence 361 | if$ 362 | } 363 | 364 | FUNCTION {field.or.null} 365 | { duplicate$ empty$ 366 | { pop$ "" } 367 | 'skip$ 368 | if$ 369 | } 370 | 371 | FUNCTION {italicize} 372 | { duplicate$ empty$ 373 | { pop$ "" } 374 | { "\textit{" swap$ * "}" * } 375 | if$ 376 | } 377 | 378 | INTEGERS { byte second.byte } 379 | 380 | INTEGERS { char.lang tmp.lang } 381 | 382 | STRINGS { tmp.str } 383 | 384 | FUNCTION {get.str.lang} 385 | { 'tmp.str := 386 | lang.other 'tmp.lang := 387 | #1 'charptr := 388 | tmp.str text.length$ #1 + 'len := 389 | { charptr len < } 390 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 391 | byte #128 < 392 | { charptr #1 + 'charptr := 393 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 394 | { lang.en 'char.lang := } 395 | { lang.other 'char.lang := } 396 | if$ 397 | } 398 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 399 | byte #224 < 400 | { charptr #2 + 'charptr := 401 | byte #207 > byte #212 < and 402 | byte #212 = second.byte #176 < and or 403 | { lang.ru 'char.lang := } 404 | { lang.other 'char.lang := } 405 | if$ 406 | } 407 | { byte #240 < 408 | { charptr #3 + 'charptr := 409 | byte #227 > byte #234 < and 410 | { lang.zh 'char.lang := } 411 | { byte #227 = 412 | { second.byte #143 > 413 | { lang.zh 'char.lang := } 414 | { second.byte #128 > second.byte #132 < and 415 | { lang.ja 'char.lang := } 416 | { lang.other 'char.lang := } 417 | if$ 418 | } 419 | if$ 420 | } 421 | { byte #239 = 422 | second.byte #163 > second.byte #172 < and and 423 | { lang.zh 'char.lang := } 424 | { lang.other 'char.lang := } 425 | if$ 426 | } 427 | if$ 428 | } 429 | if$ 430 | } 431 | { charptr #4 + 'charptr := 432 | byte #240 = second.byte #159 > and 433 | { lang.zh 'char.lang := } 434 | { lang.other 'char.lang := } 435 | if$ 436 | } 437 | if$ 438 | } 439 | if$ 440 | } 441 | if$ 442 | char.lang tmp.lang > 443 | { char.lang 'tmp.lang := } 444 | 'skip$ 445 | if$ 446 | } 447 | while$ 448 | tmp.lang 449 | } 450 | 451 | FUNCTION {check.entry.lang} 452 | { author field.or.null 453 | title field.or.null * 454 | get.str.lang 455 | } 456 | 457 | FUNCTION {set.entry.lang} 458 | { language empty$ 459 | { check.entry.lang } 460 | { language "english" = language "american" = or language "british" = or 461 | { lang.en } 462 | { language "chinese" = 463 | { lang.zh } 464 | { language "japanese" = 465 | { lang.ja } 466 | { language "russian" = 467 | { lang.ru } 468 | { check.entry.lang } 469 | if$ 470 | } 471 | if$ 472 | } 473 | if$ 474 | } 475 | if$ 476 | } 477 | if$ 478 | 'entry.lang := 479 | } 480 | 481 | FUNCTION {set.entry.numbered} 482 | { type$ "patent" = 483 | type$ "standard" = or 484 | type$ "techreport" = or 485 | { #1 'entry.numbered := } 486 | { #0 'entry.numbered := } 487 | if$ 488 | } 489 | 490 | INTEGERS { nameptr namesleft numnames name.lang } 491 | 492 | FUNCTION {format.names} 493 | { 's := 494 | #1 'nameptr := 495 | s num.names$ 'numnames := 496 | numnames 'namesleft := 497 | { namesleft #0 > } 498 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 499 | nameptr max.num.authors > 500 | { bbl.et.al 501 | #1 'namesleft := 502 | } 503 | { t "others" = 504 | { bbl.et.al } 505 | { t get.str.lang 'name.lang := 506 | name.lang lang.en = 507 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 508 | uppercase.name 509 | { "u" change.case$ } 510 | 'skip$ 511 | if$ 512 | t #1 "{, jj}" format.name$ * 513 | } 514 | { t #1 "{ll}{ff}" format.name$ } 515 | if$ 516 | } 517 | if$ 518 | } 519 | if$ 520 | nameptr #1 > 521 | { ", " swap$ * * } 522 | 'skip$ 523 | if$ 524 | nameptr #1 + 'nameptr := 525 | namesleft #1 - 'namesleft := 526 | } 527 | while$ 528 | } 529 | 530 | FUNCTION {format.key} 531 | { empty$ 532 | { key field.or.null } 533 | { "" } 534 | if$ 535 | } 536 | 537 | FUNCTION {format.authors} 538 | { author empty$ not 539 | { author format.names } 540 | { "empty author in " cite$ * warning$ 541 | bbl.anonymous 542 | } 543 | if$ 544 | } 545 | 546 | FUNCTION {format.editors} 547 | { editor empty$ 548 | { "" } 549 | { editor format.names } 550 | if$ 551 | } 552 | 553 | FUNCTION {format.translators} 554 | { translator empty$ 555 | { "" } 556 | { translator format.names 557 | entry.lang lang.zh = 558 | { translator num.names$ #3 > 559 | { "译" * } 560 | { ", 译" * } 561 | if$ 562 | } 563 | 'skip$ 564 | if$ 565 | } 566 | if$ 567 | } 568 | 569 | FUNCTION {format.full.names} 570 | {'s := 571 | #1 'nameptr := 572 | s num.names$ 'numnames := 573 | numnames 'namesleft := 574 | { namesleft #0 > } 575 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 576 | t get.str.lang 'name.lang := 577 | name.lang lang.en = 578 | { t #1 "{vv~}{ll}" format.name$ 't := } 579 | { t #1 "{ll}{ff}" format.name$ 't := } 580 | if$ 581 | nameptr #1 > 582 | { 583 | namesleft #1 > 584 | { ", " * t * } 585 | { 586 | numnames #2 > 587 | { "," * } 588 | 'skip$ 589 | if$ 590 | t "others" = 591 | { " et~al." * } 592 | { " and " * t * } 593 | if$ 594 | } 595 | if$ 596 | } 597 | 't 598 | if$ 599 | nameptr #1 + 'nameptr := 600 | namesleft #1 - 'namesleft := 601 | } 602 | while$ 603 | } 604 | 605 | FUNCTION {author.editor.full} 606 | { author empty$ 607 | { editor empty$ 608 | { "" } 609 | { editor format.full.names } 610 | if$ 611 | } 612 | { author format.full.names } 613 | if$ 614 | } 615 | 616 | FUNCTION {author.full} 617 | { author empty$ 618 | { "" } 619 | { author format.full.names } 620 | if$ 621 | } 622 | 623 | FUNCTION {editor.full} 624 | { editor empty$ 625 | { "" } 626 | { editor format.full.names } 627 | if$ 628 | } 629 | 630 | FUNCTION {make.full.names} 631 | { type$ "book" = 632 | type$ "inbook" = 633 | or 634 | 'author.editor.full 635 | { type$ "collection" = 636 | type$ "proceedings" = 637 | or 638 | 'editor.full 639 | 'author.full 640 | if$ 641 | } 642 | if$ 643 | } 644 | 645 | FUNCTION {output.bibitem} 646 | { newline$ 647 | "\bibitem[" write$ 648 | label ")" * 649 | make.full.names duplicate$ short.list = 650 | { pop$ } 651 | { * } 652 | if$ 653 | 's := 654 | s text.length$ 'charptr := 655 | { charptr #0 > s charptr #1 substring$ "[" = not and } 656 | { charptr #1 - 'charptr := } 657 | while$ 658 | charptr #0 > 659 | { "{" s * "}" * } 660 | { s } 661 | if$ 662 | "]{" * write$ 663 | cite$ write$ 664 | "}" write$ 665 | newline$ 666 | "" 667 | before.all 'output.state := 668 | } 669 | 670 | FUNCTION {change.sentence.case} 671 | { entry.lang lang.en = 672 | { "t" change.case$ } 673 | 'skip$ 674 | if$ 675 | } 676 | 677 | FUNCTION {add.link} 678 | { url empty$ not 679 | { "\href{" url * "}{" * swap$ * "}" * } 680 | { doi empty$ not 681 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 682 | 'skip$ 683 | if$ 684 | } 685 | if$ 686 | } 687 | 688 | FUNCTION {format.title} 689 | { title empty$ 690 | { "" } 691 | { title 692 | sentence.case.title 693 | 'change.sentence.case 694 | 'skip$ 695 | if$ 696 | entry.numbered number empty$ not and 697 | { bbl.colon * number * } 698 | 'skip$ 699 | if$ 700 | link.title 701 | 'add.link 702 | 'skip$ 703 | if$ 704 | } 705 | if$ 706 | } 707 | 708 | FUNCTION {tie.or.space.connect} 709 | { duplicate$ text.length$ #3 < 710 | { "~" } 711 | { " " } 712 | if$ 713 | swap$ * * 714 | } 715 | 716 | FUNCTION {either.or.check} 717 | { empty$ 718 | 'pop$ 719 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 720 | if$ 721 | } 722 | 723 | FUNCTION {is.digit} 724 | { duplicate$ empty$ 725 | { pop$ #0 } 726 | { chr.to.int$ 727 | duplicate$ "0" chr.to.int$ < 728 | { pop$ #0 } 729 | { "9" chr.to.int$ > 730 | { #0 } 731 | { #1 } 732 | if$ 733 | } 734 | if$ 735 | } 736 | if$ 737 | } 738 | 739 | FUNCTION {is.number} 740 | { 's := 741 | s empty$ 742 | { #0 } 743 | { s text.length$ 'charptr := 744 | { charptr #0 > 745 | s charptr #1 substring$ is.digit 746 | and 747 | } 748 | { charptr #1 - 'charptr := } 749 | while$ 750 | charptr not 751 | } 752 | if$ 753 | } 754 | 755 | FUNCTION {format.volume} 756 | { volume empty$ not 757 | { volume is.number 758 | { entry.lang lang.zh = 759 | { "第 " volume * " 卷" * } 760 | { "volume" volume tie.or.space.connect } 761 | if$ 762 | } 763 | { volume } 764 | if$ 765 | } 766 | { "" } 767 | if$ 768 | } 769 | 770 | FUNCTION {format.number} 771 | { number empty$ not 772 | { number is.number 773 | { entry.lang lang.zh = 774 | { "第 " number * " 册" * } 775 | { "number" number tie.or.space.connect } 776 | if$ 777 | } 778 | { number } 779 | if$ 780 | } 781 | { "" } 782 | if$ 783 | } 784 | 785 | FUNCTION {format.volume.number} 786 | { volume empty$ not 787 | { format.volume } 788 | { format.number } 789 | if$ 790 | } 791 | 792 | FUNCTION {format.title.vol.num} 793 | { title 794 | sentence.case.title 795 | 'change.sentence.case 796 | 'skip$ 797 | if$ 798 | entry.numbered 799 | { number empty$ not 800 | { bbl.colon * number * } 801 | 'skip$ 802 | if$ 803 | } 804 | { format.volume.number 's := 805 | s empty$ not 806 | { bbl.colon * s * } 807 | 'skip$ 808 | if$ 809 | } 810 | if$ 811 | } 812 | 813 | FUNCTION {format.series.vol.num.title} 814 | { format.volume.number 's := 815 | series empty$ not 816 | { series 817 | sentence.case.title 818 | 'change.sentence.case 819 | 'skip$ 820 | if$ 821 | entry.numbered 822 | { bbl.wide.space * } 823 | { bbl.colon * 824 | s empty$ not 825 | { s * bbl.wide.space * } 826 | 'skip$ 827 | if$ 828 | } 829 | if$ 830 | title * 831 | sentence.case.title 832 | 'change.sentence.case 833 | 'skip$ 834 | if$ 835 | entry.numbered number empty$ not and 836 | { bbl.colon * number * } 837 | 'skip$ 838 | if$ 839 | } 840 | { format.title.vol.num } 841 | if$ 842 | link.title 843 | 'add.link 844 | 'skip$ 845 | if$ 846 | } 847 | 848 | FUNCTION {format.booktitle.vol.num} 849 | { booktitle 850 | entry.numbered 851 | 'skip$ 852 | { format.volume.number 's := 853 | s empty$ not 854 | { bbl.colon * s * } 855 | 'skip$ 856 | if$ 857 | } 858 | if$ 859 | } 860 | 861 | FUNCTION {format.series.vol.num.booktitle} 862 | { format.volume.number 's := 863 | series empty$ not 864 | { series bbl.colon * 865 | entry.numbered not s empty$ not and 866 | { s * bbl.wide.space * } 867 | 'skip$ 868 | if$ 869 | booktitle * 870 | } 871 | { format.booktitle.vol.num } 872 | if$ 873 | in.booktitle 874 | { duplicate$ empty$ not entry.lang lang.en = and 875 | { "In: " swap$ * } 876 | 'skip$ 877 | if$ 878 | } 879 | 'skip$ 880 | if$ 881 | } 882 | 883 | FUNCTION {remove.period} 884 | { 't := 885 | "" 's := 886 | { t empty$ not } 887 | { t #1 #1 substring$ 'tmp.str := 888 | tmp.str "." = not 889 | { s tmp.str * 's := } 890 | 'skip$ 891 | if$ 892 | t #2 global.max$ substring$ 't := 893 | } 894 | while$ 895 | s 896 | } 897 | 898 | FUNCTION {abbreviate} 899 | { remove.period 900 | 't := 901 | t "l" change.case$ 's := 902 | "" 903 | s "physical review letters" = 904 | { "Phys Rev Lett" } 905 | 'skip$ 906 | if$ 907 | 's := 908 | s empty$ 909 | { t } 910 | { pop$ s } 911 | if$ 912 | } 913 | 914 | FUNCTION {format.journal} 915 | { journal empty$ not 916 | { journal 917 | abbreviate.journal 918 | 'abbreviate 919 | 'skip$ 920 | if$ 921 | italic.journal entry.lang lang.en = and 922 | 'italicize 923 | 'skip$ 924 | if$ 925 | } 926 | { "" } 927 | if$ 928 | } 929 | 930 | FUNCTION {set.entry.mark} 931 | { entry.mark empty$ not 932 | 'pop$ 933 | { mark empty$ not 934 | { pop$ mark 'entry.mark := } 935 | { 'entry.mark := } 936 | if$ 937 | } 938 | if$ 939 | } 940 | 941 | FUNCTION {format.mark} 942 | { show.mark 943 | { entry.mark 944 | show.medium.type 945 | { medium empty$ not 946 | { "/" * medium * } 947 | { entry.is.electronic 948 | { "/OL" * } 949 | 'skip$ 950 | if$ 951 | } 952 | if$ 953 | } 954 | 'skip$ 955 | if$ 956 | 'entry.mark := 957 | "\allowbreak[" entry.mark * "]" * 958 | } 959 | { "" } 960 | if$ 961 | } 962 | 963 | FUNCTION {num.to.ordinal} 964 | { duplicate$ text.length$ 'charptr := 965 | duplicate$ charptr #1 substring$ 's := 966 | s "1" = 967 | { "st" * } 968 | { s "2" = 969 | { "nd" * } 970 | { s "3" = 971 | { "rd" * } 972 | { "th" * } 973 | if$ 974 | } 975 | if$ 976 | } 977 | if$ 978 | } 979 | 980 | FUNCTION {format.edition} 981 | { edition empty$ 982 | { "" } 983 | { edition is.number 984 | { entry.lang lang.zh = 985 | { edition " 版" * } 986 | { edition num.to.ordinal " ed." * } 987 | if$ 988 | } 989 | { entry.lang lang.en = 990 | { edition change.sentence.case 's := 991 | s "Revised" = s "Revised edition" = or 992 | { "Rev. ed." } 993 | { s " ed." *} 994 | if$ 995 | } 996 | { edition } 997 | if$ 998 | } 999 | if$ 1000 | } 1001 | if$ 1002 | } 1003 | 1004 | FUNCTION {format.publisher} 1005 | { publisher empty$ not 1006 | { publisher } 1007 | { school empty$ not 1008 | { school } 1009 | { organization empty$ not 1010 | { organization } 1011 | { institution empty$ not 1012 | { institution } 1013 | { "" } 1014 | if$ 1015 | } 1016 | if$ 1017 | } 1018 | if$ 1019 | } 1020 | if$ 1021 | } 1022 | 1023 | FUNCTION {format.address.publisher} 1024 | { address empty$ not 1025 | { address 1026 | format.publisher empty$ not 1027 | { bbl.colon * format.publisher * } 1028 | { entry.is.electronic not show.missing.address.publisher and 1029 | { bbl.colon * bbl.sine.nomine * } 1030 | 'skip$ 1031 | if$ 1032 | } 1033 | if$ 1034 | } 1035 | { entry.is.electronic not show.missing.address.publisher and 1036 | { format.publisher empty$ not 1037 | { bbl.sine.loco bbl.colon * format.publisher * } 1038 | { bbl.sine.loco.sine.nomine } 1039 | if$ 1040 | } 1041 | { format.publisher empty$ not 1042 | { format.publisher } 1043 | { "" } 1044 | if$ 1045 | } 1046 | if$ 1047 | } 1048 | if$ 1049 | } 1050 | 1051 | FUNCTION {extract.before.dash} 1052 | { duplicate$ empty$ 1053 | { pop$ "" } 1054 | { 's := 1055 | #1 'charptr := 1056 | s text.length$ #1 + 'len := 1057 | { charptr len < 1058 | s charptr #1 substring$ "-" = not 1059 | and 1060 | } 1061 | { charptr #1 + 'charptr := } 1062 | while$ 1063 | s #1 charptr #1 - substring$ 1064 | } 1065 | if$ 1066 | } 1067 | 1068 | FUNCTION {extract.after.dash} 1069 | { duplicate$ empty$ 1070 | { pop$ "" } 1071 | { 's := 1072 | #1 'charptr := 1073 | s text.length$ #1 + 'len := 1074 | { charptr len < 1075 | s charptr #1 substring$ "-" = not 1076 | and 1077 | } 1078 | { charptr #1 + 'charptr := } 1079 | while$ 1080 | { charptr len < 1081 | s charptr #1 substring$ "-" = 1082 | and 1083 | } 1084 | { charptr #1 + 'charptr := } 1085 | while$ 1086 | s charptr global.max$ substring$ 1087 | } 1088 | if$ 1089 | } 1090 | 1091 | FUNCTION {contains.dash} 1092 | { duplicate$ empty$ 1093 | { pop$ #0 } 1094 | { 's := 1095 | { s empty$ not 1096 | s #1 #1 substring$ "-" = not 1097 | and 1098 | } 1099 | { s #2 global.max$ substring$ 's := } 1100 | while$ 1101 | s empty$ not 1102 | } 1103 | if$ 1104 | } 1105 | 1106 | FUNCTION {format.year} 1107 | { year empty$ not 1108 | { year extract.before.dash } 1109 | { date empty$ not 1110 | { date extract.before.dash } 1111 | { "empty year in " cite$ * warning$ 1112 | urldate empty$ not 1113 | { "[" urldate extract.before.dash * "]" * } 1114 | { "" } 1115 | if$ 1116 | } 1117 | if$ 1118 | } 1119 | if$ 1120 | extra.label * 1121 | } 1122 | 1123 | FUNCTION {format.date} 1124 | { type$ "patent" = type$ "newspaper" = or 1125 | date empty$ not and 1126 | { date } 1127 | { year } 1128 | if$ 1129 | } 1130 | 1131 | FUNCTION {format.editdate} 1132 | { date empty$ not 1133 | { "\allowbreak(" date * ")" * } 1134 | { "" } 1135 | if$ 1136 | } 1137 | 1138 | FUNCTION {format.urldate} 1139 | { urldate empty$ not entry.is.electronic and 1140 | { "\allowbreak[" urldate * "]" * } 1141 | { "" } 1142 | if$ 1143 | } 1144 | 1145 | FUNCTION {hyphenate} 1146 | { 't := 1147 | "" 1148 | { t empty$ not } 1149 | { t #1 #1 substring$ "-" = 1150 | { "-" * 1151 | { t #1 #1 substring$ "-" = } 1152 | { t #2 global.max$ substring$ 't := } 1153 | while$ 1154 | } 1155 | { t #1 #1 substring$ * 1156 | t #2 global.max$ substring$ 't := 1157 | } 1158 | if$ 1159 | } 1160 | while$ 1161 | } 1162 | 1163 | FUNCTION {format.pages} 1164 | { pages empty$ 1165 | { "" } 1166 | { pages 1167 | only.start.page 1168 | 'extract.before.dash 1169 | 'hyphenate 1170 | if$ 1171 | } 1172 | if$ 1173 | } 1174 | 1175 | FUNCTION {format.journal.volume} 1176 | { volume empty$ not 1177 | { bold.journal.volume 1178 | { "\textbf{" volume * "}" * } 1179 | { volume } 1180 | if$ 1181 | } 1182 | { "" } 1183 | if$ 1184 | } 1185 | 1186 | FUNCTION {format.journal.number} 1187 | { number empty$ not 1188 | { "\penalty0 (" number * ")" * } 1189 | { "" } 1190 | if$ 1191 | } 1192 | 1193 | FUNCTION {format.journal.pages} 1194 | { pages empty$ 1195 | { "" } 1196 | { space.before.pages 1197 | { ": " } 1198 | { ":\penalty0 " } 1199 | if$ 1200 | format.pages * 1201 | } 1202 | if$ 1203 | } 1204 | 1205 | FUNCTION {format.periodical.year.volume.number} 1206 | { year empty$ not 1207 | { year extract.before.dash } 1208 | { "empty year in periodical " cite$ * warning$ } 1209 | if$ 1210 | volume empty$ not 1211 | { ", " * volume extract.before.dash * } 1212 | 'skip$ 1213 | if$ 1214 | number empty$ not 1215 | { "\penalty0 (" * number extract.before.dash * ")" * } 1216 | 'skip$ 1217 | if$ 1218 | year contains.dash 1219 | { "--" * 1220 | year extract.after.dash empty$ 1221 | volume extract.after.dash empty$ and 1222 | number extract.after.dash empty$ and not 1223 | { year extract.after.dash empty$ not 1224 | { year extract.after.dash * } 1225 | { year extract.before.dash * } 1226 | if$ 1227 | volume empty$ not 1228 | { ", " * volume extract.after.dash * } 1229 | 'skip$ 1230 | if$ 1231 | number empty$ not 1232 | { "\penalty0 (" * number extract.after.dash * ")" * } 1233 | 'skip$ 1234 | if$ 1235 | } 1236 | 'skip$ 1237 | if$ 1238 | } 1239 | 'skip$ 1240 | if$ 1241 | } 1242 | 1243 | FUNCTION {check.url} 1244 | { url empty$ not 1245 | { "\url{" url * "}" * 'entry.url := 1246 | #1 'entry.is.electronic := 1247 | } 1248 | { howpublished empty$ not 1249 | { howpublished #1 #5 substring$ "\url{" = 1250 | { howpublished 'entry.url := 1251 | #1 'entry.is.electronic := 1252 | } 1253 | 'skip$ 1254 | if$ 1255 | } 1256 | { note empty$ not 1257 | { note #1 #5 substring$ "\url{" = 1258 | { note 'entry.url := 1259 | #1 'entry.is.electronic := 1260 | } 1261 | 'skip$ 1262 | if$ 1263 | } 1264 | 'skip$ 1265 | if$ 1266 | } 1267 | if$ 1268 | } 1269 | if$ 1270 | } 1271 | 1272 | FUNCTION {format.url} 1273 | { entry.url 1274 | } 1275 | 1276 | FUNCTION {output.url} 1277 | { entry.url empty$ not 1278 | { new.block 1279 | entry.url output 1280 | } 1281 | 'skip$ 1282 | if$ 1283 | } 1284 | 1285 | FUNCTION {check.doi} 1286 | { doi empty$ not 1287 | { #1 'entry.is.electronic := } 1288 | 'skip$ 1289 | if$ 1290 | } 1291 | 1292 | FUNCTION {is.in.url} 1293 | { 's := 1294 | s empty$ 1295 | { #1 } 1296 | { entry.url empty$ 1297 | { #0 } 1298 | { s text.length$ 'len := 1299 | entry.url text.length$ 'charptr := 1300 | { entry.url charptr len substring$ s = not 1301 | charptr #0 > 1302 | and 1303 | } 1304 | { charptr #1 - 'charptr := } 1305 | while$ 1306 | charptr 1307 | } 1308 | if$ 1309 | } 1310 | if$ 1311 | } 1312 | 1313 | FUNCTION {format.doi} 1314 | { "" 1315 | doi empty$ not 1316 | { "" 's := 1317 | doi 't := 1318 | #0 'numnames := 1319 | { t empty$ not} 1320 | { t #1 #1 substring$ 'tmp.str := 1321 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1322 | { t #2 #1 substring$ empty$ 1323 | { s tmp.str * 's := } 1324 | 'skip$ 1325 | if$ 1326 | s empty$ s is.in.url or 1327 | 'skip$ 1328 | { numnames #1 + 'numnames := 1329 | numnames #1 > 1330 | { ", " * } 1331 | { "DOI: " * } 1332 | if$ 1333 | "\doi{" s * "}" * * 1334 | } 1335 | if$ 1336 | "" 's := 1337 | } 1338 | { s tmp.str * 's := } 1339 | if$ 1340 | t #2 global.max$ substring$ 't := 1341 | } 1342 | while$ 1343 | } 1344 | 'skip$ 1345 | if$ 1346 | } 1347 | 1348 | FUNCTION {output.doi} 1349 | { doi empty$ not show.doi and 1350 | show.english.translation entry.lang lang.zh = and not and 1351 | { new.block 1352 | format.doi output 1353 | } 1354 | 'skip$ 1355 | if$ 1356 | } 1357 | 1358 | FUNCTION {check.electronic} 1359 | { "" 'entry.url := 1360 | #0 'entry.is.electronic := 1361 | 'check.doi 1362 | 'skip$ 1363 | if$ 1364 | 'check.url 1365 | 'skip$ 1366 | if$ 1367 | medium empty$ not 1368 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1369 | { #1 'entry.is.electronic := } 1370 | 'skip$ 1371 | if$ 1372 | } 1373 | 'skip$ 1374 | if$ 1375 | } 1376 | 1377 | FUNCTION {format.note} 1378 | { note empty$ not show.note and 1379 | { note } 1380 | { "" } 1381 | if$ 1382 | } 1383 | 1384 | FUNCTION {output.translation} 1385 | { show.english.translation entry.lang lang.zh = and 1386 | { translation empty$ not 1387 | { translation } 1388 | { "[English translation missing!]" } 1389 | if$ 1390 | " (in Chinese)" * output 1391 | write$ 1392 | format.doi duplicate$ empty$ not 1393 | { newline$ 1394 | write$ 1395 | } 1396 | 'pop$ 1397 | if$ 1398 | " \\" write$ 1399 | newline$ 1400 | "(" write$ 1401 | "" 1402 | before.all 'output.state := 1403 | } 1404 | 'skip$ 1405 | if$ 1406 | } 1407 | 1408 | FUNCTION {empty.misc.check} 1409 | { author empty$ title empty$ 1410 | year empty$ 1411 | and and 1412 | key empty$ not and 1413 | { "all relevant fields are empty in " cite$ * warning$ } 1414 | 'skip$ 1415 | if$ 1416 | } 1417 | 1418 | FUNCTION {monograph} 1419 | { output.bibitem 1420 | output.translation 1421 | author empty$ not 1422 | { format.authors } 1423 | { editor empty$ not 1424 | { format.editors } 1425 | { "empty author and editor in " cite$ * warning$ 1426 | bbl.anonymous 1427 | } 1428 | if$ 1429 | } 1430 | if$ 1431 | output 1432 | period.between.author.year 1433 | 'new.sentence 1434 | 'skip$ 1435 | if$ 1436 | format.year "year" output.check 1437 | new.block 1438 | format.series.vol.num.title "title" output.check 1439 | "M" set.entry.mark 1440 | format.mark "" output.after 1441 | new.block 1442 | format.translators output 1443 | new.sentence 1444 | format.edition output 1445 | new.block 1446 | format.address.publisher output 1447 | format.pages bbl.colon output.after 1448 | format.urldate "" output.after 1449 | output.url 1450 | output.doi 1451 | new.block 1452 | format.note output 1453 | fin.entry 1454 | } 1455 | 1456 | FUNCTION {incollection} 1457 | { output.bibitem 1458 | output.translation 1459 | format.authors output 1460 | author format.key output 1461 | period.between.author.year 1462 | 'new.sentence 1463 | 'skip$ 1464 | if$ 1465 | format.year "year" output.check 1466 | new.block 1467 | format.title "title" output.check 1468 | "M" set.entry.mark 1469 | format.mark "" output.after 1470 | new.block 1471 | format.translators output 1472 | new.slash 1473 | format.editors output 1474 | new.block 1475 | format.series.vol.num.booktitle "booktitle" output.check 1476 | new.block 1477 | format.edition output 1478 | new.block 1479 | format.address.publisher output 1480 | format.pages bbl.colon output.after 1481 | format.urldate "" output.after 1482 | output.url 1483 | output.doi 1484 | new.block 1485 | format.note output 1486 | fin.entry 1487 | } 1488 | 1489 | FUNCTION {periodical} 1490 | { output.bibitem 1491 | output.translation 1492 | format.authors output 1493 | author format.key output 1494 | period.between.author.year 1495 | 'new.sentence 1496 | 'skip$ 1497 | if$ 1498 | format.year "year" output.check 1499 | new.block 1500 | format.title "title" output.check 1501 | "J" set.entry.mark 1502 | format.mark "" output.after 1503 | new.block 1504 | format.periodical.year.volume.number output 1505 | new.block 1506 | format.address.publisher output 1507 | format.urldate "" output.after 1508 | output.url 1509 | output.doi 1510 | new.block 1511 | format.note output 1512 | fin.entry 1513 | } 1514 | 1515 | FUNCTION {article} 1516 | { output.bibitem 1517 | output.translation 1518 | format.authors output 1519 | author format.key output 1520 | period.between.author.year 1521 | 'new.sentence 1522 | 'skip$ 1523 | if$ 1524 | format.year "year" output.check 1525 | new.block 1526 | title.in.journal 1527 | { format.title "title" output.check 1528 | "J" set.entry.mark 1529 | format.mark "" output.after 1530 | new.block 1531 | } 1532 | 'skip$ 1533 | if$ 1534 | format.journal "journal" output.check 1535 | format.journal.volume output 1536 | format.journal.number "" output.after 1537 | format.journal.pages "" output.after 1538 | format.urldate "" output.after 1539 | output.url 1540 | output.doi 1541 | new.block 1542 | format.note output 1543 | fin.entry 1544 | } 1545 | 1546 | FUNCTION {patent} 1547 | { output.bibitem 1548 | output.translation 1549 | format.authors output 1550 | author format.key output 1551 | period.between.author.year 1552 | 'new.sentence 1553 | 'skip$ 1554 | if$ 1555 | format.year "year" output.check 1556 | new.block 1557 | format.title "title" output.check 1558 | "P" set.entry.mark 1559 | format.mark "" output.after 1560 | new.block 1561 | format.date "year" output.check 1562 | format.urldate "" output.after 1563 | output.url 1564 | output.doi 1565 | new.block 1566 | format.note output 1567 | fin.entry 1568 | } 1569 | 1570 | FUNCTION {electronic} 1571 | { #1 #1 check.electronic 1572 | #1 'entry.is.electronic := 1573 | output.bibitem 1574 | output.translation 1575 | format.authors output 1576 | author format.key output 1577 | period.between.author.year 1578 | 'new.sentence 1579 | 'skip$ 1580 | if$ 1581 | format.year "year" output.check 1582 | new.block 1583 | format.series.vol.num.title "title" output.check 1584 | "EB" set.entry.mark 1585 | format.mark "" output.after 1586 | new.block 1587 | format.address.publisher output 1588 | format.pages bbl.colon output.after 1589 | format.editdate "" output.after 1590 | format.urldate "" output.after 1591 | output.url 1592 | output.doi 1593 | new.block 1594 | format.note output 1595 | fin.entry 1596 | } 1597 | 1598 | FUNCTION {misc} 1599 | { journal empty$ not 1600 | 'article 1601 | { booktitle empty$ not 1602 | 'incollection 1603 | { publisher empty$ not 1604 | 'monograph 1605 | { entry.is.electronic 1606 | 'electronic 1607 | { "Z" set.entry.mark 1608 | monograph 1609 | } 1610 | if$ 1611 | } 1612 | if$ 1613 | } 1614 | if$ 1615 | } 1616 | if$ 1617 | empty.misc.check 1618 | } 1619 | 1620 | FUNCTION {archive} 1621 | { "A" set.entry.mark 1622 | misc 1623 | } 1624 | 1625 | FUNCTION {book} { monograph } 1626 | 1627 | FUNCTION {booklet} { book } 1628 | 1629 | FUNCTION {collection} 1630 | { "G" set.entry.mark 1631 | monograph 1632 | } 1633 | 1634 | FUNCTION {database} 1635 | { "DB" set.entry.mark 1636 | electronic 1637 | } 1638 | 1639 | FUNCTION {dataset} 1640 | { "DS" set.entry.mark 1641 | electronic 1642 | } 1643 | 1644 | FUNCTION {inbook} { book } 1645 | 1646 | FUNCTION {inproceedings} 1647 | { "C" set.entry.mark 1648 | incollection 1649 | } 1650 | 1651 | FUNCTION {conference} { inproceedings } 1652 | 1653 | FUNCTION {map} 1654 | { "CM" set.entry.mark 1655 | misc 1656 | } 1657 | 1658 | FUNCTION {manual} { monograph } 1659 | 1660 | FUNCTION {mastersthesis} 1661 | { "D" set.entry.mark 1662 | monograph 1663 | } 1664 | 1665 | FUNCTION {newspaper} 1666 | { "N" set.entry.mark 1667 | article 1668 | } 1669 | 1670 | FUNCTION {online} 1671 | { "EB" set.entry.mark 1672 | electronic 1673 | } 1674 | 1675 | FUNCTION {phdthesis} { mastersthesis } 1676 | 1677 | FUNCTION {proceedings} 1678 | { "C" set.entry.mark 1679 | monograph 1680 | } 1681 | 1682 | FUNCTION {software} 1683 | { "CP" set.entry.mark 1684 | electronic 1685 | } 1686 | 1687 | FUNCTION {standard} 1688 | { "S" set.entry.mark 1689 | misc 1690 | } 1691 | 1692 | FUNCTION {techreport} 1693 | { "R" set.entry.mark 1694 | misc 1695 | } 1696 | 1697 | FUNCTION {unpublished} 1698 | { "Z" set.entry.mark 1699 | misc 1700 | } 1701 | 1702 | FUNCTION {default.type} { misc } 1703 | 1704 | MACRO {jan} {"January"} 1705 | 1706 | MACRO {feb} {"February"} 1707 | 1708 | MACRO {mar} {"March"} 1709 | 1710 | MACRO {apr} {"April"} 1711 | 1712 | MACRO {may} {"May"} 1713 | 1714 | MACRO {jun} {"June"} 1715 | 1716 | MACRO {jul} {"July"} 1717 | 1718 | MACRO {aug} {"August"} 1719 | 1720 | MACRO {sep} {"September"} 1721 | 1722 | MACRO {oct} {"October"} 1723 | 1724 | MACRO {nov} {"November"} 1725 | 1726 | MACRO {dec} {"December"} 1727 | 1728 | MACRO {acmcs} {"ACM Computing Surveys"} 1729 | 1730 | MACRO {acta} {"Acta Informatica"} 1731 | 1732 | MACRO {cacm} {"Communications of the ACM"} 1733 | 1734 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1735 | 1736 | MACRO {ibmsj} {"IBM Systems Journal"} 1737 | 1738 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1739 | 1740 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1741 | 1742 | MACRO {ieeetcad} 1743 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1744 | 1745 | MACRO {ipl} {"Information Processing Letters"} 1746 | 1747 | MACRO {jacm} {"Journal of the ACM"} 1748 | 1749 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1750 | 1751 | MACRO {scp} {"Science of Computer Programming"} 1752 | 1753 | MACRO {sicomp} {"SIAM Journal on Computing"} 1754 | 1755 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1756 | 1757 | MACRO {tods} {"ACM Transactions on Database Systems"} 1758 | 1759 | MACRO {tog} {"ACM Transactions on Graphics"} 1760 | 1761 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1762 | 1763 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1764 | 1765 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1766 | 1767 | MACRO {tcs} {"Theoretical Computer Science"} 1768 | 1769 | FUNCTION {sortify} 1770 | { purify$ 1771 | "l" change.case$ 1772 | } 1773 | 1774 | FUNCTION {chop.word} 1775 | { 's := 1776 | 'len := 1777 | s #1 len substring$ = 1778 | { s len #1 + global.max$ substring$ } 1779 | 's 1780 | if$ 1781 | } 1782 | 1783 | FUNCTION {format.lab.names} 1784 | { 's := 1785 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1786 | t get.str.lang 'name.lang := 1787 | name.lang lang.en = 1788 | { t #1 "{vv~}{ll}" format.name$} 1789 | { t #1 "{ll}{ff}" format.name$} 1790 | if$ 1791 | s num.names$ #1 > 1792 | { bbl.space * citation.et.al * } 1793 | 'skip$ 1794 | if$ 1795 | } 1796 | 1797 | FUNCTION {author.key.label} 1798 | { author empty$ 1799 | { key empty$ 1800 | { cite$ #1 #3 substring$ } 1801 | 'key 1802 | if$ 1803 | } 1804 | { author format.lab.names } 1805 | if$ 1806 | } 1807 | 1808 | FUNCTION {author.editor.key.label} 1809 | { author empty$ 1810 | { editor empty$ 1811 | { key empty$ 1812 | { cite$ #1 #3 substring$ } 1813 | 'key 1814 | if$ 1815 | } 1816 | { editor format.lab.names } 1817 | if$ 1818 | } 1819 | { author format.lab.names } 1820 | if$ 1821 | } 1822 | 1823 | FUNCTION {author.key.organization.label} 1824 | { author empty$ 1825 | { key empty$ 1826 | { organization empty$ 1827 | { cite$ #1 #3 substring$ } 1828 | { "The " #4 organization chop.word #3 text.prefix$ } 1829 | if$ 1830 | } 1831 | 'key 1832 | if$ 1833 | } 1834 | { author format.lab.names } 1835 | if$ 1836 | } 1837 | 1838 | FUNCTION {editor.key.organization.label} 1839 | { editor empty$ 1840 | { key empty$ 1841 | { organization empty$ 1842 | { cite$ #1 #3 substring$ } 1843 | { "The " #4 organization chop.word #3 text.prefix$ } 1844 | if$ 1845 | } 1846 | 'key 1847 | if$ 1848 | } 1849 | { editor format.lab.names } 1850 | if$ 1851 | } 1852 | 1853 | FUNCTION {calc.short.authors} 1854 | { type$ "book" = 1855 | type$ "inbook" = 1856 | or 1857 | 'author.editor.key.label 1858 | { type$ "collection" = 1859 | type$ "proceedings" = 1860 | or 1861 | { editor empty$ not 1862 | 'editor.key.organization.label 1863 | 'author.key.organization.label 1864 | if$ 1865 | } 1866 | 'author.key.label 1867 | if$ 1868 | } 1869 | if$ 1870 | 'short.list := 1871 | } 1872 | 1873 | FUNCTION {calc.label} 1874 | { calc.short.authors 1875 | short.list 1876 | "(" 1877 | * 1878 | format.year duplicate$ empty$ 1879 | short.list key field.or.null = or 1880 | { pop$ "" } 1881 | 'skip$ 1882 | if$ 1883 | * 1884 | 'label := 1885 | } 1886 | 1887 | FUNCTION {sort.language.label} 1888 | { entry.lang lang.zh = 1889 | { lang.zh.order } 1890 | { entry.lang lang.ja = 1891 | { lang.ja.order } 1892 | { entry.lang lang.en = 1893 | { lang.en.order } 1894 | { entry.lang lang.ru = 1895 | { lang.ru.order } 1896 | { lang.other.order } 1897 | if$ 1898 | } 1899 | if$ 1900 | } 1901 | if$ 1902 | } 1903 | if$ 1904 | int.to.chr$ 1905 | } 1906 | 1907 | FUNCTION {sort.format.names} 1908 | { 's := 1909 | #1 'nameptr := 1910 | "" 1911 | s num.names$ 'numnames := 1912 | numnames 'namesleft := 1913 | { namesleft #0 > } 1914 | { 1915 | s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := 1916 | nameptr #1 > 1917 | { 1918 | " " * 1919 | namesleft #1 = t "others" = and 1920 | { "zzzzz" * } 1921 | { numnames #2 > nameptr #2 = and 1922 | { "zz" * year field.or.null * " " * } 1923 | 'skip$ 1924 | if$ 1925 | t sortify * 1926 | } 1927 | if$ 1928 | } 1929 | { t sortify * } 1930 | if$ 1931 | nameptr #1 + 'nameptr := 1932 | namesleft #1 - 'namesleft := 1933 | } 1934 | while$ 1935 | } 1936 | 1937 | FUNCTION {sort.format.title} 1938 | { 't := 1939 | "A " #2 1940 | "An " #3 1941 | "The " #4 t chop.word 1942 | chop.word 1943 | chop.word 1944 | sortify 1945 | #1 global.max$ substring$ 1946 | } 1947 | 1948 | FUNCTION {anonymous.sort} 1949 | { entry.lang lang.zh = 1950 | { "yi4 ming2" } 1951 | { "anon" } 1952 | if$ 1953 | } 1954 | 1955 | FUNCTION {warn.empty.key} 1956 | { entry.lang lang.zh = 1957 | { "empty key in " cite$ * warning$ } 1958 | 'skip$ 1959 | if$ 1960 | } 1961 | 1962 | FUNCTION {author.sort} 1963 | { key empty$ 1964 | { warn.empty.key 1965 | author empty$ 1966 | { anonymous.sort } 1967 | { author sort.format.names } 1968 | if$ 1969 | } 1970 | { key sortify } 1971 | if$ 1972 | } 1973 | 1974 | FUNCTION {author.editor.sort} 1975 | { key empty$ 1976 | { warn.empty.key 1977 | author empty$ 1978 | { editor empty$ 1979 | { anonymous.sort } 1980 | { editor sort.format.names } 1981 | if$ 1982 | } 1983 | { author sort.format.names } 1984 | if$ 1985 | } 1986 | { key sortify } 1987 | if$ 1988 | } 1989 | 1990 | FUNCTION {author.organization.sort} 1991 | { key empty$ 1992 | { warn.empty.key 1993 | author empty$ 1994 | { organization empty$ 1995 | { anonymous.sort } 1996 | { "The " #4 organization chop.word sortify } 1997 | if$ 1998 | } 1999 | { author sort.format.names } 2000 | if$ 2001 | } 2002 | { key sortify } 2003 | if$ 2004 | } 2005 | 2006 | FUNCTION {editor.organization.sort} 2007 | { key empty$ 2008 | { warn.empty.key 2009 | editor empty$ 2010 | { organization empty$ 2011 | { anonymous.sort } 2012 | { "The " #4 organization chop.word sortify } 2013 | if$ 2014 | } 2015 | { editor sort.format.names } 2016 | if$ 2017 | } 2018 | { key sortify } 2019 | if$ 2020 | } 2021 | 2022 | FUNCTION {presort} 2023 | { set.entry.lang 2024 | set.entry.numbered 2025 | show.url show.doi check.electronic 2026 | calc.label 2027 | label sortify 2028 | " " 2029 | * 2030 | sort.language.label 2031 | type$ "book" = 2032 | type$ "inbook" = 2033 | or 2034 | 'author.editor.sort 2035 | { type$ "collection" = 2036 | type$ "proceedings" = 2037 | or 2038 | 'editor.organization.sort 2039 | 'author.sort 2040 | if$ 2041 | } 2042 | if$ 2043 | * 2044 | " " 2045 | * 2046 | year field.or.null sortify 2047 | * 2048 | " " 2049 | * 2050 | cite$ 2051 | * 2052 | #1 entry.max$ substring$ 2053 | 'sort.label := 2054 | sort.label * 2055 | #1 entry.max$ substring$ 2056 | 'sort.key$ := 2057 | } 2058 | 2059 | STRINGS { longest.label last.label next.extra } 2060 | 2061 | INTEGERS { longest.label.width last.extra.num number.label } 2062 | 2063 | FUNCTION {initialize.longest.label} 2064 | { "" 'longest.label := 2065 | #0 int.to.chr$ 'last.label := 2066 | "" 'next.extra := 2067 | #0 'longest.label.width := 2068 | #0 'last.extra.num := 2069 | #0 'number.label := 2070 | } 2071 | 2072 | FUNCTION {forward.pass} 2073 | { last.label label = 2074 | { last.extra.num #1 + 'last.extra.num := 2075 | last.extra.num int.to.chr$ 'extra.label := 2076 | } 2077 | { "a" chr.to.int$ 'last.extra.num := 2078 | "" 'extra.label := 2079 | label 'last.label := 2080 | } 2081 | if$ 2082 | number.label #1 + 'number.label := 2083 | } 2084 | 2085 | FUNCTION {reverse.pass} 2086 | { next.extra "b" = 2087 | { "a" 'extra.label := } 2088 | 'skip$ 2089 | if$ 2090 | extra.label 'next.extra := 2091 | extra.label 2092 | duplicate$ empty$ 2093 | 'skip$ 2094 | { "{\natexlab{" swap$ * "}}" * } 2095 | if$ 2096 | 'extra.label := 2097 | label extra.label * 'label := 2098 | } 2099 | 2100 | FUNCTION {bib.sort.order} 2101 | { sort.label 'sort.key$ := 2102 | } 2103 | 2104 | FUNCTION {begin.bib} 2105 | { preamble$ empty$ 2106 | 'skip$ 2107 | { preamble$ write$ newline$ } 2108 | if$ 2109 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 2110 | write$ newline$ 2111 | "\providecommand{\natexlab}[1]{#1}" 2112 | write$ newline$ 2113 | "\providecommand{\url}[1]{#1}" 2114 | write$ newline$ 2115 | "\expandafter\ifx\csname urlstyle\endcsname\relax\else" 2116 | write$ newline$ 2117 | " \urlstyle{same}\fi" 2118 | write$ newline$ 2119 | show.doi 2120 | { "\expandafter\ifx\csname href\endcsname\relax" 2121 | write$ newline$ 2122 | " \DeclareUrlCommand\doi{\urlstyle{rm}}\else" 2123 | write$ newline$ 2124 | " \providecommand\doi[1]{\href{https://doi.org/#1}{\nolinkurl{#1}}}\fi" 2125 | write$ newline$ 2126 | } 2127 | 'skip$ 2128 | if$ 2129 | } 2130 | 2131 | FUNCTION {end.bib} 2132 | { newline$ 2133 | "\end{thebibliography}" write$ newline$ 2134 | } 2135 | 2136 | READ 2137 | 2138 | EXECUTE {init.state.consts} 2139 | 2140 | EXECUTE {load.config} 2141 | 2142 | ITERATE {presort} 2143 | 2144 | SORT 2145 | 2146 | EXECUTE {initialize.longest.label} 2147 | 2148 | ITERATE {forward.pass} 2149 | 2150 | REVERSE {reverse.pass} 2151 | 2152 | ITERATE {bib.sort.order} 2153 | 2154 | SORT 2155 | 2156 | EXECUTE {begin.bib} 2157 | 2158 | ITERATE {call.type$} 2159 | 2160 | EXECUTE {end.bib} 2161 | -------------------------------------------------------------------------------- /gbt7714-numerical.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-numerical.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,numerical') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | INTEGERS { 24 | uppercase.name 25 | max.num.authors 26 | period.between.author.year 27 | sentence.case.title 28 | link.title 29 | title.in.journal 30 | show.mark 31 | show.medium.type 32 | slash.for.extraction 33 | in.booktitle 34 | abbreviate.journal 35 | italic.journal 36 | bold.journal.volume 37 | show.missing.address.publisher 38 | space.before.pages 39 | only.start.page 40 | show.url 41 | show.doi 42 | show.note 43 | show.english.translation 44 | } 45 | 46 | FUNCTION {load.config} 47 | { 48 | #1 'uppercase.name := 49 | #3 'max.num.authors := 50 | #1 'sentence.case.title := 51 | #0 'link.title := 52 | #1 'title.in.journal := 53 | #1 'show.mark := 54 | #1 'show.medium.type := 55 | #1 'slash.for.extraction := 56 | #0 'in.booktitle := 57 | #0 'abbreviate.journal := 58 | #0 'italic.journal := 59 | #0 'bold.journal.volume := 60 | #0 'show.missing.address.publisher := 61 | #0 'space.before.pages := 62 | #0 'only.start.page := 63 | #1 'show.url := 64 | #1 'show.doi := 65 | #0 'show.note := 66 | #0 'show.english.translation := 67 | } 68 | 69 | ENTRY 70 | { address 71 | author 72 | booktitle 73 | date 74 | doi 75 | edition 76 | editor 77 | howpublished 78 | institution 79 | journal 80 | key 81 | language 82 | mark 83 | medium 84 | note 85 | number 86 | organization 87 | pages 88 | publisher 89 | school 90 | series 91 | title 92 | translator 93 | translation 94 | url 95 | urldate 96 | volume 97 | year 98 | } 99 | { entry.lang entry.is.electronic entry.numbered } 100 | { label extra.label sort.label short.list entry.mark entry.url } 101 | 102 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 103 | 104 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 105 | 106 | INTEGERS { charptr len } 107 | 108 | FUNCTION {init.state.consts} 109 | { #0 'before.all := 110 | #1 'mid.sentence := 111 | #2 'after.sentence := 112 | #3 'after.block := 113 | #4 'after.slash := 114 | #3 'lang.zh := 115 | #4 'lang.ja := 116 | #1 'lang.en := 117 | #2 'lang.ru := 118 | #0 'lang.other := 119 | } 120 | 121 | FUNCTION {bbl.anonymous} 122 | { entry.lang lang.zh = 123 | { "佚名" } 124 | { "Anon" } 125 | if$ 126 | } 127 | 128 | FUNCTION {bbl.space} 129 | { entry.lang lang.zh = 130 | { "\ " } 131 | { " " } 132 | if$ 133 | } 134 | 135 | FUNCTION {bbl.et.al} 136 | { entry.lang lang.zh = 137 | { "等" } 138 | { entry.lang lang.ja = 139 | { "他" } 140 | { entry.lang lang.ru = 141 | { "идр" } 142 | { "et~al." } 143 | if$ 144 | } 145 | if$ 146 | } 147 | if$ 148 | } 149 | 150 | FUNCTION {citation.et.al} 151 | { bbl.et.al } 152 | 153 | FUNCTION {bbl.colon} { ": " } 154 | 155 | FUNCTION {bbl.wide.space} { "\quad " } 156 | 157 | FUNCTION {bbl.slash} { "//\allowbreak " } 158 | 159 | FUNCTION {bbl.sine.loco} 160 | { entry.lang lang.zh = 161 | { "[出版地不详]" } 162 | { "[S.l.]" } 163 | if$ 164 | } 165 | 166 | FUNCTION {bbl.sine.nomine} 167 | { entry.lang lang.zh = 168 | { "[出版者不详]" } 169 | { "[s.n.]" } 170 | if$ 171 | } 172 | 173 | FUNCTION {bbl.sine.loco.sine.nomine} 174 | { entry.lang lang.zh = 175 | { "[出版地不详: 出版者不详]" } 176 | { "[S.l.: s.n.]" } 177 | if$ 178 | } 179 | 180 | FUNCTION {not} 181 | { { #0 } 182 | { #1 } 183 | if$ 184 | } 185 | 186 | FUNCTION {and} 187 | { 'skip$ 188 | { pop$ #0 } 189 | if$ 190 | } 191 | 192 | FUNCTION {or} 193 | { { pop$ #1 } 194 | 'skip$ 195 | if$ 196 | } 197 | 198 | STRINGS { s t } 199 | 200 | FUNCTION {output.nonnull} 201 | { 's := 202 | output.state mid.sentence = 203 | { ", " * write$ } 204 | { output.state after.block = 205 | { add.period$ write$ 206 | newline$ 207 | "\newblock " write$ 208 | } 209 | { output.state before.all = 210 | 'write$ 211 | { output.state after.slash = 212 | { bbl.slash * write$ 213 | newline$ 214 | } 215 | { add.period$ " " * write$ } 216 | if$ 217 | } 218 | if$ 219 | } 220 | if$ 221 | mid.sentence 'output.state := 222 | } 223 | if$ 224 | s 225 | } 226 | 227 | FUNCTION {output} 228 | { duplicate$ empty$ 229 | 'pop$ 230 | 'output.nonnull 231 | if$ 232 | } 233 | 234 | FUNCTION {output.after} 235 | { 't := 236 | duplicate$ empty$ 237 | 'pop$ 238 | { 's := 239 | output.state mid.sentence = 240 | { t * write$ } 241 | { output.state after.block = 242 | { add.period$ write$ 243 | newline$ 244 | "\newblock " write$ 245 | } 246 | { output.state before.all = 247 | 'write$ 248 | { output.state after.slash = 249 | { bbl.slash * write$ } 250 | { add.period$ " " * write$ } 251 | if$ 252 | } 253 | if$ 254 | } 255 | if$ 256 | mid.sentence 'output.state := 257 | } 258 | if$ 259 | s 260 | } 261 | if$ 262 | } 263 | 264 | FUNCTION {output.check} 265 | { 't := 266 | duplicate$ empty$ 267 | { pop$ "empty " t * " in " * cite$ * warning$ } 268 | 'output.nonnull 269 | if$ 270 | } 271 | 272 | FUNCTION {fin.entry} 273 | { add.period$ 274 | write$ 275 | show.english.translation entry.lang lang.zh = and 276 | { ")" 277 | write$ 278 | } 279 | 'skip$ 280 | if$ 281 | newline$ 282 | } 283 | 284 | FUNCTION {new.block} 285 | { output.state before.all = 286 | 'skip$ 287 | { output.state after.slash = 288 | 'skip$ 289 | { after.block 'output.state := } 290 | if$ 291 | } 292 | if$ 293 | } 294 | 295 | FUNCTION {new.sentence} 296 | { output.state after.block = 297 | 'skip$ 298 | { output.state before.all = 299 | 'skip$ 300 | { output.state after.slash = 301 | 'skip$ 302 | { after.sentence 'output.state := } 303 | if$ 304 | } 305 | if$ 306 | } 307 | if$ 308 | } 309 | 310 | FUNCTION {new.slash} 311 | { output.state before.all = 312 | 'skip$ 313 | { slash.for.extraction 314 | { after.slash 'output.state := } 315 | { after.block 'output.state := } 316 | if$ 317 | } 318 | if$ 319 | } 320 | 321 | FUNCTION {new.block.checka} 322 | { empty$ 323 | 'skip$ 324 | 'new.block 325 | if$ 326 | } 327 | 328 | FUNCTION {new.block.checkb} 329 | { empty$ 330 | swap$ empty$ 331 | and 332 | 'skip$ 333 | 'new.block 334 | if$ 335 | } 336 | 337 | FUNCTION {new.sentence.checka} 338 | { empty$ 339 | 'skip$ 340 | 'new.sentence 341 | if$ 342 | } 343 | 344 | FUNCTION {new.sentence.checkb} 345 | { empty$ 346 | swap$ empty$ 347 | and 348 | 'skip$ 349 | 'new.sentence 350 | if$ 351 | } 352 | 353 | FUNCTION {field.or.null} 354 | { duplicate$ empty$ 355 | { pop$ "" } 356 | 'skip$ 357 | if$ 358 | } 359 | 360 | FUNCTION {italicize} 361 | { duplicate$ empty$ 362 | { pop$ "" } 363 | { "\textit{" swap$ * "}" * } 364 | if$ 365 | } 366 | 367 | INTEGERS { byte second.byte } 368 | 369 | INTEGERS { char.lang tmp.lang } 370 | 371 | STRINGS { tmp.str } 372 | 373 | FUNCTION {get.str.lang} 374 | { 'tmp.str := 375 | lang.other 'tmp.lang := 376 | #1 'charptr := 377 | tmp.str text.length$ #1 + 'len := 378 | { charptr len < } 379 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 380 | byte #128 < 381 | { charptr #1 + 'charptr := 382 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 383 | { lang.en 'char.lang := } 384 | { lang.other 'char.lang := } 385 | if$ 386 | } 387 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 388 | byte #224 < 389 | { charptr #2 + 'charptr := 390 | byte #207 > byte #212 < and 391 | byte #212 = second.byte #176 < and or 392 | { lang.ru 'char.lang := } 393 | { lang.other 'char.lang := } 394 | if$ 395 | } 396 | { byte #240 < 397 | { charptr #3 + 'charptr := 398 | byte #227 > byte #234 < and 399 | { lang.zh 'char.lang := } 400 | { byte #227 = 401 | { second.byte #143 > 402 | { lang.zh 'char.lang := } 403 | { second.byte #128 > second.byte #132 < and 404 | { lang.ja 'char.lang := } 405 | { lang.other 'char.lang := } 406 | if$ 407 | } 408 | if$ 409 | } 410 | { byte #239 = 411 | second.byte #163 > second.byte #172 < and and 412 | { lang.zh 'char.lang := } 413 | { lang.other 'char.lang := } 414 | if$ 415 | } 416 | if$ 417 | } 418 | if$ 419 | } 420 | { charptr #4 + 'charptr := 421 | byte #240 = second.byte #159 > and 422 | { lang.zh 'char.lang := } 423 | { lang.other 'char.lang := } 424 | if$ 425 | } 426 | if$ 427 | } 428 | if$ 429 | } 430 | if$ 431 | char.lang tmp.lang > 432 | { char.lang 'tmp.lang := } 433 | 'skip$ 434 | if$ 435 | } 436 | while$ 437 | tmp.lang 438 | } 439 | 440 | FUNCTION {check.entry.lang} 441 | { author field.or.null 442 | title field.or.null * 443 | get.str.lang 444 | } 445 | 446 | FUNCTION {set.entry.lang} 447 | { language empty$ 448 | { check.entry.lang } 449 | { language "english" = language "american" = or language "british" = or 450 | { lang.en } 451 | { language "chinese" = 452 | { lang.zh } 453 | { language "japanese" = 454 | { lang.ja } 455 | { language "russian" = 456 | { lang.ru } 457 | { check.entry.lang } 458 | if$ 459 | } 460 | if$ 461 | } 462 | if$ 463 | } 464 | if$ 465 | } 466 | if$ 467 | 'entry.lang := 468 | } 469 | 470 | FUNCTION {set.entry.numbered} 471 | { type$ "patent" = 472 | type$ "standard" = or 473 | type$ "techreport" = or 474 | { #1 'entry.numbered := } 475 | { #0 'entry.numbered := } 476 | if$ 477 | } 478 | 479 | INTEGERS { nameptr namesleft numnames name.lang } 480 | 481 | FUNCTION {format.names} 482 | { 's := 483 | #1 'nameptr := 484 | s num.names$ 'numnames := 485 | numnames 'namesleft := 486 | { namesleft #0 > } 487 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 488 | nameptr max.num.authors > 489 | { bbl.et.al 490 | #1 'namesleft := 491 | } 492 | { t "others" = 493 | { bbl.et.al } 494 | { t get.str.lang 'name.lang := 495 | name.lang lang.en = 496 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 497 | uppercase.name 498 | { "u" change.case$ } 499 | 'skip$ 500 | if$ 501 | t #1 "{, jj}" format.name$ * 502 | } 503 | { t #1 "{ll}{ff}" format.name$ } 504 | if$ 505 | } 506 | if$ 507 | } 508 | if$ 509 | nameptr #1 > 510 | { ", " swap$ * * } 511 | 'skip$ 512 | if$ 513 | nameptr #1 + 'nameptr := 514 | namesleft #1 - 'namesleft := 515 | } 516 | while$ 517 | } 518 | 519 | FUNCTION {format.key} 520 | { empty$ 521 | { key field.or.null } 522 | { "" } 523 | if$ 524 | } 525 | 526 | FUNCTION {format.authors} 527 | { author empty$ not 528 | { author format.names } 529 | { "empty author in " cite$ * warning$ 530 | "" 531 | } 532 | if$ 533 | } 534 | 535 | FUNCTION {format.editors} 536 | { editor empty$ 537 | { "" } 538 | { editor format.names } 539 | if$ 540 | } 541 | 542 | FUNCTION {format.translators} 543 | { translator empty$ 544 | { "" } 545 | { translator format.names 546 | entry.lang lang.zh = 547 | { translator num.names$ #3 > 548 | { "译" * } 549 | { ", 译" * } 550 | if$ 551 | } 552 | 'skip$ 553 | if$ 554 | } 555 | if$ 556 | } 557 | 558 | FUNCTION {format.full.names} 559 | {'s := 560 | #1 'nameptr := 561 | s num.names$ 'numnames := 562 | numnames 'namesleft := 563 | { namesleft #0 > } 564 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 565 | t get.str.lang 'name.lang := 566 | name.lang lang.en = 567 | { t #1 "{vv~}{ll}" format.name$ 't := } 568 | { t #1 "{ll}{ff}" format.name$ 't := } 569 | if$ 570 | nameptr #1 > 571 | { 572 | namesleft #1 > 573 | { ", " * t * } 574 | { 575 | numnames #2 > 576 | { "," * } 577 | 'skip$ 578 | if$ 579 | t "others" = 580 | { " et~al." * } 581 | { " and " * t * } 582 | if$ 583 | } 584 | if$ 585 | } 586 | 't 587 | if$ 588 | nameptr #1 + 'nameptr := 589 | namesleft #1 - 'namesleft := 590 | } 591 | while$ 592 | } 593 | 594 | FUNCTION {author.editor.full} 595 | { author empty$ 596 | { editor empty$ 597 | { "" } 598 | { editor format.full.names } 599 | if$ 600 | } 601 | { author format.full.names } 602 | if$ 603 | } 604 | 605 | FUNCTION {author.full} 606 | { author empty$ 607 | { "" } 608 | { author format.full.names } 609 | if$ 610 | } 611 | 612 | FUNCTION {editor.full} 613 | { editor empty$ 614 | { "" } 615 | { editor format.full.names } 616 | if$ 617 | } 618 | 619 | FUNCTION {make.full.names} 620 | { type$ "book" = 621 | type$ "inbook" = 622 | or 623 | 'author.editor.full 624 | { type$ "collection" = 625 | type$ "proceedings" = 626 | or 627 | 'editor.full 628 | 'author.full 629 | if$ 630 | } 631 | if$ 632 | } 633 | 634 | FUNCTION {output.bibitem} 635 | { newline$ 636 | "\bibitem[" write$ 637 | label ")" * 638 | make.full.names duplicate$ short.list = 639 | { pop$ } 640 | { * } 641 | if$ 642 | 's := 643 | s text.length$ 'charptr := 644 | { charptr #0 > s charptr #1 substring$ "[" = not and } 645 | { charptr #1 - 'charptr := } 646 | while$ 647 | charptr #0 > 648 | { "{" s * "}" * } 649 | { s } 650 | if$ 651 | "]{" * write$ 652 | cite$ write$ 653 | "}" write$ 654 | newline$ 655 | "" 656 | before.all 'output.state := 657 | } 658 | 659 | FUNCTION {change.sentence.case} 660 | { entry.lang lang.en = 661 | { "t" change.case$ } 662 | 'skip$ 663 | if$ 664 | } 665 | 666 | FUNCTION {add.link} 667 | { url empty$ not 668 | { "\href{" url * "}{" * swap$ * "}" * } 669 | { doi empty$ not 670 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 671 | 'skip$ 672 | if$ 673 | } 674 | if$ 675 | } 676 | 677 | FUNCTION {format.title} 678 | { title empty$ 679 | { "" } 680 | { title 681 | sentence.case.title 682 | 'change.sentence.case 683 | 'skip$ 684 | if$ 685 | entry.numbered number empty$ not and 686 | { bbl.colon * number * } 687 | 'skip$ 688 | if$ 689 | link.title 690 | 'add.link 691 | 'skip$ 692 | if$ 693 | } 694 | if$ 695 | } 696 | 697 | FUNCTION {tie.or.space.connect} 698 | { duplicate$ text.length$ #3 < 699 | { "~" } 700 | { " " } 701 | if$ 702 | swap$ * * 703 | } 704 | 705 | FUNCTION {either.or.check} 706 | { empty$ 707 | 'pop$ 708 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 709 | if$ 710 | } 711 | 712 | FUNCTION {is.digit} 713 | { duplicate$ empty$ 714 | { pop$ #0 } 715 | { chr.to.int$ 716 | duplicate$ "0" chr.to.int$ < 717 | { pop$ #0 } 718 | { "9" chr.to.int$ > 719 | { #0 } 720 | { #1 } 721 | if$ 722 | } 723 | if$ 724 | } 725 | if$ 726 | } 727 | 728 | FUNCTION {is.number} 729 | { 's := 730 | s empty$ 731 | { #0 } 732 | { s text.length$ 'charptr := 733 | { charptr #0 > 734 | s charptr #1 substring$ is.digit 735 | and 736 | } 737 | { charptr #1 - 'charptr := } 738 | while$ 739 | charptr not 740 | } 741 | if$ 742 | } 743 | 744 | FUNCTION {format.volume} 745 | { volume empty$ not 746 | { volume is.number 747 | { entry.lang lang.zh = 748 | { "第 " volume * " 卷" * } 749 | { "volume" volume tie.or.space.connect } 750 | if$ 751 | } 752 | { volume } 753 | if$ 754 | } 755 | { "" } 756 | if$ 757 | } 758 | 759 | FUNCTION {format.number} 760 | { number empty$ not 761 | { number is.number 762 | { entry.lang lang.zh = 763 | { "第 " number * " 册" * } 764 | { "number" number tie.or.space.connect } 765 | if$ 766 | } 767 | { number } 768 | if$ 769 | } 770 | { "" } 771 | if$ 772 | } 773 | 774 | FUNCTION {format.volume.number} 775 | { volume empty$ not 776 | { format.volume } 777 | { format.number } 778 | if$ 779 | } 780 | 781 | FUNCTION {format.title.vol.num} 782 | { title 783 | sentence.case.title 784 | 'change.sentence.case 785 | 'skip$ 786 | if$ 787 | entry.numbered 788 | { number empty$ not 789 | { bbl.colon * number * } 790 | 'skip$ 791 | if$ 792 | } 793 | { format.volume.number 's := 794 | s empty$ not 795 | { bbl.colon * s * } 796 | 'skip$ 797 | if$ 798 | } 799 | if$ 800 | } 801 | 802 | FUNCTION {format.series.vol.num.title} 803 | { format.volume.number 's := 804 | series empty$ not 805 | { series 806 | sentence.case.title 807 | 'change.sentence.case 808 | 'skip$ 809 | if$ 810 | entry.numbered 811 | { bbl.wide.space * } 812 | { bbl.colon * 813 | s empty$ not 814 | { s * bbl.wide.space * } 815 | 'skip$ 816 | if$ 817 | } 818 | if$ 819 | title * 820 | sentence.case.title 821 | 'change.sentence.case 822 | 'skip$ 823 | if$ 824 | entry.numbered number empty$ not and 825 | { bbl.colon * number * } 826 | 'skip$ 827 | if$ 828 | } 829 | { format.title.vol.num } 830 | if$ 831 | link.title 832 | 'add.link 833 | 'skip$ 834 | if$ 835 | } 836 | 837 | FUNCTION {format.booktitle.vol.num} 838 | { booktitle 839 | entry.numbered 840 | 'skip$ 841 | { format.volume.number 's := 842 | s empty$ not 843 | { bbl.colon * s * } 844 | 'skip$ 845 | if$ 846 | } 847 | if$ 848 | } 849 | 850 | FUNCTION {format.series.vol.num.booktitle} 851 | { format.volume.number 's := 852 | series empty$ not 853 | { series bbl.colon * 854 | entry.numbered not s empty$ not and 855 | { s * bbl.wide.space * } 856 | 'skip$ 857 | if$ 858 | booktitle * 859 | } 860 | { format.booktitle.vol.num } 861 | if$ 862 | in.booktitle 863 | { duplicate$ empty$ not entry.lang lang.en = and 864 | { "In: " swap$ * } 865 | 'skip$ 866 | if$ 867 | } 868 | 'skip$ 869 | if$ 870 | } 871 | 872 | FUNCTION {remove.period} 873 | { 't := 874 | "" 's := 875 | { t empty$ not } 876 | { t #1 #1 substring$ 'tmp.str := 877 | tmp.str "." = not 878 | { s tmp.str * 's := } 879 | 'skip$ 880 | if$ 881 | t #2 global.max$ substring$ 't := 882 | } 883 | while$ 884 | s 885 | } 886 | 887 | FUNCTION {abbreviate} 888 | { remove.period 889 | 't := 890 | t "l" change.case$ 's := 891 | "" 892 | s "physical review letters" = 893 | { "Phys Rev Lett" } 894 | 'skip$ 895 | if$ 896 | 's := 897 | s empty$ 898 | { t } 899 | { pop$ s } 900 | if$ 901 | } 902 | 903 | FUNCTION {format.journal} 904 | { journal empty$ not 905 | { journal 906 | abbreviate.journal 907 | 'abbreviate 908 | 'skip$ 909 | if$ 910 | italic.journal entry.lang lang.en = and 911 | 'italicize 912 | 'skip$ 913 | if$ 914 | } 915 | { "" } 916 | if$ 917 | } 918 | 919 | FUNCTION {set.entry.mark} 920 | { entry.mark empty$ not 921 | 'pop$ 922 | { mark empty$ not 923 | { pop$ mark 'entry.mark := } 924 | { 'entry.mark := } 925 | if$ 926 | } 927 | if$ 928 | } 929 | 930 | FUNCTION {format.mark} 931 | { show.mark 932 | { entry.mark 933 | show.medium.type 934 | { medium empty$ not 935 | { "/" * medium * } 936 | { entry.is.electronic 937 | { "/OL" * } 938 | 'skip$ 939 | if$ 940 | } 941 | if$ 942 | } 943 | 'skip$ 944 | if$ 945 | 'entry.mark := 946 | "\allowbreak[" entry.mark * "]" * 947 | } 948 | { "" } 949 | if$ 950 | } 951 | 952 | FUNCTION {num.to.ordinal} 953 | { duplicate$ text.length$ 'charptr := 954 | duplicate$ charptr #1 substring$ 's := 955 | s "1" = 956 | { "st" * } 957 | { s "2" = 958 | { "nd" * } 959 | { s "3" = 960 | { "rd" * } 961 | { "th" * } 962 | if$ 963 | } 964 | if$ 965 | } 966 | if$ 967 | } 968 | 969 | FUNCTION {format.edition} 970 | { edition empty$ 971 | { "" } 972 | { edition is.number 973 | { entry.lang lang.zh = 974 | { edition " 版" * } 975 | { edition num.to.ordinal " ed." * } 976 | if$ 977 | } 978 | { entry.lang lang.en = 979 | { edition change.sentence.case 's := 980 | s "Revised" = s "Revised edition" = or 981 | { "Rev. ed." } 982 | { s " ed." *} 983 | if$ 984 | } 985 | { edition } 986 | if$ 987 | } 988 | if$ 989 | } 990 | if$ 991 | } 992 | 993 | FUNCTION {format.publisher} 994 | { publisher empty$ not 995 | { publisher } 996 | { school empty$ not 997 | { school } 998 | { organization empty$ not 999 | { organization } 1000 | { institution empty$ not 1001 | { institution } 1002 | { "" } 1003 | if$ 1004 | } 1005 | if$ 1006 | } 1007 | if$ 1008 | } 1009 | if$ 1010 | } 1011 | 1012 | FUNCTION {format.address.publisher} 1013 | { address empty$ not 1014 | { address 1015 | format.publisher empty$ not 1016 | { bbl.colon * format.publisher * } 1017 | { entry.is.electronic not show.missing.address.publisher and 1018 | { bbl.colon * bbl.sine.nomine * } 1019 | 'skip$ 1020 | if$ 1021 | } 1022 | if$ 1023 | } 1024 | { entry.is.electronic not show.missing.address.publisher and 1025 | { format.publisher empty$ not 1026 | { bbl.sine.loco bbl.colon * format.publisher * } 1027 | { bbl.sine.loco.sine.nomine } 1028 | if$ 1029 | } 1030 | { format.publisher empty$ not 1031 | { format.publisher } 1032 | { "" } 1033 | if$ 1034 | } 1035 | if$ 1036 | } 1037 | if$ 1038 | } 1039 | 1040 | FUNCTION {extract.before.dash} 1041 | { duplicate$ empty$ 1042 | { pop$ "" } 1043 | { 's := 1044 | #1 'charptr := 1045 | s text.length$ #1 + 'len := 1046 | { charptr len < 1047 | s charptr #1 substring$ "-" = not 1048 | and 1049 | } 1050 | { charptr #1 + 'charptr := } 1051 | while$ 1052 | s #1 charptr #1 - substring$ 1053 | } 1054 | if$ 1055 | } 1056 | 1057 | FUNCTION {extract.after.dash} 1058 | { duplicate$ empty$ 1059 | { pop$ "" } 1060 | { 's := 1061 | #1 'charptr := 1062 | s text.length$ #1 + 'len := 1063 | { charptr len < 1064 | s charptr #1 substring$ "-" = not 1065 | and 1066 | } 1067 | { charptr #1 + 'charptr := } 1068 | while$ 1069 | { charptr len < 1070 | s charptr #1 substring$ "-" = 1071 | and 1072 | } 1073 | { charptr #1 + 'charptr := } 1074 | while$ 1075 | s charptr global.max$ substring$ 1076 | } 1077 | if$ 1078 | } 1079 | 1080 | FUNCTION {contains.dash} 1081 | { duplicate$ empty$ 1082 | { pop$ #0 } 1083 | { 's := 1084 | { s empty$ not 1085 | s #1 #1 substring$ "-" = not 1086 | and 1087 | } 1088 | { s #2 global.max$ substring$ 's := } 1089 | while$ 1090 | s empty$ not 1091 | } 1092 | if$ 1093 | } 1094 | 1095 | FUNCTION {format.year} 1096 | { year empty$ not 1097 | { year extract.before.dash } 1098 | { date empty$ not 1099 | { date extract.before.dash } 1100 | { "empty year in " cite$ * warning$ 1101 | urldate empty$ not 1102 | { "[" urldate extract.before.dash * "]" * } 1103 | { "" } 1104 | if$ 1105 | } 1106 | if$ 1107 | } 1108 | if$ 1109 | extra.label * 1110 | } 1111 | 1112 | FUNCTION {format.date} 1113 | { type$ "patent" = type$ "newspaper" = or 1114 | date empty$ not and 1115 | { date } 1116 | { year } 1117 | if$ 1118 | } 1119 | 1120 | FUNCTION {format.editdate} 1121 | { date empty$ not 1122 | { "\allowbreak(" date * ")" * } 1123 | { "" } 1124 | if$ 1125 | } 1126 | 1127 | FUNCTION {format.urldate} 1128 | { urldate empty$ not entry.is.electronic and 1129 | { "\allowbreak[" urldate * "]" * } 1130 | { "" } 1131 | if$ 1132 | } 1133 | 1134 | FUNCTION {hyphenate} 1135 | { 't := 1136 | "" 1137 | { t empty$ not } 1138 | { t #1 #1 substring$ "-" = 1139 | { "-" * 1140 | { t #1 #1 substring$ "-" = } 1141 | { t #2 global.max$ substring$ 't := } 1142 | while$ 1143 | } 1144 | { t #1 #1 substring$ * 1145 | t #2 global.max$ substring$ 't := 1146 | } 1147 | if$ 1148 | } 1149 | while$ 1150 | } 1151 | 1152 | FUNCTION {format.pages} 1153 | { pages empty$ 1154 | { "" } 1155 | { pages 1156 | only.start.page 1157 | 'extract.before.dash 1158 | 'hyphenate 1159 | if$ 1160 | } 1161 | if$ 1162 | } 1163 | 1164 | FUNCTION {format.journal.volume} 1165 | { volume empty$ not 1166 | { bold.journal.volume 1167 | { "\textbf{" volume * "}" * } 1168 | { volume } 1169 | if$ 1170 | } 1171 | { "" } 1172 | if$ 1173 | } 1174 | 1175 | FUNCTION {format.journal.number} 1176 | { number empty$ not 1177 | { "\penalty0 (" number * ")" * } 1178 | { "" } 1179 | if$ 1180 | } 1181 | 1182 | FUNCTION {format.journal.pages} 1183 | { pages empty$ 1184 | { "" } 1185 | { space.before.pages 1186 | { ": " } 1187 | { ":\penalty0 " } 1188 | if$ 1189 | format.pages * 1190 | } 1191 | if$ 1192 | } 1193 | 1194 | FUNCTION {format.periodical.year.volume.number} 1195 | { year empty$ not 1196 | { year extract.before.dash } 1197 | { "empty year in periodical " cite$ * warning$ } 1198 | if$ 1199 | volume empty$ not 1200 | { ", " * volume extract.before.dash * } 1201 | 'skip$ 1202 | if$ 1203 | number empty$ not 1204 | { "\penalty0 (" * number extract.before.dash * ")" * } 1205 | 'skip$ 1206 | if$ 1207 | year contains.dash 1208 | { "--" * 1209 | year extract.after.dash empty$ 1210 | volume extract.after.dash empty$ and 1211 | number extract.after.dash empty$ and not 1212 | { year extract.after.dash empty$ not 1213 | { year extract.after.dash * } 1214 | { year extract.before.dash * } 1215 | if$ 1216 | volume empty$ not 1217 | { ", " * volume extract.after.dash * } 1218 | 'skip$ 1219 | if$ 1220 | number empty$ not 1221 | { "\penalty0 (" * number extract.after.dash * ")" * } 1222 | 'skip$ 1223 | if$ 1224 | } 1225 | 'skip$ 1226 | if$ 1227 | } 1228 | 'skip$ 1229 | if$ 1230 | } 1231 | 1232 | FUNCTION {check.url} 1233 | { url empty$ not 1234 | { "\url{" url * "}" * 'entry.url := 1235 | #1 'entry.is.electronic := 1236 | } 1237 | { howpublished empty$ not 1238 | { howpublished #1 #5 substring$ "\url{" = 1239 | { howpublished 'entry.url := 1240 | #1 'entry.is.electronic := 1241 | } 1242 | 'skip$ 1243 | if$ 1244 | } 1245 | { note empty$ not 1246 | { note #1 #5 substring$ "\url{" = 1247 | { note 'entry.url := 1248 | #1 'entry.is.electronic := 1249 | } 1250 | 'skip$ 1251 | if$ 1252 | } 1253 | 'skip$ 1254 | if$ 1255 | } 1256 | if$ 1257 | } 1258 | if$ 1259 | } 1260 | 1261 | FUNCTION {format.url} 1262 | { entry.url 1263 | } 1264 | 1265 | FUNCTION {output.url} 1266 | { entry.url empty$ not 1267 | { new.block 1268 | entry.url output 1269 | } 1270 | 'skip$ 1271 | if$ 1272 | } 1273 | 1274 | FUNCTION {check.doi} 1275 | { doi empty$ not 1276 | { #1 'entry.is.electronic := } 1277 | 'skip$ 1278 | if$ 1279 | } 1280 | 1281 | FUNCTION {is.in.url} 1282 | { 's := 1283 | s empty$ 1284 | { #1 } 1285 | { entry.url empty$ 1286 | { #0 } 1287 | { s text.length$ 'len := 1288 | entry.url text.length$ 'charptr := 1289 | { entry.url charptr len substring$ s = not 1290 | charptr #0 > 1291 | and 1292 | } 1293 | { charptr #1 - 'charptr := } 1294 | while$ 1295 | charptr 1296 | } 1297 | if$ 1298 | } 1299 | if$ 1300 | } 1301 | 1302 | FUNCTION {format.doi} 1303 | { "" 1304 | doi empty$ not 1305 | { "" 's := 1306 | doi 't := 1307 | #0 'numnames := 1308 | { t empty$ not} 1309 | { t #1 #1 substring$ 'tmp.str := 1310 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1311 | { t #2 #1 substring$ empty$ 1312 | { s tmp.str * 's := } 1313 | 'skip$ 1314 | if$ 1315 | s empty$ s is.in.url or 1316 | 'skip$ 1317 | { numnames #1 + 'numnames := 1318 | numnames #1 > 1319 | { ", " * } 1320 | { "DOI: " * } 1321 | if$ 1322 | "\doi{" s * "}" * * 1323 | } 1324 | if$ 1325 | "" 's := 1326 | } 1327 | { s tmp.str * 's := } 1328 | if$ 1329 | t #2 global.max$ substring$ 't := 1330 | } 1331 | while$ 1332 | } 1333 | 'skip$ 1334 | if$ 1335 | } 1336 | 1337 | FUNCTION {output.doi} 1338 | { doi empty$ not show.doi and 1339 | show.english.translation entry.lang lang.zh = and not and 1340 | { new.block 1341 | format.doi output 1342 | } 1343 | 'skip$ 1344 | if$ 1345 | } 1346 | 1347 | FUNCTION {check.electronic} 1348 | { "" 'entry.url := 1349 | #0 'entry.is.electronic := 1350 | 'check.doi 1351 | 'skip$ 1352 | if$ 1353 | 'check.url 1354 | 'skip$ 1355 | if$ 1356 | medium empty$ not 1357 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1358 | { #1 'entry.is.electronic := } 1359 | 'skip$ 1360 | if$ 1361 | } 1362 | 'skip$ 1363 | if$ 1364 | } 1365 | 1366 | FUNCTION {format.note} 1367 | { note empty$ not show.note and 1368 | { note } 1369 | { "" } 1370 | if$ 1371 | } 1372 | 1373 | FUNCTION {output.translation} 1374 | { show.english.translation entry.lang lang.zh = and 1375 | { translation empty$ not 1376 | { translation } 1377 | { "[English translation missing!]" } 1378 | if$ 1379 | " (in Chinese)" * output 1380 | write$ 1381 | format.doi duplicate$ empty$ not 1382 | { newline$ 1383 | write$ 1384 | } 1385 | 'pop$ 1386 | if$ 1387 | " \\" write$ 1388 | newline$ 1389 | "(" write$ 1390 | "" 1391 | before.all 'output.state := 1392 | } 1393 | 'skip$ 1394 | if$ 1395 | } 1396 | 1397 | FUNCTION {empty.misc.check} 1398 | { author empty$ title empty$ 1399 | year empty$ 1400 | and and 1401 | key empty$ not and 1402 | { "all relevant fields are empty in " cite$ * warning$ } 1403 | 'skip$ 1404 | if$ 1405 | } 1406 | 1407 | FUNCTION {monograph} 1408 | { output.bibitem 1409 | output.translation 1410 | author empty$ not 1411 | { format.authors } 1412 | { editor empty$ not 1413 | { format.editors } 1414 | { "empty author and editor in " cite$ * warning$ 1415 | "" 1416 | } 1417 | if$ 1418 | } 1419 | if$ 1420 | output 1421 | new.block 1422 | format.series.vol.num.title "title" output.check 1423 | "M" set.entry.mark 1424 | format.mark "" output.after 1425 | new.block 1426 | format.translators output 1427 | new.sentence 1428 | format.edition output 1429 | new.block 1430 | format.address.publisher output 1431 | format.year "year" output.check 1432 | format.pages bbl.colon output.after 1433 | format.urldate "" output.after 1434 | output.url 1435 | output.doi 1436 | new.block 1437 | format.note output 1438 | fin.entry 1439 | } 1440 | 1441 | FUNCTION {incollection} 1442 | { output.bibitem 1443 | output.translation 1444 | format.authors output 1445 | author format.key output 1446 | new.block 1447 | format.title "title" output.check 1448 | "M" set.entry.mark 1449 | format.mark "" output.after 1450 | new.block 1451 | format.translators output 1452 | new.slash 1453 | format.editors output 1454 | new.block 1455 | format.series.vol.num.booktitle "booktitle" output.check 1456 | new.block 1457 | format.edition output 1458 | new.block 1459 | format.address.publisher output 1460 | format.year "year" output.check 1461 | format.pages bbl.colon output.after 1462 | format.urldate "" output.after 1463 | output.url 1464 | output.doi 1465 | new.block 1466 | format.note output 1467 | fin.entry 1468 | } 1469 | 1470 | FUNCTION {periodical} 1471 | { output.bibitem 1472 | output.translation 1473 | format.authors output 1474 | author format.key output 1475 | new.block 1476 | format.title "title" output.check 1477 | "J" set.entry.mark 1478 | format.mark "" output.after 1479 | new.block 1480 | format.periodical.year.volume.number output 1481 | new.block 1482 | format.address.publisher output 1483 | format.date "year" output.check 1484 | format.urldate "" output.after 1485 | output.url 1486 | output.doi 1487 | new.block 1488 | format.note output 1489 | fin.entry 1490 | } 1491 | 1492 | FUNCTION {article} 1493 | { output.bibitem 1494 | output.translation 1495 | format.authors output 1496 | author format.key output 1497 | new.block 1498 | title.in.journal 1499 | { format.title "title" output.check 1500 | "J" set.entry.mark 1501 | format.mark "" output.after 1502 | new.block 1503 | } 1504 | 'skip$ 1505 | if$ 1506 | format.journal "journal" output.check 1507 | format.date "year" output.check 1508 | format.journal.volume output 1509 | format.journal.number "" output.after 1510 | format.journal.pages "" output.after 1511 | format.urldate "" output.after 1512 | output.url 1513 | output.doi 1514 | new.block 1515 | format.note output 1516 | fin.entry 1517 | } 1518 | 1519 | FUNCTION {patent} 1520 | { output.bibitem 1521 | output.translation 1522 | format.authors output 1523 | author format.key output 1524 | new.block 1525 | format.title "title" output.check 1526 | "P" set.entry.mark 1527 | format.mark "" output.after 1528 | new.block 1529 | format.date "year" output.check 1530 | format.urldate "" output.after 1531 | output.url 1532 | output.doi 1533 | new.block 1534 | format.note output 1535 | fin.entry 1536 | } 1537 | 1538 | FUNCTION {electronic} 1539 | { #1 #1 check.electronic 1540 | #1 'entry.is.electronic := 1541 | output.bibitem 1542 | output.translation 1543 | format.authors output 1544 | author format.key output 1545 | new.block 1546 | format.series.vol.num.title "title" output.check 1547 | "EB" set.entry.mark 1548 | format.mark "" output.after 1549 | new.block 1550 | format.address.publisher output 1551 | date empty$ 1552 | { format.date output } 1553 | 'skip$ 1554 | if$ 1555 | format.pages bbl.colon output.after 1556 | format.editdate "" output.after 1557 | format.urldate "" output.after 1558 | output.url 1559 | output.doi 1560 | new.block 1561 | format.note output 1562 | fin.entry 1563 | } 1564 | 1565 | FUNCTION {misc} 1566 | { journal empty$ not 1567 | 'article 1568 | { booktitle empty$ not 1569 | 'incollection 1570 | { publisher empty$ not 1571 | 'monograph 1572 | { entry.is.electronic 1573 | 'electronic 1574 | { "Z" set.entry.mark 1575 | monograph 1576 | } 1577 | if$ 1578 | } 1579 | if$ 1580 | } 1581 | if$ 1582 | } 1583 | if$ 1584 | empty.misc.check 1585 | } 1586 | 1587 | FUNCTION {archive} 1588 | { "A" set.entry.mark 1589 | misc 1590 | } 1591 | 1592 | FUNCTION {book} { monograph } 1593 | 1594 | FUNCTION {booklet} { book } 1595 | 1596 | FUNCTION {collection} 1597 | { "G" set.entry.mark 1598 | monograph 1599 | } 1600 | 1601 | FUNCTION {database} 1602 | { "DB" set.entry.mark 1603 | electronic 1604 | } 1605 | 1606 | FUNCTION {dataset} 1607 | { "DS" set.entry.mark 1608 | electronic 1609 | } 1610 | 1611 | FUNCTION {inbook} { book } 1612 | 1613 | FUNCTION {inproceedings} 1614 | { "C" set.entry.mark 1615 | incollection 1616 | } 1617 | 1618 | FUNCTION {conference} { inproceedings } 1619 | 1620 | FUNCTION {map} 1621 | { "CM" set.entry.mark 1622 | misc 1623 | } 1624 | 1625 | FUNCTION {manual} { monograph } 1626 | 1627 | FUNCTION {mastersthesis} 1628 | { "D" set.entry.mark 1629 | monograph 1630 | } 1631 | 1632 | FUNCTION {newspaper} 1633 | { "N" set.entry.mark 1634 | article 1635 | } 1636 | 1637 | FUNCTION {online} 1638 | { "EB" set.entry.mark 1639 | electronic 1640 | } 1641 | 1642 | FUNCTION {phdthesis} { mastersthesis } 1643 | 1644 | FUNCTION {proceedings} 1645 | { "C" set.entry.mark 1646 | monograph 1647 | } 1648 | 1649 | FUNCTION {software} 1650 | { "CP" set.entry.mark 1651 | electronic 1652 | } 1653 | 1654 | FUNCTION {standard} 1655 | { "S" set.entry.mark 1656 | misc 1657 | } 1658 | 1659 | FUNCTION {techreport} 1660 | { "R" set.entry.mark 1661 | misc 1662 | } 1663 | 1664 | FUNCTION {unpublished} 1665 | { "Z" set.entry.mark 1666 | misc 1667 | } 1668 | 1669 | FUNCTION {default.type} { misc } 1670 | 1671 | MACRO {jan} {"January"} 1672 | 1673 | MACRO {feb} {"February"} 1674 | 1675 | MACRO {mar} {"March"} 1676 | 1677 | MACRO {apr} {"April"} 1678 | 1679 | MACRO {may} {"May"} 1680 | 1681 | MACRO {jun} {"June"} 1682 | 1683 | MACRO {jul} {"July"} 1684 | 1685 | MACRO {aug} {"August"} 1686 | 1687 | MACRO {sep} {"September"} 1688 | 1689 | MACRO {oct} {"October"} 1690 | 1691 | MACRO {nov} {"November"} 1692 | 1693 | MACRO {dec} {"December"} 1694 | 1695 | MACRO {acmcs} {"ACM Computing Surveys"} 1696 | 1697 | MACRO {acta} {"Acta Informatica"} 1698 | 1699 | MACRO {cacm} {"Communications of the ACM"} 1700 | 1701 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1702 | 1703 | MACRO {ibmsj} {"IBM Systems Journal"} 1704 | 1705 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1706 | 1707 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1708 | 1709 | MACRO {ieeetcad} 1710 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1711 | 1712 | MACRO {ipl} {"Information Processing Letters"} 1713 | 1714 | MACRO {jacm} {"Journal of the ACM"} 1715 | 1716 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1717 | 1718 | MACRO {scp} {"Science of Computer Programming"} 1719 | 1720 | MACRO {sicomp} {"SIAM Journal on Computing"} 1721 | 1722 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1723 | 1724 | MACRO {tods} {"ACM Transactions on Database Systems"} 1725 | 1726 | MACRO {tog} {"ACM Transactions on Graphics"} 1727 | 1728 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1729 | 1730 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1731 | 1732 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1733 | 1734 | MACRO {tcs} {"Theoretical Computer Science"} 1735 | 1736 | FUNCTION {sortify} 1737 | { purify$ 1738 | "l" change.case$ 1739 | } 1740 | 1741 | FUNCTION {chop.word} 1742 | { 's := 1743 | 'len := 1744 | s #1 len substring$ = 1745 | { s len #1 + global.max$ substring$ } 1746 | 's 1747 | if$ 1748 | } 1749 | 1750 | FUNCTION {format.lab.names} 1751 | { 's := 1752 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1753 | t get.str.lang 'name.lang := 1754 | name.lang lang.en = 1755 | { t #1 "{vv~}{ll}" format.name$} 1756 | { t #1 "{ll}{ff}" format.name$} 1757 | if$ 1758 | s num.names$ #1 > 1759 | { bbl.space * citation.et.al * } 1760 | 'skip$ 1761 | if$ 1762 | } 1763 | 1764 | FUNCTION {author.key.label} 1765 | { author empty$ 1766 | { key empty$ 1767 | { cite$ #1 #3 substring$ } 1768 | 'key 1769 | if$ 1770 | } 1771 | { author format.lab.names } 1772 | if$ 1773 | } 1774 | 1775 | FUNCTION {author.editor.key.label} 1776 | { author empty$ 1777 | { editor empty$ 1778 | { key empty$ 1779 | { cite$ #1 #3 substring$ } 1780 | 'key 1781 | if$ 1782 | } 1783 | { editor format.lab.names } 1784 | if$ 1785 | } 1786 | { author format.lab.names } 1787 | if$ 1788 | } 1789 | 1790 | FUNCTION {author.key.organization.label} 1791 | { author empty$ 1792 | { key empty$ 1793 | { organization empty$ 1794 | { cite$ #1 #3 substring$ } 1795 | { "The " #4 organization chop.word #3 text.prefix$ } 1796 | if$ 1797 | } 1798 | 'key 1799 | if$ 1800 | } 1801 | { author format.lab.names } 1802 | if$ 1803 | } 1804 | 1805 | FUNCTION {editor.key.organization.label} 1806 | { editor empty$ 1807 | { key empty$ 1808 | { organization empty$ 1809 | { cite$ #1 #3 substring$ } 1810 | { "The " #4 organization chop.word #3 text.prefix$ } 1811 | if$ 1812 | } 1813 | 'key 1814 | if$ 1815 | } 1816 | { editor format.lab.names } 1817 | if$ 1818 | } 1819 | 1820 | FUNCTION {calc.short.authors} 1821 | { type$ "book" = 1822 | type$ "inbook" = 1823 | or 1824 | 'author.editor.key.label 1825 | { type$ "collection" = 1826 | type$ "proceedings" = 1827 | or 1828 | { editor empty$ not 1829 | 'editor.key.organization.label 1830 | 'author.key.organization.label 1831 | if$ 1832 | } 1833 | 'author.key.label 1834 | if$ 1835 | } 1836 | if$ 1837 | 'short.list := 1838 | } 1839 | 1840 | FUNCTION {calc.label} 1841 | { calc.short.authors 1842 | short.list 1843 | "(" 1844 | * 1845 | format.year duplicate$ empty$ 1846 | short.list key field.or.null = or 1847 | { pop$ "" } 1848 | 'skip$ 1849 | if$ 1850 | * 1851 | 'label := 1852 | } 1853 | 1854 | INTEGERS { seq.num } 1855 | 1856 | FUNCTION {init.seq} 1857 | { #0 'seq.num :=} 1858 | 1859 | FUNCTION {int.to.fix} 1860 | { "000000000" swap$ int.to.str$ * 1861 | #-1 #10 substring$ 1862 | } 1863 | 1864 | FUNCTION {presort} 1865 | { set.entry.lang 1866 | set.entry.numbered 1867 | show.url show.doi check.electronic 1868 | calc.label 1869 | label sortify 1870 | " " 1871 | * 1872 | seq.num #1 + 'seq.num := 1873 | seq.num int.to.fix 1874 | 'sort.label := 1875 | sort.label * 1876 | #1 entry.max$ substring$ 1877 | 'sort.key$ := 1878 | } 1879 | 1880 | STRINGS { longest.label last.label next.extra } 1881 | 1882 | INTEGERS { longest.label.width last.extra.num number.label } 1883 | 1884 | FUNCTION {initialize.longest.label} 1885 | { "" 'longest.label := 1886 | #0 int.to.chr$ 'last.label := 1887 | "" 'next.extra := 1888 | #0 'longest.label.width := 1889 | #0 'last.extra.num := 1890 | #0 'number.label := 1891 | } 1892 | 1893 | FUNCTION {forward.pass} 1894 | { last.label label = 1895 | { last.extra.num #1 + 'last.extra.num := 1896 | last.extra.num int.to.chr$ 'extra.label := 1897 | } 1898 | { "a" chr.to.int$ 'last.extra.num := 1899 | "" 'extra.label := 1900 | label 'last.label := 1901 | } 1902 | if$ 1903 | number.label #1 + 'number.label := 1904 | } 1905 | 1906 | FUNCTION {reverse.pass} 1907 | { next.extra "b" = 1908 | { "a" 'extra.label := } 1909 | 'skip$ 1910 | if$ 1911 | extra.label 'next.extra := 1912 | extra.label 1913 | duplicate$ empty$ 1914 | 'skip$ 1915 | { "{\natexlab{" swap$ * "}}" * } 1916 | if$ 1917 | 'extra.label := 1918 | label extra.label * 'label := 1919 | } 1920 | 1921 | FUNCTION {bib.sort.order} 1922 | { sort.label 'sort.key$ := 1923 | } 1924 | 1925 | FUNCTION {begin.bib} 1926 | { preamble$ empty$ 1927 | 'skip$ 1928 | { preamble$ write$ newline$ } 1929 | if$ 1930 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1931 | write$ newline$ 1932 | "\providecommand{\natexlab}[1]{#1}" 1933 | write$ newline$ 1934 | "\providecommand{\url}[1]{#1}" 1935 | write$ newline$ 1936 | "\expandafter\ifx\csname urlstyle\endcsname\relax\else" 1937 | write$ newline$ 1938 | " \urlstyle{same}\fi" 1939 | write$ newline$ 1940 | show.doi 1941 | { "\expandafter\ifx\csname href\endcsname\relax" 1942 | write$ newline$ 1943 | " \DeclareUrlCommand\doi{\urlstyle{rm}}\else" 1944 | write$ newline$ 1945 | " \providecommand\doi[1]{\href{https://doi.org/#1}{\nolinkurl{#1}}}\fi" 1946 | write$ newline$ 1947 | } 1948 | 'skip$ 1949 | if$ 1950 | } 1951 | 1952 | FUNCTION {end.bib} 1953 | { newline$ 1954 | "\end{thebibliography}" write$ newline$ 1955 | } 1956 | 1957 | READ 1958 | 1959 | EXECUTE {init.state.consts} 1960 | 1961 | EXECUTE {load.config} 1962 | 1963 | EXECUTE {init.seq} 1964 | 1965 | ITERATE {presort} 1966 | 1967 | SORT 1968 | 1969 | EXECUTE {initialize.longest.label} 1970 | 1971 | ITERATE {forward.pass} 1972 | 1973 | REVERSE {reverse.pass} 1974 | 1975 | ITERATE {bib.sort.order} 1976 | 1977 | SORT 1978 | 1979 | EXECUTE {begin.bib} 1980 | 1981 | ITERATE {call.type$} 1982 | 1983 | EXECUTE {end.bib} 1984 | -------------------------------------------------------------------------------- /gbt7714.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `package') 8 | %% ------------------------------------------------------------------- 9 | %% GB/T 7714-2015 BibTeX Style 10 | %% https://github.com/CTeX-org/gbt7714-bibtex-style 11 | %% Version: 2020/03/14 v2.0.1 12 | %% ------------------------------------------------------------------- 13 | %% Copyright (C) 2016-2020 by Zeping Lee 14 | %% ------------------------------------------------------------------- 15 | %% This file may be distributed and/or modified under the 16 | %% conditions of the LaTeX Project Public License, either version 1.3c 17 | %% of this license or (at your option) any later version. 18 | %% The latest version of this license is in 19 | %% https://www.latex-project.org/lppl.txt 20 | %% and version 1.3c or later is part of all distributions of LaTeX 21 | %% version 2005/12/01 or later. 22 | %% ------------------------------------------------------------------- 23 | \NeedsTeXFormat{LaTeX2e}[1999/12/01] 24 | \ProvidesPackage{gbt7714} 25 | [2020/03/14 v2.0.1 GB/T 7714-2015 BibTeX Style] 26 | \newif\ifgbt@legacy@interface 27 | \newif\ifgbt@mmxv 28 | \newif\ifgbt@numerical 29 | \newif\ifgbt@super 30 | \newcommand\gbt@obselete@option[1]{% 31 | \PackageWarning{gbt7714}{The option "#1" is obselete}% 32 | } 33 | \DeclareOption{2015}{% 34 | \gbt@obselete@option{2015}% 35 | \gbt@legacy@interfacetrue 36 | \gbt@mmxvtrue 37 | } 38 | \DeclareOption{2005}{% 39 | \gbt@obselete@option{2005}% 40 | \gbt@legacy@interfacetrue 41 | \gbt@mmxvfalse 42 | } 43 | \DeclareOption{super}{% 44 | \gbt@obselete@option{super}% 45 | \gbt@legacy@interfacetrue 46 | \gbt@numericaltrue 47 | \gbt@supertrue 48 | } 49 | \DeclareOption{numbers}{% 50 | \gbt@obselete@option{numbers}% 51 | \gbt@legacy@interfacetrue 52 | \gbt@numericaltrue 53 | \gbt@superfalse 54 | } 55 | \DeclareOption{authoryear}{% 56 | \gbt@obselete@option{authoryear}% 57 | \gbt@legacy@interfacetrue 58 | \gbt@numericalfalse 59 | } 60 | \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{natbib}} 61 | \ProcessOptions\relax 62 | \RequirePackage[compress]{natbib} 63 | \RequirePackage{url} 64 | \renewcommand\newblock{\space} 65 | \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} 66 | \newcommand\bibstyle@numbers{\bibpunct{[}{]}{,}{n}{,}{,}} 67 | \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} 68 | \newcommand\bibstyle@inline{\bibstyle@numbers} 69 | \@namedef{bibstyle@gbt7714-numerical}{\bibstyle@super} 70 | \@namedef{bibstyle@gbt7714-author-year}{\bibstyle@authoryear} 71 | \@namedef{bibstyle@gbt7714-2005-numerical}{\bibstyle@super} 72 | \@namedef{bibstyle@gbt7714-2005-author-year}{\bibstyle@authoryear} 73 | \def\NAT@citexnum[#1][#2]#3{% 74 | \NAT@reset@parser 75 | \NAT@sort@cites{#3}% 76 | \NAT@reset@citea 77 | \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty 78 | \@for\@citeb:=\NAT@cite@list\do 79 | {\@safe@activestrue 80 | \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% 81 | \@safe@activesfalse 82 | \@ifundefined{b@\@citeb\@extra@b@citeb}{% 83 | {\reset@font\bfseries?} 84 | \NAT@citeundefined\PackageWarning{natbib}% 85 | {Citation `\@citeb' on page \thepage \space undefined}}% 86 | {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm 87 | \NAT@parse{\@citeb}% 88 | \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% 89 | \let\NAT@name=\NAT@all@names 90 | \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% 91 | \fi 92 | \ifNAT@full\let\NAT@nm\NAT@all@names\else 93 | \let\NAT@nm\NAT@name\fi 94 | \ifNAT@swa 95 | \@ifnum{\NAT@ctype>\@ne}{% 96 | \@citea 97 | \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}% 98 | }{% 99 | \@ifnum{\NAT@cmprs>\z@}{% 100 | \NAT@ifcat@num\NAT@num 101 | {\let\NAT@nm=\NAT@num}% 102 | {\def\NAT@nm{-2}}% 103 | \NAT@ifcat@num\NAT@last@num 104 | {\@tempcnta=\NAT@last@num\relax}% 105 | {\@tempcnta\m@ne}% 106 | \@ifnum{\NAT@nm=\@tempcnta}{% 107 | \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}% 108 | }{% 109 | \advance\@tempcnta by\@ne 110 | \@ifnum{\NAT@nm=\@tempcnta}{% 111 | % \ifx\NAT@last@yr\relax 112 | % \def@NAT@last@yr{\@citea}% 113 | % \else 114 | % \def@NAT@last@yr{--\NAT@penalty}% 115 | % \fi 116 | \def@NAT@last@yr{-\NAT@penalty}% 117 | }{% 118 | \NAT@last@yr@mbox 119 | }% 120 | }% 121 | }{% 122 | \@tempswatrue 123 | \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}% 124 | \if@tempswa\NAT@citea@mbox\fi 125 | }% 126 | }% 127 | \NAT@def@citea 128 | \else 129 | \ifcase\NAT@ctype 130 | \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else 131 | \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}% 132 | \fi 133 | \if*#1*\else#1\NAT@spacechar\fi 134 | \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}% 135 | \NAT@def@citea@box 136 | \or 137 | \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% 138 | \or 139 | \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% 140 | \or 141 | \NAT@hyper@citea@space\NAT@alias 142 | \fi 143 | \fi 144 | }% 145 | }% 146 | \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}% 147 | \ifNAT@swa\else 148 | % \@ifnum{\NAT@ctype=\z@}{% 149 | % \if*#2*\else\NAT@cmt#2\fi 150 | % }{}% 151 | \NAT@mbox{\NAT@@close}% 152 | \@ifnum{\NAT@ctype=\z@}{% 153 | \if*#2*\else\textsuperscript{#2}\fi 154 | }{}% 155 | \fi 156 | }{#1}{#2}% 157 | }% 158 | \renewcommand\NAT@citesuper[3]{\ifNAT@swa 159 | \if*#2*\else#2\NAT@spacechar\fi 160 | \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close\if*#3*\else#3\fi}% 161 | \else #1\fi\endgroup} 162 | \def\NAT@citex% 163 | [#1][#2]#3{% 164 | \NAT@reset@parser 165 | \NAT@sort@cites{#3}% 166 | \NAT@reset@citea 167 | \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty 168 | \@for\@citeb:=\NAT@cite@list\do 169 | {\@safe@activestrue 170 | \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% 171 | \@safe@activesfalse 172 | \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% 173 | {\reset@font\bfseries ?}\NAT@citeundefined 174 | \PackageWarning{natbib}% 175 | {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}% 176 | {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year 177 | \NAT@parse{\@citeb}% 178 | \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% 179 | \let\NAT@name=\NAT@all@names 180 | \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% 181 | \fi 182 | \ifNAT@full\let\NAT@nm\NAT@all@names\else 183 | \let\NAT@nm\NAT@name\fi 184 | \ifNAT@swa\ifcase\NAT@ctype 185 | \if\relax\NAT@date\relax 186 | \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}% 187 | \else 188 | \ifx\NAT@last@nm\NAT@nm\NAT@yrsep 189 | \ifx\NAT@last@yr\NAT@year 190 | \def\NAT@temp{{?}}% 191 | \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% 192 | {Multiple citation on page \thepage: same authors and 193 | year\MessageBreak without distinguishing extra 194 | letter,\MessageBreak appears as question mark}\fi 195 | \NAT@hyper@{\NAT@exlab}% 196 | \else\unskip\NAT@spacechar 197 | \NAT@hyper@{\NAT@date}% 198 | \fi 199 | \else 200 | \@citea\NAT@hyper@{% 201 | \NAT@nmfmt{\NAT@nm}% 202 | \hyper@natlinkbreak{% 203 | \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb 204 | }% 205 | \NAT@date 206 | }% 207 | \fi 208 | \fi 209 | \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 210 | \or\@citea\NAT@hyper@{\NAT@date}% 211 | \or\@citea\NAT@hyper@{\NAT@alias}% 212 | \fi \NAT@def@citea 213 | \else 214 | \ifcase\NAT@ctype 215 | \if\relax\NAT@date\relax 216 | \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 217 | \else 218 | \ifx\NAT@last@nm\NAT@nm\NAT@yrsep 219 | \ifx\NAT@last@yr\NAT@year 220 | \def\NAT@temp{{?}}% 221 | \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% 222 | {Multiple citation on page \thepage: same authors and 223 | year\MessageBreak without distinguishing extra 224 | letter,\MessageBreak appears as question mark}\fi 225 | \NAT@hyper@{\NAT@exlab}% 226 | \else 227 | \unskip\NAT@spacechar 228 | \NAT@hyper@{\NAT@date}% 229 | \fi 230 | \else 231 | \@citea\NAT@hyper@{% 232 | \NAT@nmfmt{\NAT@nm}% 233 | \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}% 234 | {\@citeb\@extra@b@citeb}% 235 | \NAT@date 236 | }% 237 | \fi 238 | \fi 239 | \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% 240 | \or\@citea\NAT@hyper@{\NAT@date}% 241 | \or\@citea\NAT@hyper@{\NAT@alias}% 242 | \fi 243 | \if\relax\NAT@date\relax 244 | \NAT@def@citea 245 | \else 246 | \NAT@def@citea@close 247 | \fi 248 | \fi 249 | }}\ifNAT@swa\else 250 | % \if*#2*\else\NAT@cmt#2\fi 251 | \if\relax\NAT@date\relax\else\NAT@@close\fi 252 | \if*#2*\else\textsuperscript{#2}\fi 253 | \fi}{#1}{#2}} 254 | \renewcommand\NAT@cite% 255 | [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi 256 | #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup} 257 | \renewcommand\@biblabel[1]{[#1]\hfill} 258 | \g@addto@macro\UrlBreaks{% 259 | \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9% 260 | \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M 261 | \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z 262 | \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m 263 | \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z 264 | } 265 | \Urlmuskip=0mu plus 0.1mu 266 | \newif\ifgbt@bib@style@written 267 | \@ifpackageloaded{chapterbib}{}{% 268 | \def\bibliography#1{% 269 | \ifgbt@bib@style@written\else 270 | \bibliographystyle{gbt7714-numerical}% 271 | \fi 272 | \if@filesw 273 | \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}% 274 | \fi 275 | \@input@{\jobname.bbl}} 276 | \def\bibliographystyle#1{% 277 | \gbt@bib@style@writtentrue 278 | \ifx\@begindocumenthook\@undefined\else 279 | \expandafter\AtBeginDocument 280 | \fi 281 | {\if@filesw 282 | \immediate\write\@auxout{\string\bibstyle{#1}}% 283 | \fi}% 284 | }% 285 | } 286 | \ifgbt@legacy@interface 287 | \ifgbt@numerical 288 | \ifgbt@super\else 289 | \citestyle{numbers} 290 | \fi 291 | \bibliographystyle{gbt7714-numerical} 292 | \else 293 | \bibliographystyle{gbt7714-author-year} 294 | \fi 295 | \fi 296 | --------------------------------------------------------------------------------