├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── images └── tex.png ├── insfc.sty ├── note.pdf ├── note.tex ├── note.xdv ├── preamble.tex ├── refBst ├── elsarticle-harv.bst ├── elsarticle-num-names.bst ├── elsarticle-num.bst ├── gbt7714-nsfc.bst ├── model1-num-names.bst ├── model1a-num-names.bst ├── model1b-num-names.bst ├── model1c-num-names.bst ├── model2-names.bst ├── model3-num-names.bst ├── model3a-num-names.bst ├── model4-names.bst ├── model5-names.bst └── model6-num-names.bst ├── references.bib ├── 中文摘要.md ├── 科学属性说明.md └── 英文摘要.md /.gitignore: -------------------------------------------------------------------------------- 1 | # 以'#' 开始的行,被视为注释. 2 | # 忽略掉所有文件名是 foo.txt 的文件. 3 | foo.txt 4 | # 忽略所有生成的 html 文件, 5 | *.html 6 | *.aux 7 | *.bbl 8 | *.fdb_latexmk 9 | *.fls 10 | *.synctex.gz 11 | *.gz(busy) 12 | *.gz 13 | *.out 14 | *.zip 15 | *.log 16 | *.blg 17 | *.xdv 18 | # foo.html是手工维护的,所以例外. 19 | # 忽略所有.o 和 .a文件. 20 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # LaTex Makefile 2 | 3 | FILE = note 4 | 5 | #all: pdf view vim clean 6 | 7 | pdf: $(FILE).tex 8 | latexmk -xelatex $(FILE).tex 9 | 10 | view: 11 | evince $(FILE).pdf & 12 | 13 | vim: 14 | apvlv $(FILE).pdf & 15 | 16 | clean: 17 | rm *.aux *.bbl *.blg *.bcf *.log *.nav *.out *.snm *.toc *.run.xml *.gp~ Makefile~ *.tex~ *.bib~ 18 | latexmk -C 19 | @echo "all cleaned up" 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iNSFC - 国家自然基金 LaTeX 模板 2 | 3 | Forked from YimianDai/iNSFC repository. 4 | Credits to him: yimian.dai@gmail.com. 5 | 6 | 7 | see the note.pdf 8 | 9 | ## How to run 10 | - make pdf 11 | 12 | 13 | -------------------------------------------------------------------------------- /images/tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KimHe/iNSFC/235fffbb6392918b0022eae35c281fbee91a9945/images/tex.png -------------------------------------------------------------------------------- /insfc.sty: -------------------------------------------------------------------------------- 1 | % 根据基金 Word 模板制定上下左右页面边距 2 | \usepackage[left=3.2cm, right=3.2cm, top=2.54cm, bottom=2.54cm]{geometry} 3 | 4 | % 因为基金 Word 模板定义了章节标题,所以不可直接使用 ctexart 5 | % 只启用 ctex.sty 宏包以支持中文排版 6 | \usepackage[UTF8, fontset=none]{ctex} % 显式指定 uft8 编码选项 7 | 8 | % 通过 ctexset 命令微调对基金 Word 模板进行最大化匹配 9 | % 这里有个很痛苦的决定,为了和 Word 保持一致,需要你不管在什么操作 10 | %系统下都使用 Windows 的字体,所以你需要自己搞定在你的系统中怎么安装 11 | \ctexset{fontset=windowsnew, % new, fandol, adobe, ubuntu, windowsold 12 | punct=quanjiao, % banjiao, kaiming, CCT 13 | autoindent=true, % false 14 | linestretch=0.8, 15 | today=small, % big, old 16 | space=auto, % true, false 17 | % linespread, 18 | % zihao, 19 | % heading, 20 | % scheme, 21 | } 22 | 23 | \usepackage{xeCJK} 24 | \xeCJKsetup{CheckSingle=true, % 孤字检查 25 | AutoFallBack=true, % 生僻字 26 | AutoFakeBold=false, % 不使用伪粗体,因为会很难看 27 | AutoFakeSlant=true} % 伪斜体 28 | 29 | % 定义正文字体为 12pt 30 | \newcommand{\xiaosihao}{\fontsize{12pt}{\baselineskip}\selectfont} %小四号 31 | %\newcommand{\xiaosihao}{\zihao{-4}} %小四号 32 | 33 | % 楷体加粗:启用 autofakebold 并定义为 \kaishu 34 | \let\kaishu\relax 35 | \newCJKfontfamily\kaishu{KaiTi}[AutoFakeBold] 36 | 37 | % 定义四号蓝色楷体为 \kaishuBlue 38 | % 定义四号蓝色楷体伪加粗为 \kaishuBlueBold 39 | \newcommand{\kaishuBlue}[1]{\textcolor{nsfcBlue}{{\zihao{4}{{\kaishu #1}}}}} 40 | \newcommand{\kaishuBlueBold}[1]{\bfseries\kaishuBlue{#1}} 41 | 42 | % 建议将一些常用的非必须项的宏包还是归纳到 preamble.tex 文件 43 | \input{preamble.tex} 44 | 45 | % 定义 Word 模板中的蓝色 46 | \definecolor{nsfcBlue}{RGB}{0, 112, 192} 47 | % 调用 cleveref 宏包将 图 1: 的样式改为 图 1. 48 | \captionsetup[figure]{labelsep=period} 49 | \captionsetup[table]{labelsep=period} 50 | 51 | % 文档不能有页码,因为提交后会自动生成 52 | \pagestyle{empty} 53 | 54 | % 设置“报告正文”标题 55 | \renewcommand{\maketitle}{ 56 | \begingroup 57 | \begin{center} 58 | {\zihao{3} \bfseries\kaishu 报告正文 \vspace{-1.3ex}} 59 | \end{center} 60 | \thispagestyle{empty} 61 | \endgroup 62 | } 63 | 64 | % 设定“参考文献”字样 65 | \renewcommand\refname{ 66 | \textcolor{black}{\hskip 2pt \zihao{-4}\songti{参考文献}} 67 | } 68 | % 设置每条参考文献之间间距 69 | \setlength{\bibsep}{1pt plus 0.3ex} 70 | 71 | % Note definition: 参照以下提纲撰写,要求内容翔实、清晰,层次分明,... 72 | \newcommand{\nsfcNote}[2]{ 73 | \begingroup 74 | \setlength{\baselineskip}{22pt} 75 | \indent {\zihao{4} \kaishu #1}{\kaishuBlueBold{#2}} \vspace{5bp}% 76 | \endgroup 77 | } 78 | 79 | % Chapter definition:(一)立项依据与研究内容(建议8000字以内) 80 | % this is a hard-core modification, as no chapter definition in the article class 81 | \newcommand{\nsfcChapter}[2]{ 82 | \begingroup 83 | \setcounter{section}{0} 84 | \setlength{\baselineskip}{22pt} 85 | \indent {\kaishuBlueBold{#1}}{\kaishuBlue{#2}} \vspace{4bp}% 86 | \endgroup 87 | } 88 | 89 | % Section definition: 2.项目的研究内容、研究目标,以及拟解决的关键科学问题(此部分为重点阐述内容); 90 | \newcommand{\nsfcSection}[3]{ 91 | \begingroup 92 | \setcounter{section}{#1} 93 | \setcounter{subsection}{0} 94 | \setlength{\baselineskip}{22pt} 95 | \indent {\kaishuBlueBold{\setmainfont{KaiTi} #1.}}{\kaishuBlueBold{#2}}{\kaishuBlue{#3}} 96 | \endgroup 97 | } 98 | 99 | % Subsection definition (cf. Prof. Mingming Chen) 100 | \def\cvprsubsection{\@startsection {subsection}{2}{\z@} 101 | {11pt plus 2pt minus 2pt}{6pt} {\bfseries \heiti}} 102 | \def\cvprssubsect#1{\cvprsubsection*{\large #1}} 103 | \def\cvprsubsect#1{\cvprsubsection{\hskip -1em.~#1 }\vspace{-0.2em}} 104 | \def\subsection{\@ifstar\cvprssubsect\cvprsubsect} 105 | 106 | % Subsubsection definition 107 | \def\cvprsubsubsection{\@startsection {subsubsection}{3}{\z@} 108 | {11pt plus 2pt minus 2pt}{6pt} {\bfseries \songti}} 109 | \def\cvprssubsubsect#1{\cvprsubsubsection*{\large #1}} 110 | \def\cvprsubsubsect#1{\cvprsubsubsection{\hskip -1em.~#1}\vspace{-0.2em}} 111 | \def\subsubsection{\@ifstar\cvprssubsubsect\cvprsubsubsect} 112 | 113 | % 设置每自然段之间 parskip 为 0.5em,使文档更加美观 114 | \setlength{\parskip}{0.5em} 115 | 116 | % setspace command 117 | %\setstretch{1.4} % 22 bp / 14 pt = 1.571 118 | 119 | 120 | -------------------------------------------------------------------------------- /note.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KimHe/iNSFC/235fffbb6392918b0022eae35c281fbee91a9945/note.pdf -------------------------------------------------------------------------------- /note.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper]{article} 2 | 3 | \usepackage{insfc} 4 | \graphicspath{{images/}} 5 | 6 | \begin{document} 7 | 8 | \xiaosihao %\zihao{-4} 9 | \maketitle 10 | 11 | \nsfcNote{参照以下提纲撰写,要求内容翔实、清晰,层次分明,标题突出。}{请勿删除或改动下述提纲标题及括号中的文字。} 12 | 13 | \nsfcChapter{(一)立项依据与研究内容}{(建议 8000 字以内):} 14 | 15 | \nsfcSection{1}{项目的立项依据}{(研究意义、国内外研究现状及发展动态分析,需结合科学研究发展趋势来论述科学意义;或结合国民经济和社会发展中迫切需要解决的关键科技问题来论述其应用前景。附主要参考文献目录);}{ 16 | 17 | % 正文使用五号字体,间距用 setstretch 控制 18 | \setstretch{1.4} 19 | \zihao{5} 20 | 21 | \subsection{项目研究意义} 22 | 23 | \subsubsection{Word 模板解析} 24 | 25 | \begin{itemize} 26 | \item \emph{纸张} A4,宽度 21 厘米,高度 29.7 厘米。 27 | \item \emph{页边距 } 上 2.54 厘米,下 2.54 厘米,左 3.2 厘米,右 3.2 厘米;装订线 0 厘米。 28 | \item \emph{版式 } 距边界 页眉 1.5 厘米,页脚 1.75 厘米。 29 | \item \emph{蓝色 } RGB 数值为 (0, 112, 192)。 30 | \item \emph{字体 } 所有提纲字体,除“报告正文”为楷体三号外,其余均为楷体四号。 31 | \item \emph{序号 } 所有序号 1 2 3 4 均为楷体四号不加粗。 32 | \item \emph{行距 } 全部模板文字固定值 22 磅。 33 | \item \emph{强调 } 所有提纲标题(亦前半部分)均伪粗体加粗,括号内说明性文字(亦后半部分)均不加粗。 34 | \item \emph{间距 } “报告正文”段后间距0.2行;note 说明({\kaishu 参照以下提纲撰写 \dots})的段后间距为0.5行;chapter ({\kaishu(一)立项依据与研究内容})段后间距0.5行;后面 Word 模板就没统一了,此模板按照 0.5 行统一。 35 | \end{itemize} 36 | 37 | 38 | \subsection{国内外研究现状及发展动态} 39 | 40 | \subsubsection{iNFSC 模板匹配} 41 | \begin{itemize} 42 | \item \emph{纸张} \begin{verbatim} \documentclass[a4paper]{article} \end{verbatim} 43 | \item \emph{页边距 } \begin{verbatim} \usepackage[left=3.2cm, right=3.2cm, top=2.54cm, bottom=2.54cm]{geometry} \end{verbatim} 44 | \item \emph{版式 } \jiacu{暂时还不清楚是否有匹配,及匹配方式} 45 | \item \emph{蓝色 } \begin{verbatim} \definecolor{nsfcBlue}{RGB}{0, 112, 192} \end{verbatim} 46 | \item \emph{字体 } \begin{verbatim} 47 | \usepackage[UTF8, fontset=none]{ctex} % 显式指定 uft8 编码选项 48 | % 通过 ctexset 命令微调对基金 Word 模板进行最大化匹配 49 | % 这里有个很痛苦的决定,为了和 Word 保持一致,需要你不管在什么操作 50 | %系统下都使用 Windows 的字体,所以你需要自己搞定在你的系统中怎么安装 51 | \ctexset{fontset=windowsnew, % new, fandol, adobe, ubuntu, windowsold 52 | punct=quanjiao, % banjiao, kaiming, CCT 53 | autoindent=true, % false 54 | linestretch=0.8, 55 | today=small, % big, old 56 | space=auto, % true, false 57 | % linespread, 58 | % zihao, 59 | % heading, 60 | % scheme, 61 | } 62 | \usepackage{xeCJK} 63 | \xeCJKsetup{CheckSingle=true, % 孤字检查 64 | AutoFallBack=true, % 生僻字 65 | AutoFakeBold=false, % 不使用伪粗体,因为会很难看 66 | AutoFakeSlant=true} % 伪斜体 67 | 68 | % 设置标题字体为楷体三号伪加粗 69 | % 用 vspace 来设置段后距离 70 | \renewcommand{\maketitle}{ 71 | \begingroup 72 | \begin{center} 73 | {\zihao{3} \bfseries \kaishu 报告正文 \vspace{-1.3ex}} 74 | \end{center} 75 | \thispagestyle{empty} 76 | \endgroup 77 | } 78 | 79 | % 设置正文小四号字体 80 | \newcommand{\xiaosihao}{\fontsize{12pt}{\baselineskip}\selectfont} 81 | % 为楷体启用伪粗体 autofakebold 并定义为 \kaishu 82 | \let\kaishu\relax 83 | \newCJKfontfamily\kaishu{KaiTi}[AutoFakeBold] 84 | \end{verbatim} 85 | \item \emph{行距 } \begin{verbatim} \setlength{\baselineskip}{22bp} \end{verbatim} 86 | \item \emph{强调 } \begin{verbatim} 87 | % 定义蓝色楷体四号 \kaishuBlue 88 | \newcommand{\kaishuBlue}[1]{\textcolor{nsfcBlue}{\zihao{4} \kaishu #1}} 89 | % 定义伪加粗蓝色楷体四号 \kaishuBlueBold 90 | \newcommand{\kaishuBlueBold}[1]{\bfseries\kaishuBlue{#1}} 91 | \end{verbatim} 92 | \item \emph{提纲文字 } \begin{verbatim} 93 | % Note definition: 参照以下提纲撰写,要求内容... 94 | % 用 vspace 来设置段后距离 95 | \newcommand{\nsfcNote}[2]{ 96 | \begingroup 97 | \setlength{\baselineskip}{22bp} 98 | \indent {\zihao{4} \kaishu #1}{\kaishuBlueBold{#2}} \vspace{5bp}% 99 | \endgroup } 100 | % Chapter definition:(一)立项依据与研究内容(建议8000字以内) 101 | % this is a hard-core modification, as no chapter definition in the article class 102 | % 用 vspace 来设置段后距离 103 | \newcommand{\nsfcChapter}[2]{ 104 | \begingroup 105 | \setcounter{section}{0} 106 | \setlength{\baselineskip}{22bp} 107 | \indent {\kaishuBlueBold{#1}}{\kaishuBlue{#2}} \vspace{4bp}% 108 | \endgroup } 109 | % Section definition: 2.项目的研究内容、研究目标,以及拟解决的关键科学问题 ... 110 | \newcommand{\nsfcSection}[3]{ 111 | \setcounter{section}{#1} 112 | \setcounter{subsection}{0} 113 | \indent {\kaishuBlueBold{\setmainfont{KaiTi} #1.}} 114 | {\kaishuBlueBold{#2}}{\kaishuBlue{#3}} 115 | } 116 | \end{verbatim} 117 | 118 | \end{itemize} 119 | 120 | \subsubsection{进一步调整} 121 | 进一步调整的意思是,需不需要这部分取决于你的喜好。 122 | \begin{itemize} 123 | \item \emph{正文字体} 本模板采用 $\text{zihao}\{5\}$ $\text{setstretch}\{1.4\}$ 来安排正文布局。 124 | \item 段与段之间设置间隔,以提高美观性 \begin{verbatim} 125 | % 设置每自然段之间 parskip 为 0.5em,使文档更加美观 126 | \setlength{\parskip}{0.5em} \end{verbatim} 127 | \item 进一步设置 subsection 和 subsubsection 的格式提高美观性 \begin{verbatim} 128 | % Subsection definition (cf. Prof. Mingming Chen) 129 | \def\cvprsubsection{\@startsection {subsection}{2}{\z@} 130 | {11pt plus 2pt minus 2pt}{6pt} {\bfseries \heiti}} 131 | \def\cvprssubsect#1{\cvprsubsection*{\large #1}} 132 | \def\cvprsubsect#1{\cvprsubsection{\hskip -1em.~#1 }\vspace{-0.2em}} 133 | \def\subsection{\@ifstar\cvprssubsect\cvprsubsect} 134 | 135 | % Subsubsection definition 136 | \def\cvprsubsubsection{\@startsection {subsubsection}{3}{\z@} 137 | {11pt plus 2pt minus 2pt}{6pt} {\bfseries \songti}} 138 | \def\cvprssubsubsect#1{\cvprsubsubsection*{\large #1}} 139 | \def\cvprsubsubsect#1{\cvprsubsubsection{\hskip -1em.~#1}\vspace{-0.2em}} 140 | \def\subsubsection{\@ifstar\cvprssubsubsect\cvprsubsubsect} 141 | \end{verbatim} 142 | \item \emph{参考文献}格式优化 \begin{verbatim} 143 | % 设定“参考文献”字样 144 | \renewcommand\refname{ 145 | \textcolor{black}{\hskip 2pt \zihao{-4}\songti{参考文献}} 146 | } 147 | % 设置每条参考文献之间间距 148 | \setlength{\bibsep}{1pt plus 0.3ex} 149 | \end{verbatim} 150 | \item 修改 图 1: 的形式为 图 1. \begin{verbatim} 151 | % 调用 cleveref 宏包将 图 1: 的样式改为 图 1. 152 | \captionsetup[figure]{labelsep=period} 153 | \captionsetup[table]{labelsep=period} 154 | \end{verbatim} 155 | \item 页码 \begin{verbatim} 156 | % 文档不能有页码,因为提交后会自动生成 157 | \pagestyle{empty} 158 | \end{verbatim} 159 | \end{itemize} 160 | 161 | 162 | \newpage 163 | \begin{spacing}{1.2} 164 | \zihao{5} \songti 165 | %\bibliographystyle{unsrt} 166 | %\bibliographystyle{refBst/gbt7714-nsfc.bst} 167 | \bibliographystyle{refBst/elsarticle-num-names} 168 | \bibliography{references} 169 | \end{spacing} 170 | } 171 | 172 | \newpage 173 | \nsfcSection{2}{项目的研究内容、研究目标,以及拟解决的关键科学问题}{(此部分为重点阐述内容);}{ 174 | 175 | \zihao{5} \setstretch{1.4} 176 | 177 | \subsection{研究目标} 178 | \subsubsection{文本效果展示} 179 | 对于高校教师和研究人员来说,国家自然科学基金 \cite{li2014object}(National Natural Science Foundation of China,NSFC)非常重要,写出能让所有专家都满意的本子也相当的耗时。 180 | 对于平时只采用 \LaTeX 格式投稿论文的老师来说,由于基金委只给出了 Word 模板,这种切换大致会有下面一些不方便: 181 | \begin{itemize} 182 | \item 本子中很可能会用到以往小论文中的公式、图表以及参考文献,无法直接复制粘贴,要将一模一样的内容从 \LaTeX 转换成 Word 需要不少时间 \cite{he2018efficient, he2019bayesian}; 183 | \item Word 中对参考文献、图表、公式的交叉引用没有 \LaTeX 来的方便。 184 | \end{itemize} 185 | 很自然的,如果能有一个国家自然基金的 \LaTeX 模板就好了,可以挤出更多的时间来关注内容,而非格式以及排列参考文献这种机械无聊的事情上 \citep{scopes2013protein}。 186 | \subsection{研究内容} 187 | \subsubsection{新添加的命令环境} 188 | \begin{itemize} 189 | \item 因为基金没有严格定义参考文献格式,也没有提供 bst 文件,所以给格式留下了很大的自由度。所以,这里也考虑一部分研究者喜欢上角标的文献引用 \begin{verbatim} \newcommand{\cites}[1]{\textsuperscript{\cite{#1}}} \end{verbatim} 190 | \item 在基金本子的写作中,因为很多专家没有时间看,所以就要求写作者要将一些语言强调,让他们能快速的看懂。(对于这个我没有什么意见要发表)。所以这里引入了多级强调,黑体加粗为一级强调;楷体加点为二级强调;宋体下划线和波浪线为三级强调 191 | \begin{verbatim} 192 | \newcommand{\jiacu}[1]{{\bfseries\heiti #1}} % 效果完全等同于 \textbf{} 193 | \newcommand{\jiadian}[1]{{\kaishu \dotuline{#1}}} 194 | \newcommand{\xiahua}[1]{uline{#1}} % 或者用波浪 \uwave{} 195 | \end{verbatim} 196 | \item 数学公式中一些符号 197 | \begin{verbatim} 198 | \newcommand{\dd}{\mathrm{d}} % for differential operator d 199 | \newcommand{\mi}{\mathrm{i}} % for math e 200 | \newcommand{\me}{\mathrm{e}} % for math i 201 | \newcommand{\abs}[1]{\left\lvert#1\right\rvert} 202 | \newcommand{\norm}[1]{\left\lVert#1\right\rVert} 203 | \newcommand{\mean}[1]{\left\langle#1\right\rangle} 204 | \newcommand{\pbk}[1]{\left(#1\right)} 205 | \newcommand{\cbk}[1]{\left\lbrace#1\right\rbrace} 206 | \newcommand{\sbk}[1]{\left\lbrack#1\right\rbrack} 207 | \newcommand{\ie}{\textit{i.e.}\@\xspace} 208 | \newcommand{\eg}{\textit{e.g.}\@\xspace} 209 | \newcommand{\D}{\displaystyle} % for math display 210 | \end{verbatim} 211 | \end{itemize} 212 | \subsection{拟解决关键科学问题} 213 | \subsubsection{新命令的展示} 214 | 对于高校教师和研究人员来说,国家自然科学基金(National Natural Science Foundation of China,NSFC)非常重要,\jiacu{写出能让所有专家都满意}\textbf{的本子也相当的耗时}。 215 | \uline{对于平时只采用 \LaTeX 格式投稿论文的老师来说},\uwave{由于基金委只给出了 Word 模板},\jiadian{这种切换大致会有下面一些不方便} \cites{bengio2013representation}: 216 | \begin{equation} 217 | \D\frac{\dd q_i^j}{\dd t} = \norm{ \mean{k_{a,i}}\, c_{p,i}^j \pbk{q_\text{max} - \sum_{k=1}^M q_k^j} - k_{d,i}\, q_\mi^\me }^\alpha 218 | \end{equation} 219 | \begin{verbatim} 220 | \begin{equation} 221 | \D\frac{\dd q_i^j}{\dd t} = \norm{ \mean{k_{a,i}}\, c_{p,i}^j \pbk{q_\text{max} 222 | - \sum_{k=1}^M q_k^j} - k_{d,i}\, q_\mi^\me }^\alpha 223 | \end{equation} 224 | \end{verbatim} 225 | 226 | \subsubsection{仍需要解决的问题} 227 | \begin{itemize} 228 | \item 距边界 页眉 1.5 厘米,页脚 1.75 厘米是否需要设定,这个问题仍需要被回答 229 | \item 通过 vspace 来控制段后 0.5 行的操作不够得体和精确 230 | \end{itemize} 231 | } 232 | 233 | \newpage 234 | \nsfcSection{3}{拟采取的研究方案及可行性分析}{(包括研究方法、技术路线、实验手段、关键技术等说明);}{ 235 | 236 | \zihao{5} \setstretch{1.4} 237 | \subsection{拟采取的研究方案} 238 | \subsection{研究方案的可行性分析} 239 | } 240 | 241 | \newpage 242 | \nsfcSection{4}{本项目的特色与创新之处;}{}{ 243 | 244 | 特色与创新之处 \ldots 245 | 246 | } 247 | 248 | \newpage 249 | \nsfcSection{5}{年度研究计划及预期研究结果}{(包括拟组织的重要学术交流活动、国际合作与交流计划等)。}{ 250 | 251 | \zihao{5} \setstretch{1.2} 252 | \subsection{年度研究计划} 253 | 254 | \noindent 2021年1月-- 2021年12月 255 | \begin{itemize} 256 | \item 257 | \item 258 | \item 259 | \end{itemize} 260 | 261 | \noindent 2022年1月 -- 2022年12月 262 | \begin{itemize} 263 | \item 264 | \item 265 | \item 266 | \item 267 | \item 268 | \end{itemize} 269 | 270 | \noindent 2023年1月 -- 2023年12月 271 | \begin{itemize} 272 | \item 273 | \item 274 | \item 275 | \item 276 | \item 277 | \end{itemize} 278 | 279 | \subsection{预期取得的成果} 280 | \begin{itemize} 281 | \item 282 | \item 283 | \item 284 | \item 285 | \end{itemize} 286 | } 287 | 288 | \newpage 289 | \nsfcChapter{(二)研究基础与工作条件}{} 290 | 291 | \nsfcSection{1}{研究基础}{(与本项目相关的研究工作积累和已取得的研究工作成绩);}{ 292 | 293 | \zihao{5} \setstretch{1.4} 294 | 本项目团队 \ldots 295 | } 296 | 297 | \nsfcSection{2}{工作条件}{(包括已具备的实验条件,尚缺少的实验条件和拟解决的途径,包括利用国家实验室、国家重点实验室和部门重点实验室等研究基地的计划与落实情况);}{ 298 | 299 | \zihao{5} \setstretch{1.4} 300 | 本项目依托 \ldots 301 | 302 | } 303 | 304 | \nsfcSection{3}{正在承担的与本项目相关的科研项目情况}{(申请人和项目组主要参与者正在承担的与本项目相关的科研项目情况,包括国家自然科学基金的项目和国家其他科技计划项目,要注明项目的名称和编号、经费来源、起止年月、与本项目的关系及负责的内容等);}{ 305 | 306 | 无 307 | } 308 | 309 | \nsfcSection{4}{完成国家自然科学基金项目情况}{(对申请人负责的前一个已结题科学基金项目(项目名称及批准号)完成情况、后续研究进展及与本申请项目的关系加以详细说明。另附该已结题项目研究工作总结摘要(限500字)和相关成果的详细目录)。}{ 310 | 311 | 无 312 | } 313 | 314 | \nsfcChapter{(三)其他需要说明的问题}{} 315 | 316 | \nsfcSection{1}{}{申请人同年申请不同类型的国家自然科学基金项目情况(列明同年申请的其他项目的项目类型、项目名称信息,并说明与本项目之间的区别与联系)。}{ 317 | 318 | 无 319 | } 320 | 321 | \nsfcSection{2}{}{具有高级专业技术职务(职称)的申请人或者主要参与者是否存在同年申请或者参与申请国家自然科学基金项目的单位不一致的情况;如存在上述情况,列明所涉及人员的姓名,申请或参与申请的其他项目的项目类型、项目名称、单位名称、上述人员在该项目中是申请人还是参与者,并说明单位不一致原因。}{ 322 | 323 | 无 324 | } 325 | 326 | \nsfcSection{3}{}{具有高级专业技术职务(职称)的申请人或者主要参与者是否存在与正在承担的国家自然科学基金项目的单位不一致的情况;如存在上述情况,列明所涉及人员的姓名,正在承担项目的批准号、项目类型、项目名称、单位名称、起止年月,并说明单位不一致原因。}{ 327 | 328 | 无 329 | } 330 | 331 | \nsfcSection{4}{}{其他。}{ 332 | 333 | 无 334 | } 335 | \end{document} 336 | -------------------------------------------------------------------------------- /note.xdv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KimHe/iNSFC/235fffbb6392918b0022eae35c281fbee91a9945/note.xdv -------------------------------------------------------------------------------- /preamble.tex: -------------------------------------------------------------------------------- 1 | 2 | %# mathematical packages 3 | \usepackage{amsmath,amssymb,amsthm,amscd} 4 | \usepackage{mathtools} 5 | \usepackage{dsfont} % for \mathds{N} 6 | \usepackage{bm} % for mathematical vector 7 | \usepackage[binary-units=true]{siunitx} 8 | \sisetup{table-align-text-post=false, retain-unity-mantissa=false, exponent-product = \cdot} 9 | 10 | %# table packages 11 | \usepackage{multirow} 12 | \usepackage{caption} 13 | \usepackage[font=footnotesize]{subcaption} 14 | \usepackage{booktabs} % for \toprule \midrule \bottomrule 15 | \usepackage{blkarray} % environment blockarray 16 | \usepackage{pdflscape} 17 | \usepackage{longtable} 18 | 19 | %# graphical packages 20 | \usepackage{tikz} 21 | \usepackage{xcolor} 22 | \usepackage{graphicx} 23 | 24 | % reference 25 | \usepackage[hidelinks]{hyperref} 26 | %\usepackage[colorlinks=true, citecolor=blue, linkcolor=blue]{hyperref} 27 | \usepackage[square, numbers, sort&compress]{natbib} % For Reference 28 | \usepackage{varioref} % vref vpageref 29 | \usepackage{cleveref} % 30 | \usepackage{chapterbib} % referece in each chapter 31 | 32 | %# list, which is better than itemize enumerate description 33 | \usepackage{paralist} % \asparaitem \compactitem \asparaenum \compactenum 34 | \usepackage{verbatim} % for literal text input 35 | 36 | % underlining package 37 | \usepackage[normalem]{ulem} 38 | 39 | % Misc packages 40 | \usepackage{fancybox} 41 | \usepackage{eurosym} 42 | \usepackage[running]{lineno} 43 | \usepackage{afterpage} 44 | \usepackage{xspace} 45 | \usepackage{fontspec} 46 | \usepackage{setspace} 47 | 48 | %# nomenclature 49 | % a bug in this package: | is not allowed to use 50 | \usepackage[compatible]{nomencl} 51 | \setlength{\nomlabelwidth}{1.8cm} 52 | 53 | %# new commands 54 | % Cite mark [1] on the top right 55 | \newcommand{\cites}[1]{\textsuperscript{\cite{#1}}} 56 | \newcommand{\jiacu}[1]{{\bfseries\heiti #1}} 57 | \newcommand{\jiadian}[1]{{\kaishu \dotuline{#1}}} 58 | 59 | \newcommand{\dd}{\mathrm{d}} % for differential operator d 60 | \newcommand{\mi}{\mathrm{i}} % for math e 61 | \newcommand{\me}{\mathrm{e}} % for math i 62 | \newcommand{\abs}[1]{\left\lvert#1\right\rvert} 63 | \newcommand{\norm}[1]{\left\lVert#1\right\rVert} 64 | \newcommand{\mean}[1]{\left\langle#1\right\rangle} 65 | \newcommand{\pbk}[1]{\left(#1\right)} 66 | \newcommand{\cbk}[1]{\left\lbrace#1\right\rbrace} 67 | \newcommand{\sbk}[1]{\left\lbrack#1\right\rbrack} 68 | \newcommand{\ie}{\textit{i.e.}\@\xspace} 69 | \newcommand{\eg}{\textit{e.g.}\@\xspace} 70 | \newcommand{\D}{\displaystyle} % for math display 71 | %\newcommand{\HE}{\hbox{H\kern-.12em\lower.48ex\hbox{E}}} 72 | \def\leaderfill{\leaders\hbox to 1em{\hss.\hss}\hfill} 73 | %\DeclareMathOperator{\OP}{OP} 74 | \DeclareSIUnit\molar{\mole\per\cubic\metre} 75 | \DeclareSIUnit\Molar{\textsc{M}} 76 | -------------------------------------------------------------------------------- /refBst/elsarticle-num-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `elsarticle-num-names.bst', 3 | %% 4 | %% Copyright 2007, 2008, 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% The list of all files belonging to the 'Elsarticle Bundle' is 17 | %% given in the file `manifest.txt'. 18 | %% 19 | %% 20 | %% $Id: elsarticle-num-names.bst 19 2009-12-17 07:07:52Z rishi $ 21 | %% 22 | %% 23 | %% ---------------------------------------- 24 | %% 25 | ENTRY 26 | { address 27 | author 28 | booktitle 29 | chapter 30 | doi 31 | edition 32 | editor 33 | eid 34 | howpublished 35 | institution 36 | isbn 37 | issn 38 | journal 39 | key 40 | month 41 | note 42 | number 43 | organization 44 | pages 45 | publisher 46 | school 47 | series 48 | title 49 | type 50 | url 51 | volume 52 | year 53 | } 54 | {} 55 | { label extra.label sort.label short.list } 56 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 57 | FUNCTION {init.state.consts} 58 | { #0 'before.all := 59 | #1 'mid.sentence := 60 | #2 'after.sentence := 61 | #3 'after.block := 62 | } 63 | STRINGS { s t} 64 | FUNCTION {output.nonnull} 65 | { 's := 66 | output.state mid.sentence = 67 | { ", " * write$ } 68 | { output.state after.block = 69 | { add.period$ write$ 70 | newline$ 71 | "\newblock " write$ 72 | } 73 | { output.state before.all = 74 | 'write$ 75 | { add.period$ " " * write$ } 76 | if$ 77 | } 78 | if$ 79 | mid.sentence 'output.state := 80 | } 81 | if$ 82 | s 83 | } 84 | FUNCTION {output} 85 | { duplicate$ empty$ 86 | 'pop$ 87 | 'output.nonnull 88 | if$ 89 | } 90 | FUNCTION {output.check} 91 | { 't := 92 | duplicate$ empty$ 93 | { pop$ "empty " t * " in " * cite$ * warning$ } 94 | 'output.nonnull 95 | if$ 96 | } 97 | FUNCTION {fin.entry} 98 | { add.period$ 99 | write$ 100 | newline$ 101 | } 102 | 103 | FUNCTION {new.block} 104 | { output.state before.all = 105 | 'skip$ 106 | { after.block 'output.state := } 107 | if$ 108 | } 109 | FUNCTION {new.sentence} 110 | { output.state after.block = 111 | 'skip$ 112 | { output.state before.all = 113 | 'skip$ 114 | { after.sentence 'output.state := } 115 | if$ 116 | } 117 | if$ 118 | } 119 | FUNCTION {add.blank} 120 | { " " * before.all 'output.state := 121 | } 122 | 123 | FUNCTION {date.block} 124 | { 125 | skip$ 126 | } 127 | 128 | FUNCTION {not} 129 | { { #0 } 130 | { #1 } 131 | if$ 132 | } 133 | FUNCTION {and} 134 | { 'skip$ 135 | { pop$ #0 } 136 | if$ 137 | } 138 | FUNCTION {or} 139 | { { pop$ #1 } 140 | 'skip$ 141 | if$ 142 | } 143 | FUNCTION {new.block.checkb} 144 | { empty$ 145 | swap$ empty$ 146 | and 147 | 'skip$ 148 | 'new.block 149 | if$ 150 | } 151 | FUNCTION {field.or.null} 152 | { duplicate$ empty$ 153 | { pop$ "" } 154 | 'skip$ 155 | if$ 156 | } 157 | FUNCTION {emphasize} 158 | { duplicate$ empty$ 159 | { pop$ "" } 160 | { "\emph{" swap$ * "}" * } 161 | if$ 162 | } 163 | FUNCTION {tie.or.space.prefix} 164 | { duplicate$ text.length$ #3 < 165 | { "~" } 166 | { " " } 167 | if$ 168 | swap$ 169 | } 170 | 171 | FUNCTION {capitalize} 172 | { "u" change.case$ "t" change.case$ } 173 | 174 | FUNCTION {space.word} 175 | { " " swap$ * " " * } 176 | % Here are the language-specific definitions for explicit words. 177 | % Each function has a name bbl.xxx where xxx is the English word. 178 | %------------------------------------------------------------------- 179 | % Begin module: 180 | % \ProvidesFile{english.mbs}[2003/11/06 4.2 (PWD)] 181 | 182 | % The language selected here is ENGLISH 183 | FUNCTION {bbl.and} 184 | { "and"} 185 | 186 | FUNCTION {bbl.etal} 187 | { "et~al." } 188 | 189 | FUNCTION {bbl.editors} 190 | { "eds." } 191 | 192 | FUNCTION {bbl.editor} 193 | { "ed." } 194 | 195 | FUNCTION {bbl.edby} 196 | { "edited by" } 197 | 198 | FUNCTION {bbl.edition} 199 | { "edn." } 200 | 201 | FUNCTION {bbl.volume} 202 | { "vol." } 203 | 204 | FUNCTION {bbl.of} 205 | { "of" } 206 | 207 | FUNCTION {bbl.number} 208 | { "no." } 209 | 210 | FUNCTION {bbl.nr} 211 | { "no." } 212 | 213 | FUNCTION {bbl.in} 214 | { "in" } 215 | 216 | FUNCTION {bbl.pages} 217 | { "" } 218 | 219 | FUNCTION {bbl.page} 220 | { "" } 221 | 222 | FUNCTION {bbl.chapter} 223 | { "chap." } 224 | 225 | FUNCTION {bbl.techrep} 226 | { "Tech. Rep." } 227 | 228 | FUNCTION {bbl.mthesis} 229 | { "Master's thesis" } 230 | 231 | FUNCTION {bbl.phdthesis} 232 | { "Ph.D. thesis" } 233 | 234 | MACRO {jan} {"Jan."} 235 | 236 | MACRO {feb} {"Feb."} 237 | 238 | MACRO {mar} {"Mar."} 239 | 240 | MACRO {apr} {"Apr."} 241 | 242 | MACRO {may} {"May"} 243 | 244 | MACRO {jun} {"Jun."} 245 | 246 | MACRO {jul} {"Jul."} 247 | 248 | MACRO {aug} {"Aug."} 249 | 250 | MACRO {sep} {"Sep."} 251 | 252 | MACRO {oct} {"Oct."} 253 | 254 | MACRO {nov} {"Nov."} 255 | 256 | MACRO {dec} {"Dec."} 257 | 258 | % End module: english.mbs 259 | %% Copyright 1994-2004 Patrick W Daly 260 | MACRO {acmcs} {"ACM Computing Surveys"} 261 | 262 | MACRO {acta} {"Acta Informatica"} 263 | 264 | MACRO {cacm} {"Communications of the ACM"} 265 | 266 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 267 | 268 | MACRO {ibmsj} {"IBM Systems Journal"} 269 | 270 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 271 | 272 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 273 | 274 | MACRO {ieeetcad} 275 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 276 | 277 | MACRO {ipl} {"Information Processing Letters"} 278 | 279 | MACRO {jacm} {"Journal of the ACM"} 280 | 281 | MACRO {jcss} {"Journal of Computer and System Sciences"} 282 | 283 | MACRO {scp} {"Science of Computer Programming"} 284 | 285 | MACRO {sicomp} {"SIAM Journal on Computing"} 286 | 287 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 288 | 289 | MACRO {tods} {"ACM Transactions on Database Systems"} 290 | 291 | MACRO {tog} {"ACM Transactions on Graphics"} 292 | 293 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 294 | 295 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 296 | 297 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 298 | 299 | MACRO {tcs} {"Theoretical Computer Science"} 300 | FUNCTION {bibinfo.check} 301 | { swap$ 302 | duplicate$ missing$ 303 | { 304 | pop$ pop$ 305 | "" 306 | } 307 | { duplicate$ empty$ 308 | { 309 | swap$ pop$ 310 | } 311 | { swap$ 312 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 313 | } 314 | if$ 315 | } 316 | if$ 317 | } 318 | FUNCTION {bibinfo.warn} 319 | { swap$ 320 | duplicate$ missing$ 321 | { 322 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 323 | "" 324 | } 325 | { duplicate$ empty$ 326 | { 327 | swap$ "empty " swap$ * " in " * cite$ * warning$ 328 | } 329 | { swap$ 330 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 331 | } 332 | if$ 333 | } 334 | if$ 335 | } 336 | FUNCTION {format.url} 337 | { url empty$ 338 | { "" } 339 | { "\urlprefix\url{" url * "}" * } 340 | if$ 341 | } 342 | 343 | STRINGS { bibinfo} 344 | INTEGERS { nameptr namesleft numnames } 345 | 346 | FUNCTION {format.names} 347 | { 'bibinfo := 348 | duplicate$ empty$ 'skip$ { 349 | 's := 350 | "" 't := 351 | #1 'nameptr := 352 | s num.names$ 'numnames := 353 | numnames 'namesleft := 354 | { namesleft #0 > } 355 | { s nameptr 356 | "{f.~}{vv~}{ll}{, jj}" 357 | format.name$ 358 | bibinfo bibinfo.check 359 | 't := 360 | nameptr #1 > 361 | { 362 | namesleft #1 > 363 | { ", " * t * } 364 | { 365 | "," * 366 | s nameptr "{ll}" format.name$ duplicate$ "others" = 367 | { 't := } 368 | { pop$ } 369 | if$ 370 | t "others" = 371 | { 372 | " " * bbl.etal * 373 | } 374 | { " " * t * } 375 | if$ 376 | } 377 | if$ 378 | } 379 | 't 380 | if$ 381 | nameptr #1 + 'nameptr := 382 | namesleft #1 - 'namesleft := 383 | } 384 | while$ 385 | } if$ 386 | } 387 | FUNCTION {format.names.ed} 388 | { 389 | format.names 390 | } 391 | FUNCTION {format.key} 392 | { empty$ 393 | { key field.or.null } 394 | { "" } 395 | if$ 396 | } 397 | 398 | FUNCTION {format.authors} 399 | { author "author" format.names 400 | } 401 | FUNCTION {get.bbl.editor} 402 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 403 | 404 | FUNCTION {format.editors} 405 | { editor "editor" format.names duplicate$ empty$ 'skip$ 406 | { 407 | " " * 408 | get.bbl.editor 409 | capitalize 410 | "(" swap$ * ")" * 411 | * 412 | } 413 | if$ 414 | } 415 | FUNCTION {format.isbn} 416 | { isbn "isbn" bibinfo.check 417 | duplicate$ empty$ 'skip$ 418 | { 419 | "ISBN " swap$ * 420 | } 421 | if$ 422 | } 423 | 424 | FUNCTION {format.issn} 425 | { issn "issn" bibinfo.check 426 | duplicate$ empty$ 'skip$ 427 | { 428 | "ISSN " swap$ * 429 | } 430 | if$ 431 | } 432 | 433 | FUNCTION {format.doi} 434 | { doi "doi" bibinfo.check 435 | duplicate$ empty$ 'skip$ 436 | { 437 | "\doi{" swap$ * "}" * 438 | } 439 | if$ 440 | } 441 | 442 | FUNCTION {format.note} 443 | { 444 | note empty$ 445 | { "" } 446 | { note #1 #1 substring$ 447 | duplicate$ "{" = 448 | 'skip$ 449 | { output.state mid.sentence = 450 | { "l" } 451 | { "u" } 452 | if$ 453 | change.case$ 454 | } 455 | if$ 456 | note #2 global.max$ substring$ * "note" bibinfo.check 457 | } 458 | if$ 459 | } 460 | 461 | FUNCTION {format.title} 462 | { title 463 | "title" bibinfo.check 464 | } 465 | FUNCTION {format.full.names} 466 | {'s := 467 | "" 't := 468 | #1 'nameptr := 469 | s num.names$ 'numnames := 470 | numnames 'namesleft := 471 | { namesleft #0 > } 472 | { s nameptr 473 | "{vv~}{ll}" format.name$ 474 | 't := 475 | nameptr #1 > 476 | { 477 | namesleft #1 > 478 | { ", " * t * } 479 | { 480 | s nameptr "{ll}" format.name$ duplicate$ "others" = 481 | { 't := } 482 | { pop$ } 483 | if$ 484 | t "others" = 485 | { 486 | " " * bbl.etal * 487 | } 488 | { 489 | numnames #2 > 490 | { "," * } 491 | 'skip$ 492 | if$ 493 | bbl.and 494 | space.word * t * 495 | } 496 | if$ 497 | } 498 | if$ 499 | } 500 | 't 501 | if$ 502 | nameptr #1 + 'nameptr := 503 | namesleft #1 - 'namesleft := 504 | } 505 | while$ 506 | } 507 | 508 | FUNCTION {author.editor.key.full} 509 | { author empty$ 510 | { editor empty$ 511 | { key empty$ 512 | { cite$ #1 #3 substring$ } 513 | 'key 514 | if$ 515 | } 516 | { editor format.full.names } 517 | if$ 518 | } 519 | { author format.full.names } 520 | if$ 521 | } 522 | 523 | FUNCTION {author.key.full} 524 | { author empty$ 525 | { key empty$ 526 | { cite$ #1 #3 substring$ } 527 | 'key 528 | if$ 529 | } 530 | { author format.full.names } 531 | if$ 532 | } 533 | 534 | FUNCTION {editor.key.full} 535 | { editor empty$ 536 | { key empty$ 537 | { cite$ #1 #3 substring$ } 538 | 'key 539 | if$ 540 | } 541 | { editor format.full.names } 542 | if$ 543 | } 544 | 545 | FUNCTION {make.full.names} 546 | { type$ "book" = 547 | type$ "inbook" = 548 | or 549 | 'author.editor.key.full 550 | { type$ "proceedings" = 551 | 'editor.key.full 552 | 'author.key.full 553 | if$ 554 | } 555 | if$ 556 | } 557 | 558 | FUNCTION {output.bibitem} 559 | { newline$ 560 | "\bibitem[{" write$ 561 | label write$ 562 | ")" make.full.names duplicate$ short.list = 563 | { pop$ } 564 | { * } 565 | if$ 566 | "}]{" * write$ 567 | cite$ write$ 568 | "}" write$ 569 | newline$ 570 | "" 571 | before.all 'output.state := 572 | } 573 | 574 | FUNCTION {n.dashify} 575 | { 576 | 't := 577 | "" 578 | { t empty$ not } 579 | { t #1 #1 substring$ "-" = 580 | { t #1 #2 substring$ "--" = not 581 | { "--" * 582 | t #2 global.max$ substring$ 't := 583 | } 584 | { { t #1 #1 substring$ "-" = } 585 | { "-" * 586 | t #2 global.max$ substring$ 't := 587 | } 588 | while$ 589 | } 590 | if$ 591 | } 592 | { t #1 #1 substring$ * 593 | t #2 global.max$ substring$ 't := 594 | } 595 | if$ 596 | } 597 | while$ 598 | } 599 | 600 | FUNCTION {word.in} 601 | { bbl.in 602 | ":" * 603 | " " * } 604 | 605 | FUNCTION {format.date} 606 | { year "year" bibinfo.check duplicate$ empty$ 607 | { 608 | "empty year in " cite$ * "; set to ????" * warning$ 609 | pop$ "????" 610 | } 611 | 'skip$ 612 | if$ 613 | extra.label * 614 | } 615 | FUNCTION{format.year} 616 | { year "year" bibinfo.check duplicate$ empty$ 617 | { "empty year in " cite$ * 618 | "; set to ????" * 619 | warning$ 620 | pop$ "????" 621 | } 622 | { 623 | } 624 | if$ 625 | extra.label * 626 | "(" swap$ * ")" * 627 | } 628 | FUNCTION {format.btitle} 629 | { title "title" bibinfo.check 630 | duplicate$ empty$ 'skip$ 631 | { 632 | } 633 | if$ 634 | } 635 | FUNCTION {either.or.check} 636 | { empty$ 637 | 'pop$ 638 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 639 | if$ 640 | } 641 | FUNCTION {format.bvolume} 642 | { volume empty$ 643 | { "" } 644 | { bbl.volume volume tie.or.space.prefix 645 | "volume" bibinfo.check * * 646 | series "series" bibinfo.check 647 | duplicate$ empty$ 'pop$ 648 | { swap$ bbl.of space.word * swap$ 649 | emphasize * } 650 | if$ 651 | "volume and number" number either.or.check 652 | } 653 | if$ 654 | } 655 | FUNCTION {format.number.series} 656 | { volume empty$ 657 | { number empty$ 658 | { series field.or.null } 659 | { series empty$ 660 | { number "number" bibinfo.check } 661 | { output.state mid.sentence = 662 | { bbl.number } 663 | { bbl.number capitalize } 664 | if$ 665 | number tie.or.space.prefix "number" bibinfo.check * * 666 | bbl.in space.word * 667 | series "series" bibinfo.check * 668 | } 669 | if$ 670 | } 671 | if$ 672 | } 673 | { "" } 674 | if$ 675 | } 676 | 677 | FUNCTION {format.edition} 678 | { edition duplicate$ empty$ 'skip$ 679 | { 680 | output.state mid.sentence = 681 | { "l" } 682 | { "t" } 683 | if$ change.case$ 684 | "edition" bibinfo.check 685 | " " * bbl.edition * 686 | } 687 | if$ 688 | } 689 | INTEGERS { multiresult } 690 | FUNCTION {multi.page.check} 691 | { 't := 692 | #0 'multiresult := 693 | { multiresult not 694 | t empty$ not 695 | and 696 | } 697 | { t #1 #1 substring$ 698 | duplicate$ "-" = 699 | swap$ duplicate$ "," = 700 | swap$ "+" = 701 | or or 702 | { #1 'multiresult := } 703 | { t #2 global.max$ substring$ 't := } 704 | if$ 705 | } 706 | while$ 707 | multiresult 708 | } 709 | FUNCTION {format.pages} 710 | { pages duplicate$ empty$ 'skip$ 711 | { duplicate$ multi.page.check 712 | { 713 | n.dashify 714 | } 715 | { 716 | } 717 | if$ 718 | "pages" bibinfo.check 719 | } 720 | if$ 721 | } 722 | FUNCTION {format.journal.pages} 723 | { pages duplicate$ empty$ 'pop$ 724 | { swap$ duplicate$ empty$ 725 | { pop$ pop$ format.pages } 726 | { 727 | " " * 728 | format.year * " " * 729 | swap$ 730 | n.dashify 731 | "pages" bibinfo.check 732 | * 733 | } 734 | if$ 735 | } 736 | if$ 737 | } 738 | FUNCTION {format.journal.eid} 739 | { eid "eid" bibinfo.check 740 | duplicate$ empty$ 'pop$ 741 | { swap$ duplicate$ empty$ 'skip$ 742 | { 743 | " " * 744 | } 745 | if$ 746 | swap$ * 747 | } 748 | if$ 749 | } 750 | FUNCTION {format.vol.num.pages} 751 | { volume field.or.null 752 | duplicate$ empty$ 'skip$ 753 | { 754 | "volume" bibinfo.check 755 | } 756 | if$ 757 | number "number" bibinfo.check duplicate$ empty$ 'skip$ 758 | { 759 | swap$ duplicate$ empty$ 760 | { "there's a number but no volume in " cite$ * warning$ } 761 | 'skip$ 762 | if$ 763 | swap$ 764 | "~(" swap$ * ")" * 765 | } 766 | if$ * 767 | } 768 | 769 | FUNCTION {format.chapter.pages} 770 | { chapter empty$ 771 | { "" } 772 | { type empty$ 773 | { bbl.chapter } 774 | { type "l" change.case$ 775 | "type" bibinfo.check 776 | } 777 | if$ 778 | chapter tie.or.space.prefix 779 | "chapter" bibinfo.check 780 | * * 781 | } 782 | if$ 783 | } 784 | 785 | FUNCTION {format.booktitle} 786 | { 787 | booktitle "booktitle" bibinfo.check 788 | } 789 | FUNCTION {format.in.ed.booktitle} 790 | { format.booktitle duplicate$ empty$ 'skip$ 791 | { 792 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 793 | { 794 | " " * 795 | get.bbl.editor 796 | capitalize 797 | "(" swap$ * "), " * 798 | * swap$ 799 | * } 800 | if$ 801 | word.in swap$ * 802 | } 803 | if$ 804 | } 805 | FUNCTION {format.thesis.type} 806 | { type duplicate$ empty$ 807 | 'pop$ 808 | { swap$ pop$ 809 | "t" change.case$ "type" bibinfo.check 810 | } 811 | if$ 812 | } 813 | FUNCTION {format.tr.number} 814 | { number "number" bibinfo.check 815 | type duplicate$ empty$ 816 | { pop$ bbl.techrep } 817 | 'skip$ 818 | if$ 819 | "type" bibinfo.check 820 | swap$ duplicate$ empty$ 821 | { pop$ "t" change.case$ } 822 | { tie.or.space.prefix * * } 823 | if$ 824 | } 825 | FUNCTION {format.article.crossref} 826 | { 827 | word.in 828 | " \cite{" * crossref * "}" * 829 | } 830 | FUNCTION {format.book.crossref} 831 | { volume duplicate$ empty$ 832 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 833 | pop$ word.in 834 | } 835 | { bbl.volume 836 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 837 | } 838 | if$ 839 | " \cite{" * crossref * "}" * 840 | } 841 | FUNCTION {format.incoll.inproc.crossref} 842 | { 843 | word.in 844 | " \cite{" * crossref * "}" * 845 | } 846 | FUNCTION {format.org.or.pub} 847 | { 't := 848 | "" 849 | address empty$ t empty$ and 850 | 'skip$ 851 | { 852 | t empty$ 853 | { address "address" bibinfo.check * 854 | } 855 | { t * 856 | address empty$ 857 | 'skip$ 858 | { ", " * address "address" bibinfo.check * } 859 | if$ 860 | } 861 | if$ 862 | } 863 | if$ 864 | } 865 | FUNCTION {format.publisher.address} 866 | { publisher "publisher" bibinfo.warn format.org.or.pub 867 | } 868 | 869 | FUNCTION {format.organization.address} 870 | { organization "organization" bibinfo.check format.org.or.pub 871 | } 872 | 873 | FUNCTION {article} 874 | { output.bibitem 875 | format.authors "author" output.check 876 | author format.key output 877 | format.title "title" output.check 878 | crossref missing$ 879 | { 880 | journal 881 | "journal" bibinfo.check 882 | "journal" output.check 883 | add.blank 884 | format.vol.num.pages output 885 | } 886 | { format.article.crossref output.nonnull 887 | } 888 | if$ 889 | eid empty$ 890 | { format.journal.pages } 891 | { format.journal.eid } 892 | if$ 893 | format.issn output 894 | format.doi output 895 | format.url output 896 | format.note output 897 | fin.entry 898 | } 899 | FUNCTION {book} 900 | { output.bibitem 901 | author empty$ 902 | { format.editors "author and editor" output.check 903 | editor format.key output 904 | } 905 | { format.authors output.nonnull 906 | crossref missing$ 907 | { "author and editor" editor either.or.check } 908 | 'skip$ 909 | if$ 910 | } 911 | if$ 912 | format.btitle "title" output.check 913 | crossref missing$ 914 | { format.bvolume output 915 | format.number.series output 916 | format.publisher.address output 917 | } 918 | { 919 | format.book.crossref output.nonnull 920 | } 921 | if$ 922 | format.edition output 923 | format.isbn output 924 | format.doi output 925 | format.url output 926 | format.note output 927 | format.date "year" output.check 928 | fin.entry 929 | } 930 | FUNCTION {booklet} 931 | { output.bibitem 932 | format.authors output 933 | author format.key output 934 | format.title "title" output.check 935 | howpublished "howpublished" bibinfo.check output 936 | address "address" bibinfo.check output 937 | format.isbn output 938 | format.doi output 939 | format.url output 940 | format.note output 941 | format.date "year" output.check 942 | fin.entry 943 | } 944 | 945 | FUNCTION {inbook} 946 | { output.bibitem 947 | author empty$ 948 | { format.editors "author and editor" output.check 949 | editor format.key output 950 | } 951 | { format.authors output.nonnull 952 | crossref missing$ 953 | { "author and editor" editor either.or.check } 954 | 'skip$ 955 | if$ 956 | } 957 | if$ 958 | format.btitle "title" output.check 959 | crossref missing$ 960 | { 961 | format.bvolume output 962 | format.chapter.pages "chapter and pages" output.check 963 | format.number.series output 964 | format.publisher.address output 965 | } 966 | { 967 | format.chapter.pages "chapter and pages" output.check 968 | format.book.crossref output.nonnull 969 | } 970 | if$ 971 | format.edition output 972 | crossref missing$ 973 | { format.isbn output } 974 | 'skip$ 975 | if$ 976 | format.pages "pages" output.check 977 | format.doi output 978 | format.url output 979 | format.note output 980 | format.date "year" output.check 981 | fin.entry 982 | } 983 | 984 | FUNCTION {incollection} 985 | { output.bibitem 986 | format.authors "author" output.check 987 | author format.key output 988 | format.title "title" output.check 989 | crossref missing$ 990 | { format.in.ed.booktitle "booktitle" output.check 991 | format.bvolume output 992 | format.number.series output 993 | format.chapter.pages output 994 | format.publisher.address output 995 | format.edition output 996 | format.isbn output 997 | } 998 | { format.incoll.inproc.crossref output.nonnull 999 | format.chapter.pages output 1000 | } 1001 | if$ 1002 | format.pages "pages" output.check 1003 | format.doi output 1004 | format.url output 1005 | format.note output 1006 | format.date "year" output.check 1007 | fin.entry 1008 | } 1009 | FUNCTION {inproceedings} 1010 | { output.bibitem 1011 | format.authors "author" output.check 1012 | author format.key output 1013 | format.title "title" output.check 1014 | crossref missing$ 1015 | { format.in.ed.booktitle "booktitle" output.check 1016 | format.bvolume output 1017 | format.number.series output 1018 | publisher empty$ 1019 | { format.organization.address output } 1020 | { organization "organization" bibinfo.check output 1021 | format.publisher.address output 1022 | } 1023 | if$ 1024 | format.isbn output 1025 | format.issn output 1026 | } 1027 | { format.incoll.inproc.crossref output.nonnull 1028 | } 1029 | if$ 1030 | format.pages "pages" output.check 1031 | format.doi output 1032 | format.url output 1033 | format.note output 1034 | format.date "year" output.check 1035 | fin.entry 1036 | } 1037 | FUNCTION {conference} { inproceedings } 1038 | FUNCTION {manual} 1039 | { output.bibitem 1040 | format.authors output 1041 | author format.key output 1042 | format.btitle "title" output.check 1043 | organization "organization" bibinfo.check output 1044 | address "address" bibinfo.check output 1045 | format.edition output 1046 | format.doi output 1047 | format.url output 1048 | format.note output 1049 | format.date "year" output.check 1050 | fin.entry 1051 | } 1052 | 1053 | FUNCTION {mastersthesis} 1054 | { output.bibitem 1055 | format.authors "author" output.check 1056 | author format.key output 1057 | format.btitle 1058 | "title" output.check 1059 | bbl.mthesis format.thesis.type output.nonnull 1060 | school "school" bibinfo.warn output 1061 | address "address" bibinfo.check output 1062 | format.doi output 1063 | format.url output 1064 | format.note output 1065 | format.date "year" output.check 1066 | fin.entry 1067 | } 1068 | 1069 | FUNCTION {misc} 1070 | { output.bibitem 1071 | format.authors output 1072 | author format.key output 1073 | format.title output 1074 | howpublished "howpublished" bibinfo.check output 1075 | format.doi output 1076 | format.url output 1077 | format.note output 1078 | format.date "year" output.check 1079 | fin.entry 1080 | } 1081 | FUNCTION {phdthesis} 1082 | { output.bibitem 1083 | format.authors "author" output.check 1084 | author format.key output 1085 | format.btitle 1086 | "title" output.check 1087 | bbl.phdthesis format.thesis.type output.nonnull 1088 | school "school" bibinfo.warn output 1089 | address "address" bibinfo.check output 1090 | format.doi output 1091 | format.url output 1092 | format.note output 1093 | format.date "year" output.check 1094 | fin.entry 1095 | } 1096 | 1097 | FUNCTION {proceedings} 1098 | { output.bibitem 1099 | format.editors output 1100 | editor format.key output 1101 | format.btitle "title" output.check 1102 | format.bvolume output 1103 | format.number.series output 1104 | publisher empty$ 1105 | { format.organization.address output } 1106 | { organization "organization" bibinfo.check output 1107 | format.publisher.address output 1108 | } 1109 | if$ 1110 | format.isbn output 1111 | format.issn output 1112 | format.doi output 1113 | format.url output 1114 | format.note output 1115 | format.date "year" output.check 1116 | fin.entry 1117 | } 1118 | 1119 | FUNCTION {techreport} 1120 | { output.bibitem 1121 | format.authors "author" output.check 1122 | author format.key output 1123 | format.title 1124 | "title" output.check 1125 | format.tr.number output.nonnull 1126 | institution "institution" bibinfo.warn output 1127 | address "address" bibinfo.check output 1128 | format.doi output 1129 | format.url output 1130 | format.note output 1131 | format.date "year" output.check 1132 | fin.entry 1133 | } 1134 | 1135 | FUNCTION {unpublished} 1136 | { output.bibitem 1137 | format.authors "author" output.check 1138 | author format.key output 1139 | format.title "title" output.check 1140 | format.doi output 1141 | format.url output 1142 | format.note "note" output.check 1143 | format.date output 1144 | fin.entry 1145 | } 1146 | 1147 | FUNCTION {default.type} { misc } 1148 | READ 1149 | FUNCTION {sortify} 1150 | { purify$ 1151 | "l" change.case$ 1152 | } 1153 | INTEGERS { len } 1154 | FUNCTION {chop.word} 1155 | { 's := 1156 | 'len := 1157 | s #1 len substring$ = 1158 | { s len #1 + global.max$ substring$ } 1159 | 's 1160 | if$ 1161 | } 1162 | FUNCTION {format.lab.names} 1163 | { 's := 1164 | "" 't := 1165 | s #1 "{vv~}{ll}" format.name$ 1166 | s num.names$ duplicate$ 1167 | #2 > 1168 | { pop$ 1169 | " " * bbl.etal * 1170 | } 1171 | { #2 < 1172 | 'skip$ 1173 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1174 | { 1175 | " " * bbl.etal * 1176 | } 1177 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1178 | * } 1179 | if$ 1180 | } 1181 | if$ 1182 | } 1183 | if$ 1184 | } 1185 | 1186 | FUNCTION {author.key.label} 1187 | { author empty$ 1188 | { key empty$ 1189 | { cite$ #1 #3 substring$ } 1190 | 'key 1191 | if$ 1192 | } 1193 | { author format.lab.names } 1194 | if$ 1195 | } 1196 | 1197 | FUNCTION {author.editor.key.label} 1198 | { author empty$ 1199 | { editor empty$ 1200 | { key empty$ 1201 | { cite$ #1 #3 substring$ } 1202 | 'key 1203 | if$ 1204 | } 1205 | { editor format.lab.names } 1206 | if$ 1207 | } 1208 | { author format.lab.names } 1209 | if$ 1210 | } 1211 | 1212 | FUNCTION {editor.key.label} 1213 | { editor empty$ 1214 | { key empty$ 1215 | { cite$ #1 #3 substring$ } 1216 | 'key 1217 | if$ 1218 | } 1219 | { editor format.lab.names } 1220 | if$ 1221 | } 1222 | 1223 | FUNCTION {calc.short.authors} 1224 | { type$ "book" = 1225 | type$ "inbook" = 1226 | or 1227 | 'author.editor.key.label 1228 | { type$ "proceedings" = 1229 | 'editor.key.label 1230 | 'author.key.label 1231 | if$ 1232 | } 1233 | if$ 1234 | 'short.list := 1235 | } 1236 | 1237 | FUNCTION {calc.label} 1238 | { calc.short.authors 1239 | short.list 1240 | "(" 1241 | * 1242 | year duplicate$ empty$ 1243 | { pop$ "????" } 1244 | { purify$ #-1 #4 substring$ } 1245 | if$ 1246 | * 1247 | 'label := 1248 | } 1249 | 1250 | FUNCTION {sort.format.names} 1251 | { 's := 1252 | #1 'nameptr := 1253 | "" 1254 | s num.names$ 'numnames := 1255 | numnames 'namesleft := 1256 | { namesleft #0 > } 1257 | { s nameptr 1258 | "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" 1259 | format.name$ 't := 1260 | nameptr #1 > 1261 | { 1262 | " " * 1263 | namesleft #1 = t "others" = and 1264 | { "zzzzz" * } 1265 | { t sortify * } 1266 | if$ 1267 | } 1268 | { t sortify * } 1269 | if$ 1270 | nameptr #1 + 'nameptr := 1271 | namesleft #1 - 'namesleft := 1272 | } 1273 | while$ 1274 | } 1275 | 1276 | FUNCTION {sort.format.title} 1277 | { 't := 1278 | "A " #2 1279 | "An " #3 1280 | "The " #4 t chop.word 1281 | chop.word 1282 | chop.word 1283 | sortify 1284 | #1 global.max$ substring$ 1285 | } 1286 | FUNCTION {author.sort} 1287 | { author empty$ 1288 | { key empty$ 1289 | { "to sort, need author or key in " cite$ * warning$ 1290 | "" 1291 | } 1292 | { key sortify } 1293 | if$ 1294 | } 1295 | { author sort.format.names } 1296 | if$ 1297 | } 1298 | FUNCTION {author.editor.sort} 1299 | { author empty$ 1300 | { editor empty$ 1301 | { key empty$ 1302 | { "to sort, need author, editor, or key in " cite$ * warning$ 1303 | "" 1304 | } 1305 | { key sortify } 1306 | if$ 1307 | } 1308 | { editor sort.format.names } 1309 | if$ 1310 | } 1311 | { author sort.format.names } 1312 | if$ 1313 | } 1314 | FUNCTION {editor.sort} 1315 | { editor empty$ 1316 | { key empty$ 1317 | { "to sort, need editor or key in " cite$ * warning$ 1318 | "" 1319 | } 1320 | { key sortify } 1321 | if$ 1322 | } 1323 | { editor sort.format.names } 1324 | if$ 1325 | } 1326 | INTEGERS { seq.num } 1327 | FUNCTION {init.seq} 1328 | { #0 'seq.num :=} 1329 | EXECUTE {init.seq} 1330 | FUNCTION {int.to.fix} 1331 | { "000000000" swap$ int.to.str$ * 1332 | #-1 #10 substring$ 1333 | } 1334 | FUNCTION {presort} 1335 | { calc.label 1336 | label sortify 1337 | " " 1338 | * 1339 | seq.num #1 + 'seq.num := 1340 | seq.num int.to.fix 1341 | 'sort.label := 1342 | sort.label 1343 | * 1344 | " " 1345 | * 1346 | title field.or.null 1347 | sort.format.title 1348 | * 1349 | #1 entry.max$ substring$ 1350 | 'sort.key$ := 1351 | } 1352 | 1353 | ITERATE {presort} 1354 | SORT 1355 | STRINGS { last.label next.extra } 1356 | INTEGERS { last.extra.num number.label } 1357 | FUNCTION {initialize.extra.label.stuff} 1358 | { #0 int.to.chr$ 'last.label := 1359 | "" 'next.extra := 1360 | #0 'last.extra.num := 1361 | #0 'number.label := 1362 | } 1363 | FUNCTION {forward.pass} 1364 | { last.label label = 1365 | { last.extra.num #1 + 'last.extra.num := 1366 | last.extra.num int.to.chr$ 'extra.label := 1367 | } 1368 | { "a" chr.to.int$ 'last.extra.num := 1369 | "" 'extra.label := 1370 | label 'last.label := 1371 | } 1372 | if$ 1373 | number.label #1 + 'number.label := 1374 | } 1375 | FUNCTION {reverse.pass} 1376 | { next.extra "b" = 1377 | { "a" 'extra.label := } 1378 | 'skip$ 1379 | if$ 1380 | extra.label 'next.extra := 1381 | extra.label 1382 | duplicate$ empty$ 1383 | 'skip$ 1384 | { "{\natexlab{" swap$ * "}}" * } 1385 | if$ 1386 | 'extra.label := 1387 | label extra.label * 'label := 1388 | } 1389 | EXECUTE {initialize.extra.label.stuff} 1390 | ITERATE {forward.pass} 1391 | REVERSE {reverse.pass} 1392 | FUNCTION {bib.sort.order} 1393 | { sort.label 1394 | " " 1395 | * 1396 | year field.or.null sortify 1397 | * 1398 | " " 1399 | * 1400 | title field.or.null 1401 | sort.format.title 1402 | * 1403 | #1 entry.max$ substring$ 1404 | 'sort.key$ := 1405 | } 1406 | ITERATE {bib.sort.order} 1407 | SORT 1408 | FUNCTION {begin.bib} 1409 | { preamble$ empty$ 1410 | 'skip$ 1411 | { preamble$ write$ newline$ } 1412 | if$ 1413 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1414 | write$ newline$ 1415 | "\providecommand{\natexlab}[1]{#1}" 1416 | write$ newline$ 1417 | "\providecommand{\url}[1]{\texttt{#1}}" 1418 | write$ newline$ 1419 | "\providecommand{\urlprefix}{URL }" 1420 | write$ newline$ 1421 | "\expandafter\ifx\csname urlstyle\endcsname\relax" 1422 | write$ newline$ 1423 | " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" 1424 | write$ newline$ 1425 | " \providecommand{\doi}[1]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\url{#1}\endgroup}\fi" 1426 | write$ newline$ 1427 | "\providecommand{\bibinfo}[2]{#2}" 1428 | write$ newline$ 1429 | } 1430 | EXECUTE {begin.bib} 1431 | EXECUTE {init.state.consts} 1432 | ITERATE {call.type$} 1433 | FUNCTION {end.bib} 1434 | { newline$ 1435 | "\end{thebibliography}" write$ newline$ 1436 | } 1437 | EXECUTE {end.bib} 1438 | %% End of customized bst file 1439 | %% 1440 | %% 1441 | %% End of file `elsarticle-num-names.bst'. 1442 | 1443 | 1444 | -------------------------------------------------------------------------------- /refBst/model1-num-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `model1-num-names.bst', 3 | %% 4 | %% Copyright 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% $Id: model1-num-names.bst 125 2009-10-07 11:47:47Z rishi $ 17 | %% 18 | %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1/model1-num-names.bst $ 19 | %% 20 | %% 21 | 22 | ENTRY 23 | { address 24 | author 25 | booktitle 26 | chapter 27 | edition 28 | editor 29 | howpublished 30 | institution 31 | journal 32 | key 33 | month 34 | note 35 | number 36 | organization 37 | pages 38 | publisher 39 | school 40 | series 41 | title 42 | type 43 | volume 44 | year 45 | } 46 | {} 47 | { label extra.label sort.label short.list } 48 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 49 | FUNCTION {init.state.consts} 50 | { #0 'before.all := 51 | #1 'mid.sentence := 52 | #2 'after.sentence := 53 | #3 'after.block := 54 | } 55 | STRINGS { s t} 56 | FUNCTION {output.nonnull} 57 | { 's := 58 | output.state mid.sentence = 59 | { ", " * write$ } 60 | { output.state after.block = 61 | % { add.period$ write$ 62 | { ", " * write$ 63 | newline$ 64 | "\newblock " write$ 65 | } 66 | { output.state before.all = 67 | 'write$ 68 | { add.period$ " " * write$ } 69 | if$ 70 | } 71 | if$ 72 | mid.sentence 'output.state := 73 | } 74 | if$ 75 | s 76 | } 77 | FUNCTION {output} 78 | { duplicate$ empty$ 79 | 'pop$ 80 | 'output.nonnull 81 | if$ 82 | } 83 | FUNCTION {output.check} 84 | { 't := 85 | duplicate$ empty$ 86 | { pop$ "empty " t * " in " * cite$ * warning$ } 87 | 'output.nonnull 88 | if$ 89 | } 90 | FUNCTION {fin.entry} 91 | { add.period$ 92 | write$ 93 | newline$ 94 | } 95 | 96 | FUNCTION {new.block} 97 | { output.state before.all = 98 | 'skip$ 99 | { after.block 'output.state := } 100 | if$ 101 | } 102 | FUNCTION {new.sentence} 103 | { output.state after.block = 104 | 'skip$ 105 | { output.state before.all = 106 | 'skip$ 107 | { after.sentence 'output.state := } 108 | if$ 109 | } 110 | if$ 111 | } 112 | FUNCTION {add.blank} 113 | { " " * before.all 'output.state := 114 | } 115 | 116 | FUNCTION {date.block} 117 | { 118 | skip$ 119 | } 120 | 121 | FUNCTION {not} 122 | { { #0 } 123 | { #1 } 124 | if$ 125 | } 126 | FUNCTION {and} 127 | { 'skip$ 128 | { pop$ #0 } 129 | if$ 130 | } 131 | FUNCTION {or} 132 | { { pop$ #1 } 133 | 'skip$ 134 | if$ 135 | } 136 | FUNCTION {new.block.checkb} 137 | { empty$ 138 | swap$ empty$ 139 | and 140 | 'skip$ 141 | 'new.block 142 | if$ 143 | } 144 | FUNCTION {field.or.null} 145 | { duplicate$ empty$ 146 | { pop$ "" } 147 | 'skip$ 148 | if$ 149 | } 150 | FUNCTION {emphasize} 151 | { duplicate$ empty$ 152 | { pop$ "" } 153 | { "\textit{" swap$ * "}" * } 154 | if$ 155 | } 156 | FUNCTION {tie.or.space.prefix} 157 | { duplicate$ text.length$ #3 < 158 | { "~" } 159 | { " " } 160 | if$ 161 | swap$ 162 | } 163 | 164 | FUNCTION {capitalize} 165 | { "u" change.case$ "t" change.case$ } 166 | 167 | FUNCTION {space.word} 168 | { " " swap$ * " " * } 169 | % Here are the language-specific definitions for explicit words. 170 | % Each function has a name bbl.xxx where xxx is the English word. 171 | % The language selected here is ENGLISH 172 | FUNCTION {bbl.and} 173 | { "and"} 174 | 175 | FUNCTION {bbl.etal} 176 | { "et~al." } 177 | 178 | FUNCTION {bbl.editors} 179 | { "eds." } 180 | 181 | FUNCTION {bbl.editor} 182 | { "ed." } 183 | 184 | FUNCTION {bbl.edby} 185 | { "edited by" } 186 | 187 | FUNCTION {bbl.edition} 188 | { "edition" } 189 | 190 | FUNCTION {bbl.volume} 191 | { "volume" } 192 | 193 | FUNCTION {bbl.of} 194 | { "of" } 195 | 196 | FUNCTION {bbl.number} 197 | { "number" } 198 | 199 | FUNCTION {bbl.nr} 200 | { "no." } 201 | 202 | FUNCTION {bbl.in} 203 | { "in" } 204 | 205 | FUNCTION {bbl.pages} 206 | { "pp." } 207 | 208 | FUNCTION {bbl.page} 209 | { "p." } 210 | 211 | FUNCTION {bbl.chapter} 212 | { "chapter" } 213 | 214 | FUNCTION {bbl.techrep} 215 | { "Technical Report" } 216 | 217 | FUNCTION {bbl.mthesis} 218 | { "Master's thesis" } 219 | 220 | FUNCTION {bbl.phdthesis} 221 | { "Ph.D. thesis" } 222 | 223 | MACRO {jan} {"January"} 224 | 225 | MACRO {feb} {"February"} 226 | 227 | MACRO {mar} {"March"} 228 | 229 | MACRO {apr} {"April"} 230 | 231 | MACRO {may} {"May"} 232 | 233 | MACRO {jun} {"June"} 234 | 235 | MACRO {jul} {"July"} 236 | 237 | MACRO {aug} {"August"} 238 | 239 | MACRO {sep} {"September"} 240 | 241 | MACRO {oct} {"October"} 242 | 243 | MACRO {nov} {"November"} 244 | 245 | MACRO {dec} {"December"} 246 | 247 | MACRO {acmcs} {"ACM Comput. Surv."} 248 | 249 | MACRO {acta} {"Acta Inf."} 250 | 251 | MACRO {cacm} {"Commun. ACM"} 252 | 253 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 254 | 255 | MACRO {ibmsj} {"IBM Syst.~J."} 256 | 257 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 258 | 259 | MACRO {ieeetc} {"IEEE Trans. Comput."} 260 | 261 | MACRO {ieeetcad} 262 | {"IEEE Trans. Comput. Aid. Des."} 263 | 264 | MACRO {ipl} {"Inf. Process. Lett."} 265 | 266 | MACRO {jacm} {"J.~ACM"} 267 | 268 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 269 | 270 | MACRO {scp} {"Sci. Comput. Program."} 271 | 272 | MACRO {sicomp} {"SIAM J. Comput."} 273 | 274 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 275 | 276 | MACRO {tods} {"ACM Trans. Database Syst."} 277 | 278 | MACRO {tog} {"ACM Trans. Graphic."} 279 | 280 | MACRO {toms} {"ACM Trans. Math. Software"} 281 | 282 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 283 | 284 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 285 | 286 | MACRO {tcs} {"Theor. Comput. Sci."} 287 | 288 | FUNCTION {bibinfo.check} 289 | { swap$ 290 | duplicate$ missing$ 291 | { 292 | pop$ pop$ 293 | "" 294 | } 295 | { duplicate$ empty$ 296 | { 297 | swap$ pop$ 298 | } 299 | { swap$ 300 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 301 | } 302 | if$ 303 | } 304 | if$ 305 | } 306 | FUNCTION {bibinfo.warn} 307 | { swap$ 308 | duplicate$ missing$ 309 | { 310 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 311 | "" 312 | } 313 | { duplicate$ empty$ 314 | { 315 | swap$ "empty " swap$ * " in " * cite$ * warning$ 316 | } 317 | { swap$ 318 | pop$ 319 | } 320 | if$ 321 | } 322 | if$ 323 | } 324 | STRINGS { bibinfo} 325 | INTEGERS { nameptr namesleft numnames } 326 | 327 | FUNCTION {format.names} 328 | { 'bibinfo := 329 | duplicate$ empty$ 'skip$ { 330 | 's := 331 | "" 't := 332 | #1 'nameptr := 333 | s num.names$ 'numnames := 334 | numnames 'namesleft := 335 | { namesleft #0 > } 336 | { s nameptr 337 | "{f.~}{vv~}{ll}{, jj}" 338 | format.name$ 339 | bibinfo bibinfo.check 340 | 't := 341 | nameptr #1 > 342 | { 343 | namesleft #1 > 344 | { ", " * t * } 345 | { 346 | "," * 347 | s nameptr "{ll}" format.name$ duplicate$ "others" = 348 | { 't := } 349 | { pop$ } 350 | if$ 351 | t "others" = 352 | { 353 | " " * bbl.etal * 354 | } 355 | { " " * t * } 356 | if$ 357 | } 358 | if$ 359 | } 360 | 't 361 | if$ 362 | nameptr #1 + 'nameptr := 363 | namesleft #1 - 'namesleft := 364 | } 365 | while$ 366 | } if$ 367 | } 368 | FUNCTION {format.names.ed} 369 | { 370 | format.names 371 | } 372 | FUNCTION {format.key} 373 | { empty$ 374 | { key field.or.null } 375 | { "" } 376 | if$ 377 | } 378 | 379 | FUNCTION {format.authors} 380 | { author "author" format.names 381 | } 382 | FUNCTION {get.bbl.editor} 383 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 384 | 385 | FUNCTION {format.editors} 386 | { editor "editor" format.names duplicate$ empty$ 'skip$ 387 | { 388 | " " * 389 | get.bbl.editor 390 | capitalize 391 | "(" swap$ * ")" * 392 | * 393 | } 394 | if$ 395 | } 396 | FUNCTION {format.note} 397 | { 398 | note empty$ 399 | { "" } 400 | { note #1 #1 substring$ 401 | duplicate$ "{" = 402 | 'skip$ 403 | { output.state mid.sentence = 404 | { "l" } 405 | { "u" } 406 | if$ 407 | change.case$ 408 | } 409 | if$ 410 | note #2 global.max$ substring$ * "note" bibinfo.check 411 | } 412 | if$ 413 | } 414 | 415 | FUNCTION {format.title} 416 | { title 417 | duplicate$ empty$ 'skip$ 418 | { "t" change.case$ } 419 | if$ 420 | "title" bibinfo.check 421 | } 422 | 423 | FUNCTION {format.full.names} 424 | {'s := 425 | "" 't := 426 | #1 'nameptr := 427 | s num.names$ 'numnames := 428 | numnames 'namesleft := 429 | { namesleft #0 > } 430 | { s nameptr 431 | "{vv~}{ll}" format.name$ 432 | 't := 433 | nameptr #1 > 434 | { 435 | namesleft #1 > 436 | { ", " * t * } 437 | { 438 | s nameptr "{ll}" format.name$ duplicate$ "others" = 439 | { 't := } 440 | { pop$ } 441 | if$ 442 | t "others" = 443 | { 444 | " " * bbl.etal * 445 | } 446 | { 447 | numnames #2 > 448 | { "," * } 449 | 'skip$ 450 | if$ 451 | bbl.and 452 | space.word * t * 453 | } 454 | if$ 455 | } 456 | if$ 457 | } 458 | 't 459 | if$ 460 | nameptr #1 + 'nameptr := 461 | namesleft #1 - 'namesleft := 462 | } 463 | while$ 464 | } 465 | 466 | FUNCTION {author.editor.key.full} 467 | { author empty$ 468 | { editor empty$ 469 | { key empty$ 470 | { cite$ #1 #3 substring$ } 471 | 'key 472 | if$ 473 | } 474 | { editor format.full.names } 475 | if$ 476 | } 477 | { author format.full.names } 478 | if$ 479 | } 480 | 481 | FUNCTION {author.key.full} 482 | { author empty$ 483 | { key empty$ 484 | { cite$ #1 #3 substring$ } 485 | 'key 486 | if$ 487 | } 488 | { author format.full.names } 489 | if$ 490 | } 491 | 492 | FUNCTION {editor.key.full} 493 | { editor empty$ 494 | { key empty$ 495 | { cite$ #1 #3 substring$ } 496 | 'key 497 | if$ 498 | } 499 | { editor format.full.names } 500 | if$ 501 | } 502 | 503 | FUNCTION {make.full.names} 504 | { type$ "book" = 505 | type$ "inbook" = 506 | or 507 | 'author.editor.key.full 508 | { type$ "proceedings" = 509 | 'editor.key.full 510 | 'author.key.full 511 | if$ 512 | } 513 | if$ 514 | } 515 | 516 | FUNCTION {output.bibitem} 517 | { newline$ 518 | "\bibitem[{" write$ 519 | label write$ 520 | ")" make.full.names duplicate$ short.list = 521 | { pop$ } 522 | { * } 523 | if$ 524 | "}]{" * write$ 525 | cite$ write$ 526 | "}" write$ 527 | newline$ 528 | "" 529 | before.all 'output.state := 530 | } 531 | 532 | FUNCTION {n.dashify} 533 | { 534 | 't := 535 | "" 536 | { t empty$ not } 537 | { t #1 #1 substring$ "-" = 538 | { t #1 #2 substring$ "--" = not 539 | { "--" * 540 | t #2 global.max$ substring$ 't := 541 | } 542 | { { t #1 #1 substring$ "-" = } 543 | { "-" * 544 | t #2 global.max$ substring$ 't := 545 | } 546 | while$ 547 | } 548 | if$ 549 | } 550 | { t #1 #1 substring$ * 551 | t #2 global.max$ substring$ 't := 552 | } 553 | if$ 554 | } 555 | while$ 556 | } 557 | 558 | FUNCTION {word.in} 559 | { bbl.in 560 | ":" * 561 | " " * } 562 | 563 | FUNCTION {format.date} 564 | { year "year" bibinfo.check duplicate$ empty$ 565 | { 566 | "empty year in " cite$ * "; set to ????" * warning$ 567 | pop$ "????" 568 | } 569 | 'skip$ 570 | if$ 571 | extra.label * 572 | } 573 | FUNCTION{format.year} 574 | { year "year" bibinfo.check duplicate$ empty$ 575 | { "empty year in " cite$ * 576 | "; set to ????" * 577 | warning$ 578 | pop$ "????" 579 | } 580 | { 581 | } 582 | if$ 583 | extra.label * 584 | " (" swap$ * ")" * 585 | } 586 | FUNCTION {format.btitle} 587 | { title "title" bibinfo.check 588 | duplicate$ empty$ 'skip$ 589 | { 590 | } 591 | if$ 592 | } 593 | FUNCTION {either.or.check} 594 | { empty$ 595 | 'pop$ 596 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 597 | if$ 598 | } 599 | FUNCTION {format.bvolume} 600 | { volume empty$ 601 | { "" } 602 | { bbl.volume volume tie.or.space.prefix 603 | "volume" bibinfo.check * * 604 | series "series" bibinfo.check 605 | duplicate$ empty$ 'pop$ 606 | { swap$ bbl.of space.word * swap$ 607 | emphasize * } 608 | if$ 609 | "volume and number" number either.or.check 610 | } 611 | if$ 612 | } 613 | FUNCTION {format.number.series} 614 | { volume empty$ 615 | { number empty$ 616 | { series field.or.null } 617 | { series empty$ 618 | { number "number" bibinfo.check } 619 | { output.state mid.sentence = 620 | { bbl.number } 621 | { bbl.number capitalize } 622 | if$ 623 | number tie.or.space.prefix "number" bibinfo.check * * 624 | bbl.in space.word * 625 | series "series" bibinfo.check * 626 | } 627 | if$ 628 | } 629 | if$ 630 | } 631 | { "" } 632 | if$ 633 | } 634 | 635 | FUNCTION {format.edition} 636 | { edition duplicate$ empty$ 'skip$ 637 | { 638 | output.state mid.sentence = 639 | { "l" } 640 | { "t" } 641 | if$ change.case$ 642 | "edition" bibinfo.check 643 | " " * bbl.edition * 644 | } 645 | if$ 646 | } 647 | INTEGERS { multiresult } 648 | FUNCTION {multi.page.check} 649 | { 't := 650 | #0 'multiresult := 651 | { multiresult not 652 | t empty$ not 653 | and 654 | } 655 | { t #1 #1 substring$ 656 | duplicate$ "-" = 657 | swap$ duplicate$ "," = 658 | swap$ "+" = 659 | or or 660 | { #1 'multiresult := } 661 | { t #2 global.max$ substring$ 't := } 662 | if$ 663 | } 664 | while$ 665 | multiresult 666 | } 667 | FUNCTION {format.pages} 668 | { pages duplicate$ empty$ 'skip$ 669 | { duplicate$ multi.page.check 670 | { 671 | bbl.pages swap$ 672 | n.dashify 673 | } 674 | { 675 | bbl.page swap$ 676 | } 677 | if$ 678 | tie.or.space.prefix 679 | "pages" bibinfo.check 680 | * * 681 | } 682 | if$ 683 | } 684 | FUNCTION {format.journal.pages} 685 | { pages duplicate$ empty$ 'pop$ 686 | { swap$ duplicate$ empty$ 687 | { pop$ pop$ format.pages } 688 | { 689 | " " * 690 | swap$ 691 | n.dashify 692 | "pages" bibinfo.check 693 | * 694 | } 695 | if$ 696 | } 697 | if$ 698 | } 699 | FUNCTION {format.vol.num.pages} 700 | { volume field.or.null 701 | duplicate$ empty$ 'skip$ 702 | { 703 | "volume" bibinfo.check 704 | } 705 | if$ 706 | format.year * 707 | } 708 | 709 | FUNCTION {format.chapter.pages} 710 | { chapter empty$ 711 | { "" } 712 | { type empty$ 713 | { bbl.chapter } 714 | { type "l" change.case$ 715 | "type" bibinfo.check 716 | } 717 | if$ 718 | chapter tie.or.space.prefix 719 | "chapter" bibinfo.check 720 | * * 721 | } 722 | if$ 723 | } 724 | 725 | FUNCTION {format.booktitle} 726 | { 727 | booktitle "booktitle" bibinfo.check 728 | } 729 | FUNCTION {format.in.ed.booktitle} 730 | { format.booktitle duplicate$ empty$ 'skip$ 731 | { 732 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 733 | { 734 | " " * 735 | get.bbl.editor 736 | capitalize 737 | "(" swap$ * "), " * 738 | * swap$ 739 | * } 740 | if$ 741 | word.in swap$ * 742 | } 743 | if$ 744 | } 745 | FUNCTION {format.thesis.type} 746 | { type duplicate$ empty$ 747 | 'pop$ 748 | { swap$ pop$ 749 | "t" change.case$ "type" bibinfo.check 750 | } 751 | if$ 752 | } 753 | FUNCTION {format.tr.number} 754 | { number "number" bibinfo.check 755 | type duplicate$ empty$ 756 | { pop$ bbl.techrep } 757 | 'skip$ 758 | if$ 759 | "type" bibinfo.check 760 | swap$ duplicate$ empty$ 761 | { pop$ "t" change.case$ } 762 | { tie.or.space.prefix * * } 763 | if$ 764 | } 765 | FUNCTION {format.article.crossref} 766 | { 767 | word.in 768 | " \cite{" * crossref * "}" * 769 | } 770 | FUNCTION {format.book.crossref} 771 | { volume duplicate$ empty$ 772 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 773 | pop$ word.in 774 | } 775 | { bbl.volume 776 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 777 | } 778 | if$ 779 | " \cite{" * crossref * "}" * 780 | } 781 | FUNCTION {format.incoll.inproc.crossref} 782 | { 783 | word.in 784 | " \cite{" * crossref * "}" * 785 | } 786 | FUNCTION {format.org.or.pub} 787 | { 't := 788 | "" 789 | address empty$ t empty$ and 790 | 'skip$ 791 | { 792 | t empty$ 793 | { address "address" bibinfo.check * 794 | } 795 | { t * 796 | address empty$ 797 | 'skip$ 798 | { ", " * address "address" bibinfo.check * } 799 | if$ 800 | } 801 | if$ 802 | } 803 | if$ 804 | } 805 | FUNCTION {format.publisher.address} 806 | { publisher "publisher" bibinfo.check format.org.or.pub 807 | } 808 | 809 | FUNCTION {format.organization.address} 810 | { organization "organization" bibinfo.check format.org.or.pub 811 | } 812 | 813 | FUNCTION {article} 814 | { "%Type = Article" write$ 815 | output.bibitem 816 | format.authors "author" output.check 817 | author format.key output 818 | new.block 819 | format.title "title" output.check 820 | new.block 821 | crossref missing$ 822 | { 823 | journal 824 | "journal" bibinfo.check 825 | "journal" output.check 826 | add.blank 827 | format.vol.num.pages output 828 | } 829 | { format.article.crossref output.nonnull 830 | } 831 | if$ 832 | format.journal.pages 833 | new.sentence 834 | format.note output 835 | fin.entry 836 | } 837 | FUNCTION {book} 838 | { "%Type = Book" write$ 839 | output.bibitem 840 | author empty$ 841 | { format.editors "author and editor" output.check 842 | editor format.key output 843 | } 844 | { format.authors output.nonnull 845 | crossref missing$ 846 | { "author and editor" editor either.or.check } 847 | 'skip$ 848 | if$ 849 | } 850 | if$ 851 | format.btitle "title" output.check 852 | crossref missing$ 853 | { format.bvolume output 854 | format.number.series output 855 | format.publisher.address output 856 | } 857 | { 858 | format.book.crossref output.nonnull 859 | } 860 | if$ 861 | format.edition output 862 | format.date "year" output.check 863 | new.sentence 864 | format.note output 865 | fin.entry 866 | } 867 | FUNCTION {booklet} 868 | { "%Type = Booklet" write$ 869 | output.bibitem 870 | format.authors output 871 | author format.key output 872 | format.title "title" output.check 873 | howpublished "howpublished" bibinfo.check output 874 | address "address" bibinfo.check output 875 | format.date "year" output.check 876 | new.sentence 877 | format.note output 878 | fin.entry 879 | } 880 | 881 | FUNCTION {inbook} 882 | { "%Type = Inbook" write$ 883 | output.bibitem 884 | author empty$ 885 | { format.editors "author and editor" output.check 886 | editor format.key output 887 | } 888 | { format.authors output.nonnull 889 | crossref missing$ 890 | { "author and editor" editor either.or.check } 891 | 'skip$ 892 | if$ 893 | } 894 | if$ 895 | format.btitle "title" output.check 896 | crossref missing$ 897 | { 898 | format.bvolume output 899 | format.number.series output 900 | format.publisher.address output 901 | } 902 | { 903 | format.book.crossref output.nonnull 904 | } 905 | if$ 906 | format.edition output 907 | format.pages "pages" output.check 908 | new.sentence 909 | format.note output 910 | fin.entry 911 | } 912 | 913 | FUNCTION {incollection} 914 | { "%Type = Incollection" write$ 915 | output.bibitem 916 | format.authors "author" output.check 917 | author format.key output 918 | new.block 919 | format.title "title" output.check 920 | new.block 921 | crossref missing$ 922 | { format.in.ed.booktitle "booktitle" output.check 923 | format.bvolume output 924 | format.number.series output 925 | format.publisher.address output 926 | format.edition output 927 | format.date output 928 | } 929 | { format.incoll.inproc.crossref output.nonnull 930 | } 931 | if$ 932 | format.pages "pages" output.check 933 | new.sentence 934 | format.note output 935 | fin.entry 936 | } 937 | FUNCTION {inproceedings} 938 | { "%Type = Inproceedings" write$ 939 | output.bibitem 940 | format.authors "author" output.check 941 | author format.key output 942 | new.block 943 | format.title "title" output.check 944 | new.block 945 | crossref missing$ 946 | { format.in.ed.booktitle "booktitle" output.check 947 | format.bvolume output 948 | format.number.series output 949 | publisher empty$ 950 | { format.organization.address output } 951 | { organization "organization" bibinfo.check output 952 | format.publisher.address output 953 | format.date output 954 | } 955 | if$ 956 | } 957 | { format.incoll.inproc.crossref output.nonnull 958 | } 959 | if$ 960 | format.pages "pages" output.check 961 | new.sentence 962 | format.note output 963 | fin.entry 964 | } 965 | FUNCTION {conference} { inproceedings } 966 | FUNCTION {manual} 967 | { "%Type = Manual" write$ 968 | output.bibitem 969 | format.authors output 970 | author format.key output 971 | format.btitle "title" output.check 972 | organization "organization" bibinfo.check output 973 | address "address" bibinfo.check output 974 | format.edition output 975 | format.date "year" output.check 976 | new.sentence 977 | format.note output 978 | fin.entry 979 | } 980 | 981 | FUNCTION {mastersthesis} 982 | { "%Type = Masterthesis" write$ 983 | output.bibitem 984 | format.authors "author" output.check 985 | author format.key output 986 | format.btitle 987 | "title" output.check 988 | bbl.mthesis format.thesis.type output.nonnull 989 | school "school" bibinfo.warn output 990 | address "address" bibinfo.check output 991 | format.date "year" output.check 992 | new.sentence 993 | format.note output 994 | fin.entry 995 | } 996 | 997 | FUNCTION {misc} 998 | { "%Type = Misc" write$ 999 | output.bibitem 1000 | format.authors output 1001 | author format.key output 1002 | format.title output 1003 | howpublished "howpublished" bibinfo.check output 1004 | format.date "year" output.check 1005 | new.sentence 1006 | format.note output 1007 | fin.entry 1008 | } 1009 | FUNCTION {phdthesis} 1010 | { "%Type = Phdthesis" write$ 1011 | output.bibitem 1012 | format.authors "author" output.check 1013 | author format.key output 1014 | format.btitle 1015 | "title" output.check 1016 | bbl.phdthesis format.thesis.type output.nonnull 1017 | school "school" bibinfo.warn output 1018 | address "address" bibinfo.check output 1019 | format.date "year" output.check 1020 | new.sentence 1021 | format.note output 1022 | fin.entry 1023 | } 1024 | 1025 | FUNCTION {proceedings} 1026 | { "%Type = Proceedings" write$ 1027 | output.bibitem 1028 | format.editors output 1029 | editor format.key output 1030 | format.btitle "title" output.check 1031 | format.bvolume output 1032 | format.number.series output 1033 | publisher empty$ 1034 | { format.organization.address output } 1035 | { organization "organization" bibinfo.check output 1036 | format.publisher.address output 1037 | } 1038 | if$ 1039 | format.date "year" output.check 1040 | new.sentence 1041 | format.note output 1042 | fin.entry 1043 | } 1044 | 1045 | FUNCTION {techreport} 1046 | { "%Type = Techreport" write$ 1047 | output.bibitem 1048 | format.authors "author" output.check 1049 | author format.key output 1050 | format.btitle 1051 | "title" output.check 1052 | format.tr.number output.nonnull 1053 | institution "institution" bibinfo.warn output 1054 | address "address" bibinfo.check output 1055 | format.date "year" output.check 1056 | new.sentence 1057 | format.note output 1058 | fin.entry 1059 | } 1060 | 1061 | FUNCTION {unpublished} 1062 | { "%Type = Unpublished" write$ 1063 | output.bibitem 1064 | format.authors "author" output.check 1065 | author format.key output 1066 | format.title "title" output.check 1067 | format.date "year" output.check 1068 | new.sentence 1069 | format.note "note" output.check 1070 | fin.entry 1071 | } 1072 | 1073 | FUNCTION {default.type} { misc } 1074 | READ 1075 | FUNCTION {sortify} 1076 | { purify$ 1077 | "l" change.case$ 1078 | } 1079 | INTEGERS { len } 1080 | FUNCTION {chop.word} 1081 | { 's := 1082 | 'len := 1083 | s #1 len substring$ = 1084 | { s len #1 + global.max$ substring$ } 1085 | 's 1086 | if$ 1087 | } 1088 | FUNCTION {format.lab.names} 1089 | { 's := 1090 | "" 't := 1091 | s #1 "{vv~}{ll}" format.name$ 1092 | s num.names$ duplicate$ 1093 | #2 > 1094 | { pop$ 1095 | " " * bbl.etal * 1096 | } 1097 | { #2 < 1098 | 'skip$ 1099 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1100 | { 1101 | " " * bbl.etal * 1102 | } 1103 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1104 | * } 1105 | if$ 1106 | } 1107 | if$ 1108 | } 1109 | if$ 1110 | } 1111 | 1112 | FUNCTION {author.key.label} 1113 | { author empty$ 1114 | { key empty$ 1115 | { cite$ #1 #3 substring$ } 1116 | 'key 1117 | if$ 1118 | } 1119 | { author format.lab.names } 1120 | if$ 1121 | } 1122 | 1123 | FUNCTION {author.editor.key.label} 1124 | { author empty$ 1125 | { editor empty$ 1126 | { key empty$ 1127 | { cite$ #1 #3 substring$ } 1128 | 'key 1129 | if$ 1130 | } 1131 | { editor format.lab.names } 1132 | if$ 1133 | } 1134 | { author format.lab.names } 1135 | if$ 1136 | } 1137 | 1138 | FUNCTION {editor.key.label} 1139 | { editor empty$ 1140 | { key empty$ 1141 | { cite$ #1 #3 substring$ } 1142 | 'key 1143 | if$ 1144 | } 1145 | { editor format.lab.names } 1146 | if$ 1147 | } 1148 | 1149 | FUNCTION {calc.short.authors} 1150 | { type$ "book" = 1151 | type$ "inbook" = 1152 | or 1153 | 'author.editor.key.label 1154 | { type$ "proceedings" = 1155 | 'editor.key.label 1156 | 'author.key.label 1157 | if$ 1158 | } 1159 | if$ 1160 | 'short.list := 1161 | } 1162 | 1163 | FUNCTION {calc.label} 1164 | { calc.short.authors 1165 | short.list 1166 | "(" 1167 | * 1168 | year duplicate$ empty$ 1169 | { pop$ "????" } 1170 | { purify$ #-1 #4 substring$ } 1171 | if$ 1172 | * 1173 | 'label := 1174 | } 1175 | 1176 | FUNCTION {sort.format.names} 1177 | { 's := 1178 | #1 'nameptr := 1179 | "" 1180 | s num.names$ 'numnames := 1181 | numnames 'namesleft := 1182 | { namesleft #0 > } 1183 | { s nameptr 1184 | "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" 1185 | format.name$ 't := 1186 | nameptr #1 > 1187 | { 1188 | " " * 1189 | namesleft #1 = t "others" = and 1190 | { "zzzzz" * } 1191 | { t sortify * } 1192 | if$ 1193 | } 1194 | { t sortify * } 1195 | if$ 1196 | nameptr #1 + 'nameptr := 1197 | namesleft #1 - 'namesleft := 1198 | } 1199 | while$ 1200 | } 1201 | 1202 | FUNCTION {sort.format.title} 1203 | { 't := 1204 | "A " #2 1205 | "An " #3 1206 | "The " #4 t chop.word 1207 | chop.word 1208 | chop.word 1209 | sortify 1210 | #1 global.max$ substring$ 1211 | } 1212 | FUNCTION {author.sort} 1213 | { author empty$ 1214 | { key empty$ 1215 | { "to sort, need author or key in " cite$ * warning$ 1216 | "" 1217 | } 1218 | { key sortify } 1219 | if$ 1220 | } 1221 | { author sort.format.names } 1222 | if$ 1223 | } 1224 | FUNCTION {author.editor.sort} 1225 | { author empty$ 1226 | { editor empty$ 1227 | { key empty$ 1228 | { "to sort, need author, editor, or key in " cite$ * warning$ 1229 | "" 1230 | } 1231 | { key sortify } 1232 | if$ 1233 | } 1234 | { editor sort.format.names } 1235 | if$ 1236 | } 1237 | { author sort.format.names } 1238 | if$ 1239 | } 1240 | FUNCTION {editor.sort} 1241 | { editor empty$ 1242 | { key empty$ 1243 | { "to sort, need editor or key in " cite$ * warning$ 1244 | "" 1245 | } 1246 | { key sortify } 1247 | if$ 1248 | } 1249 | { editor sort.format.names } 1250 | if$ 1251 | } 1252 | FUNCTION {presort} 1253 | { calc.label 1254 | label sortify 1255 | " " 1256 | * 1257 | type$ "book" = 1258 | type$ "inbook" = 1259 | or 1260 | 'author.editor.sort 1261 | { type$ "proceedings" = 1262 | 'editor.sort 1263 | 'author.sort 1264 | if$ 1265 | } 1266 | if$ 1267 | #1 entry.max$ substring$ 1268 | 'sort.label := 1269 | sort.label 1270 | * 1271 | " " 1272 | * 1273 | title field.or.null 1274 | sort.format.title 1275 | * 1276 | #1 entry.max$ substring$ 1277 | 'sort.key$ := 1278 | } 1279 | 1280 | ITERATE {presort} 1281 | %SORT 1282 | STRINGS { last.label next.extra } 1283 | INTEGERS { last.extra.num number.label } 1284 | FUNCTION {initialize.extra.label.stuff} 1285 | { #0 int.to.chr$ 'last.label := 1286 | "" 'next.extra := 1287 | #0 'last.extra.num := 1288 | #0 'number.label := 1289 | } 1290 | FUNCTION {forward.pass} 1291 | { last.label label = 1292 | { last.extra.num #1 + 'last.extra.num := 1293 | last.extra.num int.to.chr$ 'extra.label := 1294 | } 1295 | { "a" chr.to.int$ 'last.extra.num := 1296 | "" 'extra.label := 1297 | label 'last.label := 1298 | } 1299 | if$ 1300 | number.label #1 + 'number.label := 1301 | } 1302 | FUNCTION {reverse.pass} 1303 | { next.extra "b" = 1304 | { "a" 'extra.label := } 1305 | 'skip$ 1306 | if$ 1307 | extra.label 'next.extra := 1308 | extra.label 1309 | duplicate$ empty$ 1310 | 'skip$ 1311 | { "{\natexlab{" swap$ * "}}" * } 1312 | if$ 1313 | 'extra.label := 1314 | label extra.label * 'label := 1315 | } 1316 | EXECUTE {initialize.extra.label.stuff} 1317 | ITERATE {forward.pass} 1318 | REVERSE {reverse.pass} 1319 | FUNCTION {bib.sort.order} 1320 | { sort.label 1321 | " " 1322 | * 1323 | year field.or.null sortify 1324 | * 1325 | " " 1326 | * 1327 | title field.or.null 1328 | sort.format.title 1329 | * 1330 | #1 entry.max$ substring$ 1331 | 'sort.key$ := 1332 | } 1333 | ITERATE {bib.sort.order} 1334 | %SORT 1335 | FUNCTION {begin.bib} 1336 | { preamble$ empty$ 1337 | 'skip$ 1338 | { preamble$ write$ newline$ } 1339 | if$ 1340 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1341 | write$ newline$ 1342 | "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" 1343 | write$ newline$ 1344 | "\providecommand{\bibinfo}[2]{#2}" 1345 | write$ newline$ 1346 | "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" 1347 | write$ newline$ 1348 | } 1349 | EXECUTE {begin.bib} 1350 | EXECUTE {init.state.consts} 1351 | ITERATE {call.type$} 1352 | FUNCTION {end.bib} 1353 | { newline$ 1354 | "\end{thebibliography}" write$ newline$ 1355 | } 1356 | EXECUTE {end.bib} 1357 | %% End of customized bst file 1358 | %% 1359 | %% End of file `model1-num-names.bst'. 1360 | -------------------------------------------------------------------------------- /refBst/model1a-num-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `model1a-num-names.bst', 3 | %% 4 | %% Copyright 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% $Id: model1a-num-names.bst 126 2009-10-07 11:48:24Z rishi $ 17 | %% 18 | %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1a/model1a-num-names.bst $ 19 | %% 20 | %% 21 | 22 | ENTRY 23 | { address 24 | author 25 | booktitle 26 | chapter 27 | edition 28 | editor 29 | howpublished 30 | institution 31 | journal 32 | key 33 | month 34 | note 35 | number 36 | organization 37 | pages 38 | publisher 39 | school 40 | series 41 | title 42 | type 43 | volume 44 | year 45 | } 46 | {} 47 | { label extra.label sort.label short.list } 48 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 49 | FUNCTION {init.state.consts} 50 | { #0 'before.all := 51 | #1 'mid.sentence := 52 | #2 'after.sentence := 53 | #3 'after.block := 54 | } 55 | STRINGS { s t} 56 | FUNCTION {output.nonnull} 57 | { 's := 58 | output.state mid.sentence = 59 | { ", " * write$ } 60 | { output.state after.block = 61 | { add.period$ write$ 62 | newline$ 63 | "\newblock " write$ 64 | } 65 | { output.state before.all = 66 | 'write$ 67 | { add.period$ " " * write$ } 68 | if$ 69 | } 70 | if$ 71 | mid.sentence 'output.state := 72 | } 73 | if$ 74 | s 75 | } 76 | FUNCTION {output} 77 | { duplicate$ empty$ 78 | 'pop$ 79 | 'output.nonnull 80 | if$ 81 | } 82 | FUNCTION {output.check} 83 | { 't := 84 | duplicate$ empty$ 85 | { pop$ "empty " t * " in " * cite$ * warning$ } 86 | 'output.nonnull 87 | if$ 88 | } 89 | FUNCTION {fin.entry} 90 | { add.period$ 91 | write$ 92 | newline$ 93 | } 94 | 95 | FUNCTION {new.block} 96 | { output.state before.all = 97 | 'skip$ 98 | { after.block 'output.state := } 99 | if$ 100 | } 101 | FUNCTION {new.sentence} 102 | { output.state after.block = 103 | 'skip$ 104 | { output.state before.all = 105 | 'skip$ 106 | { after.sentence 'output.state := } 107 | if$ 108 | } 109 | if$ 110 | } 111 | FUNCTION {add.blank} 112 | { " " * before.all 'output.state := 113 | } 114 | 115 | FUNCTION {date.block} 116 | { 117 | skip$ 118 | } 119 | 120 | FUNCTION {not} 121 | { { #0 } 122 | { #1 } 123 | if$ 124 | } 125 | FUNCTION {and} 126 | { 'skip$ 127 | { pop$ #0 } 128 | if$ 129 | } 130 | FUNCTION {or} 131 | { { pop$ #1 } 132 | 'skip$ 133 | if$ 134 | } 135 | FUNCTION {new.block.checkb} 136 | { empty$ 137 | swap$ empty$ 138 | and 139 | 'skip$ 140 | 'new.block 141 | if$ 142 | } 143 | FUNCTION {field.or.null} 144 | { duplicate$ empty$ 145 | { pop$ "" } 146 | 'skip$ 147 | if$ 148 | } 149 | FUNCTION {emphasize} 150 | { duplicate$ empty$ 151 | { pop$ "" } 152 | { "\textit{" swap$ * "}" * } 153 | if$ 154 | } 155 | FUNCTION {tie.or.space.prefix} 156 | { duplicate$ text.length$ #3 < 157 | { "~" } 158 | { " " } 159 | if$ 160 | swap$ 161 | } 162 | 163 | FUNCTION {capitalize} 164 | { "u" change.case$ "t" change.case$ } 165 | 166 | FUNCTION {space.word} 167 | { " " swap$ * " " * } 168 | % Here are the language-specific definitions for explicit words. 169 | % Each function has a name bbl.xxx where xxx is the English word. 170 | % The language selected here is ENGLISH 171 | FUNCTION {bbl.and} 172 | { "and"} 173 | 174 | FUNCTION {bbl.etal} 175 | { "et~al." } 176 | 177 | FUNCTION {bbl.editors} 178 | { "eds." } 179 | 180 | FUNCTION {bbl.editor} 181 | { "ed." } 182 | 183 | FUNCTION {bbl.edby} 184 | { "edited by" } 185 | 186 | FUNCTION {bbl.edition} 187 | { "edition" } 188 | 189 | FUNCTION {bbl.volume} 190 | { "volume" } 191 | 192 | FUNCTION {bbl.of} 193 | { "of" } 194 | 195 | FUNCTION {bbl.number} 196 | { "number" } 197 | 198 | FUNCTION {bbl.nr} 199 | { "no." } 200 | 201 | FUNCTION {bbl.in} 202 | { "in" } 203 | 204 | FUNCTION {bbl.pages} 205 | { "pp." } 206 | 207 | FUNCTION {bbl.page} 208 | { "p." } 209 | 210 | FUNCTION {bbl.chapter} 211 | { "chapter" } 212 | 213 | FUNCTION {bbl.techrep} 214 | { "Technical Report" } 215 | 216 | FUNCTION {bbl.mthesis} 217 | { "Master's thesis" } 218 | 219 | FUNCTION {bbl.phdthesis} 220 | { "Ph.D. thesis" } 221 | 222 | MACRO {jan} {"January"} 223 | 224 | MACRO {feb} {"February"} 225 | 226 | MACRO {mar} {"March"} 227 | 228 | MACRO {apr} {"April"} 229 | 230 | MACRO {may} {"May"} 231 | 232 | MACRO {jun} {"June"} 233 | 234 | MACRO {jul} {"July"} 235 | 236 | MACRO {aug} {"August"} 237 | 238 | MACRO {sep} {"September"} 239 | 240 | MACRO {oct} {"October"} 241 | 242 | MACRO {nov} {"November"} 243 | 244 | MACRO {dec} {"December"} 245 | 246 | MACRO {acmcs} {"ACM Comput. Surv."} 247 | 248 | MACRO {acta} {"Acta Inf."} 249 | 250 | MACRO {cacm} {"Commun. ACM"} 251 | 252 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 253 | 254 | MACRO {ibmsj} {"IBM Syst.~J."} 255 | 256 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 257 | 258 | MACRO {ieeetc} {"IEEE Trans. Comput."} 259 | 260 | MACRO {ieeetcad} 261 | {"IEEE Trans. Comput. Aid. Des."} 262 | 263 | MACRO {ipl} {"Inf. Process. Lett."} 264 | 265 | MACRO {jacm} {"J.~ACM"} 266 | 267 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 268 | 269 | MACRO {scp} {"Sci. Comput. Program."} 270 | 271 | MACRO {sicomp} {"SIAM J. Comput."} 272 | 273 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 274 | 275 | MACRO {tods} {"ACM Trans. Database Syst."} 276 | 277 | MACRO {tog} {"ACM Trans. Graphic."} 278 | 279 | MACRO {toms} {"ACM Trans. Math. Software"} 280 | 281 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 282 | 283 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 284 | 285 | MACRO {tcs} {"Theor. Comput. Sci."} 286 | 287 | FUNCTION {bibinfo.check} 288 | { swap$ 289 | duplicate$ missing$ 290 | { 291 | pop$ pop$ 292 | "" 293 | } 294 | { duplicate$ empty$ 295 | { 296 | swap$ pop$ 297 | } 298 | { swap$ 299 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 300 | } 301 | if$ 302 | } 303 | if$ 304 | } 305 | FUNCTION {bibinfo.warn} 306 | { swap$ 307 | duplicate$ missing$ 308 | { 309 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 310 | "" 311 | } 312 | { duplicate$ empty$ 313 | { 314 | swap$ "empty " swap$ * " in " * cite$ * warning$ 315 | } 316 | { swap$ 317 | pop$ 318 | } 319 | if$ 320 | } 321 | if$ 322 | } 323 | STRINGS { bibinfo} 324 | INTEGERS { nameptr namesleft numnames } 325 | 326 | FUNCTION {format.names} 327 | { 'bibinfo := 328 | duplicate$ empty$ 'skip$ { 329 | 's := 330 | "" 't := 331 | #1 'nameptr := 332 | s num.names$ 'numnames := 333 | numnames 'namesleft := 334 | { namesleft #0 > } 335 | { s nameptr 336 | "{f.~}{vv~}{ll}{, jj}" 337 | format.name$ 338 | bibinfo bibinfo.check 339 | 't := 340 | nameptr #1 > 341 | { 342 | namesleft #1 > 343 | { ", " * t * } 344 | { 345 | "," * 346 | s nameptr "{ll}" format.name$ duplicate$ "others" = 347 | { 't := } 348 | { pop$ } 349 | if$ 350 | t "others" = 351 | { 352 | " " * bbl.etal * 353 | } 354 | { " " * t * } 355 | if$ 356 | } 357 | if$ 358 | } 359 | 't 360 | if$ 361 | nameptr #1 + 'nameptr := 362 | namesleft #1 - 'namesleft := 363 | } 364 | while$ 365 | } if$ 366 | } 367 | FUNCTION {format.names.ed} 368 | { 369 | format.names 370 | } 371 | FUNCTION {format.key} 372 | { empty$ 373 | { key field.or.null } 374 | { "" } 375 | if$ 376 | } 377 | 378 | FUNCTION {format.authors} 379 | { author "author" format.names 380 | } 381 | FUNCTION {get.bbl.editor} 382 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 383 | 384 | FUNCTION {format.editors} 385 | { editor "editor" format.names duplicate$ empty$ 'skip$ 386 | { 387 | " " * 388 | get.bbl.editor 389 | capitalize 390 | "(" swap$ * ")" * 391 | * 392 | } 393 | if$ 394 | } 395 | FUNCTION {format.note} 396 | { 397 | note empty$ 398 | { "" } 399 | { note #1 #1 substring$ 400 | duplicate$ "{" = 401 | 'skip$ 402 | { output.state mid.sentence = 403 | { "l" } 404 | { "u" } 405 | if$ 406 | change.case$ 407 | } 408 | if$ 409 | note #2 global.max$ substring$ * "note" bibinfo.check 410 | } 411 | if$ 412 | } 413 | 414 | FUNCTION {format.title} 415 | { title 416 | duplicate$ empty$ 'skip$ 417 | { "t" change.case$ } 418 | if$ 419 | "title" bibinfo.check 420 | } 421 | 422 | FUNCTION {format.full.names} 423 | {'s := 424 | "" 't := 425 | #1 'nameptr := 426 | s num.names$ 'numnames := 427 | numnames 'namesleft := 428 | { namesleft #0 > } 429 | { s nameptr 430 | "{vv~}{ll}" format.name$ 431 | 't := 432 | nameptr #1 > 433 | { 434 | namesleft #1 > 435 | { ", " * t * } 436 | { 437 | s nameptr "{ll}" format.name$ duplicate$ "others" = 438 | { 't := } 439 | { pop$ } 440 | if$ 441 | t "others" = 442 | { 443 | " " * bbl.etal * 444 | } 445 | { 446 | numnames #2 > 447 | { "," * } 448 | 'skip$ 449 | if$ 450 | bbl.and 451 | space.word * t * 452 | } 453 | if$ 454 | } 455 | if$ 456 | } 457 | 't 458 | if$ 459 | nameptr #1 + 'nameptr := 460 | namesleft #1 - 'namesleft := 461 | } 462 | while$ 463 | } 464 | 465 | FUNCTION {author.editor.key.full} 466 | { author empty$ 467 | { editor empty$ 468 | { key empty$ 469 | { cite$ #1 #3 substring$ } 470 | 'key 471 | if$ 472 | } 473 | { editor format.full.names } 474 | if$ 475 | } 476 | { author format.full.names } 477 | if$ 478 | } 479 | 480 | FUNCTION {author.key.full} 481 | { author empty$ 482 | { key empty$ 483 | { cite$ #1 #3 substring$ } 484 | 'key 485 | if$ 486 | } 487 | { author format.full.names } 488 | if$ 489 | } 490 | 491 | FUNCTION {editor.key.full} 492 | { editor empty$ 493 | { key empty$ 494 | { cite$ #1 #3 substring$ } 495 | 'key 496 | if$ 497 | } 498 | { editor format.full.names } 499 | if$ 500 | } 501 | 502 | FUNCTION {make.full.names} 503 | { type$ "book" = 504 | type$ "inbook" = 505 | or 506 | 'author.editor.key.full 507 | { type$ "proceedings" = 508 | 'editor.key.full 509 | 'author.key.full 510 | if$ 511 | } 512 | if$ 513 | } 514 | 515 | FUNCTION {output.bibitem} 516 | { newline$ 517 | "\bibitem[{" write$ 518 | label write$ 519 | ")" make.full.names duplicate$ short.list = 520 | { pop$ } 521 | { * } 522 | if$ 523 | "}]{" * write$ 524 | cite$ write$ 525 | "}" write$ 526 | newline$ 527 | "" 528 | before.all 'output.state := 529 | } 530 | 531 | FUNCTION {n.dashify} 532 | { 533 | 't := 534 | "" 535 | { t empty$ not } 536 | { t #1 #1 substring$ "-" = 537 | { t #1 #2 substring$ "--" = not 538 | { "--" * 539 | t #2 global.max$ substring$ 't := 540 | } 541 | { { t #1 #1 substring$ "-" = } 542 | { "-" * 543 | t #2 global.max$ substring$ 't := 544 | } 545 | while$ 546 | } 547 | if$ 548 | } 549 | { t #1 #1 substring$ * 550 | t #2 global.max$ substring$ 't := 551 | } 552 | if$ 553 | } 554 | while$ 555 | } 556 | 557 | FUNCTION {word.in} 558 | { bbl.in 559 | ":" * 560 | " " * } 561 | 562 | FUNCTION {format.date} 563 | { year "year" bibinfo.check duplicate$ empty$ 564 | { 565 | "empty year in " cite$ * "; set to ????" * warning$ 566 | pop$ "????" 567 | } 568 | 'skip$ 569 | if$ 570 | extra.label * 571 | } 572 | FUNCTION{format.year} 573 | { year "year" bibinfo.check duplicate$ empty$ 574 | { "empty year in " cite$ * 575 | "; set to ????" * 576 | warning$ 577 | pop$ "????" 578 | } 579 | { 580 | } 581 | if$ 582 | extra.label * 583 | " (" swap$ * ")" * 584 | } 585 | FUNCTION {format.btitle} 586 | { title "title" bibinfo.check 587 | duplicate$ empty$ 'skip$ 588 | { 589 | } 590 | if$ 591 | } 592 | FUNCTION {either.or.check} 593 | { empty$ 594 | 'pop$ 595 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 596 | if$ 597 | } 598 | FUNCTION {format.bvolume} 599 | { volume empty$ 600 | { "" } 601 | { bbl.volume volume tie.or.space.prefix 602 | "volume" bibinfo.check * * 603 | series "series" bibinfo.check 604 | duplicate$ empty$ 'pop$ 605 | { swap$ bbl.of space.word * swap$ 606 | emphasize * } 607 | if$ 608 | "volume and number" number either.or.check 609 | } 610 | if$ 611 | } 612 | FUNCTION {format.number.series} 613 | { volume empty$ 614 | { number empty$ 615 | { series field.or.null } 616 | { series empty$ 617 | { number "number" bibinfo.check } 618 | { output.state mid.sentence = 619 | { bbl.number } 620 | { bbl.number capitalize } 621 | if$ 622 | number tie.or.space.prefix "number" bibinfo.check * * 623 | bbl.in space.word * 624 | series "series" bibinfo.check * 625 | } 626 | if$ 627 | } 628 | if$ 629 | } 630 | { "" } 631 | if$ 632 | } 633 | 634 | FUNCTION {format.edition} 635 | { edition duplicate$ empty$ 'skip$ 636 | { 637 | output.state mid.sentence = 638 | { "l" } 639 | { "t" } 640 | if$ change.case$ 641 | "edition" bibinfo.check 642 | " " * bbl.edition * 643 | } 644 | if$ 645 | } 646 | INTEGERS { multiresult } 647 | FUNCTION {multi.page.check} 648 | { 't := 649 | #0 'multiresult := 650 | { multiresult not 651 | t empty$ not 652 | and 653 | } 654 | { t #1 #1 substring$ 655 | duplicate$ "-" = 656 | swap$ duplicate$ "," = 657 | swap$ "+" = 658 | or or 659 | { #1 'multiresult := } 660 | { t #2 global.max$ substring$ 't := } 661 | if$ 662 | } 663 | while$ 664 | multiresult 665 | } 666 | FUNCTION {format.pages} 667 | { pages duplicate$ empty$ 'skip$ 668 | { duplicate$ multi.page.check 669 | { 670 | bbl.pages swap$ 671 | n.dashify 672 | } 673 | { 674 | bbl.page swap$ 675 | } 676 | if$ 677 | tie.or.space.prefix 678 | "pages" bibinfo.check 679 | * * 680 | } 681 | if$ 682 | } 683 | FUNCTION {format.journal.pages} 684 | { pages duplicate$ empty$ 'pop$ 685 | { swap$ duplicate$ empty$ 686 | { pop$ pop$ format.pages } 687 | { 688 | " " * 689 | swap$ 690 | n.dashify 691 | "pages" bibinfo.check 692 | * 693 | } 694 | if$ 695 | } 696 | if$ 697 | } 698 | FUNCTION {format.vol.num.pages} 699 | { volume field.or.null 700 | duplicate$ empty$ 'skip$ 701 | { 702 | "volume" bibinfo.check 703 | } 704 | if$ 705 | format.year * 706 | } 707 | 708 | FUNCTION {format.chapter.pages} 709 | { chapter empty$ 710 | { "" } 711 | { type empty$ 712 | { bbl.chapter } 713 | { type "l" change.case$ 714 | "type" bibinfo.check 715 | } 716 | if$ 717 | chapter tie.or.space.prefix 718 | "chapter" bibinfo.check 719 | * * 720 | } 721 | if$ 722 | } 723 | 724 | FUNCTION {format.booktitle} 725 | { 726 | booktitle "booktitle" bibinfo.check 727 | } 728 | FUNCTION {format.in.ed.booktitle} 729 | { format.booktitle duplicate$ empty$ 'skip$ 730 | { 731 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 732 | { 733 | " " * 734 | get.bbl.editor 735 | capitalize 736 | "(" swap$ * "), " * 737 | * swap$ 738 | * } 739 | if$ 740 | word.in swap$ * 741 | } 742 | if$ 743 | } 744 | FUNCTION {format.thesis.type} 745 | { type duplicate$ empty$ 746 | 'pop$ 747 | { swap$ pop$ 748 | "t" change.case$ "type" bibinfo.check 749 | } 750 | if$ 751 | } 752 | FUNCTION {format.tr.number} 753 | { number "number" bibinfo.check 754 | type duplicate$ empty$ 755 | { pop$ bbl.techrep } 756 | 'skip$ 757 | if$ 758 | "type" bibinfo.check 759 | swap$ duplicate$ empty$ 760 | { pop$ "t" change.case$ } 761 | { tie.or.space.prefix * * } 762 | if$ 763 | } 764 | FUNCTION {format.article.crossref} 765 | { 766 | word.in 767 | " \cite{" * crossref * "}" * 768 | } 769 | FUNCTION {format.book.crossref} 770 | { volume duplicate$ empty$ 771 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 772 | pop$ word.in 773 | } 774 | { bbl.volume 775 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 776 | } 777 | if$ 778 | " \cite{" * crossref * "}" * 779 | } 780 | FUNCTION {format.incoll.inproc.crossref} 781 | { 782 | word.in 783 | " \cite{" * crossref * "}" * 784 | } 785 | FUNCTION {format.org.or.pub} 786 | { 't := 787 | "" 788 | address empty$ t empty$ and 789 | 'skip$ 790 | { 791 | t empty$ 792 | { address "address" bibinfo.check * 793 | } 794 | { t * 795 | address empty$ 796 | 'skip$ 797 | { ", " * address "address" bibinfo.check * } 798 | if$ 799 | } 800 | if$ 801 | } 802 | if$ 803 | } 804 | FUNCTION {format.publisher.address} 805 | { publisher "publisher" bibinfo.check format.org.or.pub 806 | } 807 | 808 | FUNCTION {format.organization.address} 809 | { organization "organization" bibinfo.check format.org.or.pub 810 | } 811 | 812 | FUNCTION {article} 813 | { "%Type = Article" write$ 814 | output.bibitem 815 | format.authors "author" output.check 816 | author format.key output 817 | crossref missing$ 818 | { 819 | journal 820 | "journal" bibinfo.check 821 | "journal" output.check 822 | add.blank 823 | format.vol.num.pages output 824 | } 825 | { format.article.crossref output.nonnull 826 | } 827 | if$ 828 | format.journal.pages 829 | new.sentence 830 | format.note output 831 | fin.entry 832 | } 833 | FUNCTION {book} 834 | { "%Type = Book" write$ 835 | output.bibitem 836 | author empty$ 837 | { format.editors "author and editor" output.check 838 | editor format.key output 839 | } 840 | { format.authors output.nonnull 841 | crossref missing$ 842 | { "author and editor" editor either.or.check } 843 | 'skip$ 844 | if$ 845 | } 846 | if$ 847 | format.btitle "title" output.check 848 | crossref missing$ 849 | { format.bvolume output 850 | format.number.series output 851 | format.publisher.address output 852 | } 853 | { 854 | format.book.crossref output.nonnull 855 | } 856 | if$ 857 | format.edition output 858 | format.date "year" output.check 859 | new.sentence 860 | format.note output 861 | fin.entry 862 | } 863 | FUNCTION {booklet} 864 | { "%Type = Booklet" write$ 865 | output.bibitem 866 | format.authors output 867 | author format.key output 868 | format.title "title" output.check 869 | howpublished "howpublished" bibinfo.check output 870 | address "address" bibinfo.check output 871 | format.date "year" output.check 872 | new.sentence 873 | format.note output 874 | fin.entry 875 | } 876 | 877 | FUNCTION {inbook} 878 | { "%Type = Inbook" write$ 879 | output.bibitem 880 | author empty$ 881 | { format.editors "author and editor" output.check 882 | editor format.key output 883 | } 884 | { format.authors output.nonnull 885 | crossref missing$ 886 | { "author and editor" editor either.or.check } 887 | 'skip$ 888 | if$ 889 | } 890 | if$ 891 | format.btitle "title" output.check 892 | crossref missing$ 893 | { 894 | format.bvolume output 895 | format.number.series output 896 | format.publisher.address output 897 | } 898 | { 899 | format.book.crossref output.nonnull 900 | } 901 | if$ 902 | format.edition output 903 | format.pages "pages" output.check 904 | new.sentence 905 | format.note output 906 | fin.entry 907 | } 908 | 909 | FUNCTION {incollection} 910 | { "%Type = Incollection" write$ 911 | output.bibitem 912 | format.authors "author" output.check 913 | author format.key output 914 | crossref missing$ 915 | { format.in.ed.booktitle "booktitle" output.check 916 | format.bvolume output 917 | format.number.series output 918 | format.publisher.address output 919 | format.edition output 920 | format.date output 921 | } 922 | { format.incoll.inproc.crossref output.nonnull 923 | } 924 | if$ 925 | format.pages "pages" output.check 926 | new.sentence 927 | format.note output 928 | fin.entry 929 | } 930 | FUNCTION {inproceedings} 931 | { "%Type = Inproceedings" write$ 932 | output.bibitem 933 | format.authors "author" output.check 934 | author format.key output 935 | crossref missing$ 936 | { format.in.ed.booktitle "booktitle" output.check 937 | format.bvolume output 938 | format.number.series output 939 | publisher empty$ 940 | { format.organization.address output } 941 | { organization "organization" bibinfo.check output 942 | format.publisher.address output 943 | format.date output 944 | } 945 | if$ 946 | } 947 | { format.incoll.inproc.crossref output.nonnull 948 | } 949 | if$ 950 | format.pages "pages" output.check 951 | new.sentence 952 | format.note output 953 | fin.entry 954 | } 955 | FUNCTION {conference} { inproceedings } 956 | FUNCTION {manual} 957 | { "%Type = Manual" write$ 958 | output.bibitem 959 | format.authors output 960 | author format.key output 961 | format.btitle "title" output.check 962 | organization "organization" bibinfo.check output 963 | address "address" bibinfo.check output 964 | format.edition output 965 | format.date "year" output.check 966 | new.sentence 967 | format.note output 968 | fin.entry 969 | } 970 | 971 | FUNCTION {mastersthesis} 972 | { "%Type = Masterthesis" write$ 973 | output.bibitem 974 | format.authors "author" output.check 975 | author format.key output 976 | format.btitle 977 | "title" output.check 978 | bbl.mthesis format.thesis.type output.nonnull 979 | school "school" bibinfo.warn output 980 | address "address" bibinfo.check output 981 | format.date "year" output.check 982 | new.sentence 983 | format.note output 984 | fin.entry 985 | } 986 | 987 | FUNCTION {misc} 988 | { "%Type = Misc" write$ 989 | output.bibitem 990 | format.authors output 991 | author format.key output 992 | format.title output 993 | howpublished "howpublished" bibinfo.check output 994 | format.date "year" output.check 995 | new.sentence 996 | format.note output 997 | fin.entry 998 | } 999 | FUNCTION {phdthesis} 1000 | { "%Type = Phdthesis" write$ 1001 | output.bibitem 1002 | format.authors "author" output.check 1003 | author format.key output 1004 | format.btitle 1005 | "title" output.check 1006 | bbl.phdthesis format.thesis.type output.nonnull 1007 | school "school" bibinfo.warn output 1008 | address "address" bibinfo.check output 1009 | format.date "year" output.check 1010 | new.sentence 1011 | format.note output 1012 | fin.entry 1013 | } 1014 | 1015 | FUNCTION {proceedings} 1016 | { "%Type = Proceedings" write$ 1017 | output.bibitem 1018 | format.editors output 1019 | editor format.key output 1020 | format.btitle "title" output.check 1021 | format.bvolume output 1022 | format.number.series output 1023 | publisher empty$ 1024 | { format.organization.address output } 1025 | { organization "organization" bibinfo.check output 1026 | format.publisher.address output 1027 | } 1028 | if$ 1029 | format.date "year" output.check 1030 | new.sentence 1031 | format.note output 1032 | fin.entry 1033 | } 1034 | 1035 | FUNCTION {techreport} 1036 | { "%Type = Techreport" write$ 1037 | output.bibitem 1038 | format.authors "author" output.check 1039 | author format.key output 1040 | format.btitle 1041 | "title" output.check 1042 | format.tr.number output.nonnull 1043 | institution "institution" bibinfo.warn output 1044 | address "address" bibinfo.check output 1045 | format.date "year" output.check 1046 | new.sentence 1047 | format.note output 1048 | fin.entry 1049 | } 1050 | 1051 | FUNCTION {unpublished} 1052 | { "%Type = Unpublished" write$ 1053 | output.bibitem 1054 | format.authors "author" output.check 1055 | author format.key output 1056 | format.title "title" output.check 1057 | format.date "year" output.check 1058 | new.sentence 1059 | format.note "note" output.check 1060 | fin.entry 1061 | } 1062 | 1063 | FUNCTION {default.type} { misc } 1064 | READ 1065 | FUNCTION {sortify} 1066 | { purify$ 1067 | "l" change.case$ 1068 | } 1069 | INTEGERS { len } 1070 | FUNCTION {chop.word} 1071 | { 's := 1072 | 'len := 1073 | s #1 len substring$ = 1074 | { s len #1 + global.max$ substring$ } 1075 | 's 1076 | if$ 1077 | } 1078 | FUNCTION {format.lab.names} 1079 | { 's := 1080 | "" 't := 1081 | s #1 "{vv~}{ll}" format.name$ 1082 | s num.names$ duplicate$ 1083 | #2 > 1084 | { pop$ 1085 | " " * bbl.etal * 1086 | } 1087 | { #2 < 1088 | 'skip$ 1089 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1090 | { 1091 | " " * bbl.etal * 1092 | } 1093 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1094 | * } 1095 | if$ 1096 | } 1097 | if$ 1098 | } 1099 | if$ 1100 | } 1101 | 1102 | FUNCTION {author.key.label} 1103 | { author empty$ 1104 | { key empty$ 1105 | { cite$ #1 #3 substring$ } 1106 | 'key 1107 | if$ 1108 | } 1109 | { author format.lab.names } 1110 | if$ 1111 | } 1112 | 1113 | FUNCTION {author.editor.key.label} 1114 | { author empty$ 1115 | { editor empty$ 1116 | { key empty$ 1117 | { cite$ #1 #3 substring$ } 1118 | 'key 1119 | if$ 1120 | } 1121 | { editor format.lab.names } 1122 | if$ 1123 | } 1124 | { author format.lab.names } 1125 | if$ 1126 | } 1127 | 1128 | FUNCTION {editor.key.label} 1129 | { editor empty$ 1130 | { key empty$ 1131 | { cite$ #1 #3 substring$ } 1132 | 'key 1133 | if$ 1134 | } 1135 | { editor format.lab.names } 1136 | if$ 1137 | } 1138 | 1139 | FUNCTION {calc.short.authors} 1140 | { type$ "book" = 1141 | type$ "inbook" = 1142 | or 1143 | 'author.editor.key.label 1144 | { type$ "proceedings" = 1145 | 'editor.key.label 1146 | 'author.key.label 1147 | if$ 1148 | } 1149 | if$ 1150 | 'short.list := 1151 | } 1152 | 1153 | FUNCTION {calc.label} 1154 | { calc.short.authors 1155 | short.list 1156 | "(" 1157 | * 1158 | year duplicate$ empty$ 1159 | { pop$ "????" } 1160 | { purify$ #-1 #4 substring$ } 1161 | if$ 1162 | * 1163 | 'label := 1164 | } 1165 | 1166 | FUNCTION {sort.format.names} 1167 | { 's := 1168 | #1 'nameptr := 1169 | "" 1170 | s num.names$ 'numnames := 1171 | numnames 'namesleft := 1172 | { namesleft #0 > } 1173 | { s nameptr 1174 | "{ll{ }}{ f{ }}{ jj{ }}" 1175 | format.name$ 't := 1176 | nameptr #1 > 1177 | { 1178 | " " * 1179 | namesleft #1 = t "others" = and 1180 | { "zzzzz" * } 1181 | { t sortify * } 1182 | if$ 1183 | } 1184 | { t sortify * } 1185 | if$ 1186 | nameptr #1 + 'nameptr := 1187 | namesleft #1 - 'namesleft := 1188 | } 1189 | while$ 1190 | } 1191 | 1192 | FUNCTION {sort.format.title} 1193 | { 't := 1194 | "A " #2 1195 | "An " #3 1196 | "The " #4 t chop.word 1197 | chop.word 1198 | chop.word 1199 | sortify 1200 | #1 global.max$ substring$ 1201 | } 1202 | FUNCTION {author.sort} 1203 | { author empty$ 1204 | { key empty$ 1205 | { "to sort, need author or key in " cite$ * warning$ 1206 | "" 1207 | } 1208 | { key sortify } 1209 | if$ 1210 | } 1211 | { author sort.format.names } 1212 | if$ 1213 | } 1214 | FUNCTION {author.editor.sort} 1215 | { author empty$ 1216 | { editor empty$ 1217 | { key empty$ 1218 | { "to sort, need author, editor, or key in " cite$ * warning$ 1219 | "" 1220 | } 1221 | { key sortify } 1222 | if$ 1223 | } 1224 | { editor sort.format.names } 1225 | if$ 1226 | } 1227 | { author sort.format.names } 1228 | if$ 1229 | } 1230 | FUNCTION {editor.sort} 1231 | { editor empty$ 1232 | { key empty$ 1233 | { "to sort, need editor or key in " cite$ * warning$ 1234 | "" 1235 | } 1236 | { key sortify } 1237 | if$ 1238 | } 1239 | { editor sort.format.names } 1240 | if$ 1241 | } 1242 | FUNCTION {presort} 1243 | { calc.label 1244 | label sortify 1245 | " " 1246 | * 1247 | type$ "book" = 1248 | type$ "inbook" = 1249 | or 1250 | 'author.editor.sort 1251 | { type$ "proceedings" = 1252 | 'editor.sort 1253 | 'author.sort 1254 | if$ 1255 | } 1256 | if$ 1257 | #1 entry.max$ substring$ 1258 | 'sort.label := 1259 | sort.label 1260 | * 1261 | " " 1262 | * 1263 | title field.or.null 1264 | sort.format.title 1265 | * 1266 | #1 entry.max$ substring$ 1267 | 'sort.key$ := 1268 | } 1269 | 1270 | ITERATE {presort} 1271 | %SORT 1272 | STRINGS { last.label next.extra } 1273 | INTEGERS { last.extra.num number.label } 1274 | FUNCTION {initialize.extra.label.stuff} 1275 | { #0 int.to.chr$ 'last.label := 1276 | "" 'next.extra := 1277 | #0 'last.extra.num := 1278 | #0 'number.label := 1279 | } 1280 | FUNCTION {forward.pass} 1281 | { last.label label = 1282 | { last.extra.num #1 + 'last.extra.num := 1283 | last.extra.num int.to.chr$ 'extra.label := 1284 | } 1285 | { "a" chr.to.int$ 'last.extra.num := 1286 | "" 'extra.label := 1287 | label 'last.label := 1288 | } 1289 | if$ 1290 | number.label #1 + 'number.label := 1291 | } 1292 | FUNCTION {reverse.pass} 1293 | { next.extra "b" = 1294 | { "a" 'extra.label := } 1295 | 'skip$ 1296 | if$ 1297 | extra.label 'next.extra := 1298 | extra.label 1299 | duplicate$ empty$ 1300 | 'skip$ 1301 | { "{\natexlab{" swap$ * "}}" * } 1302 | if$ 1303 | 'extra.label := 1304 | label extra.label * 'label := 1305 | } 1306 | EXECUTE {initialize.extra.label.stuff} 1307 | ITERATE {forward.pass} 1308 | REVERSE {reverse.pass} 1309 | FUNCTION {bib.sort.order} 1310 | { sort.label 1311 | " " 1312 | * 1313 | year field.or.null sortify 1314 | * 1315 | " " 1316 | * 1317 | title field.or.null 1318 | sort.format.title 1319 | * 1320 | #1 entry.max$ substring$ 1321 | 'sort.key$ := 1322 | } 1323 | ITERATE {bib.sort.order} 1324 | %SORT 1325 | FUNCTION {begin.bib} 1326 | { preamble$ empty$ 1327 | 'skip$ 1328 | { preamble$ write$ newline$ } 1329 | if$ 1330 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1331 | write$ newline$ 1332 | "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" 1333 | write$ newline$ 1334 | "\providecommand{\bibinfo}[2]{#2}" 1335 | write$ newline$ 1336 | "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" 1337 | write$ newline$ 1338 | } 1339 | EXECUTE {begin.bib} 1340 | EXECUTE {init.state.consts} 1341 | ITERATE {call.type$} 1342 | FUNCTION {end.bib} 1343 | { newline$ 1344 | "\end{thebibliography}" write$ newline$ 1345 | } 1346 | EXECUTE {end.bib} 1347 | %% End of customized bst file 1348 | %% 1349 | %% End of file `model1a-num-names.bst'. 1350 | -------------------------------------------------------------------------------- /refBst/model1b-num-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `model1b-num-names.bst', 3 | %% 4 | %% Copyright 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% $Id: model1b-num-names.bst 138 2009-10-07 12:23:54Z rishi $ 17 | %% 18 | %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1b/model1b-num-names.bst $ 19 | %% 20 | %% 21 | ENTRY 22 | { address 23 | author 24 | booktitle 25 | chapter 26 | edition 27 | editor 28 | howpublished 29 | institution 30 | journal 31 | key 32 | month 33 | note 34 | number 35 | organization 36 | pages 37 | publisher 38 | school 39 | series 40 | title 41 | type 42 | volume 43 | year 44 | } 45 | {} 46 | { label extra.label sort.label short.list } 47 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 48 | FUNCTION {init.state.consts} 49 | { #0 'before.all := 50 | #1 'mid.sentence := 51 | #2 'after.sentence := 52 | #3 'after.block := 53 | } 54 | STRINGS { s t} 55 | FUNCTION {output.nonnull} 56 | { 's := 57 | output.state mid.sentence = 58 | { ", " * write$ } 59 | { output.state after.block = 60 | { add.period$ write$ 61 | newline$ 62 | "\newblock " write$ 63 | } 64 | { output.state before.all = 65 | 'write$ 66 | { add.period$ " " * write$ } 67 | if$ 68 | } 69 | if$ 70 | mid.sentence 'output.state := 71 | } 72 | if$ 73 | s 74 | } 75 | FUNCTION {output} 76 | { duplicate$ empty$ 77 | 'pop$ 78 | 'output.nonnull 79 | if$ 80 | } 81 | FUNCTION {output.check} 82 | { 't := 83 | duplicate$ empty$ 84 | { pop$ "empty " t * " in " * cite$ * warning$ } 85 | 'output.nonnull 86 | if$ 87 | } 88 | FUNCTION {fin.entry} 89 | { add.period$ 90 | write$ 91 | newline$ 92 | } 93 | 94 | FUNCTION {new.block} 95 | { output.state before.all = 96 | 'skip$ 97 | { after.block 'output.state := } 98 | if$ 99 | } 100 | FUNCTION {new.sentence} 101 | { output.state after.block = 102 | 'skip$ 103 | { output.state before.all = 104 | 'skip$ 105 | { after.sentence 'output.state := } 106 | if$ 107 | } 108 | if$ 109 | } 110 | FUNCTION {add.blank} 111 | { " " * before.all 'output.state := 112 | } 113 | 114 | FUNCTION {date.block} 115 | { 116 | skip$ 117 | } 118 | 119 | FUNCTION {not} 120 | { { #0 } 121 | { #1 } 122 | if$ 123 | } 124 | FUNCTION {and} 125 | { 'skip$ 126 | { pop$ #0 } 127 | if$ 128 | } 129 | FUNCTION {or} 130 | { { pop$ #1 } 131 | 'skip$ 132 | if$ 133 | } 134 | FUNCTION {new.block.checkb} 135 | { empty$ 136 | swap$ empty$ 137 | and 138 | 'skip$ 139 | 'new.block 140 | if$ 141 | } 142 | FUNCTION {field.or.null} 143 | { duplicate$ empty$ 144 | { pop$ "" } 145 | 'skip$ 146 | if$ 147 | } 148 | FUNCTION {emphasize} 149 | { duplicate$ empty$ 150 | { pop$ "" } 151 | { "\textit{" swap$ * "}" * } 152 | if$ 153 | } 154 | FUNCTION {tie.or.space.prefix} 155 | { duplicate$ text.length$ #3 < 156 | { "~" } 157 | { " " } 158 | if$ 159 | swap$ 160 | } 161 | 162 | FUNCTION {capitalize} 163 | { "u" change.case$ "t" change.case$ } 164 | 165 | FUNCTION {space.word} 166 | { " " swap$ * " " * } 167 | % Here are the language-specific definitions for explicit words. 168 | % Each function has a name bbl.xxx where xxx is the English word. 169 | % The language selected here is ENGLISH 170 | FUNCTION {bbl.and} 171 | { "and"} 172 | 173 | FUNCTION {bbl.etal} 174 | { "et~al." } 175 | 176 | FUNCTION {bbl.editors} 177 | { "eds." } 178 | 179 | FUNCTION {bbl.editor} 180 | { "ed." } 181 | 182 | FUNCTION {bbl.edby} 183 | { "edited by" } 184 | 185 | FUNCTION {bbl.edition} 186 | { "edition" } 187 | 188 | FUNCTION {bbl.volume} 189 | { "volume" } 190 | 191 | FUNCTION {bbl.of} 192 | { "of" } 193 | 194 | FUNCTION {bbl.number} 195 | { "number" } 196 | 197 | FUNCTION {bbl.nr} 198 | { "no." } 199 | 200 | FUNCTION {bbl.in} 201 | { "in" } 202 | 203 | FUNCTION {bbl.pages} 204 | { "pp." } 205 | 206 | FUNCTION {bbl.page} 207 | { "p." } 208 | 209 | FUNCTION {bbl.chapter} 210 | { "chapter" } 211 | 212 | FUNCTION {bbl.techrep} 213 | { "Technical Report" } 214 | 215 | FUNCTION {bbl.mthesis} 216 | { "Master's thesis" } 217 | 218 | FUNCTION {bbl.phdthesis} 219 | { "Ph.D. thesis" } 220 | 221 | MACRO {jan} {"January"} 222 | 223 | MACRO {feb} {"February"} 224 | 225 | MACRO {mar} {"March"} 226 | 227 | MACRO {apr} {"April"} 228 | 229 | MACRO {may} {"May"} 230 | 231 | MACRO {jun} {"June"} 232 | 233 | MACRO {jul} {"July"} 234 | 235 | MACRO {aug} {"August"} 236 | 237 | MACRO {sep} {"September"} 238 | 239 | MACRO {oct} {"October"} 240 | 241 | MACRO {nov} {"November"} 242 | 243 | MACRO {dec} {"December"} 244 | 245 | MACRO {acmcs} {"ACM Comput. Surv."} 246 | 247 | MACRO {acta} {"Acta Inf."} 248 | 249 | MACRO {cacm} {"Commun. ACM"} 250 | 251 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 252 | 253 | MACRO {ibmsj} {"IBM Syst.~J."} 254 | 255 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 256 | 257 | MACRO {ieeetc} {"IEEE Trans. Comput."} 258 | 259 | MACRO {ieeetcad} 260 | {"IEEE Trans. Comput. Aid. Des."} 261 | 262 | MACRO {ipl} {"Inf. Process. Lett."} 263 | 264 | MACRO {jacm} {"J.~ACM"} 265 | 266 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 267 | 268 | MACRO {scp} {"Sci. Comput. Program."} 269 | 270 | MACRO {sicomp} {"SIAM J. Comput."} 271 | 272 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 273 | 274 | MACRO {tods} {"ACM Trans. Database Syst."} 275 | 276 | MACRO {tog} {"ACM Trans. Graphic."} 277 | 278 | MACRO {toms} {"ACM Trans. Math. Software"} 279 | 280 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 281 | 282 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 283 | 284 | MACRO {tcs} {"Theor. Comput. Sci."} 285 | 286 | FUNCTION {bibinfo.check} 287 | { swap$ 288 | duplicate$ missing$ 289 | { 290 | pop$ pop$ 291 | "" 292 | } 293 | { duplicate$ empty$ 294 | { 295 | swap$ pop$ 296 | } 297 | { swap$ 298 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 299 | } 300 | if$ 301 | } 302 | if$ 303 | } 304 | FUNCTION {bibinfo.warn} 305 | { swap$ 306 | duplicate$ missing$ 307 | { 308 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 309 | "" 310 | } 311 | { duplicate$ empty$ 312 | { 313 | swap$ "empty " swap$ * " in " * cite$ * warning$ 314 | } 315 | { swap$ 316 | pop$ 317 | } 318 | if$ 319 | } 320 | if$ 321 | } 322 | STRINGS { bibinfo} 323 | INTEGERS { nameptr namesleft numnames } 324 | 325 | FUNCTION {format.names} 326 | { 'bibinfo := 327 | duplicate$ empty$ 'skip$ { 328 | 's := 329 | "" 't := 330 | #1 'nameptr := 331 | s num.names$ 'numnames := 332 | numnames 'namesleft := 333 | { namesleft #0 > } 334 | { s nameptr 335 | "{f{.}.~}{vv~}{ll}{, jj}" 336 | format.name$ 337 | bibinfo bibinfo.check 338 | 't := 339 | nameptr #1 > 340 | { 341 | namesleft #1 > 342 | { ", " * t * } 343 | { 344 | "," * 345 | s nameptr "{ll}" format.name$ duplicate$ "others" = 346 | { 't := } 347 | { pop$ } 348 | if$ 349 | t "others" = 350 | { 351 | " " * bbl.etal * 352 | } 353 | { " " * t * } 354 | if$ 355 | } 356 | if$ 357 | } 358 | 't 359 | if$ 360 | nameptr #1 + 'nameptr := 361 | namesleft #1 - 'namesleft := 362 | } 363 | while$ 364 | } if$ 365 | } 366 | FUNCTION {format.names.ed} 367 | { 368 | format.names 369 | } 370 | FUNCTION {format.key} 371 | { empty$ 372 | { key field.or.null } 373 | { "" } 374 | if$ 375 | } 376 | 377 | FUNCTION {format.authors} 378 | { author "author" format.names 379 | } 380 | FUNCTION {get.bbl.editor} 381 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 382 | 383 | FUNCTION {format.editors} 384 | { editor "editor" format.names duplicate$ empty$ 'skip$ 385 | { 386 | " " * 387 | get.bbl.editor 388 | capitalize 389 | "(" swap$ * ")" * 390 | * 391 | } 392 | if$ 393 | } 394 | FUNCTION {format.note} 395 | { 396 | note empty$ 397 | { "" } 398 | { note #1 #1 substring$ 399 | duplicate$ "{" = 400 | 'skip$ 401 | { output.state mid.sentence = 402 | { "l" } 403 | { "u" } 404 | if$ 405 | change.case$ 406 | } 407 | if$ 408 | note #2 global.max$ substring$ * "note" bibinfo.check 409 | } 410 | if$ 411 | } 412 | 413 | FUNCTION {format.title} 414 | { title 415 | duplicate$ empty$ 'skip$ 416 | { "t" change.case$ } 417 | if$ 418 | "title" bibinfo.check 419 | } 420 | FUNCTION {format.full.names} 421 | {'s := 422 | "" 't := 423 | #1 'nameptr := 424 | s num.names$ 'numnames := 425 | numnames 'namesleft := 426 | { namesleft #0 > } 427 | { s nameptr 428 | "{vv~}{ll}" format.name$ 429 | 't := 430 | nameptr #1 > 431 | { 432 | namesleft #1 > 433 | { ", " * t * } 434 | { 435 | s nameptr "{ll}" format.name$ duplicate$ "others" = 436 | { 't := } 437 | { pop$ } 438 | if$ 439 | t "others" = 440 | { 441 | " " * bbl.etal * 442 | } 443 | { 444 | bbl.and 445 | space.word * t * 446 | } 447 | if$ 448 | } 449 | if$ 450 | } 451 | 't 452 | if$ 453 | nameptr #1 + 'nameptr := 454 | namesleft #1 - 'namesleft := 455 | } 456 | while$ 457 | } 458 | 459 | FUNCTION {author.editor.key.full} 460 | { author empty$ 461 | { editor empty$ 462 | { key empty$ 463 | { cite$ #1 #3 substring$ } 464 | 'key 465 | if$ 466 | } 467 | { editor format.full.names } 468 | if$ 469 | } 470 | { author format.full.names } 471 | if$ 472 | } 473 | 474 | FUNCTION {author.key.full} 475 | { author empty$ 476 | { key empty$ 477 | { cite$ #1 #3 substring$ } 478 | 'key 479 | if$ 480 | } 481 | { author format.full.names } 482 | if$ 483 | } 484 | 485 | FUNCTION {editor.key.full} 486 | { editor empty$ 487 | { key empty$ 488 | { cite$ #1 #3 substring$ } 489 | 'key 490 | if$ 491 | } 492 | { editor format.full.names } 493 | if$ 494 | } 495 | 496 | FUNCTION {make.full.names} 497 | { type$ "book" = 498 | type$ "inbook" = 499 | or 500 | 'author.editor.key.full 501 | { type$ "proceedings" = 502 | 'editor.key.full 503 | 'author.key.full 504 | if$ 505 | } 506 | if$ 507 | } 508 | 509 | FUNCTION {output.bibitem} 510 | { newline$ 511 | "\bibitem[{" write$ 512 | label write$ 513 | ")" make.full.names duplicate$ short.list = 514 | { pop$ } 515 | { * } 516 | if$ 517 | "}]{" * write$ 518 | cite$ write$ 519 | "}" write$ 520 | newline$ 521 | "" 522 | before.all 'output.state := 523 | } 524 | 525 | FUNCTION {n.dashify} 526 | { 527 | 't := 528 | "" 529 | { t empty$ not } 530 | { t #1 #1 substring$ "-" = 531 | { t #1 #2 substring$ "--" = not 532 | { "--" * 533 | t #2 global.max$ substring$ 't := 534 | } 535 | { { t #1 #1 substring$ "-" = } 536 | { "-" * 537 | t #2 global.max$ substring$ 't := 538 | } 539 | while$ 540 | } 541 | if$ 542 | } 543 | { t #1 #1 substring$ * 544 | t #2 global.max$ substring$ 't := 545 | } 546 | if$ 547 | } 548 | while$ 549 | } 550 | 551 | FUNCTION {word.in} 552 | { bbl.in 553 | ":" * 554 | " " * } 555 | 556 | FUNCTION {format.date} 557 | { year "year" bibinfo.check duplicate$ empty$ 558 | { 559 | "empty year in " cite$ * "; set to ????" * warning$ 560 | pop$ "????" 561 | } 562 | 'skip$ 563 | if$ 564 | extra.label * 565 | } 566 | FUNCTION{format.year} 567 | { year "year" bibinfo.check duplicate$ empty$ 568 | { "empty year in " cite$ * 569 | "; set to ????" * 570 | warning$ 571 | pop$ "????" 572 | } 573 | { 574 | } 575 | if$ 576 | extra.label * 577 | " (" swap$ * ")" * 578 | } 579 | FUNCTION {format.btitle} 580 | { title "title" bibinfo.check 581 | duplicate$ empty$ 'skip$ 582 | { 583 | } 584 | if$ 585 | } 586 | FUNCTION {either.or.check} 587 | { empty$ 588 | 'pop$ 589 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 590 | if$ 591 | } 592 | FUNCTION {format.bvolume} 593 | { volume empty$ 594 | { "" } 595 | { bbl.volume volume tie.or.space.prefix 596 | "volume" bibinfo.check * * 597 | series "series" bibinfo.check 598 | duplicate$ empty$ 'pop$ 599 | { swap$ bbl.of space.word * swap$ 600 | emphasize * } 601 | if$ 602 | "volume and number" number either.or.check 603 | } 604 | if$ 605 | } 606 | FUNCTION {format.number.series} 607 | { volume empty$ 608 | { number empty$ 609 | { series field.or.null } 610 | { series empty$ 611 | { number "number" bibinfo.check } 612 | { output.state mid.sentence = 613 | { bbl.number } 614 | { bbl.number capitalize } 615 | if$ 616 | number tie.or.space.prefix "number" bibinfo.check * * 617 | bbl.in space.word * 618 | series "series" bibinfo.check * 619 | } 620 | if$ 621 | } 622 | if$ 623 | } 624 | { "" } 625 | if$ 626 | } 627 | 628 | FUNCTION {format.edition} 629 | { edition duplicate$ empty$ 'skip$ 630 | { 631 | output.state mid.sentence = 632 | { "l" } 633 | { "t" } 634 | if$ change.case$ 635 | "edition" bibinfo.check 636 | " " * bbl.edition * 637 | } 638 | if$ 639 | } 640 | INTEGERS { multiresult } 641 | FUNCTION {multi.page.check} 642 | { 't := 643 | #0 'multiresult := 644 | { multiresult not 645 | t empty$ not 646 | and 647 | } 648 | { t #1 #1 substring$ 649 | duplicate$ "-" = 650 | swap$ duplicate$ "," = 651 | swap$ "+" = 652 | or or 653 | { #1 'multiresult := } 654 | { t #2 global.max$ substring$ 't := } 655 | if$ 656 | } 657 | while$ 658 | multiresult 659 | } 660 | FUNCTION {format.pages} 661 | { pages duplicate$ empty$ 'skip$ 662 | { duplicate$ multi.page.check 663 | { 664 | bbl.pages swap$ 665 | n.dashify 666 | } 667 | { 668 | bbl.page swap$ 669 | } 670 | if$ 671 | tie.or.space.prefix 672 | "pages" bibinfo.check 673 | * * 674 | } 675 | if$ 676 | } 677 | FUNCTION {format.journal.pages} 678 | { pages duplicate$ empty$ 'pop$ 679 | { swap$ duplicate$ empty$ 680 | { pop$ pop$ format.pages } 681 | { 682 | " " * 683 | swap$ 684 | n.dashify 685 | "pages" bibinfo.check 686 | * 687 | } 688 | if$ 689 | } 690 | if$ 691 | } 692 | FUNCTION {format.vol.num.pages} 693 | { volume field.or.null 694 | duplicate$ empty$ 'skip$ 695 | { 696 | "volume" bibinfo.check 697 | } 698 | if$ 699 | format.year * 700 | } 701 | 702 | FUNCTION {format.chapter.pages} 703 | { chapter empty$ 704 | { "" } 705 | { type empty$ 706 | { bbl.chapter } 707 | { type "l" change.case$ 708 | "type" bibinfo.check 709 | } 710 | if$ 711 | chapter tie.or.space.prefix 712 | "chapter" bibinfo.check 713 | * * 714 | } 715 | if$ 716 | } 717 | 718 | FUNCTION {format.booktitle} 719 | { 720 | booktitle "booktitle" bibinfo.check 721 | } 722 | FUNCTION {format.in.ed.booktitle} 723 | { format.booktitle duplicate$ empty$ 'skip$ 724 | { 725 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 726 | { 727 | " " * 728 | get.bbl.editor 729 | capitalize 730 | "(" swap$ * "), " * 731 | * swap$ 732 | * } 733 | if$ 734 | word.in swap$ * 735 | } 736 | if$ 737 | } 738 | FUNCTION {format.thesis.type} 739 | { type duplicate$ empty$ 740 | 'pop$ 741 | { swap$ pop$ 742 | "t" change.case$ "type" bibinfo.check 743 | } 744 | if$ 745 | } 746 | FUNCTION {format.tr.number} 747 | { number "number" bibinfo.check 748 | type duplicate$ empty$ 749 | { pop$ bbl.techrep } 750 | 'skip$ 751 | if$ 752 | "type" bibinfo.check 753 | swap$ duplicate$ empty$ 754 | { pop$ "t" change.case$ } 755 | { tie.or.space.prefix * * } 756 | if$ 757 | } 758 | FUNCTION {format.article.crossref} 759 | { 760 | word.in 761 | " \cite{" * crossref * "}" * 762 | } 763 | FUNCTION {format.book.crossref} 764 | { volume duplicate$ empty$ 765 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 766 | pop$ word.in 767 | } 768 | { bbl.volume 769 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 770 | } 771 | if$ 772 | " \cite{" * crossref * "}" * 773 | } 774 | FUNCTION {format.incoll.inproc.crossref} 775 | { 776 | word.in 777 | " \cite{" * crossref * "}" * 778 | } 779 | FUNCTION {format.org.or.pub} 780 | { 't := 781 | "" 782 | address empty$ t empty$ and 783 | 'skip$ 784 | { 785 | t empty$ 786 | { address "address" bibinfo.check * 787 | } 788 | { t * 789 | address empty$ 790 | 'skip$ 791 | { ", " * address "address" bibinfo.check * } 792 | if$ 793 | } 794 | if$ 795 | } 796 | if$ 797 | } 798 | FUNCTION {format.publisher.address} 799 | { publisher "publisher" bibinfo.check format.org.or.pub 800 | } 801 | 802 | FUNCTION {format.organization.address} 803 | { organization "organization" bibinfo.check format.org.or.pub 804 | } 805 | 806 | FUNCTION {article} 807 | { "%Type = Article" write$ 808 | output.bibitem 809 | format.authors "author" output.check 810 | author format.key output 811 | format.title "title" output.check 812 | crossref missing$ 813 | { 814 | journal 815 | "journal" bibinfo.check 816 | "journal" output.check 817 | add.blank 818 | format.vol.num.pages output 819 | } 820 | { format.article.crossref output.nonnull 821 | } 822 | if$ 823 | format.journal.pages 824 | new.sentence 825 | format.note output 826 | fin.entry 827 | } 828 | FUNCTION {book} 829 | { "%Type = Book" write$ 830 | output.bibitem 831 | author empty$ 832 | { format.editors "author and editor" output.check 833 | editor format.key output 834 | } 835 | { format.authors output.nonnull 836 | crossref missing$ 837 | { "author and editor" editor either.or.check } 838 | 'skip$ 839 | if$ 840 | } 841 | if$ 842 | format.btitle "title" output.check 843 | crossref missing$ 844 | { format.bvolume output 845 | format.number.series output 846 | format.publisher.address output 847 | } 848 | { 849 | format.book.crossref output.nonnull 850 | } 851 | if$ 852 | format.edition output 853 | format.date "year" output.check 854 | new.sentence 855 | format.note output 856 | fin.entry 857 | } 858 | FUNCTION {booklet} 859 | { "%Type = Booklet" write$ 860 | output.bibitem 861 | format.authors output 862 | author format.key output 863 | format.title "title" output.check 864 | howpublished "howpublished" bibinfo.check output 865 | address "address" bibinfo.check output 866 | format.date "year" output.check 867 | new.sentence 868 | format.note output 869 | fin.entry 870 | } 871 | 872 | FUNCTION {inbook} 873 | { "%Type = Inbook" write$ 874 | output.bibitem 875 | author empty$ 876 | { format.editors "author and editor" output.check 877 | editor format.key output 878 | } 879 | { format.authors output.nonnull 880 | format.title "title" output.check 881 | crossref missing$ 882 | { "author and editor" editor either.or.check } 883 | 'skip$ 884 | if$ 885 | } 886 | if$ 887 | format.btitle "title" output.check 888 | crossref missing$ 889 | { 890 | format.bvolume output 891 | format.number.series output 892 | format.publisher.address output 893 | format.date "year" output.check 894 | } 895 | { 896 | format.book.crossref output.nonnull 897 | } 898 | if$ 899 | format.edition output 900 | format.pages "pages" output.check 901 | new.sentence 902 | format.note output 903 | fin.entry 904 | } 905 | 906 | FUNCTION {incollection} 907 | { "%Type = Incollection" write$ 908 | output.bibitem 909 | format.authors "author" output.check 910 | author format.key output 911 | format.title "title" output.check 912 | crossref missing$ 913 | { format.in.ed.booktitle "booktitle" output.check 914 | format.bvolume output 915 | format.number.series output 916 | format.publisher.address output 917 | format.date "year" output.check 918 | format.edition output 919 | } 920 | { format.incoll.inproc.crossref output.nonnull 921 | } 922 | if$ 923 | format.pages "pages" output.check 924 | new.sentence 925 | format.note output 926 | fin.entry 927 | } 928 | FUNCTION {inproceedings} 929 | { "%Type = Inproceedings" write$ 930 | output.bibitem 931 | format.authors "author" output.check 932 | author format.key output 933 | format.title "title" output.check 934 | crossref missing$ 935 | { 936 | journal 937 | "journal" bibinfo.check 938 | "journal" output.check 939 | format.in.ed.booktitle "booktitle" output.check 940 | format.bvolume output 941 | format.number.series output 942 | publisher empty$ 943 | { format.organization.address output } 944 | { organization "organization" bibinfo.check output 945 | format.publisher.address output 946 | format.date "year" output.check 947 | } 948 | if$ 949 | } 950 | { format.incoll.inproc.crossref output.nonnull 951 | } 952 | if$ 953 | format.pages "pages" output.check 954 | new.sentence 955 | format.note output 956 | fin.entry 957 | } 958 | FUNCTION {conference} { inproceedings } 959 | FUNCTION {manual} 960 | { "%Type = Manual" write$ 961 | output.bibitem 962 | format.authors output 963 | author format.key output 964 | format.btitle "title" output.check 965 | organization "organization" bibinfo.check output 966 | address "address" bibinfo.check output 967 | format.edition output 968 | format.date "year" output.check 969 | new.sentence 970 | format.note output 971 | fin.entry 972 | } 973 | 974 | FUNCTION {mastersthesis} 975 | { "%Type = Masterthesis" write$ 976 | output.bibitem 977 | format.authors "author" output.check 978 | author format.key output 979 | format.btitle 980 | "title" output.check 981 | bbl.mthesis format.thesis.type output.nonnull 982 | school "school" bibinfo.warn output 983 | address "address" bibinfo.check output 984 | format.date "year" output.check 985 | new.sentence 986 | format.note output 987 | fin.entry 988 | } 989 | 990 | FUNCTION {misc} 991 | { "%Type = Misc" write$ 992 | output.bibitem 993 | format.authors output 994 | author format.key output 995 | format.title output 996 | howpublished "howpublished" bibinfo.check output 997 | format.date "year" output.check 998 | new.sentence 999 | format.note output 1000 | fin.entry 1001 | } 1002 | FUNCTION {phdthesis} 1003 | { "%Type = Phdthesis" write$ 1004 | output.bibitem 1005 | format.authors "author" output.check 1006 | author format.key output 1007 | format.btitle 1008 | "title" output.check 1009 | bbl.phdthesis format.thesis.type output.nonnull 1010 | school "school" bibinfo.warn output 1011 | address "address" bibinfo.check output 1012 | format.date "year" output.check 1013 | new.sentence 1014 | format.note output 1015 | fin.entry 1016 | } 1017 | 1018 | FUNCTION {proceedings} 1019 | { "%Type = Proceedings" write$ 1020 | output.bibitem 1021 | format.editors output 1022 | editor format.key output 1023 | format.btitle "title" output.check 1024 | format.bvolume output 1025 | format.number.series output 1026 | publisher empty$ 1027 | { format.organization.address output } 1028 | { organization "organization" bibinfo.check output 1029 | format.publisher.address output 1030 | } 1031 | if$ 1032 | format.date "year" output.check 1033 | new.sentence 1034 | format.note output 1035 | fin.entry 1036 | } 1037 | 1038 | FUNCTION {techreport} 1039 | { "%Type = Techreport" write$ 1040 | output.bibitem 1041 | format.authors "author" output.check 1042 | author format.key output 1043 | format.btitle 1044 | "title" output.check 1045 | format.tr.number output.nonnull 1046 | institution "institution" bibinfo.warn output 1047 | address "address" bibinfo.check output 1048 | format.date "year" output.check 1049 | new.sentence 1050 | format.note output 1051 | fin.entry 1052 | } 1053 | 1054 | FUNCTION {unpublished} 1055 | { "%Type = Unpublished" write$ 1056 | output.bibitem 1057 | format.authors "author" output.check 1058 | author format.key output 1059 | format.title "title" output.check 1060 | format.date "year" output.check 1061 | new.sentence 1062 | format.note "note" output.check 1063 | fin.entry 1064 | } 1065 | 1066 | FUNCTION {default.type} { misc } 1067 | READ 1068 | FUNCTION {sortify} 1069 | { purify$ 1070 | "l" change.case$ 1071 | } 1072 | INTEGERS { len } 1073 | FUNCTION {chop.word} 1074 | { 's := 1075 | 'len := 1076 | s #1 len substring$ = 1077 | { s len #1 + global.max$ substring$ } 1078 | 's 1079 | if$ 1080 | } 1081 | FUNCTION {format.lab.names} 1082 | { 's := 1083 | "" 't := 1084 | s #1 "{vv~}{ll}" format.name$ 1085 | s num.names$ duplicate$ 1086 | #2 > 1087 | { pop$ 1088 | " " * bbl.etal * 1089 | } 1090 | { #2 < 1091 | 'skip$ 1092 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1093 | { 1094 | " " * bbl.etal * 1095 | } 1096 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1097 | * } 1098 | if$ 1099 | } 1100 | if$ 1101 | } 1102 | if$ 1103 | } 1104 | 1105 | FUNCTION {author.key.label} 1106 | { author empty$ 1107 | { key empty$ 1108 | { cite$ #1 #3 substring$ } 1109 | 'key 1110 | if$ 1111 | } 1112 | { author format.lab.names } 1113 | if$ 1114 | } 1115 | 1116 | FUNCTION {author.editor.key.label} 1117 | { author empty$ 1118 | { editor empty$ 1119 | { key empty$ 1120 | { cite$ #1 #3 substring$ } 1121 | 'key 1122 | if$ 1123 | } 1124 | { editor format.lab.names } 1125 | if$ 1126 | } 1127 | { author format.lab.names } 1128 | if$ 1129 | } 1130 | 1131 | FUNCTION {editor.key.label} 1132 | { editor empty$ 1133 | { key empty$ 1134 | { cite$ #1 #3 substring$ } 1135 | 'key 1136 | if$ 1137 | } 1138 | { editor format.lab.names } 1139 | if$ 1140 | } 1141 | 1142 | FUNCTION {calc.short.authors} 1143 | { type$ "book" = 1144 | type$ "inbook" = 1145 | or 1146 | 'author.editor.key.label 1147 | { type$ "proceedings" = 1148 | 'editor.key.label 1149 | 'author.key.label 1150 | if$ 1151 | } 1152 | if$ 1153 | 'short.list := 1154 | } 1155 | 1156 | FUNCTION {calc.label} 1157 | { calc.short.authors 1158 | short.list 1159 | "(" 1160 | * 1161 | year duplicate$ empty$ 1162 | { pop$ "????" } 1163 | { purify$ #-1 #4 substring$ } 1164 | if$ 1165 | * 1166 | 'label := 1167 | } 1168 | 1169 | FUNCTION {sort.format.names} 1170 | { 's := 1171 | #1 'nameptr := 1172 | "" 1173 | s num.names$ 'numnames := 1174 | numnames 'namesleft := 1175 | { namesleft #0 > } 1176 | { s nameptr 1177 | "{ll{ }}{ f{ }}{ jj{ }}" 1178 | format.name$ 't := 1179 | nameptr #1 > 1180 | { 1181 | " " * 1182 | namesleft #1 = t "others" = and 1183 | { "zzzzz" * } 1184 | { t sortify * } 1185 | if$ 1186 | } 1187 | { t sortify * } 1188 | if$ 1189 | nameptr #1 + 'nameptr := 1190 | namesleft #1 - 'namesleft := 1191 | } 1192 | while$ 1193 | } 1194 | 1195 | FUNCTION {sort.format.title} 1196 | { 't := 1197 | "A " #2 1198 | "An " #3 1199 | "The " #4 t chop.word 1200 | chop.word 1201 | chop.word 1202 | sortify 1203 | #1 global.max$ substring$ 1204 | } 1205 | FUNCTION {author.sort} 1206 | { author empty$ 1207 | { key empty$ 1208 | { "to sort, need author or key in " cite$ * warning$ 1209 | "" 1210 | } 1211 | { key sortify } 1212 | if$ 1213 | } 1214 | { author sort.format.names } 1215 | if$ 1216 | } 1217 | FUNCTION {author.editor.sort} 1218 | { author empty$ 1219 | { editor empty$ 1220 | { key empty$ 1221 | { "to sort, need author, editor, or key in " cite$ * warning$ 1222 | "" 1223 | } 1224 | { key sortify } 1225 | if$ 1226 | } 1227 | { editor sort.format.names } 1228 | if$ 1229 | } 1230 | { author sort.format.names } 1231 | if$ 1232 | } 1233 | FUNCTION {editor.sort} 1234 | { editor empty$ 1235 | { key empty$ 1236 | { "to sort, need editor or key in " cite$ * warning$ 1237 | "" 1238 | } 1239 | { key sortify } 1240 | if$ 1241 | } 1242 | { editor sort.format.names } 1243 | if$ 1244 | } 1245 | FUNCTION {presort} 1246 | { calc.label 1247 | label sortify 1248 | " " 1249 | * 1250 | type$ "book" = 1251 | type$ "inbook" = 1252 | or 1253 | 'author.editor.sort 1254 | { type$ "proceedings" = 1255 | 'editor.sort 1256 | 'author.sort 1257 | if$ 1258 | } 1259 | if$ 1260 | #1 entry.max$ substring$ 1261 | 'sort.label := 1262 | sort.label 1263 | * 1264 | " " 1265 | * 1266 | title field.or.null 1267 | sort.format.title 1268 | * 1269 | #1 entry.max$ substring$ 1270 | 'sort.key$ := 1271 | } 1272 | 1273 | ITERATE {presort} 1274 | SORT 1275 | STRINGS { last.label next.extra } 1276 | INTEGERS { last.extra.num number.label } 1277 | FUNCTION {initialize.extra.label.stuff} 1278 | { #0 int.to.chr$ 'last.label := 1279 | "" 'next.extra := 1280 | #0 'last.extra.num := 1281 | #0 'number.label := 1282 | } 1283 | FUNCTION {forward.pass} 1284 | { last.label label = 1285 | { last.extra.num #1 + 'last.extra.num := 1286 | last.extra.num int.to.chr$ 'extra.label := 1287 | } 1288 | { "a" chr.to.int$ 'last.extra.num := 1289 | "" 'extra.label := 1290 | label 'last.label := 1291 | } 1292 | if$ 1293 | number.label #1 + 'number.label := 1294 | } 1295 | FUNCTION {reverse.pass} 1296 | { next.extra "b" = 1297 | { "a" 'extra.label := } 1298 | 'skip$ 1299 | if$ 1300 | extra.label 'next.extra := 1301 | extra.label 1302 | duplicate$ empty$ 1303 | 'skip$ 1304 | { "{\natexlab{" swap$ * "}}" * } 1305 | if$ 1306 | 'extra.label := 1307 | label extra.label * 'label := 1308 | } 1309 | EXECUTE {initialize.extra.label.stuff} 1310 | ITERATE {forward.pass} 1311 | REVERSE {reverse.pass} 1312 | FUNCTION {bib.sort.order} 1313 | { sort.label 1314 | " " 1315 | * 1316 | year field.or.null sortify 1317 | * 1318 | " " 1319 | * 1320 | title field.or.null 1321 | sort.format.title 1322 | * 1323 | #1 entry.max$ substring$ 1324 | 'sort.key$ := 1325 | } 1326 | ITERATE {bib.sort.order} 1327 | SORT 1328 | FUNCTION {begin.bib} 1329 | { preamble$ empty$ 1330 | 'skip$ 1331 | { preamble$ write$ newline$ } 1332 | if$ 1333 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1334 | write$ newline$ 1335 | "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" 1336 | write$ newline$ 1337 | "\providecommand{\bibinfo}[2]{#2}" 1338 | write$ newline$ 1339 | "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" 1340 | write$ newline$ 1341 | } 1342 | EXECUTE {begin.bib} 1343 | EXECUTE {init.state.consts} 1344 | ITERATE {call.type$} 1345 | FUNCTION {end.bib} 1346 | { newline$ 1347 | "\end{thebibliography}" write$ newline$ 1348 | } 1349 | EXECUTE {end.bib} 1350 | %% End of customized bst file 1351 | %% 1352 | %% End of file `model1b-num-names.bst'. 1353 | -------------------------------------------------------------------------------- /refBst/model1c-num-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `model1c-num-names.bst', 3 | %% 4 | %% Copyright 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% $Id: model1c-num-names.bst 139 2009-10-07 12:24:10Z rishi $ 17 | %% 18 | %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1c/model1c-num-names.bst $ 19 | %% 20 | 21 | ENTRY 22 | { address 23 | author 24 | booktitle 25 | chapter 26 | edition 27 | editor 28 | howpublished 29 | institution 30 | journal 31 | key 32 | month 33 | note 34 | number 35 | organization 36 | pages 37 | publisher 38 | school 39 | series 40 | title 41 | type 42 | volume 43 | year 44 | } 45 | {} 46 | { label extra.label sort.label short.list } 47 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 48 | FUNCTION {init.state.consts} 49 | { #0 'before.all := 50 | #1 'mid.sentence := 51 | #2 'after.sentence := 52 | #3 'after.block := 53 | } 54 | STRINGS { s t} 55 | FUNCTION {output.nonnull} 56 | { 's := 57 | output.state mid.sentence = 58 | { ", " * write$ } 59 | { output.state after.block = 60 | { add.period$ write$ 61 | newline$ 62 | "\newblock " write$ 63 | } 64 | { output.state before.all = 65 | 'write$ 66 | { add.period$ " " * write$ } 67 | if$ 68 | } 69 | if$ 70 | mid.sentence 'output.state := 71 | } 72 | if$ 73 | s 74 | } 75 | FUNCTION {output} 76 | { duplicate$ empty$ 77 | 'pop$ 78 | 'output.nonnull 79 | if$ 80 | } 81 | FUNCTION {output.check} 82 | { 't := 83 | duplicate$ empty$ 84 | { pop$ "empty " t * " in " * cite$ * warning$ } 85 | 'output.nonnull 86 | if$ 87 | } 88 | FUNCTION {fin.entry} 89 | { add.period$ 90 | write$ 91 | newline$ 92 | } 93 | 94 | FUNCTION {new.block} 95 | { output.state before.all = 96 | 'skip$ 97 | { after.block 'output.state := } 98 | if$ 99 | } 100 | FUNCTION {new.sentence} 101 | { output.state after.block = 102 | 'skip$ 103 | { output.state before.all = 104 | 'skip$ 105 | { after.sentence 'output.state := } 106 | if$ 107 | } 108 | if$ 109 | } 110 | FUNCTION {add.blank} 111 | { " " * before.all 'output.state := 112 | } 113 | 114 | FUNCTION {date.block} 115 | { 116 | skip$ 117 | } 118 | 119 | FUNCTION {not} 120 | { { #0 } 121 | { #1 } 122 | if$ 123 | } 124 | FUNCTION {and} 125 | { 'skip$ 126 | { pop$ #0 } 127 | if$ 128 | } 129 | FUNCTION {or} 130 | { { pop$ #1 } 131 | 'skip$ 132 | if$ 133 | } 134 | FUNCTION {new.block.checkb} 135 | { empty$ 136 | swap$ empty$ 137 | and 138 | 'skip$ 139 | 'new.block 140 | if$ 141 | } 142 | FUNCTION {field.or.null} 143 | { duplicate$ empty$ 144 | { pop$ "" } 145 | 'skip$ 146 | if$ 147 | } 148 | FUNCTION {emphasize} 149 | { duplicate$ empty$ 150 | { pop$ "" } 151 | { "\textit{" swap$ * "}" * } 152 | if$ 153 | } 154 | FUNCTION {tie.or.space.prefix} 155 | { duplicate$ text.length$ #3 < 156 | { "~" } 157 | { " " } 158 | if$ 159 | swap$ 160 | } 161 | 162 | FUNCTION {capitalize} 163 | { "u" change.case$ "t" change.case$ } 164 | 165 | FUNCTION {space.word} 166 | { " " swap$ * " " * } 167 | % Here are the language-specific definitions for explicit words. 168 | % Each function has a name bbl.xxx where xxx is the English word. 169 | % The language selected here is ENGLISH 170 | FUNCTION {bbl.and} 171 | { "and"} 172 | 173 | FUNCTION {bbl.etal} 174 | { "et~al." } 175 | 176 | FUNCTION {bbl.editors} 177 | { "eds." } 178 | 179 | FUNCTION {bbl.editor} 180 | { "ed." } 181 | 182 | FUNCTION {bbl.edby} 183 | { "edited by" } 184 | 185 | FUNCTION {bbl.edition} 186 | { "edition" } 187 | 188 | FUNCTION {bbl.volume} 189 | { "volume" } 190 | 191 | FUNCTION {bbl.of} 192 | { "of" } 193 | 194 | FUNCTION {bbl.number} 195 | { "number" } 196 | 197 | FUNCTION {bbl.nr} 198 | { "no." } 199 | 200 | FUNCTION {bbl.in} 201 | { "in" } 202 | 203 | FUNCTION {bbl.pages} 204 | { "pp." } 205 | 206 | FUNCTION {bbl.page} 207 | { "p." } 208 | 209 | FUNCTION {bbl.chapter} 210 | { "chapter" } 211 | 212 | FUNCTION {bbl.techrep} 213 | { "Technical Report" } 214 | 215 | FUNCTION {bbl.mthesis} 216 | { "Master's thesis" } 217 | 218 | FUNCTION {bbl.phdthesis} 219 | { "Ph.D. thesis" } 220 | 221 | MACRO {jan} {"January"} 222 | 223 | MACRO {feb} {"February"} 224 | 225 | MACRO {mar} {"March"} 226 | 227 | MACRO {apr} {"April"} 228 | 229 | MACRO {may} {"May"} 230 | 231 | MACRO {jun} {"June"} 232 | 233 | MACRO {jul} {"July"} 234 | 235 | MACRO {aug} {"August"} 236 | 237 | MACRO {sep} {"September"} 238 | 239 | MACRO {oct} {"October"} 240 | 241 | MACRO {nov} {"November"} 242 | 243 | MACRO {dec} {"December"} 244 | 245 | MACRO {acmcs} {"ACM Comput. Surv."} 246 | 247 | MACRO {acta} {"Acta Inf."} 248 | 249 | MACRO {cacm} {"Commun. ACM"} 250 | 251 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 252 | 253 | MACRO {ibmsj} {"IBM Syst.~J."} 254 | 255 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 256 | 257 | MACRO {ieeetc} {"IEEE Trans. Comput."} 258 | 259 | MACRO {ieeetcad} 260 | {"IEEE Trans. Comput. Aid. Des."} 261 | 262 | MACRO {ipl} {"Inf. Process. Lett."} 263 | 264 | MACRO {jacm} {"J.~ACM"} 265 | 266 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 267 | 268 | MACRO {scp} {"Sci. Comput. Program."} 269 | 270 | MACRO {sicomp} {"SIAM J. Comput."} 271 | 272 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 273 | 274 | MACRO {tods} {"ACM Trans. Database Syst."} 275 | 276 | MACRO {tog} {"ACM Trans. Graphic."} 277 | 278 | MACRO {toms} {"ACM Trans. Math. Software"} 279 | 280 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 281 | 282 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 283 | 284 | MACRO {tcs} {"Theor. Comput. Sci."} 285 | 286 | FUNCTION {bibinfo.check} 287 | { swap$ 288 | duplicate$ missing$ 289 | { 290 | pop$ pop$ 291 | "" 292 | } 293 | { duplicate$ empty$ 294 | { 295 | swap$ pop$ 296 | } 297 | { swap$ 298 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 299 | } 300 | if$ 301 | } 302 | if$ 303 | } 304 | FUNCTION {bibinfo.warn} 305 | { swap$ 306 | duplicate$ missing$ 307 | { 308 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 309 | "" 310 | } 311 | { duplicate$ empty$ 312 | { 313 | swap$ "empty " swap$ * " in " * cite$ * warning$ 314 | } 315 | { swap$ 316 | pop$ 317 | } 318 | if$ 319 | } 320 | if$ 321 | } 322 | STRINGS { bibinfo} 323 | INTEGERS { nameptr namesleft numnames } 324 | 325 | FUNCTION {format.names} 326 | { 'bibinfo := 327 | duplicate$ empty$ 'skip$ { 328 | 's := 329 | "" 't := 330 | #1 'nameptr := 331 | s num.names$ 'numnames := 332 | numnames 'namesleft := 333 | { namesleft #0 > } 334 | { s nameptr 335 | "{f{.}.~}{vv~}{ll}{, jj}" 336 | format.name$ 337 | bibinfo bibinfo.check 338 | 't := 339 | nameptr #1 > 340 | { 341 | namesleft #1 > 342 | { ", " * t * } 343 | { 344 | "," * 345 | s nameptr "{ll}" format.name$ duplicate$ "others" = 346 | { 't := } 347 | { pop$ } 348 | if$ 349 | t "others" = 350 | { 351 | " " * bbl.etal * 352 | } 353 | { " " * t * } 354 | if$ 355 | } 356 | if$ 357 | } 358 | 't 359 | if$ 360 | nameptr #1 + 'nameptr := 361 | namesleft #1 - 'namesleft := 362 | } 363 | while$ 364 | } if$ 365 | } 366 | FUNCTION {format.names.ed} 367 | { 368 | format.names 369 | } 370 | FUNCTION {format.key} 371 | { empty$ 372 | { key field.or.null } 373 | { "" } 374 | if$ 375 | } 376 | 377 | FUNCTION {format.authors} 378 | { author "author" format.names 379 | } 380 | FUNCTION {get.bbl.editor} 381 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 382 | 383 | FUNCTION {format.editors} 384 | { editor "editor" format.names duplicate$ empty$ 'skip$ 385 | { 386 | " " * 387 | get.bbl.editor 388 | capitalize 389 | "(" swap$ * ")" * 390 | * 391 | } 392 | if$ 393 | } 394 | FUNCTION {format.note} 395 | { 396 | note empty$ 397 | { "" } 398 | { note #1 #1 substring$ 399 | duplicate$ "{" = 400 | 'skip$ 401 | { output.state mid.sentence = 402 | { "l" } 403 | { "u" } 404 | if$ 405 | change.case$ 406 | } 407 | if$ 408 | note #2 global.max$ substring$ * "note" bibinfo.check 409 | } 410 | if$ 411 | } 412 | 413 | FUNCTION {format.title} 414 | { title 415 | duplicate$ empty$ 'skip$ 416 | { "t" change.case$ } 417 | if$ 418 | "title" bibinfo.check 419 | } 420 | FUNCTION {format.full.names} 421 | {'s := 422 | "" 't := 423 | #1 'nameptr := 424 | s num.names$ 'numnames := 425 | numnames 'namesleft := 426 | { namesleft #0 > } 427 | { s nameptr 428 | "{vv~}{ll}" format.name$ 429 | 't := 430 | nameptr #1 > 431 | { 432 | namesleft #1 > 433 | { ", " * t * } 434 | { 435 | s nameptr "{ll}" format.name$ duplicate$ "others" = 436 | { 't := } 437 | { pop$ } 438 | if$ 439 | t "others" = 440 | { 441 | " " * bbl.etal * 442 | } 443 | { 444 | bbl.and 445 | space.word * t * 446 | } 447 | if$ 448 | } 449 | if$ 450 | } 451 | 't 452 | if$ 453 | nameptr #1 + 'nameptr := 454 | namesleft #1 - 'namesleft := 455 | } 456 | while$ 457 | } 458 | 459 | FUNCTION {author.editor.key.full} 460 | { author empty$ 461 | { editor empty$ 462 | { key empty$ 463 | { cite$ #1 #3 substring$ } 464 | 'key 465 | if$ 466 | } 467 | { editor format.full.names } 468 | if$ 469 | } 470 | { author format.full.names } 471 | if$ 472 | } 473 | 474 | FUNCTION {author.key.full} 475 | { author empty$ 476 | { key empty$ 477 | { cite$ #1 #3 substring$ } 478 | 'key 479 | if$ 480 | } 481 | { author format.full.names } 482 | if$ 483 | } 484 | 485 | FUNCTION {editor.key.full} 486 | { editor empty$ 487 | { key empty$ 488 | { cite$ #1 #3 substring$ } 489 | 'key 490 | if$ 491 | } 492 | { editor format.full.names } 493 | if$ 494 | } 495 | 496 | FUNCTION {make.full.names} 497 | { type$ "book" = 498 | type$ "inbook" = 499 | or 500 | 'author.editor.key.full 501 | { type$ "proceedings" = 502 | 'editor.key.full 503 | 'author.key.full 504 | if$ 505 | } 506 | if$ 507 | } 508 | 509 | FUNCTION {output.bibitem} 510 | { newline$ 511 | "\bibitem[{" write$ 512 | label write$ 513 | ")" make.full.names duplicate$ short.list = 514 | { pop$ } 515 | { * } 516 | if$ 517 | "}]{" * write$ 518 | cite$ write$ 519 | "}" write$ 520 | newline$ 521 | "" 522 | before.all 'output.state := 523 | } 524 | 525 | FUNCTION {n.dashify} 526 | { 527 | 't := 528 | "" 529 | { t empty$ not } 530 | { t #1 #1 substring$ "-" = 531 | { t #1 #2 substring$ "--" = not 532 | { "--" * 533 | t #2 global.max$ substring$ 't := 534 | } 535 | { { t #1 #1 substring$ "-" = } 536 | { "-" * 537 | t #2 global.max$ substring$ 't := 538 | } 539 | while$ 540 | } 541 | if$ 542 | } 543 | { t #1 #1 substring$ * 544 | t #2 global.max$ substring$ 't := 545 | } 546 | if$ 547 | } 548 | while$ 549 | } 550 | 551 | FUNCTION {word.in} 552 | { bbl.in 553 | ":" * 554 | " " * } 555 | 556 | FUNCTION {format.date} 557 | { year "year" bibinfo.check duplicate$ empty$ 558 | { 559 | "empty year in " cite$ * "; set to ????" * warning$ 560 | pop$ "????" 561 | } 562 | 'skip$ 563 | if$ 564 | extra.label * 565 | } 566 | FUNCTION{format.year} 567 | { year "year" bibinfo.check duplicate$ empty$ 568 | { "empty year in " cite$ * 569 | "; set to ????" * 570 | warning$ 571 | pop$ "????" 572 | } 573 | { 574 | } 575 | if$ 576 | extra.label * 577 | " (" swap$ * ")" * 578 | } 579 | FUNCTION {format.btitle} 580 | { title "title" bibinfo.check 581 | duplicate$ empty$ 'skip$ 582 | { 583 | } 584 | if$ 585 | } 586 | FUNCTION {either.or.check} 587 | { empty$ 588 | 'pop$ 589 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 590 | if$ 591 | } 592 | FUNCTION {format.bvolume} 593 | { volume empty$ 594 | { "" } 595 | { bbl.volume volume tie.or.space.prefix 596 | "volume" bibinfo.check * * 597 | series "series" bibinfo.check 598 | duplicate$ empty$ 'pop$ 599 | { swap$ bbl.of space.word * swap$ 600 | emphasize * } 601 | if$ 602 | "volume and number" number either.or.check 603 | } 604 | if$ 605 | } 606 | FUNCTION {format.number.series} 607 | { volume empty$ 608 | { number empty$ 609 | { series field.or.null } 610 | { series empty$ 611 | { number "number" bibinfo.check } 612 | { output.state mid.sentence = 613 | { bbl.number } 614 | { bbl.number capitalize } 615 | if$ 616 | number tie.or.space.prefix "number" bibinfo.check * * 617 | bbl.in space.word * 618 | series "series" bibinfo.check * 619 | } 620 | if$ 621 | } 622 | if$ 623 | } 624 | { "" } 625 | if$ 626 | } 627 | 628 | FUNCTION {format.edition} 629 | { edition duplicate$ empty$ 'skip$ 630 | { 631 | output.state mid.sentence = 632 | { "l" } 633 | { "t" } 634 | if$ change.case$ 635 | "edition" bibinfo.check 636 | " " * bbl.edition * 637 | } 638 | if$ 639 | } 640 | INTEGERS { multiresult } 641 | FUNCTION {multi.page.check} 642 | { 't := 643 | #0 'multiresult := 644 | { multiresult not 645 | t empty$ not 646 | and 647 | } 648 | { t #1 #1 substring$ 649 | duplicate$ "-" = 650 | swap$ duplicate$ "," = 651 | swap$ "+" = 652 | or or 653 | { #1 'multiresult := } 654 | { t #2 global.max$ substring$ 't := } 655 | if$ 656 | } 657 | while$ 658 | multiresult 659 | } 660 | FUNCTION {format.pages} 661 | { pages duplicate$ empty$ 'skip$ 662 | { duplicate$ multi.page.check 663 | { 664 | bbl.pages swap$ 665 | n.dashify 666 | } 667 | { 668 | bbl.page swap$ 669 | } 670 | if$ 671 | tie.or.space.prefix 672 | "pages" bibinfo.check 673 | * * 674 | } 675 | if$ 676 | } 677 | FUNCTION {format.journal.pages} 678 | { pages duplicate$ empty$ 'pop$ 679 | { swap$ duplicate$ empty$ 680 | { pop$ pop$ format.pages } 681 | { 682 | " " * 683 | swap$ 684 | n.dashify 685 | "pages" bibinfo.check 686 | * 687 | } 688 | if$ 689 | } 690 | if$ 691 | } 692 | FUNCTION {format.vol.num.pages} 693 | { volume field.or.null 694 | duplicate$ empty$ 'skip$ 695 | { 696 | "volume" bibinfo.check 697 | } 698 | if$ 699 | format.year * 700 | } 701 | 702 | FUNCTION {format.chapter.pages} 703 | { chapter empty$ 704 | { "" } 705 | { type empty$ 706 | { bbl.chapter } 707 | { type "l" change.case$ 708 | "type" bibinfo.check 709 | } 710 | if$ 711 | chapter tie.or.space.prefix 712 | "chapter" bibinfo.check 713 | * * 714 | } 715 | if$ 716 | } 717 | 718 | FUNCTION {format.booktitle} 719 | { 720 | booktitle "booktitle" bibinfo.check 721 | } 722 | FUNCTION {format.in.ed.booktitle} 723 | { format.booktitle duplicate$ empty$ 'skip$ 724 | { 725 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 726 | { 727 | " " * 728 | get.bbl.editor 729 | capitalize 730 | "(" swap$ * "), " * 731 | * swap$ 732 | * } 733 | if$ 734 | word.in swap$ * 735 | } 736 | if$ 737 | } 738 | FUNCTION {format.thesis.type} 739 | { type duplicate$ empty$ 740 | 'pop$ 741 | { swap$ pop$ 742 | "t" change.case$ "type" bibinfo.check 743 | } 744 | if$ 745 | } 746 | FUNCTION {format.tr.number} 747 | { number "number" bibinfo.check 748 | type duplicate$ empty$ 749 | { pop$ bbl.techrep } 750 | 'skip$ 751 | if$ 752 | "type" bibinfo.check 753 | swap$ duplicate$ empty$ 754 | { pop$ "t" change.case$ } 755 | { tie.or.space.prefix * * } 756 | if$ 757 | } 758 | FUNCTION {format.article.crossref} 759 | { 760 | word.in 761 | " \cite{" * crossref * "}" * 762 | } 763 | FUNCTION {format.book.crossref} 764 | { volume duplicate$ empty$ 765 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 766 | pop$ word.in 767 | } 768 | { bbl.volume 769 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 770 | } 771 | if$ 772 | " \cite{" * crossref * "}" * 773 | } 774 | FUNCTION {format.incoll.inproc.crossref} 775 | { 776 | word.in 777 | " \cite{" * crossref * "}" * 778 | } 779 | FUNCTION {format.org.or.pub} 780 | { 't := 781 | "" 782 | address empty$ t empty$ and 783 | 'skip$ 784 | { 785 | t empty$ 786 | { address "address" bibinfo.check * 787 | } 788 | { t * 789 | address empty$ 790 | 'skip$ 791 | { ", " * address "address" bibinfo.check * } 792 | if$ 793 | } 794 | if$ 795 | } 796 | if$ 797 | } 798 | FUNCTION {format.publisher.address} 799 | { publisher "publisher" bibinfo.check format.org.or.pub 800 | } 801 | 802 | FUNCTION {format.organization.address} 803 | { organization "organization" bibinfo.check format.org.or.pub 804 | } 805 | 806 | FUNCTION {article} 807 | { "%Type = Article" write$ 808 | output.bibitem 809 | format.authors "author" output.check 810 | author format.key output 811 | crossref missing$ 812 | { 813 | journal 814 | "journal" bibinfo.check 815 | "journal" output.check 816 | add.blank 817 | format.vol.num.pages output 818 | } 819 | { format.article.crossref output.nonnull 820 | } 821 | if$ 822 | format.journal.pages 823 | new.sentence 824 | format.note output 825 | fin.entry 826 | } 827 | FUNCTION {book} 828 | { "%Type = Book" write$ 829 | output.bibitem 830 | author empty$ 831 | { format.editors "author and editor" output.check 832 | editor format.key output 833 | } 834 | { format.authors output.nonnull 835 | crossref missing$ 836 | { "author and editor" editor either.or.check } 837 | 'skip$ 838 | if$ 839 | } 840 | if$ 841 | format.btitle "title" output.check 842 | crossref missing$ 843 | { format.bvolume output 844 | format.number.series output 845 | format.publisher.address output 846 | } 847 | { 848 | format.book.crossref output.nonnull 849 | } 850 | if$ 851 | format.edition output 852 | format.date "year" output.check 853 | new.sentence 854 | format.note output 855 | fin.entry 856 | } 857 | FUNCTION {booklet} 858 | { "%Type = Booklet" write$ 859 | output.bibitem 860 | format.authors output 861 | author format.key output 862 | format.title "title" output.check 863 | howpublished "howpublished" bibinfo.check output 864 | address "address" bibinfo.check output 865 | format.date "year" output.check 866 | new.sentence 867 | format.note output 868 | fin.entry 869 | } 870 | 871 | FUNCTION {inbook} 872 | { "%Type = Inbook" write$ 873 | output.bibitem 874 | author empty$ 875 | { format.editors "author and editor" output.check 876 | editor format.key output 877 | } 878 | { format.authors output.nonnull 879 | crossref missing$ 880 | { "author and editor" editor either.or.check } 881 | 'skip$ 882 | if$ 883 | } 884 | if$ 885 | format.btitle "title" output.check 886 | crossref missing$ 887 | { 888 | format.bvolume output 889 | format.number.series output 890 | format.publisher.address output 891 | format.date "year" output.check 892 | } 893 | { 894 | format.book.crossref output.nonnull 895 | } 896 | if$ 897 | format.edition output 898 | format.pages "pages" output.check 899 | new.sentence 900 | format.note output 901 | fin.entry 902 | } 903 | 904 | FUNCTION {incollection} 905 | { "%Type = Incollection" write$ 906 | output.bibitem 907 | format.authors "author" output.check 908 | author format.key output 909 | crossref missing$ 910 | { format.in.ed.booktitle "booktitle" output.check 911 | format.bvolume output 912 | format.number.series output 913 | format.publisher.address output 914 | format.date "year" output.check 915 | format.edition output 916 | } 917 | { format.incoll.inproc.crossref output.nonnull 918 | } 919 | if$ 920 | format.pages "pages" output.check 921 | new.sentence 922 | format.note output 923 | fin.entry 924 | } 925 | FUNCTION {inproceedings} 926 | { "%Type = Inproceedings" write$ 927 | output.bibitem 928 | format.authors "author" output.check 929 | author format.key output 930 | crossref missing$ 931 | { 932 | journal 933 | "journal" bibinfo.check 934 | "journal" output.check 935 | format.in.ed.booktitle "booktitle" output.check 936 | format.bvolume output 937 | format.number.series output 938 | publisher empty$ 939 | { format.organization.address output } 940 | { organization "organization" bibinfo.check output 941 | format.publisher.address output 942 | format.date "year" output.check 943 | } 944 | if$ 945 | } 946 | { format.incoll.inproc.crossref output.nonnull 947 | } 948 | if$ 949 | format.pages "pages" output.check 950 | new.sentence 951 | format.note output 952 | fin.entry 953 | } 954 | FUNCTION {conference} { inproceedings } 955 | FUNCTION {manual} 956 | { "%Type = Manual" write$ 957 | output.bibitem 958 | format.authors output 959 | author format.key output 960 | format.btitle "title" output.check 961 | organization "organization" bibinfo.check output 962 | address "address" bibinfo.check output 963 | format.edition output 964 | format.date "year" output.check 965 | new.sentence 966 | format.note output 967 | fin.entry 968 | } 969 | 970 | FUNCTION {mastersthesis} 971 | { "%Type = Masterthesis" write$ 972 | output.bibitem 973 | format.authors "author" output.check 974 | author format.key output 975 | format.btitle 976 | "title" output.check 977 | bbl.mthesis format.thesis.type output.nonnull 978 | school "school" bibinfo.warn output 979 | address "address" bibinfo.check output 980 | format.date "year" output.check 981 | new.sentence 982 | format.note output 983 | fin.entry 984 | } 985 | 986 | FUNCTION {misc} 987 | { "%Type = Misc" write$ 988 | output.bibitem 989 | format.authors output 990 | author format.key output 991 | format.title output 992 | howpublished "howpublished" bibinfo.check output 993 | format.date "year" output.check 994 | new.sentence 995 | format.note output 996 | fin.entry 997 | } 998 | FUNCTION {phdthesis} 999 | { "%Type = Phdthesis" write$ 1000 | output.bibitem 1001 | format.authors "author" output.check 1002 | author format.key output 1003 | format.btitle 1004 | "title" output.check 1005 | bbl.phdthesis format.thesis.type output.nonnull 1006 | school "school" bibinfo.warn output 1007 | address "address" bibinfo.check output 1008 | format.date "year" output.check 1009 | new.sentence 1010 | format.note output 1011 | fin.entry 1012 | } 1013 | 1014 | FUNCTION {proceedings} 1015 | { "%Type = Proceedings" write$ 1016 | output.bibitem 1017 | format.editors output 1018 | editor format.key output 1019 | format.btitle "title" output.check 1020 | format.bvolume output 1021 | format.number.series output 1022 | publisher empty$ 1023 | { format.organization.address output } 1024 | { organization "organization" bibinfo.check output 1025 | format.publisher.address output 1026 | } 1027 | if$ 1028 | format.date "year" output.check 1029 | new.sentence 1030 | format.note output 1031 | fin.entry 1032 | } 1033 | 1034 | FUNCTION {techreport} 1035 | { "%Type = Techreport" write$ 1036 | output.bibitem 1037 | format.authors "author" output.check 1038 | author format.key output 1039 | format.btitle 1040 | "title" output.check 1041 | format.tr.number output.nonnull 1042 | institution "institution" bibinfo.warn output 1043 | address "address" bibinfo.check output 1044 | format.date "year" output.check 1045 | new.sentence 1046 | format.note output 1047 | fin.entry 1048 | } 1049 | 1050 | FUNCTION {unpublished} 1051 | { "%Type = Unpublished" write$ 1052 | output.bibitem 1053 | format.authors "author" output.check 1054 | author format.key output 1055 | format.title "title" output.check 1056 | format.date "year" output.check 1057 | new.sentence 1058 | format.note "note" output.check 1059 | fin.entry 1060 | } 1061 | 1062 | FUNCTION {default.type} { misc } 1063 | READ 1064 | FUNCTION {sortify} 1065 | { purify$ 1066 | "l" change.case$ 1067 | } 1068 | INTEGERS { len } 1069 | FUNCTION {chop.word} 1070 | { 's := 1071 | 'len := 1072 | s #1 len substring$ = 1073 | { s len #1 + global.max$ substring$ } 1074 | 's 1075 | if$ 1076 | } 1077 | FUNCTION {format.lab.names} 1078 | { 's := 1079 | "" 't := 1080 | s #1 "{vv~}{ll}" format.name$ 1081 | s num.names$ duplicate$ 1082 | #2 > 1083 | { pop$ 1084 | " " * bbl.etal * 1085 | } 1086 | { #2 < 1087 | 'skip$ 1088 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1089 | { 1090 | " " * bbl.etal * 1091 | } 1092 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1093 | * } 1094 | if$ 1095 | } 1096 | if$ 1097 | } 1098 | if$ 1099 | } 1100 | 1101 | FUNCTION {author.key.label} 1102 | { author empty$ 1103 | { key empty$ 1104 | { cite$ #1 #3 substring$ } 1105 | 'key 1106 | if$ 1107 | } 1108 | { author format.lab.names } 1109 | if$ 1110 | } 1111 | 1112 | FUNCTION {author.editor.key.label} 1113 | { author empty$ 1114 | { editor empty$ 1115 | { key empty$ 1116 | { cite$ #1 #3 substring$ } 1117 | 'key 1118 | if$ 1119 | } 1120 | { editor format.lab.names } 1121 | if$ 1122 | } 1123 | { author format.lab.names } 1124 | if$ 1125 | } 1126 | 1127 | FUNCTION {editor.key.label} 1128 | { editor empty$ 1129 | { key empty$ 1130 | { cite$ #1 #3 substring$ } 1131 | 'key 1132 | if$ 1133 | } 1134 | { editor format.lab.names } 1135 | if$ 1136 | } 1137 | 1138 | FUNCTION {calc.short.authors} 1139 | { type$ "book" = 1140 | type$ "inbook" = 1141 | or 1142 | 'author.editor.key.label 1143 | { type$ "proceedings" = 1144 | 'editor.key.label 1145 | 'author.key.label 1146 | if$ 1147 | } 1148 | if$ 1149 | 'short.list := 1150 | } 1151 | 1152 | FUNCTION {calc.label} 1153 | { calc.short.authors 1154 | short.list 1155 | "(" 1156 | * 1157 | year duplicate$ empty$ 1158 | { pop$ "????" } 1159 | { purify$ #-1 #4 substring$ } 1160 | if$ 1161 | * 1162 | 'label := 1163 | } 1164 | 1165 | FUNCTION {sort.format.names} 1166 | { 's := 1167 | #1 'nameptr := 1168 | "" 1169 | s num.names$ 'numnames := 1170 | numnames 'namesleft := 1171 | { namesleft #0 > } 1172 | { s nameptr 1173 | "{ll{ }}{ f{ }}{ jj{ }}" 1174 | format.name$ 't := 1175 | nameptr #1 > 1176 | { 1177 | " " * 1178 | namesleft #1 = t "others" = and 1179 | { "zzzzz" * } 1180 | { t sortify * } 1181 | if$ 1182 | } 1183 | { t sortify * } 1184 | if$ 1185 | nameptr #1 + 'nameptr := 1186 | namesleft #1 - 'namesleft := 1187 | } 1188 | while$ 1189 | } 1190 | 1191 | FUNCTION {sort.format.title} 1192 | { 't := 1193 | "A " #2 1194 | "An " #3 1195 | "The " #4 t chop.word 1196 | chop.word 1197 | chop.word 1198 | sortify 1199 | #1 global.max$ substring$ 1200 | } 1201 | FUNCTION {author.sort} 1202 | { author empty$ 1203 | { key empty$ 1204 | { "to sort, need author or key in " cite$ * warning$ 1205 | "" 1206 | } 1207 | { key sortify } 1208 | if$ 1209 | } 1210 | { author sort.format.names } 1211 | if$ 1212 | } 1213 | FUNCTION {author.editor.sort} 1214 | { author empty$ 1215 | { editor empty$ 1216 | { key empty$ 1217 | { "to sort, need author, editor, or key in " cite$ * warning$ 1218 | "" 1219 | } 1220 | { key sortify } 1221 | if$ 1222 | } 1223 | { editor sort.format.names } 1224 | if$ 1225 | } 1226 | { author sort.format.names } 1227 | if$ 1228 | } 1229 | FUNCTION {editor.sort} 1230 | { editor empty$ 1231 | { key empty$ 1232 | { "to sort, need editor or key in " cite$ * warning$ 1233 | "" 1234 | } 1235 | { key sortify } 1236 | if$ 1237 | } 1238 | { editor sort.format.names } 1239 | if$ 1240 | } 1241 | FUNCTION {presort} 1242 | { calc.label 1243 | label sortify 1244 | " " 1245 | * 1246 | type$ "book" = 1247 | type$ "inbook" = 1248 | or 1249 | 'author.editor.sort 1250 | { type$ "proceedings" = 1251 | 'editor.sort 1252 | 'author.sort 1253 | if$ 1254 | } 1255 | if$ 1256 | #1 entry.max$ substring$ 1257 | 'sort.label := 1258 | sort.label 1259 | * 1260 | " " 1261 | * 1262 | title field.or.null 1263 | sort.format.title 1264 | * 1265 | #1 entry.max$ substring$ 1266 | 'sort.key$ := 1267 | } 1268 | 1269 | ITERATE {presort} 1270 | SORT 1271 | STRINGS { last.label next.extra } 1272 | INTEGERS { last.extra.num number.label } 1273 | FUNCTION {initialize.extra.label.stuff} 1274 | { #0 int.to.chr$ 'last.label := 1275 | "" 'next.extra := 1276 | #0 'last.extra.num := 1277 | #0 'number.label := 1278 | } 1279 | FUNCTION {forward.pass} 1280 | { last.label label = 1281 | { last.extra.num #1 + 'last.extra.num := 1282 | last.extra.num int.to.chr$ 'extra.label := 1283 | } 1284 | { "a" chr.to.int$ 'last.extra.num := 1285 | "" 'extra.label := 1286 | label 'last.label := 1287 | } 1288 | if$ 1289 | number.label #1 + 'number.label := 1290 | } 1291 | FUNCTION {reverse.pass} 1292 | { next.extra "b" = 1293 | { "a" 'extra.label := } 1294 | 'skip$ 1295 | if$ 1296 | extra.label 'next.extra := 1297 | extra.label 1298 | duplicate$ empty$ 1299 | 'skip$ 1300 | { "{\natexlab{" swap$ * "}}" * } 1301 | if$ 1302 | 'extra.label := 1303 | label extra.label * 'label := 1304 | } 1305 | EXECUTE {initialize.extra.label.stuff} 1306 | ITERATE {forward.pass} 1307 | REVERSE {reverse.pass} 1308 | FUNCTION {bib.sort.order} 1309 | { sort.label 1310 | " " 1311 | * 1312 | year field.or.null sortify 1313 | * 1314 | " " 1315 | * 1316 | title field.or.null 1317 | sort.format.title 1318 | * 1319 | #1 entry.max$ substring$ 1320 | 'sort.key$ := 1321 | } 1322 | ITERATE {bib.sort.order} 1323 | SORT 1324 | FUNCTION {begin.bib} 1325 | { preamble$ empty$ 1326 | 'skip$ 1327 | { preamble$ write$ newline$ } 1328 | if$ 1329 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1330 | write$ newline$ 1331 | "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" 1332 | write$ newline$ 1333 | "\providecommand{\bibinfo}[2]{#2}" 1334 | write$ newline$ 1335 | "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" 1336 | write$ newline$ 1337 | } 1338 | EXECUTE {begin.bib} 1339 | EXECUTE {init.state.consts} 1340 | ITERATE {call.type$} 1341 | FUNCTION {end.bib} 1342 | { newline$ 1343 | "\end{thebibliography}" write$ newline$ 1344 | } 1345 | EXECUTE {end.bib} 1346 | %% End of customized bst file 1347 | %% 1348 | %% End of file `model1c-num-names.bst'. 1349 | -------------------------------------------------------------------------------- /refBst/model2-names.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `model2-names.bst', 3 | %% 4 | %% Copyright 2009 Elsevier Ltd 5 | %% 6 | %% This file is part of the 'Elsarticle Bundle'. 7 | %% --------------------------------------------- 8 | %% 9 | %% It may be distributed under the conditions of the LaTeX Project Public 10 | %% License, either version 1.2 of this license or (at your option) any 11 | %% later version. The latest version of this license is in 12 | %% http://www.latex-project.org/lppl.txt 13 | %% and version 1.2 or later is part of all distributions of LaTeX 14 | %% version 1999/12/01 or later. 15 | %% 16 | %% $Id: model2-names.bst 140 2009-10-07 12:24:29Z rishi $ 17 | %% 18 | %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-2/model2-names.bst $ 19 | %% 20 | 21 | ENTRY 22 | { address 23 | archive 24 | author 25 | booktitle 26 | chapter 27 | edition 28 | editor 29 | eprint 30 | howpublished 31 | institution 32 | journal 33 | key 34 | month 35 | note 36 | number 37 | organization 38 | pages 39 | publisher 40 | school 41 | series 42 | title 43 | type 44 | volume 45 | year 46 | } 47 | {} 48 | { label extra.label sort.label short.list } 49 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 50 | FUNCTION {init.state.consts} 51 | { #0 'before.all := 52 | #1 'mid.sentence := 53 | #2 'after.sentence := 54 | #3 'after.block := 55 | } 56 | STRINGS { s t} 57 | FUNCTION {output.comma} 58 | { ", " * write$} 59 | 60 | FUNCTION {output.nonnull} 61 | { 's := 62 | output.state mid.sentence = 63 | { ". " * write$ } 64 | { output.state after.block = 65 | { add.period$ write$ 66 | newline$ 67 | "\newblock " write$ 68 | } 69 | { output.state before.all = 70 | 'write$ 71 | { ", " * write$ } 72 | if$ 73 | } 74 | if$ 75 | mid.sentence 'output.state := 76 | } 77 | if$ 78 | s 79 | } 80 | FUNCTION {output.commanull} 81 | { 's := 82 | output.state mid.sentence = 83 | { ", " * write$ } 84 | { output.state after.block = 85 | { ", " * write$ 86 | newline$ 87 | "\newblock " write$ 88 | } 89 | { output.state before.all = 90 | 'write$ 91 | { add.period$ " " * write$ } 92 | if$ 93 | } 94 | if$ 95 | mid.sentence 'output.state := 96 | } 97 | if$ 98 | s 99 | } 100 | FUNCTION {output} 101 | { duplicate$ empty$ 102 | 'pop$ 103 | 'output.nonnull 104 | if$ 105 | } 106 | FUNCTION {output.check} 107 | { 't := 108 | duplicate$ empty$ 109 | { pop$ "empty " t * " in " * cite$ * warning$ } 110 | 'output.nonnull 111 | if$ 112 | } 113 | FUNCTION {output.book.check} 114 | { 't := 115 | duplicate$ empty$ 116 | { pop$ "empty " t * " in " * cite$ * warning$ } 117 | 'output.nonnull 118 | if$ 119 | } 120 | FUNCTION {fin.entry} 121 | { add.period$ 122 | write$ 123 | newline$ 124 | } 125 | 126 | FUNCTION {new.block} 127 | { output.state before.all = 128 | 'skip$ 129 | { after.block 'output.state := } 130 | if$ 131 | } 132 | FUNCTION {new.sentence} 133 | { output.state after.block = 134 | 'skip$ 135 | { output.state before.all = 136 | 'skip$ 137 | { after.sentence 'output.state := } 138 | if$ 139 | } 140 | if$ 141 | } 142 | FUNCTION {add.blank} 143 | { " " * before.all 'output.state := 144 | } 145 | 146 | FUNCTION {date.block} 147 | { 148 | new.block 149 | } 150 | 151 | FUNCTION {not} 152 | { { #0 } 153 | { #1 } 154 | if$ 155 | } 156 | FUNCTION {and} 157 | { 'skip$ 158 | { pop$ #0 } 159 | if$ 160 | } 161 | FUNCTION {or} 162 | { { pop$ #1 } 163 | 'skip$ 164 | if$ 165 | } 166 | FUNCTION {new.block.checkb} 167 | { empty$ 168 | swap$ empty$ 169 | and 170 | 'skip$ 171 | 'new.block 172 | if$ 173 | } 174 | FUNCTION {field.or.null} 175 | { duplicate$ empty$ 176 | { pop$ "" } 177 | 'skip$ 178 | if$ 179 | } 180 | FUNCTION {emphasize} 181 | { duplicate$ empty$ 182 | { pop$ "" } 183 | { "\textit{" swap$ * "}" * } 184 | if$ 185 | } 186 | FUNCTION {tie.or.space.prefix} 187 | { duplicate$ text.length$ #3 < 188 | { "~" } 189 | { " " } 190 | if$ 191 | swap$ 192 | } 193 | 194 | FUNCTION {capitalize} 195 | { "u" change.case$ "t" change.case$ } 196 | 197 | FUNCTION {space.word} 198 | { " " swap$ * " " * } 199 | % Here are the language-specific definitions for explicit words. 200 | % Each function has a name bbl.xxx where xxx is the English word. 201 | % The language selected here is ENGLISH 202 | FUNCTION {bbl.and} 203 | { "and"} 204 | 205 | FUNCTION {bbl.etal} 206 | { "et~al." } 207 | 208 | FUNCTION {bbl.editors} 209 | { "Eds." } 210 | 211 | FUNCTION {bbl.editor} 212 | { "Ed." } 213 | 214 | FUNCTION {bbl.edby} 215 | { "edited by" } 216 | 217 | FUNCTION {bbl.edition} 218 | { "edition" } 219 | 220 | FUNCTION {bbl.volume} 221 | { "volume" } 222 | 223 | FUNCTION {bbl.of} 224 | { "of" } 225 | 226 | FUNCTION {bbl.number} 227 | { "number" } 228 | 229 | FUNCTION {bbl.nr} 230 | { "no." } 231 | 232 | FUNCTION {bbl.in} 233 | { "in" } 234 | 235 | FUNCTION {bbl.pages} 236 | { "pp." } 237 | 238 | FUNCTION {bbl.page} 239 | { "p." } 240 | 241 | FUNCTION {bbl.chapter} 242 | { "chapter" } 243 | 244 | FUNCTION {bbl.techrep} 245 | { "Technical Report" } 246 | 247 | FUNCTION {bbl.mthesis} 248 | { "Master's thesis" } 249 | 250 | FUNCTION {bbl.phdthesis} 251 | { "Ph.D. thesis" } 252 | 253 | MACRO {jan} {"January"} 254 | 255 | MACRO {feb} {"February"} 256 | 257 | MACRO {mar} {"March"} 258 | 259 | MACRO {apr} {"April"} 260 | 261 | MACRO {may} {"May"} 262 | 263 | MACRO {jun} {"June"} 264 | 265 | MACRO {jul} {"July"} 266 | 267 | MACRO {aug} {"August"} 268 | 269 | MACRO {sep} {"September"} 270 | 271 | MACRO {oct} {"October"} 272 | 273 | MACRO {nov} {"November"} 274 | 275 | MACRO {dec} {"December"} 276 | 277 | MACRO {acmcs} {"ACM Comput. Surv."} 278 | 279 | MACRO {acta} {"Acta Inf."} 280 | 281 | MACRO {cacm} {"Commun. ACM"} 282 | 283 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 284 | 285 | MACRO {ibmsj} {"IBM Syst.~J."} 286 | 287 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 288 | 289 | MACRO {ieeetc} {"IEEE Trans. Comput."} 290 | 291 | MACRO {ieeetcad} 292 | {"IEEE Trans. Comput. Aid. Des."} 293 | 294 | MACRO {ipl} {"Inf. Process. Lett."} 295 | 296 | MACRO {jacm} {"J.~ACM"} 297 | 298 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 299 | 300 | MACRO {scp} {"Sci. Comput. Program."} 301 | 302 | MACRO {sicomp} {"SIAM J. Comput."} 303 | 304 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 305 | 306 | MACRO {tods} {"ACM Trans. Database Syst."} 307 | 308 | MACRO {tog} {"ACM Trans. Graphic."} 309 | 310 | MACRO {toms} {"ACM Trans. Math. Software"} 311 | 312 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 313 | 314 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 315 | 316 | MACRO {tcs} {"Theor. Comput. Sci."} 317 | 318 | FUNCTION {bibinfo.check} 319 | { swap$ 320 | duplicate$ missing$ 321 | { 322 | pop$ pop$ 323 | "" 324 | } 325 | { duplicate$ empty$ 326 | { 327 | swap$ pop$ 328 | } 329 | { swap$ 330 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 331 | } 332 | if$ 333 | } 334 | if$ 335 | } 336 | FUNCTION {bibinfo.warn} 337 | { swap$ 338 | duplicate$ missing$ 339 | { 340 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 341 | "" 342 | } 343 | { duplicate$ empty$ 344 | { 345 | swap$ "empty " swap$ * " in " * cite$ * warning$ 346 | } 347 | { swap$ 348 | pop$ 349 | } 350 | if$ 351 | } 352 | if$ 353 | } 354 | FUNCTION {format.eprint} 355 | { eprint duplicate$ empty$ 356 | 'skip$ 357 | { "\eprint" 358 | archive empty$ 359 | 'skip$ 360 | { "[" * archive * "]" * } 361 | if$ 362 | "{" * swap$ * "}" * 363 | } 364 | if$ 365 | } 366 | STRINGS { bibinfo} 367 | INTEGERS { nameptr namesleft numnames } 368 | 369 | FUNCTION {format.names} 370 | { 'bibinfo := 371 | duplicate$ empty$ 'skip$ { 372 | 's := 373 | "" 't := 374 | #1 'nameptr := 375 | s num.names$ 'numnames := 376 | numnames 'namesleft := 377 | { namesleft #0 > } 378 | { s nameptr 379 | "{vv~}{ll}{, jj}{, f{.}.}" 380 | format.name$ 381 | bibinfo bibinfo.check 382 | 't := 383 | nameptr #1 > 384 | { 385 | namesleft #1 > 386 | { ", " * t * } 387 | { 388 | "," * 389 | s nameptr "{ll}" format.name$ duplicate$ "others" = 390 | { 't := } 391 | { pop$ } 392 | if$ 393 | t "others" = 394 | { 395 | " " * bbl.etal * 396 | } 397 | { " " * t * } 398 | if$ 399 | } 400 | if$ 401 | } 402 | 't 403 | if$ 404 | nameptr #1 + 'nameptr := 405 | namesleft #1 - 'namesleft := 406 | } 407 | while$ 408 | } if$ 409 | } 410 | FUNCTION {format.names.ed} 411 | { 412 | format.names 413 | } 414 | FUNCTION {format.key} 415 | { empty$ 416 | { key field.or.null } 417 | { "" } 418 | if$ 419 | } 420 | 421 | FUNCTION {format.authors} 422 | { author "author" format.names 423 | } 424 | FUNCTION {get.bbl.editor} 425 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 426 | 427 | FUNCTION {format.editors} 428 | { editor "editor" format.names duplicate$ empty$ 'skip$ 429 | { 430 | " " * 431 | get.bbl.editor 432 | capitalize 433 | "(" swap$ * ")" * 434 | * 435 | } 436 | if$ 437 | } 438 | FUNCTION {format.note} 439 | { 440 | note empty$ 441 | { "" } 442 | { note #1 #1 substring$ 443 | duplicate$ "{" = 444 | 'skip$ 445 | { output.state mid.sentence = 446 | { "l" } 447 | { "u" } 448 | if$ 449 | change.case$ 450 | } 451 | if$ 452 | note #2 global.max$ substring$ * "note" bibinfo.check 453 | } 454 | if$ 455 | } 456 | 457 | FUNCTION {format.title} 458 | { title 459 | duplicate$ empty$ 'skip$ 460 | { "t" change.case$ } 461 | if$ 462 | "title" bibinfo.check 463 | } 464 | FUNCTION {format.full.names} 465 | {'s := 466 | "" 't := 467 | #1 'nameptr := 468 | s num.names$ 'numnames := 469 | numnames 'namesleft := 470 | { namesleft #0 > } 471 | { s nameptr 472 | "{vv~}{ll}" format.name$ 473 | 't := 474 | nameptr #1 > 475 | { 476 | namesleft #1 > 477 | { ", " * t * } 478 | { 479 | s nameptr "{ll}" format.name$ duplicate$ "others" = 480 | { 't := } 481 | { pop$ } 482 | if$ 483 | t "others" = 484 | { 485 | " " * bbl.etal * 486 | } 487 | { 488 | bbl.and 489 | space.word * t * 490 | } 491 | if$ 492 | } 493 | if$ 494 | } 495 | 't 496 | if$ 497 | nameptr #1 + 'nameptr := 498 | namesleft #1 - 'namesleft := 499 | } 500 | while$ 501 | } 502 | 503 | FUNCTION {author.editor.key.full} 504 | { author empty$ 505 | { editor empty$ 506 | { key empty$ 507 | { cite$ #1 #3 substring$ } 508 | 'key 509 | if$ 510 | } 511 | { editor format.full.names } 512 | if$ 513 | } 514 | { author format.full.names } 515 | if$ 516 | } 517 | 518 | FUNCTION {author.key.full} 519 | { author empty$ 520 | { key empty$ 521 | { cite$ #1 #3 substring$ } 522 | 'key 523 | if$ 524 | } 525 | { author format.full.names } 526 | if$ 527 | } 528 | 529 | FUNCTION {editor.key.full} 530 | { editor empty$ 531 | { key empty$ 532 | { cite$ #1 #3 substring$ } 533 | 'key 534 | if$ 535 | } 536 | { editor format.full.names } 537 | if$ 538 | } 539 | 540 | FUNCTION {make.full.names} 541 | { type$ "book" = 542 | type$ "inbook" = 543 | or 544 | 'author.editor.key.full 545 | { type$ "proceedings" = 546 | 'editor.key.full 547 | 'author.key.full 548 | if$ 549 | } 550 | if$ 551 | } 552 | 553 | FUNCTION {output.bibitem} 554 | { newline$ 555 | "\bibitem[{" write$ 556 | label write$ 557 | ")" make.full.names duplicate$ short.list = 558 | { pop$ } 559 | { * } 560 | if$ 561 | "}]{" * write$ 562 | cite$ write$ 563 | "}" write$ 564 | newline$ 565 | "" 566 | before.all 'output.state := 567 | } 568 | 569 | FUNCTION {n.dashify} 570 | { 571 | 't := 572 | "" 573 | { t empty$ not } 574 | { t #1 #1 substring$ "-" = 575 | { t #1 #2 substring$ "--" = not 576 | { "--" * 577 | t #2 global.max$ substring$ 't := 578 | } 579 | { { t #1 #1 substring$ "-" = } 580 | { "-" * 581 | t #2 global.max$ substring$ 't := 582 | } 583 | while$ 584 | } 585 | if$ 586 | } 587 | { t #1 #1 substring$ * 588 | t #2 global.max$ substring$ 't := 589 | } 590 | if$ 591 | } 592 | while$ 593 | } 594 | 595 | FUNCTION {word.in} 596 | { bbl.in %capitalize 597 | ":" * 598 | " " * } 599 | 600 | FUNCTION {format.date} 601 | { year "year" bibinfo.check duplicate$ empty$ 602 | { 603 | } 604 | 'skip$ 605 | if$ 606 | extra.label * 607 | before.all 'output.state := 608 | ", " swap$ * 609 | } 610 | FUNCTION {format.btitle} 611 | { title "title" bibinfo.check 612 | duplicate$ empty$ 'skip$ 613 | { 614 | } 615 | if$ 616 | } 617 | FUNCTION {either.or.check} 618 | { empty$ 619 | 'pop$ 620 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 621 | if$ 622 | } 623 | FUNCTION {format.bvolume} 624 | { volume empty$ 625 | { "" } 626 | { bbl.volume volume tie.or.space.prefix 627 | "volume" bibinfo.check * * 628 | series "series" bibinfo.check 629 | duplicate$ empty$ 'pop$ 630 | { swap$ bbl.of space.word * swap$ 631 | emphasize * } 632 | if$ 633 | "volume and number" number either.or.check 634 | } 635 | if$ 636 | } 637 | FUNCTION {format.number.series} 638 | { volume empty$ 639 | { number empty$ 640 | { series field.or.null } 641 | { series empty$ 642 | { number "number" bibinfo.check } 643 | { output.state mid.sentence = 644 | { bbl.number } 645 | { bbl.number capitalize } 646 | if$ 647 | number tie.or.space.prefix "number" bibinfo.check * * 648 | bbl.in space.word * 649 | series "series" bibinfo.check * 650 | } 651 | if$ 652 | } 653 | if$ 654 | } 655 | { "" } 656 | if$ 657 | } 658 | 659 | FUNCTION {format.edition} 660 | { edition duplicate$ empty$ 'skip$ 661 | { 662 | output.state mid.sentence = 663 | { "l" } 664 | { "t" } 665 | if$ change.case$ 666 | "edition" bibinfo.check 667 | " " * bbl.edition * 668 | } 669 | if$ 670 | } 671 | INTEGERS { multiresult } 672 | FUNCTION {multi.page.check} 673 | { 't := 674 | #0 'multiresult := 675 | { multiresult not 676 | t empty$ not 677 | and 678 | } 679 | { t #1 #1 substring$ 680 | duplicate$ "-" = 681 | swap$ duplicate$ "," = 682 | swap$ "+" = 683 | or or 684 | { #1 'multiresult := } 685 | { t #2 global.max$ substring$ 't := } 686 | if$ 687 | } 688 | while$ 689 | multiresult 690 | } 691 | %FUNCTION {format.pages} 692 | %{ pages duplicate$ empty$ 'skip$ 693 | % { duplicate$ multi.page.check 694 | % { 695 | % n.dashify 696 | % } 697 | % { 698 | % } 699 | % if$ 700 | % "pages" bibinfo.check 701 | % } 702 | % if$ 703 | %} 704 | 705 | FUNCTION {format.pages} 706 | { pages duplicate$ empty$ 'skip$ 707 | { duplicate$ multi.page.check 708 | { 709 | bbl.pages swap$ 710 | n.dashify 711 | } 712 | { 713 | bbl.page swap$ 714 | } 715 | if$ 716 | tie.or.space.prefix 717 | "pages" bibinfo.check 718 | * * 719 | } 720 | if$ 721 | } 722 | 723 | FUNCTION {format.journal.pages} 724 | { pages duplicate$ empty$ 'pop$ 725 | { swap$ duplicate$ empty$ 726 | { pop$ pop$ format.pages } 727 | { 728 | ", " * 729 | swap$ 730 | n.dashify 731 | "pages" bibinfo.check 732 | * 733 | } 734 | if$ 735 | } 736 | if$ 737 | } 738 | FUNCTION {format.vol.num.pages} 739 | { volume field.or.null 740 | duplicate$ empty$ 'skip$ 741 | { 742 | "volume" bibinfo.check 743 | } 744 | if$ 745 | } 746 | 747 | FUNCTION {format.chapter.pages} 748 | { chapter empty$ 749 | { "" } 750 | { type empty$ 751 | { bbl.chapter } 752 | { type "l" change.case$ 753 | "type" bibinfo.check 754 | } 755 | if$ 756 | chapter tie.or.space.prefix 757 | "chapter" bibinfo.check 758 | * * 759 | } 760 | if$ 761 | } 762 | 763 | FUNCTION {format.booktitle} 764 | { 765 | booktitle "booktitle" bibinfo.check 766 | } 767 | FUNCTION {format.in.ed.booktitle} 768 | { format.booktitle duplicate$ empty$ 'skip$ 769 | { 770 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 771 | { 772 | " " * 773 | get.bbl.editor 774 | capitalize 775 | "(" swap$ * "), " * 776 | * swap$ 777 | * } 778 | if$ 779 | word.in swap$ * 780 | } 781 | if$ 782 | } 783 | FUNCTION {format.thesis.type} 784 | { type duplicate$ empty$ 785 | 'pop$ 786 | { swap$ pop$ 787 | "t" change.case$ "type" bibinfo.check 788 | } 789 | if$ 790 | } 791 | FUNCTION {format.tr.number} 792 | { number "number" bibinfo.check 793 | type duplicate$ empty$ 794 | { pop$ bbl.techrep } 795 | 'skip$ 796 | if$ 797 | "type" bibinfo.check 798 | swap$ duplicate$ empty$ 799 | { pop$ "t" change.case$ } 800 | { tie.or.space.prefix * * } 801 | if$ 802 | } 803 | FUNCTION {format.article.crossref} 804 | { 805 | word.in 806 | " \cite{" * crossref * "}" * 807 | } 808 | FUNCTION {format.book.crossref} 809 | { volume duplicate$ empty$ 810 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 811 | pop$ word.in 812 | } 813 | { bbl.volume 814 | capitalize 815 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 816 | } 817 | if$ 818 | " \cite{" * crossref * "}" * 819 | } 820 | FUNCTION {format.incoll.inproc.crossref} 821 | { 822 | word.in 823 | " \cite{" * crossref * "}" * 824 | } 825 | FUNCTION {format.org.or.pub} 826 | { 't := 827 | "" 828 | address empty$ t empty$ and 829 | 'skip$ 830 | { 831 | t empty$ 832 | { address "address" bibinfo.check * 833 | } 834 | { t * 835 | address empty$ 836 | 'skip$ 837 | { ", " * address "address" bibinfo.check * } 838 | if$ 839 | } 840 | if$ 841 | } 842 | if$ 843 | } 844 | FUNCTION {format.publisher.address} 845 | { publisher "publisher" bibinfo.check format.org.or.pub 846 | } 847 | 848 | FUNCTION {format.organization.address} 849 | { organization "organization" bibinfo.check format.org.or.pub 850 | } 851 | 852 | FUNCTION {article} 853 | { "%Type = Article" write$ 854 | output.bibitem 855 | format.authors "author" output.check 856 | author format.key output 857 | format.date "year" output.check 858 | date.block 859 | format.title "title" output.check 860 | new.block 861 | crossref missing$ 862 | { 863 | journal 864 | "journal" bibinfo.check 865 | "journal" output.check 866 | add.blank 867 | format.vol.num.pages output 868 | } 869 | { format.article.crossref output.nonnull 870 | } 871 | if$ 872 | format.journal.pages 873 | new.block 874 | format.note output 875 | format.eprint output 876 | fin.entry 877 | } 878 | FUNCTION {book} 879 | { "%Type = Book" write$ 880 | output.bibitem 881 | author empty$ 882 | { format.editors "author and editor" output.check 883 | editor format.key output 884 | } 885 | { format.authors output.nonnull 886 | crossref missing$ 887 | { "author and editor" editor either.or.check } 888 | 'skip$ 889 | if$ 890 | } 891 | if$ 892 | format.date "year" output.check 893 | date.block 894 | format.btitle "title" output.check 895 | crossref missing$ 896 | { format.bvolume output 897 | new.block 898 | format.number.series output 899 | new.sentence 900 | format.publisher.address output 901 | } 902 | { 903 | new.block 904 | format.book.crossref output.nonnull 905 | } 906 | if$ 907 | format.edition output 908 | new.block 909 | format.note output 910 | format.eprint output 911 | fin.entry 912 | } 913 | FUNCTION {booklet} 914 | { "%Type = Booklet" write$ 915 | output.bibitem 916 | format.authors output 917 | author format.key output 918 | format.date "year" output.check 919 | date.block 920 | format.title "title" output.check 921 | new.block 922 | howpublished "howpublished" bibinfo.check output 923 | address "address" bibinfo.check output 924 | new.block 925 | format.note output 926 | format.eprint output 927 | fin.entry 928 | } 929 | 930 | FUNCTION {inbook} 931 | { "%Type = Inbook" write$ 932 | output.bibitem 933 | author empty$ 934 | { format.editors "author and editor" output.check 935 | editor format.key output 936 | } 937 | { format.authors output.nonnull 938 | crossref missing$ 939 | { "author and editor" editor either.or.check } 940 | 'skip$ 941 | if$ 942 | } 943 | if$ 944 | format.date "year" output.check 945 | date.block 946 | format.btitle "title" output.check 947 | crossref missing$ 948 | { 949 | format.publisher.address output 950 | format.bvolume output 951 | format.chapter.pages "chapter and pages" output.check 952 | new.block 953 | format.number.series output 954 | new.sentence 955 | } 956 | { 957 | format.chapter.pages "chapter and pages" output.check 958 | new.block 959 | format.book.crossref output.nonnull 960 | } 961 | if$ 962 | format.edition output 963 | format.pages "pages" output.check 964 | new.block 965 | format.note output 966 | format.eprint output 967 | fin.entry 968 | } 969 | 970 | FUNCTION {incollection} 971 | { "%Type = Incollection" write$ 972 | output.bibitem 973 | format.authors "author" output.check 974 | author format.key output 975 | format.date "year" output.check 976 | date.block 977 | format.title "title" output.book.check 978 | new.sentence 979 | crossref missing$ 980 | { format.in.ed.booktitle "booktitle" output.book.check 981 | format.publisher.address output 982 | format.bvolume output 983 | format.number.series output 984 | format.chapter.pages output 985 | new.sentence 986 | format.edition output 987 | } 988 | { format.incoll.inproc.crossref output.nonnull 989 | format.chapter.pages output 990 | } 991 | if$ 992 | format.pages "pages" output.check 993 | new.block 994 | format.note output 995 | format.eprint output 996 | fin.entry 997 | } 998 | FUNCTION {inproceedings} 999 | { "%Type = Inproceedings" write$ 1000 | output.bibitem 1001 | format.authors "author" output.check 1002 | author format.key output 1003 | format.date "year" output.check 1004 | date.block 1005 | format.title "title" output.book.check 1006 | new.sentence 1007 | crossref missing$ 1008 | { format.in.ed.booktitle "booktitle" output.check 1009 | new.sentence 1010 | publisher empty$ 1011 | { format.organization.address output } 1012 | { organization "organization" bibinfo.check output 1013 | format.publisher.address output 1014 | } 1015 | if$ 1016 | % format.bvolume output 1017 | % format.number.series output 1018 | % format.pages output 1019 | } 1020 | { format.incoll.inproc.crossref output.nonnull 1021 | format.pages output 1022 | } 1023 | if$ 1024 | format.pages "pages" output.check 1025 | new.block 1026 | format.note output 1027 | format.eprint output 1028 | fin.entry 1029 | } 1030 | FUNCTION {conference} { inproceedings } 1031 | FUNCTION {manual} 1032 | { "%Type = Manual" write$ 1033 | output.bibitem 1034 | format.authors output 1035 | author format.key output 1036 | format.date "year" output.check 1037 | date.block 1038 | format.btitle "title" output.check 1039 | organization address new.block.checkb 1040 | organization "organization" bibinfo.check output 1041 | address "address" bibinfo.check output 1042 | format.edition output 1043 | new.block 1044 | format.note output 1045 | format.eprint output 1046 | fin.entry 1047 | } 1048 | 1049 | FUNCTION {mastersthesis} 1050 | { "%Type = Masterthesis" write$ 1051 | output.bibitem 1052 | format.authors "author" output.check 1053 | author format.key output 1054 | format.date "year" output.check 1055 | date.block 1056 | format.btitle 1057 | "title" output.check 1058 | new.block 1059 | bbl.mthesis format.thesis.type output.nonnull 1060 | school "school" bibinfo.warn output 1061 | address "address" bibinfo.check output 1062 | new.block 1063 | format.note output 1064 | format.eprint output 1065 | fin.entry 1066 | } 1067 | 1068 | FUNCTION {misc} 1069 | { "%Type = Misc" write$ 1070 | output.bibitem 1071 | format.authors output 1072 | author format.key output 1073 | format.date "year" output.check 1074 | date.block 1075 | format.title output 1076 | new.block 1077 | howpublished "howpublished" bibinfo.check output 1078 | new.block 1079 | format.note output 1080 | format.eprint output 1081 | fin.entry 1082 | } 1083 | FUNCTION {phdthesis} 1084 | { "%Type = Phdthesis" write$ 1085 | output.bibitem 1086 | format.authors "author" output.check 1087 | author format.key output 1088 | format.date "year" output.check 1089 | date.block 1090 | format.btitle 1091 | "title" output.check 1092 | new.block 1093 | bbl.phdthesis format.thesis.type output.nonnull 1094 | school "school" bibinfo.warn output 1095 | address "address" bibinfo.check output 1096 | new.block 1097 | format.note output 1098 | format.eprint output 1099 | fin.entry 1100 | } 1101 | 1102 | FUNCTION {proceedings} 1103 | { "%Type = Proceedings" write$ 1104 | output.bibitem 1105 | format.editors output 1106 | editor format.key output 1107 | format.date "year" output.check 1108 | date.block 1109 | format.btitle "title" output.check 1110 | format.bvolume output 1111 | format.number.series output 1112 | new.sentence 1113 | publisher empty$ 1114 | { format.organization.address output } 1115 | { organization "organization" bibinfo.check output 1116 | format.publisher.address output 1117 | } 1118 | if$ 1119 | new.block 1120 | format.note output 1121 | format.eprint output 1122 | fin.entry 1123 | } 1124 | 1125 | FUNCTION {techreport} 1126 | { "%Type = Techreport" write$ 1127 | output.bibitem 1128 | format.authors "author" output.check 1129 | author format.key output 1130 | format.date "year" output.check 1131 | date.block 1132 | format.btitle 1133 | "title" output.check 1134 | new.block 1135 | format.tr.number output.nonnull 1136 | institution "institution" bibinfo.warn output 1137 | address "address" bibinfo.check output 1138 | new.block 1139 | format.note output 1140 | format.eprint output 1141 | fin.entry 1142 | } 1143 | 1144 | FUNCTION {unpublished} 1145 | { "%Type = Unpublished" write$ 1146 | output.bibitem 1147 | format.authors "author" output.check 1148 | author format.key output 1149 | format.date "year" output.check 1150 | date.block 1151 | format.title "title" output.check 1152 | new.block 1153 | format.note "note" output.check 1154 | format.eprint output 1155 | fin.entry 1156 | } 1157 | 1158 | FUNCTION {default.type} { misc } 1159 | READ 1160 | FUNCTION {sortify} 1161 | { purify$ 1162 | "l" change.case$ 1163 | } 1164 | INTEGERS { len } 1165 | FUNCTION {chop.word} 1166 | { 's := 1167 | 'len := 1168 | s #1 len substring$ = 1169 | { s len #1 + global.max$ substring$ } 1170 | 's 1171 | if$ 1172 | } 1173 | FUNCTION {format.lab.names} 1174 | { 's := 1175 | "" 't := 1176 | s #1 "{vv~}{ll}" format.name$ 1177 | s num.names$ duplicate$ 1178 | #2 > 1179 | { pop$ 1180 | " " * bbl.etal * 1181 | } 1182 | { #2 < 1183 | 'skip$ 1184 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1185 | { 1186 | " " * bbl.etal * 1187 | } 1188 | { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ 1189 | * } 1190 | if$ 1191 | } 1192 | if$ 1193 | } 1194 | if$ 1195 | } 1196 | 1197 | FUNCTION {author.key.label} 1198 | { author empty$ 1199 | { key empty$ 1200 | { cite$ #1 #3 substring$ } 1201 | 'key 1202 | if$ 1203 | } 1204 | { author format.lab.names } 1205 | if$ 1206 | } 1207 | 1208 | FUNCTION {author.editor.key.label} 1209 | { author empty$ 1210 | { editor empty$ 1211 | { key empty$ 1212 | { cite$ #1 #3 substring$ } 1213 | 'key 1214 | if$ 1215 | } 1216 | { editor format.lab.names } 1217 | if$ 1218 | } 1219 | { author format.lab.names } 1220 | if$ 1221 | } 1222 | 1223 | FUNCTION {editor.key.label} 1224 | { editor empty$ 1225 | { key empty$ 1226 | { cite$ #1 #3 substring$ } 1227 | 'key 1228 | if$ 1229 | } 1230 | { editor format.lab.names } 1231 | if$ 1232 | } 1233 | 1234 | FUNCTION {calc.short.authors} 1235 | { type$ "book" = 1236 | type$ "inbook" = 1237 | or 1238 | 'author.editor.key.label 1239 | { type$ "proceedings" = 1240 | 'editor.key.label 1241 | 'author.key.label 1242 | if$ 1243 | } 1244 | if$ 1245 | 'short.list := 1246 | } 1247 | 1248 | FUNCTION {calc.label} 1249 | { calc.short.authors 1250 | short.list 1251 | "(" 1252 | * 1253 | year duplicate$ empty$ 1254 | short.list key field.or.null = or 1255 | { pop$ "" } 1256 | 'skip$ 1257 | if$ 1258 | * 1259 | 'label := 1260 | } 1261 | 1262 | FUNCTION {sort.format.names} 1263 | { 's := 1264 | #1 'nameptr := 1265 | "" 1266 | s num.names$ 'numnames := 1267 | numnames 'namesleft := 1268 | { namesleft #0 > } 1269 | { s nameptr 1270 | "{ll{ }}{ f{ }}{ jj{ }}" 1271 | format.name$ 't := 1272 | nameptr #1 > 1273 | { 1274 | " " * 1275 | namesleft #1 = t "others" = and 1276 | { "zzzzz" * } 1277 | { t sortify * } 1278 | if$ 1279 | } 1280 | { t sortify * } 1281 | if$ 1282 | nameptr #1 + 'nameptr := 1283 | namesleft #1 - 'namesleft := 1284 | } 1285 | while$ 1286 | } 1287 | 1288 | FUNCTION {sort.format.title} 1289 | { 't := 1290 | "A " #2 1291 | "An " #3 1292 | "The " #4 t chop.word 1293 | chop.word 1294 | chop.word 1295 | sortify 1296 | #1 global.max$ substring$ 1297 | } 1298 | FUNCTION {author.sort} 1299 | { author empty$ 1300 | { key empty$ 1301 | { "to sort, need author or key in " cite$ * warning$ 1302 | "" 1303 | } 1304 | { key sortify } 1305 | if$ 1306 | } 1307 | { author sort.format.names } 1308 | if$ 1309 | } 1310 | FUNCTION {author.editor.sort} 1311 | { author empty$ 1312 | { editor empty$ 1313 | { key empty$ 1314 | { "to sort, need author, editor, or key in " cite$ * warning$ 1315 | "" 1316 | } 1317 | { key sortify } 1318 | if$ 1319 | } 1320 | { editor sort.format.names } 1321 | if$ 1322 | } 1323 | { author sort.format.names } 1324 | if$ 1325 | } 1326 | FUNCTION {editor.sort} 1327 | { editor empty$ 1328 | { key empty$ 1329 | { "to sort, need editor or key in " cite$ * warning$ 1330 | "" 1331 | } 1332 | { key sortify } 1333 | if$ 1334 | } 1335 | { editor sort.format.names } 1336 | if$ 1337 | } 1338 | FUNCTION {presort} 1339 | { calc.label 1340 | label sortify 1341 | " " 1342 | * 1343 | type$ "book" = 1344 | type$ "inbook" = 1345 | or 1346 | 'author.editor.sort 1347 | { type$ "proceedings" = 1348 | 'editor.sort 1349 | 'author.sort 1350 | if$ 1351 | } 1352 | if$ 1353 | #1 entry.max$ substring$ 1354 | 'sort.label := 1355 | sort.label 1356 | * 1357 | " " 1358 | * 1359 | title field.or.null 1360 | sort.format.title 1361 | * 1362 | #1 entry.max$ substring$ 1363 | 'sort.key$ := 1364 | } 1365 | 1366 | ITERATE {presort} 1367 | SORT 1368 | STRINGS { last.label next.extra } 1369 | INTEGERS { last.extra.num number.label } 1370 | FUNCTION {initialize.extra.label.stuff} 1371 | { #0 int.to.chr$ 'last.label := 1372 | "" 'next.extra := 1373 | #0 'last.extra.num := 1374 | #0 'number.label := 1375 | } 1376 | FUNCTION {forward.pass} 1377 | { last.label label = 1378 | { last.extra.num #1 + 'last.extra.num := 1379 | last.extra.num int.to.chr$ 'extra.label := 1380 | } 1381 | { "a" chr.to.int$ 'last.extra.num := 1382 | "" 'extra.label := 1383 | label 'last.label := 1384 | } 1385 | if$ 1386 | number.label #1 + 'number.label := 1387 | } 1388 | FUNCTION {reverse.pass} 1389 | { next.extra "b" = 1390 | { "a" 'extra.label := } 1391 | 'skip$ 1392 | if$ 1393 | extra.label 'next.extra := 1394 | extra.label 1395 | duplicate$ empty$ 1396 | 'skip$ 1397 | % { "{\natexlab{" swap$ * "}}" * } 1398 | { "" swap$ * "" * } 1399 | if$ 1400 | 'extra.label := 1401 | label extra.label * 'label := 1402 | } 1403 | EXECUTE {initialize.extra.label.stuff} 1404 | ITERATE {forward.pass} 1405 | REVERSE {reverse.pass} 1406 | FUNCTION {bib.sort.order} 1407 | { sort.label 1408 | " " 1409 | * 1410 | year field.or.null sortify 1411 | * 1412 | " " 1413 | * 1414 | title field.or.null 1415 | sort.format.title 1416 | * 1417 | #1 entry.max$ substring$ 1418 | 'sort.key$ := 1419 | } 1420 | ITERATE {bib.sort.order} 1421 | SORT 1422 | FUNCTION {begin.bib} 1423 | { preamble$ empty$ 1424 | 'skip$ 1425 | { preamble$ write$ newline$ } 1426 | if$ 1427 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1428 | write$ newline$ 1429 | "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" 1430 | write$ newline$ 1431 | "\expandafter\ifx\csname url\endcsname\relax" 1432 | write$ newline$ 1433 | " \def\url#1{\texttt{#1}}\fi" 1434 | write$ newline$ 1435 | "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" 1436 | write$ newline$ 1437 | "\providecommand{\eprint}[2][]{\url{#2}}" 1438 | write$ newline$ 1439 | "\providecommand{\bibinfo}[2]{#2}" 1440 | write$ newline$ 1441 | "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" 1442 | write$ newline$ 1443 | } 1444 | EXECUTE {begin.bib} 1445 | EXECUTE {init.state.consts} 1446 | ITERATE {call.type$} 1447 | FUNCTION {end.bib} 1448 | { newline$ 1449 | "\end{thebibliography}" write$ newline$ 1450 | } 1451 | EXECUTE {end.bib} 1452 | %% End of customized bst file 1453 | %% 1454 | %% End of file `model2-names.bst'. 1455 | -------------------------------------------------------------------------------- /references.bib: -------------------------------------------------------------------------------- 1 | @article{li2014object, 2 | title={Object bank: An object-level image representation for high-level visual recognition}, 3 | author={Li, Li-Jia and Su, Hao and Lim, Yongwhan and Fei-Fei, Li}, 4 | journal={International journal of computer vision}, 5 | volume={107}, 6 | number={1}, 7 | pages={20--39}, 8 | year={2014}, 9 | publisher={Springer}, 10 | address={Germany}, 11 | } 12 | 13 | 14 | @article{bengio2013representation, 15 | title={Representation learning: A review and new perspectives}, 16 | author={Bengio, Yoshua and Courville, Aaron and Vincent, Pierre}, 17 | journal={Pattern Analysis and Machine Intelligence, IEEE Transactions on}, 18 | volume={35}, 19 | number={8}, 20 | pages={1798--1828}, 21 | year={2013}, 22 | publisher={IEEE} 23 | } 24 | 25 | 26 | @article{he2018efficient, 27 | title = {Efficient numerical simulation of simulated moving bed chromatography with a single-column solver}, 28 | author = {Qiao-Le He and Samuel Leweke and Eric von Lieres}, 29 | journal = {Computers \& Chemical Engineering}, 30 | volume = {111}, 31 | pages = {183--198}, 32 | year = {2018}, 33 | publisher = {Elsevier} 34 | } 35 | 36 | 37 | @misc{he2019bayesian, 38 | title={Bayesian inference based process design and uncertainty analysis of simulated moving bed chromatographic systems}, 39 | author={Qiao-Le He and Liming Zhao}, 40 | year={2019}, 41 | eprint={1911.12133}, 42 | archivePrefix={arXiv}, 43 | primaryClass={cs.CE} 44 | } 45 | 46 | 47 | @book{scopes2013protein, 48 | title={Protein purification: principles and practice}, 49 | author={Scopes, Robert K}, 50 | year={2013}, 51 | publisher={Springer Science \& Business Media} 52 | } 53 | 54 | -------------------------------------------------------------------------------- /中文摘要.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /科学属性说明.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /英文摘要.md: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------