]> www.fi.muni.cz Git - pan12-paper.git/blobdiff - pan12-notebook-template/splncs03.bst
Merge branch 'master' of ssh://calypso.fi.muni.cz/home/kas/git/pan12-paper
[pan12-paper.git] / pan12-notebook-template / splncs03.bst
diff --git a/pan12-notebook-template/splncs03.bst b/pan12-notebook-template/splncs03.bst
new file mode 100644 (file)
index 0000000..3279169
--- /dev/null
@@ -0,0 +1,1519 @@
+%% BibTeX bibliography style `splncs03'\r
+%%\r
+%% BibTeX bibliography style for use with numbered references in\r
+%% Springer Verlag's "Lecture Notes in Computer Science" series.\r
+%% (See Springer's documentation for llncs.cls for\r
+%% more details of the suggested reference format.)  Note that this\r
+%% file will not work for author-year style citations.\r
+%%\r
+%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite\r
+%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text.\r
+%%\r
+%% This file comes to you courtesy of Maurizio "Titto" Patrignani of\r
+%% Dipartimento di Informatica e Automazione Universita' Roma Tre\r
+%%\r
+%% ================================================================================================\r
+%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009\r
+%% Edited by hand by titto based on `titto-lncs-01.bst' (see below)\r
+%%\r
+%% CHANGES (with respect to titto-lncs-01.bst):\r
+%% - Removed the call to \urlprefix (thus no "URL" string is added to the output)\r
+%% ================================================================================================\r
+%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008\r
+%% Edited by hand by titto based on `titto.bst' (see below)\r
+%%\r
+%% CHANGES (with respect to titto.bst):\r
+%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)"\r
+%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.")\r
+%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings\r
+%% - Commented all new.block commands before urls and notes (to separate them with a comma)\r
+%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label)\r
+%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle)\r
+%% - Removed a \newblock to avoid long spaces between title and "In: ..."\r
+%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label\r
+%% ================================================================================================\r
+%% This was file `titto.bst',\r
+%% generated with the docstrip utility.\r
+%%\r
+%% The original source files were:\r
+%%\r
+%% merlin.mbs  (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,')\r
+%% ----------------------------------------\r
+%% *** Tentative .bst file for Springer LNCS ***\r
+%%\r
+%% Copyright 1994-2007 Patrick W Daly\r
+ % ===============================================================\r
+ % IMPORTANT NOTICE:\r
+ % This bibliographic style (bst) file has been generated from one or\r
+ % more master bibliographic style (mbs) files, listed above.\r
+ %\r
+ % This generated file can be redistributed and/or modified under the terms\r
+ % of the LaTeX Project Public License Distributed from CTAN\r
+ % archives in directory macros/latex/base/lppl.txt; either\r
+ % version 1 of the License, or any later version.\r
+ % ===============================================================\r
+ % Name and version information of the main mbs file:\r
+ % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)]\r
+ %   For use with BibTeX version 0.99a or later\r
+ %-------------------------------------------------------------------\r
+ % This bibliography style file is intended for texts in ENGLISH\r
+ % This is a numerical citation style, and as such is standard LaTeX.\r
+ % It requires no extra package to interface to the main text.\r
+ % The form of the \bibitem entries is\r
+ %   \bibitem{key}...\r
+ % Usage of \cite is as follows:\r
+ %   \cite{key} ==>>          [#]\r
+ %   \cite[chap. 2]{key} ==>> [#, chap. 2]\r
+ % where # is a number determined by the ordering in the reference list.\r
+ % The order in the reference list is alphabetical by authors.\r
+ %---------------------------------------------------------------------\r
+\r
+ENTRY\r
+  { address\r
+    author\r
+    booktitle\r
+    chapter\r
+    edition\r
+    editor\r
+    eid\r
+    howpublished\r
+    institution\r
+    journal\r
+    key\r
+    month\r
+    note\r
+    number\r
+    organization\r
+    pages\r
+    publisher\r
+    school\r
+    series\r
+    title\r
+    type\r
+    url\r
+    volume\r
+    year\r
+  }\r
+  {}\r
+  { label }\r
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }\r
+FUNCTION {init.state.consts}\r
+{ #0 'before.all :=\r
+  #1 'mid.sentence :=\r
+  #2 'after.sentence :=\r
+  #3 'after.block :=\r
+}\r
+STRINGS { s t}\r
+FUNCTION {output.nonnull}\r
+{ 's :=\r
+  output.state mid.sentence =\r
+    { ", " * write$ }\r
+    { output.state after.block =\r
+        { add.period$ write$\r
+%          newline$\r
+%          "\newblock " write$  % removed for titto-lncs-01\r
+          " " write$            % to avoid long spaces between title and "In: ..."\r
+        }\r
+        { output.state before.all =\r
+            'write$\r
+            { add.period$ " " * write$ }\r
+          if$\r
+        }\r
+      if$\r
+      mid.sentence 'output.state :=\r
+    }\r
+  if$\r
+  s\r
+}\r
+FUNCTION {output}\r
+{ duplicate$ empty$\r
+    'pop$\r
+    'output.nonnull\r
+  if$\r
+}\r
+FUNCTION {output.check}\r
+{ 't :=\r
+  duplicate$ empty$\r
+    { pop$ "empty " t * " in " * cite$ * warning$ }\r
+    'output.nonnull\r
+  if$\r
+}\r
+FUNCTION {fin.entry}\r
+{ duplicate$ empty$\r
+    'pop$\r
+    'write$\r
+  if$\r
+  newline$\r
+}\r
+\r
+FUNCTION {new.block}\r
+{ output.state before.all =\r
+    'skip$\r
+    { after.block 'output.state := }\r
+  if$\r
+}\r
+FUNCTION {new.sentence}\r
+{ output.state after.block =\r
+    'skip$\r
+    { output.state before.all =\r
+        'skip$\r
+        { after.sentence 'output.state := }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {add.blank}\r
+{  " " * before.all 'output.state :=\r
+}\r
+\r
+\r
+FUNCTION {add.colon}\r
+{ duplicate$ empty$\r
+    'skip$\r
+    { ":" * add.blank }\r
+  if$\r
+}\r
+\r
+FUNCTION {date.block}\r
+{\r
+  new.block\r
+}\r
+\r
+FUNCTION {not}\r
+{   { #0 }\r
+    { #1 }\r
+  if$\r
+}\r
+FUNCTION {and}\r
+{   'skip$\r
+    { pop$ #0 }\r
+  if$\r
+}\r
+FUNCTION {or}\r
+{   { pop$ #1 }\r
+    'skip$\r
+  if$\r
+}\r
+STRINGS {z}\r
+FUNCTION {remove.dots}\r
+{ 'z :=\r
+  ""\r
+  { z empty$ not }\r
+  { z #1 #1 substring$\r
+    z #2 global.max$ substring$ 'z :=\r
+    duplicate$ "." = 'pop$\r
+      { * }\r
+    if$\r
+  }\r
+  while$\r
+}\r
+FUNCTION {new.block.checka}\r
+{ empty$\r
+    'skip$\r
+    'new.block\r
+  if$\r
+}\r
+FUNCTION {new.block.checkb}\r
+{ empty$\r
+  swap$ empty$\r
+  and\r
+    'skip$\r
+    'new.block\r
+  if$\r
+}\r
+FUNCTION {new.sentence.checka}\r
+{ empty$\r
+    'skip$\r
+    'new.sentence\r
+  if$\r
+}\r
+FUNCTION {new.sentence.checkb}\r
+{ empty$\r
+  swap$ empty$\r
+  and\r
+    'skip$\r
+    'new.sentence\r
+  if$\r
+}\r
+FUNCTION {field.or.null}\r
+{ duplicate$ empty$\r
+    { pop$ "" }\r
+    'skip$\r
+  if$\r
+}\r
+FUNCTION {emphasize}\r
+{ skip$ }\r
+FUNCTION {tie.or.space.prefix}\r
+{ duplicate$ text.length$ #3 <\r
+    { "~" }\r
+    { " " }\r
+  if$\r
+  swap$\r
+}\r
+FUNCTION {titto.space.prefix} %  always introduce a space\r
+{ duplicate$ text.length$ #3 <\r
+    { " " }\r
+    { " " }\r
+  if$\r
+  swap$\r
+}\r
+\r
+\r
+FUNCTION {capitalize}\r
+{ "u" change.case$ "t" change.case$ }\r
+\r
+FUNCTION {space.word}\r
+{ " " swap$ * " " * }\r
+ % Here are the language-specific definitions for explicit words.\r
+ % Each function has a name bbl.xxx where xxx is the English word.\r
+ % The language selected here is ENGLISH\r
+FUNCTION {bbl.and}\r
+{ "and"}\r
+\r
+FUNCTION {bbl.etal}\r
+{ "et~al." }\r
+\r
+FUNCTION {bbl.editors}\r
+{ "eds." }\r
+\r
+FUNCTION {bbl.editor}\r
+{ "ed." }\r
+\r
+FUNCTION {bbl.edby}\r
+{ "edited by" }\r
+\r
+FUNCTION {bbl.edition}\r
+{ "edn." }\r
+\r
+FUNCTION {bbl.volume}\r
+{ "vol." }\r
+\r
+FUNCTION {titto.bbl.volume} % for handling journals\r
+{ "" }\r
+\r
+FUNCTION {bbl.of}\r
+{ "of" }\r
+\r
+FUNCTION {bbl.number}\r
+{ "no." }\r
+\r
+FUNCTION {bbl.nr}\r
+{ "no." }\r
+\r
+FUNCTION {bbl.in}\r
+{ "in" }\r
+\r
+FUNCTION {bbl.pages}\r
+{ "pp." }\r
+\r
+FUNCTION {bbl.page}\r
+{ "p." }\r
+\r
+FUNCTION {titto.bbl.pages} % for journals\r
+{ "" }\r
+\r
+FUNCTION {titto.bbl.page}  % for journals\r
+{ "" }\r
+\r
+FUNCTION {bbl.chapter}\r
+{ "chap." }\r
+\r
+FUNCTION {bbl.techrep}\r
+{ "Tech. Rep." }\r
+\r
+FUNCTION {bbl.mthesis}\r
+{ "Master's thesis" }\r
+\r
+FUNCTION {bbl.phdthesis}\r
+{ "Ph.D. thesis" }\r
+\r
+MACRO {jan} {"Jan."}\r
+\r
+MACRO {feb} {"Feb."}\r
+\r
+MACRO {mar} {"Mar."}\r
+\r
+MACRO {apr} {"Apr."}\r
+\r
+MACRO {may} {"May"}\r
+\r
+MACRO {jun} {"Jun."}\r
+\r
+MACRO {jul} {"Jul."}\r
+\r
+MACRO {aug} {"Aug."}\r
+\r
+MACRO {sep} {"Sep."}\r
+\r
+MACRO {oct} {"Oct."}\r
+\r
+MACRO {nov} {"Nov."}\r
+\r
+MACRO {dec} {"Dec."}\r
+\r
+MACRO {acmcs} {"ACM Comput. Surv."}\r
+\r
+MACRO {acta} {"Acta Inf."}\r
+\r
+MACRO {cacm} {"Commun. ACM"}\r
+\r
+MACRO {ibmjrd} {"IBM J. Res. Dev."}\r
+\r
+MACRO {ibmsj} {"IBM Syst.~J."}\r
+\r
+MACRO {ieeese} {"IEEE Trans. Software Eng."}\r
+\r
+MACRO {ieeetc} {"IEEE Trans. Comput."}\r
+\r
+MACRO {ieeetcad}\r
+ {"IEEE Trans. Comput. Aid. Des."}\r
+\r
+MACRO {ipl} {"Inf. Process. Lett."}\r
+\r
+MACRO {jacm} {"J.~ACM"}\r
+\r
+MACRO {jcss} {"J.~Comput. Syst. Sci."}\r
+\r
+MACRO {scp} {"Sci. Comput. Program."}\r
+\r
+MACRO {sicomp} {"SIAM J. Comput."}\r
+\r
+MACRO {tocs} {"ACM Trans. Comput. Syst."}\r
+\r
+MACRO {tods} {"ACM Trans. Database Syst."}\r
+\r
+MACRO {tog} {"ACM Trans. Graphic."}\r
+\r
+MACRO {toms} {"ACM Trans. Math. Software"}\r
+\r
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}\r
+\r
+MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}\r
+\r
+MACRO {tcs} {"Theor. Comput. Sci."}\r
+\r
+FUNCTION {bibinfo.check}\r
+{ swap$\r
+  duplicate$ missing$\r
+    {\r
+      pop$ pop$\r
+      ""\r
+    }\r
+    { duplicate$ empty$\r
+        {\r
+          swap$ pop$\r
+        }\r
+        { swap$\r
+          pop$\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {bibinfo.warn}\r
+{ swap$\r
+  duplicate$ missing$\r
+    {\r
+      swap$ "missing " swap$ * " in " * cite$ * warning$ pop$\r
+      ""\r
+    }\r
+    { duplicate$ empty$\r
+        {\r
+          swap$ "empty " swap$ * " in " * cite$ * warning$\r
+        }\r
+        { swap$\r
+          pop$\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.url}\r
+{ url empty$\r
+    { "" }\r
+%    { "\urlprefix\url{" url * "}" * }\r
+    { "\url{" url * "}" * }  % changed in titto-lncs-02.bst\r
+  if$\r
+}\r
+\r
+INTEGERS { nameptr namesleft numnames }\r
+\r
+\r
+STRINGS  { bibinfo}\r
+\r
+FUNCTION {format.names}\r
+{ 'bibinfo :=\r
+  duplicate$ empty$ 'skip$ {\r
+  's :=\r
+  "" 't :=\r
+  #1 'nameptr :=\r
+  s num.names$ 'numnames :=\r
+  numnames 'namesleft :=\r
+    { namesleft #0 > }\r
+    { s nameptr\r
+      "{vv~}{ll}{, jj}{, f{.}.}"\r
+      format.name$\r
+      bibinfo bibinfo.check\r
+      't :=\r
+      nameptr #1 >\r
+        {\r
+          namesleft #1 >\r
+            { ", " * t * }\r
+            {\r
+              s nameptr "{ll}" format.name$ duplicate$ "others" =\r
+                { 't := }\r
+                { pop$ }\r
+              if$\r
+              "," *\r
+              t "others" =\r
+                {\r
+                  " " * bbl.etal *\r
+                }\r
+                { " " * t * }\r
+              if$\r
+            }\r
+          if$\r
+        }\r
+        't\r
+      if$\r
+      nameptr #1 + 'nameptr :=\r
+      namesleft #1 - 'namesleft :=\r
+    }\r
+  while$\r
+  } if$\r
+}\r
+FUNCTION {format.names.ed}\r
+{\r
+  'bibinfo :=\r
+  duplicate$ empty$ 'skip$ {\r
+  's :=\r
+  "" 't :=\r
+  #1 'nameptr :=\r
+  s num.names$ 'numnames :=\r
+  numnames 'namesleft :=\r
+    { namesleft #0 > }\r
+    { s nameptr\r
+      "{f{.}.~}{vv~}{ll}{ jj}"\r
+      format.name$\r
+      bibinfo bibinfo.check\r
+      't :=\r
+      nameptr #1 >\r
+        {\r
+          namesleft #1 >\r
+            { ", " * t * }\r
+            {\r
+              s nameptr "{ll}" format.name$ duplicate$ "others" =\r
+                { 't := }\r
+                { pop$ }\r
+              if$\r
+              "," *\r
+              t "others" =\r
+                {\r
+\r
+                  " " * bbl.etal *\r
+                }\r
+                { " " * t * }\r
+              if$\r
+            }\r
+          if$\r
+        }\r
+        't\r
+      if$\r
+      nameptr #1 + 'nameptr :=\r
+      namesleft #1 - 'namesleft :=\r
+    }\r
+  while$\r
+  } if$\r
+}\r
+FUNCTION {format.authors}\r
+{ author "author" format.names\r
+}\r
+FUNCTION {get.bbl.editor}\r
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }\r
+\r
+FUNCTION {format.editors}\r
+{ editor "editor" format.names duplicate$ empty$ 'skip$\r
+    {\r
+      " " *\r
+      get.bbl.editor\r
+%      capitalize\r
+   "(" swap$ * ")" *\r
+      *\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.note}\r
+{\r
+ note empty$\r
+    { "" }\r
+    { note #1 #1 substring$\r
+      duplicate$ "{" =\r
+        'skip$\r
+        { output.state mid.sentence =\r
+          { "l" }\r
+          { "u" }\r
+        if$\r
+        change.case$\r
+        }\r
+      if$\r
+      note #2 global.max$ substring$ * "note" bibinfo.check\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.title}\r
+{ title\r
+  duplicate$ empty$ 'skip$\r
+    { "t" change.case$ }\r
+  if$\r
+  "title" bibinfo.check\r
+}\r
+FUNCTION {output.bibitem}\r
+{ newline$\r
+  "\bibitem{" write$\r
+  cite$ write$\r
+  "}" write$\r
+  newline$\r
+  ""\r
+  before.all 'output.state :=\r
+}\r
+\r
+FUNCTION {n.dashify}\r
+{\r
+  't :=\r
+  ""\r
+    { t empty$ not }\r
+    { t #1 #1 substring$ "-" =\r
+        { t #1 #2 substring$ "--" = not\r
+            { "--" *\r
+              t #2 global.max$ substring$ 't :=\r
+            }\r
+            {   { t #1 #1 substring$ "-" = }\r
+                { "-" *\r
+                  t #2 global.max$ substring$ 't :=\r
+                }\r
+              while$\r
+            }\r
+          if$\r
+        }\r
+        { t #1 #1 substring$ *\r
+          t #2 global.max$ substring$ 't :=\r
+        }\r
+      if$\r
+    }\r
+  while$\r
+}\r
+\r
+FUNCTION {word.in}\r
+{ bbl.in capitalize\r
+  ":" *\r
+  " " * }\r
+\r
+FUNCTION {format.date}\r
+{\r
+  month "month" bibinfo.check\r
+  duplicate$ empty$\r
+  year  "year"  bibinfo.check duplicate$ empty$\r
+    { swap$ 'skip$\r
+        { "there's a month but no year in " cite$ * warning$ }\r
+      if$\r
+      *\r
+    }\r
+    { swap$ 'skip$\r
+        {\r
+          swap$\r
+          " " * swap$\r
+        }\r
+      if$\r
+      *\r
+      remove.dots\r
+    }\r
+  if$\r
+  duplicate$ empty$\r
+    'skip$\r
+    {\r
+      before.all 'output.state :=\r
+    " (" swap$ * ")" *\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.btitle}\r
+{ title "title" bibinfo.check\r
+  duplicate$ empty$ 'skip$\r
+    {\r
+    }\r
+  if$\r
+}\r
+FUNCTION {either.or.check}\r
+{ empty$\r
+    'pop$\r
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }\r
+  if$\r
+}\r
+FUNCTION {format.bvolume}\r
+{ volume empty$\r
+    { "" }\r
+    { bbl.volume volume tie.or.space.prefix\r
+      "volume" bibinfo.check * *\r
+      series "series" bibinfo.check\r
+      duplicate$ empty$ 'pop$\r
+        { emphasize ", " * swap$ * }\r
+      if$\r
+      "volume and number" number either.or.check\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.number.series}\r
+{ volume empty$\r
+    { number empty$\r
+        { series field.or.null }\r
+        { output.state mid.sentence =\r
+            { bbl.number }\r
+            { bbl.number capitalize }\r
+          if$\r
+          number tie.or.space.prefix "number" bibinfo.check * *\r
+          series empty$\r
+            { "there's a number but no series in " cite$ * warning$ }\r
+            { bbl.in space.word *\r
+              series "series" bibinfo.check *\r
+            }\r
+          if$\r
+        }\r
+      if$\r
+    }\r
+    { "" }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.edition}\r
+{ edition duplicate$ empty$ 'skip$\r
+    {\r
+      output.state mid.sentence =\r
+        { "l" }\r
+        { "t" }\r
+      if$ change.case$\r
+      "edition" bibinfo.check\r
+      " " * bbl.edition *\r
+    }\r
+  if$\r
+}\r
+INTEGERS { multiresult }\r
+FUNCTION {multi.page.check}\r
+{ 't :=\r
+  #0 'multiresult :=\r
+    { multiresult not\r
+      t empty$ not\r
+      and\r
+    }\r
+    { t #1 #1 substring$\r
+      duplicate$ "-" =\r
+      swap$ duplicate$ "," =\r
+      swap$ "+" =\r
+      or or\r
+        { #1 'multiresult := }\r
+        { t #2 global.max$ substring$ 't := }\r
+      if$\r
+    }\r
+  while$\r
+  multiresult\r
+}\r
+FUNCTION {format.pages}\r
+{ pages duplicate$ empty$ 'skip$\r
+    { duplicate$ multi.page.check\r
+        {\r
+          bbl.pages swap$\r
+          n.dashify\r
+        }\r
+        {\r
+          bbl.page swap$\r
+        }\r
+      if$\r
+      tie.or.space.prefix\r
+      "pages" bibinfo.check\r
+      * *\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.journal.pages}\r
+{ pages duplicate$ empty$ 'pop$\r
+    { swap$ duplicate$ empty$\r
+        { pop$ pop$ format.pages }\r
+        {\r
+          ", " *\r
+          swap$\r
+          n.dashify\r
+          pages multi.page.check\r
+            'titto.bbl.pages\r
+            'titto.bbl.page\r
+          if$\r
+          swap$ tie.or.space.prefix\r
+          "pages" bibinfo.check\r
+          * *\r
+          *\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.journal.eid}\r
+{ eid "eid" bibinfo.check\r
+  duplicate$ empty$ 'pop$\r
+    { swap$ duplicate$ empty$ 'skip$\r
+      {\r
+          ", " *\r
+      }\r
+      if$\r
+      swap$ *\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.vol.num.pages} % this function is used only for journal entries\r
+{ volume field.or.null\r
+  duplicate$ empty$ 'skip$\r
+    {\r
+%     bbl.volume swap$ tie.or.space.prefix\r
+      titto.bbl.volume swap$ titto.space.prefix\r
+%             rationale for the change above: for journals you don't want "vol." label\r
+%             hence it does not make sense to attach the journal number to the label when\r
+%             it is short\r
+      "volume" bibinfo.check\r
+      * *\r
+    }\r
+  if$\r
+  number "number" bibinfo.check duplicate$ empty$ 'skip$\r
+    {\r
+      swap$ duplicate$ empty$\r
+        { "there's a number but no volume in " cite$ * warning$ }\r
+        'skip$\r
+      if$\r
+      swap$\r
+      "(" swap$ * ")" *\r
+    }\r
+  if$ *\r
+  eid empty$\r
+    { format.journal.pages }\r
+    { format.journal.eid }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.chapter.pages}\r
+{ chapter empty$\r
+    'format.pages\r
+    { type empty$\r
+        { bbl.chapter }\r
+        { type "l" change.case$\r
+          "type" bibinfo.check\r
+        }\r
+      if$\r
+      chapter tie.or.space.prefix\r
+      "chapter" bibinfo.check\r
+      * *\r
+      pages empty$\r
+        'skip$\r
+        { ", " * format.pages * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.booktitle}\r
+{\r
+  booktitle "booktitle" bibinfo.check\r
+}\r
+FUNCTION {format.in.ed.booktitle}\r
+{ format.booktitle duplicate$ empty$ 'skip$\r
+    {\r
+%     editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto\r
+      editor "editor" format.names duplicate$ empty$ 'pop$\r
+        {\r
+          " " *\r
+          get.bbl.editor\r
+%          capitalize\r
+          "(" swap$ * ") " *\r
+          * swap$\r
+          * }\r
+      if$\r
+      word.in swap$ *\r
+    }\r
+  if$\r
+}\r
+FUNCTION {empty.misc.check}\r
+{ author empty$ title empty$ howpublished empty$\r
+  month empty$ year empty$ note empty$\r
+  and and and and and\r
+  key empty$ not and\r
+    { "all relevant fields are empty in " cite$ * warning$ }\r
+    'skip$\r
+  if$\r
+}\r
+FUNCTION {format.thesis.type}\r
+{ type duplicate$ empty$\r
+    'pop$\r
+    { swap$ pop$\r
+      "t" change.case$ "type" bibinfo.check\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.tr.number}\r
+{ number "number" bibinfo.check\r
+  type duplicate$ empty$\r
+    { pop$ bbl.techrep }\r
+    'skip$\r
+  if$\r
+  "type" bibinfo.check\r
+  swap$ duplicate$ empty$\r
+    { pop$ "t" change.case$ }\r
+    { tie.or.space.prefix * * }\r
+  if$\r
+}\r
+FUNCTION {format.article.crossref}\r
+{\r
+  key duplicate$ empty$\r
+    { pop$\r
+      journal duplicate$ empty$\r
+        { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }\r
+        { "journal" bibinfo.check emphasize word.in swap$ * }\r
+      if$\r
+    }\r
+    { word.in swap$ * " " *}\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+FUNCTION {format.crossref.editor}\r
+{ editor #1 "{vv~}{ll}" format.name$\r
+  "editor" bibinfo.check\r
+  editor num.names$ duplicate$\r
+  #2 >\r
+    { pop$\r
+      "editor" bibinfo.check\r
+      " " * bbl.etal\r
+      *\r
+    }\r
+    { #2 <\r
+        'skip$\r
+        { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =\r
+            {\r
+              "editor" bibinfo.check\r
+              " " * bbl.etal\r
+              *\r
+            }\r
+            {\r
+             bbl.and space.word\r
+              * editor #2 "{vv~}{ll}" format.name$\r
+              "editor" bibinfo.check\r
+              *\r
+            }\r
+          if$\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.book.crossref}\r
+{ volume duplicate$ empty$\r
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$\r
+      pop$ word.in\r
+    }\r
+    { bbl.volume\r
+      capitalize\r
+      swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *\r
+    }\r
+  if$\r
+  editor empty$\r
+  editor field.or.null author field.or.null =\r
+  or\r
+    { key empty$\r
+        { series empty$\r
+            { "need editor, key, or series for " cite$ * " to crossref " *\r
+              crossref * warning$\r
+              "" *\r
+            }\r
+            { series emphasize * }\r
+          if$\r
+        }\r
+        { key * }\r
+      if$\r
+    }\r
+    { format.crossref.editor * }\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+FUNCTION {format.incoll.inproc.crossref}\r
+{\r
+  editor empty$\r
+  editor field.or.null author field.or.null =\r
+  or\r
+    { key empty$\r
+        { format.booktitle duplicate$ empty$\r
+            { "need editor, key, or booktitle for " cite$ * " to crossref " *\r
+              crossref * warning$\r
+            }\r
+            { word.in swap$ * }\r
+          if$\r
+        }\r
+        { word.in key * " " *}\r
+      if$\r
+    }\r
+    { word.in format.crossref.editor * " " *}\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+FUNCTION {format.org.or.pub}\r
+{ 't :=\r
+  ""\r
+  address empty$ t empty$ and\r
+    'skip$\r
+    {\r
+      t empty$\r
+        { address "address" bibinfo.check *\r
+        }\r
+        { t *\r
+          address empty$\r
+            'skip$\r
+            { ", " * address "address" bibinfo.check * }\r
+          if$\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+FUNCTION {format.publisher.address}\r
+{ publisher "publisher" bibinfo.warn format.org.or.pub\r
+}\r
+\r
+FUNCTION {format.organization.address}\r
+{ organization "organization" bibinfo.check format.org.or.pub\r
+}\r
+\r
+FUNCTION {article}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    {\r
+      journal\r
+      "journal" bibinfo.check\r
+      "journal" output.check\r
+      add.blank\r
+      format.vol.num.pages output\r
+      format.date "year" output.check\r
+    }\r
+    { format.article.crossref output.nonnull\r
+      format.pages output\r
+    }\r
+  if$\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+FUNCTION {book}\r
+{ output.bibitem\r
+  author empty$\r
+    { format.editors "author and editor" output.check\r
+      add.colon\r
+    }\r
+    { format.authors output.nonnull\r
+      add.colon\r
+      crossref missing$\r
+        { "author and editor" editor either.or.check }\r
+        'skip$\r
+      if$\r
+    }\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  crossref missing$\r
+    { format.bvolume output\r
+      new.block\r
+      new.sentence\r
+      format.number.series output\r
+      format.publisher.address output\r
+    }\r
+    {\r
+      new.block\r
+      format.book.crossref output.nonnull\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+FUNCTION {booklet}\r
+{ output.bibitem\r
+  format.authors output\r
+  add.colon\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  howpublished "howpublished" bibinfo.check output\r
+  address "address" bibinfo.check output\r
+  format.date output\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {inbook}\r
+{ output.bibitem\r
+  author empty$\r
+    { format.editors "author and editor" output.check\r
+      add.colon\r
+    }\r
+    { format.authors output.nonnull\r
+      add.colon\r
+      crossref missing$\r
+        { "author and editor" editor either.or.check }\r
+        'skip$\r
+      if$\r
+    }\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  crossref missing$\r
+    {\r
+      format.bvolume output\r
+      format.chapter.pages "chapter and pages" output.check\r
+      new.block\r
+      new.sentence\r
+      format.number.series output\r
+      format.publisher.address output\r
+    }\r
+    {\r
+      format.chapter.pages "chapter and pages" output.check\r
+      new.block\r
+      format.book.crossref output.nonnull\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {incollection}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    { format.in.ed.booktitle "booktitle" output.check\r
+      format.bvolume output\r
+      format.chapter.pages output\r
+      new.sentence\r
+      format.number.series output\r
+      format.publisher.address output\r
+      format.edition output\r
+      format.date "year" output.check\r
+    }\r
+    { format.incoll.inproc.crossref output.nonnull\r
+      format.chapter.pages output\r
+    }\r
+  if$\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+FUNCTION {inproceedings}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    { format.in.ed.booktitle "booktitle" output.check\r
+      new.sentence % added by titto\r
+      format.bvolume output\r
+      format.pages output\r
+      new.sentence\r
+      format.number.series output\r
+      publisher empty$\r
+        { format.organization.address output }\r
+        { organization "organization" bibinfo.check output\r
+          format.publisher.address output\r
+        }\r
+      if$\r
+      format.date "year" output.check\r
+    }\r
+    { format.incoll.inproc.crossref output.nonnull\r
+      format.pages output\r
+    }\r
+  if$\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+FUNCTION {conference} { inproceedings }\r
+FUNCTION {manual}\r
+{ output.bibitem\r
+  author empty$\r
+    { organization "organization" bibinfo.check\r
+      duplicate$ empty$ 'pop$\r
+        { output\r
+          address "address" bibinfo.check output\r
+        }\r
+      if$\r
+    }\r
+    { format.authors output.nonnull }\r
+  if$\r
+  add.colon\r
+  new.block\r
+  format.btitle "title" output.check\r
+  author empty$\r
+    { organization empty$\r
+        {\r
+          address new.block.checka\r
+          address "address" bibinfo.check output\r
+        }\r
+        'skip$\r
+      if$\r
+    }\r
+    {\r
+      organization address new.block.checkb\r
+      organization "organization" bibinfo.check output\r
+      address "address" bibinfo.check output\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date output\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {mastersthesis}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.btitle\r
+  "title" output.check\r
+  new.block\r
+  bbl.mthesis format.thesis.type output.nonnull\r
+  school "school" bibinfo.warn output\r
+  address "address" bibinfo.check output\r
+  format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {misc}\r
+{ output.bibitem\r
+  format.authors output\r
+  add.colon\r
+  title howpublished new.block.checkb\r
+  format.title output\r
+  howpublished new.block.checka\r
+  howpublished "howpublished" bibinfo.check output\r
+  format.date output\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+  empty.misc.check\r
+}\r
+FUNCTION {phdthesis}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.btitle\r
+  "title" output.check\r
+  new.block\r
+  bbl.phdthesis format.thesis.type output.nonnull\r
+  school "school" bibinfo.warn output\r
+  address "address" bibinfo.check output\r
+  format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {proceedings}\r
+{ output.bibitem\r
+  editor empty$\r
+    { organization "organization" bibinfo.check output\r
+    }\r
+    { format.editors output.nonnull }\r
+  if$\r
+  add.colon\r
+  new.block\r
+  format.btitle "title" output.check\r
+  format.bvolume output\r
+  editor empty$\r
+    { publisher empty$\r
+        {  format.number.series output }\r
+        {\r
+          new.sentence\r
+          format.number.series output\r
+          format.publisher.address output\r
+        }\r
+      if$\r
+    }\r
+    { publisher empty$\r
+        {\r
+          new.sentence\r
+          format.number.series output\r
+          format.organization.address output }\r
+        {\r
+          new.sentence\r
+          format.number.series output\r
+          organization "organization" bibinfo.check output\r
+          format.publisher.address output\r
+        }\r
+      if$\r
+     }\r
+  if$\r
+      format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {techreport}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.title\r
+  "title" output.check\r
+  new.block\r
+  format.tr.number output.nonnull\r
+  institution "institution" bibinfo.warn output\r
+  address "address" bibinfo.check output\r
+  format.date "year" output.check\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {unpublished}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  add.colon\r
+  new.block\r
+  format.title "title" output.check\r
+  format.date output\r
+%  new.block\r
+  format.url output\r
+%  new.block\r
+  format.note "note" output.check\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {default.type} { misc }\r
+READ\r
+FUNCTION {sortify}\r
+{ purify$\r
+  "l" change.case$\r
+}\r
+INTEGERS { len }\r
+FUNCTION {chop.word}\r
+{ 's :=\r
+  'len :=\r
+  s #1 len substring$ =\r
+    { s len #1 + global.max$ substring$ }\r
+    's\r
+  if$\r
+}\r
+FUNCTION {sort.format.names}\r
+{ 's :=\r
+  #1 'nameptr :=\r
+  ""\r
+  s num.names$ 'numnames :=\r
+  numnames 'namesleft :=\r
+    { namesleft #0 > }\r
+    { s nameptr\r
+      "{ll{ }}{  ff{ }}{  jj{ }}"\r
+      format.name$ 't :=\r
+      nameptr #1 >\r
+        {\r
+          "   "  *\r
+          namesleft #1 = t "others" = and\r
+            { "zzzzz" * }\r
+            { t sortify * }\r
+          if$\r
+        }\r
+        { t sortify * }\r
+      if$\r
+      nameptr #1 + 'nameptr :=\r
+      namesleft #1 - 'namesleft :=\r
+    }\r
+  while$\r
+}\r
+\r
+FUNCTION {sort.format.title}\r
+{ 't :=\r
+  "A " #2\r
+    "An " #3\r
+      "The " #4 t chop.word\r
+    chop.word\r
+  chop.word\r
+  sortify\r
+  #1 global.max$ substring$\r
+}\r
+FUNCTION {author.sort}\r
+{ author empty$\r
+    { key empty$\r
+        { "to sort, need author or key in " cite$ * warning$\r
+          ""\r
+        }\r
+        { key sortify }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+FUNCTION {author.editor.sort}\r
+{ author empty$\r
+    { editor empty$\r
+        { key empty$\r
+            { "to sort, need author, editor, or key in " cite$ * warning$\r
+              ""\r
+            }\r
+            { key sortify }\r
+          if$\r
+        }\r
+        { editor sort.format.names }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+FUNCTION {author.organization.sort}\r
+{ author empty$\r
+    { organization empty$\r
+        { key empty$\r
+            { "to sort, need author, organization, or key in " cite$ * warning$\r
+              ""\r
+            }\r
+            { key sortify }\r
+          if$\r
+        }\r
+        { "The " #4 organization chop.word sortify }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+FUNCTION {editor.organization.sort}\r
+{ editor empty$\r
+    { organization empty$\r
+        { key empty$\r
+            { "to sort, need editor, organization, or key in " cite$ * warning$\r
+              ""\r
+            }\r
+            { key sortify }\r
+          if$\r
+        }\r
+        { "The " #4 organization chop.word sortify }\r
+      if$\r
+    }\r
+    { editor sort.format.names }\r
+  if$\r
+}\r
+FUNCTION {presort}\r
+{ type$ "book" =\r
+  type$ "inbook" =\r
+  or\r
+    'author.editor.sort\r
+    { type$ "proceedings" =\r
+        'editor.organization.sort\r
+        { type$ "manual" =\r
+            'author.organization.sort\r
+            'author.sort\r
+          if$\r
+        }\r
+      if$\r
+    }\r
+  if$\r
+  "    "\r
+  *\r
+  year field.or.null sortify\r
+  *\r
+  "    "\r
+  *\r
+  title field.or.null\r
+  sort.format.title\r
+  *\r
+  #1 entry.max$ substring$\r
+  'sort.key$ :=\r
+}\r
+ITERATE {presort}\r
+SORT\r
+STRINGS { longest.label }\r
+INTEGERS { number.label longest.label.width }\r
+FUNCTION {initialize.longest.label}\r
+{ "" 'longest.label :=\r
+  #1 'number.label :=\r
+  #0 'longest.label.width :=\r
+}\r
+FUNCTION {longest.label.pass}\r
+{ number.label int.to.str$ 'label :=\r
+  number.label #1 + 'number.label :=\r
+  label width$ longest.label.width >\r
+    { label 'longest.label :=\r
+      label width$ 'longest.label.width :=\r
+    }\r
+    'skip$\r
+  if$\r
+}\r
+EXECUTE {initialize.longest.label}\r
+ITERATE {longest.label.pass}\r
+FUNCTION {begin.bib}\r
+{ preamble$ empty$\r
+    'skip$\r
+    { preamble$ write$ newline$ }\r
+  if$\r
+  "\begin{thebibliography}{"  longest.label  * "}" *\r
+  write$ newline$\r
+  "\providecommand{\url}[1]{\texttt{#1}}"\r
+  write$ newline$\r
+  "\providecommand{\urlprefix}{URL }"\r
+  write$ newline$\r
+}\r
+EXECUTE {begin.bib}\r
+EXECUTE {init.state.consts}\r
+ITERATE {call.type$}\r
+FUNCTION {end.bib}\r
+{ newline$\r
+  "\end{thebibliography}" write$ newline$\r
+}\r
+EXECUTE {end.bib}\r
+%% End of customized bst file\r
+%%\r
+%% End of file `titto.bst'.\r
+\r
+\r