galaaz 0.4.10 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2048 -531
  3. data/Rakefile +3 -2
  4. data/bin/gknit +152 -6
  5. data/bin/gknit-draft +105 -0
  6. data/bin/gknit-draft.rb +28 -0
  7. data/bin/gknit_Rscript +127 -0
  8. data/bin/grun +27 -1
  9. data/bin/gstudio +47 -4
  10. data/bin/{gstudio.rb → gstudio_irb.rb} +0 -0
  11. data/bin/gstudio_pry.rb +7 -0
  12. data/blogs/galaaz_ggplot/galaaz_ggplot.html +10 -195
  13. data/blogs/galaaz_ggplot/galaaz_ggplot.md +404 -0
  14. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
  15. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
  16. data/blogs/gknit/gknit.Rmd +5 -3
  17. data/blogs/gknit/gknit.pdf +0 -0
  18. data/blogs/gknit/lst.rds +0 -0
  19. data/blogs/manual/lst.rds +0 -0
  20. data/blogs/manual/manual.Rmd +826 -53
  21. data/blogs/manual/manual.html +2338 -695
  22. data/blogs/manual/manual.md +2032 -539
  23. data/blogs/manual/manual.pdf +0 -0
  24. data/blogs/manual/manual.tex +1804 -594
  25. data/blogs/manual/manual_files/figure-html/bubble-1.png +0 -0
  26. data/blogs/manual/manual_files/figure-html/diverging_bar.png +0 -0
  27. data/blogs/manual/manual_files/figure-latex/bubble-1.png +0 -0
  28. data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
  29. data/blogs/manual/model.rb +41 -0
  30. data/blogs/nse_dplyr/nse_dplyr.Rmd +226 -73
  31. data/blogs/nse_dplyr/nse_dplyr.html +254 -336
  32. data/blogs/nse_dplyr/nse_dplyr.md +353 -158
  33. data/blogs/oh_my/oh_my.html +274 -386
  34. data/blogs/oh_my/oh_my.md +208 -205
  35. data/blogs/ruby_plot/ruby_plot.html +20 -205
  36. data/blogs/ruby_plot/ruby_plot.md +14 -15
  37. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
  38. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
  39. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
  40. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
  41. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
  42. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_decorations.png +0 -0
  43. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
  44. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
  45. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
  46. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
  47. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
  48. data/examples/Bibliography/master.bib +50 -0
  49. data/examples/Bibliography/stats.bib +72 -0
  50. data/examples/islr/x_y_rnorm.jpg +0 -0
  51. data/examples/latex_templates/Test-acm_article/Makefile +16 -0
  52. data/examples/latex_templates/Test-acm_article/Test-acm_article.Rmd +65 -0
  53. data/examples/latex_templates/Test-acm_article/acm_proc_article-sp.cls +1670 -0
  54. data/examples/latex_templates/Test-acm_article/sensys-abstract.cls +703 -0
  55. data/examples/latex_templates/Test-acm_article/sigproc.bib +59 -0
  56. data/examples/latex_templates/Test-acs_article/Test-acs_article.Rmd +260 -0
  57. data/examples/latex_templates/Test-acs_article/Test-acs_article.pdf +0 -0
  58. data/examples/latex_templates/Test-acs_article/acs-Test-acs_article.bib +11 -0
  59. data/examples/latex_templates/Test-acs_article/acs-my_output.bib +11 -0
  60. data/examples/latex_templates/Test-acs_article/acstest.bib +17 -0
  61. data/examples/latex_templates/Test-aea_article/AEA.cls +1414 -0
  62. data/{blogs/gknit/marshal.dump → examples/latex_templates/Test-aea_article/BibFile.bib} +0 -0
  63. data/examples/latex_templates/Test-aea_article/Test-aea_article.Rmd +108 -0
  64. data/examples/latex_templates/Test-aea_article/Test-aea_article.pdf +0 -0
  65. data/examples/latex_templates/Test-aea_article/aea.bst +1269 -0
  66. data/examples/latex_templates/Test-aea_article/multicol.sty +853 -0
  67. data/examples/latex_templates/Test-aea_article/references.bib +0 -0
  68. data/examples/latex_templates/Test-aea_article/setspace.sty +546 -0
  69. data/examples/latex_templates/Test-amq_article/Test-amq_article.Rmd +256 -0
  70. data/examples/latex_templates/Test-amq_article/Test-amq_article.pdf +0 -0
  71. data/examples/latex_templates/Test-amq_article/Test-amq_article.pdfsync +3397 -0
  72. data/examples/latex_templates/Test-amq_article/pics/Figure2.pdf +0 -0
  73. data/examples/latex_templates/Test-ams_article/Test-ams_article.Rmd +215 -0
  74. data/examples/latex_templates/Test-ams_article/amstest.bib +436 -0
  75. data/examples/latex_templates/Test-asa_article/Test-asa_article.Rmd +153 -0
  76. data/examples/latex_templates/Test-asa_article/Test-asa_article.pdf +0 -0
  77. data/examples/latex_templates/Test-asa_article/agsm.bst +1353 -0
  78. data/examples/latex_templates/Test-asa_article/bibliography.bib +233 -0
  79. data/examples/latex_templates/Test-ieee_article/IEEEtran.bst +2409 -0
  80. data/examples/latex_templates/Test-ieee_article/IEEEtran.cls +6346 -0
  81. data/examples/latex_templates/Test-ieee_article/Test-ieee_article.Rmd +175 -0
  82. data/examples/latex_templates/Test-ieee_article/Test-ieee_article.pdf +0 -0
  83. data/examples/latex_templates/Test-ieee_article/mybibfile.bib +20 -0
  84. data/examples/latex_templates/Test-rjournal_article/RJournal.sty +335 -0
  85. data/examples/latex_templates/Test-rjournal_article/RJreferences.bib +18 -0
  86. data/examples/latex_templates/Test-rjournal_article/RJwrapper.pdf +0 -0
  87. data/examples/latex_templates/Test-rjournal_article/Test-rjournal_article.Rmd +52 -0
  88. data/examples/latex_templates/Test-springer_article/Test-springer_article.Rmd +65 -0
  89. data/examples/latex_templates/Test-springer_article/Test-springer_article.pdf +0 -0
  90. data/examples/latex_templates/Test-springer_article/bibliography.bib +26 -0
  91. data/examples/latex_templates/Test-springer_article/spbasic.bst +1658 -0
  92. data/examples/latex_templates/Test-springer_article/spmpsci.bst +1512 -0
  93. data/examples/latex_templates/Test-springer_article/spphys.bst +1443 -0
  94. data/examples/latex_templates/Test-springer_article/svglov3.clo +113 -0
  95. data/examples/latex_templates/Test-springer_article/svjour3.cls +1431 -0
  96. data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.Rmd +73 -0
  97. data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.pdf +0 -0
  98. data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.Rmd +382 -0
  99. data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.pdf +0 -0
  100. data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.Rmd +164 -0
  101. data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.pdf +0 -0
  102. data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.Rmd +92 -0
  103. data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.pdf +0 -0
  104. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/attend-grade-relationships.csv +482 -0
  105. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.Rmd +280 -0
  106. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.pdf +0 -0
  107. data/examples/rmarkdown/svm-xaringan-example/svm-xaringan-example.Rmd +386 -0
  108. data/lib/R_interface/r.rb +1 -1
  109. data/lib/R_interface/r_libs.R +1 -1
  110. data/lib/R_interface/r_methods.rb +10 -0
  111. data/lib/R_interface/rpkg.rb +1 -0
  112. data/lib/R_interface/rsupport.rb +4 -6
  113. data/lib/gknit.rb +2 -0
  114. data/lib/gknit/draft.rb +105 -0
  115. data/lib/gknit/knitr_engine.rb +0 -33
  116. data/lib/util/exec_ruby.rb +1 -27
  117. data/specs/figures/bg.jpeg +0 -0
  118. data/specs/figures/bg.png +0 -0
  119. data/specs/figures/dose_len.png +0 -0
  120. data/specs/figures/no_args.jpeg +0 -0
  121. data/specs/figures/no_args.png +0 -0
  122. data/specs/figures/width_height.jpeg +0 -0
  123. data/specs/figures/width_height.png +0 -0
  124. data/specs/figures/width_height_units1.jpeg +0 -0
  125. data/specs/figures/width_height_units1.png +0 -0
  126. data/specs/figures/width_height_units2.jpeg +0 -0
  127. data/specs/figures/width_height_units2.png +0 -0
  128. data/specs/r_dataframe.spec.rb +11 -11
  129. data/specs/ruby_expression.spec.rb +1 -0
  130. data/specs/tmp.rb +41 -20
  131. data/version.rb +1 -1
  132. metadata +73 -35
  133. data/blogs/galaaz_ggplot/galaaz_ggplot.aux +0 -41
  134. data/blogs/galaaz_ggplot/galaaz_ggplot.out +0 -10
  135. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/midwest_rb.pdf +0 -0
  136. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/scatter_plot_rb.pdf +0 -0
  137. data/blogs/gknit/gknit.md +0 -1430
  138. data/blogs/gknit/gknit.tex +0 -1358
  139. data/blogs/manual/graph.rb +0 -29
  140. data/blogs/nse_dplyr/nse_dplyr.tex +0 -1373
  141. data/blogs/ruby_plot/ruby_plot.Rmd_external_figs +0 -662
  142. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.svg +0 -57
  143. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.svg +0 -106
  144. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.svg +0 -110
  145. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.svg +0 -174
  146. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.svg +0 -236
  147. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.svg +0 -296
  148. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.svg +0 -236
  149. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.svg +0 -218
  150. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.svg +0 -128
  151. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.svg +0 -150
  152. data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
  153. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
  154. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
  155. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
  156. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
  157. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
  158. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
  159. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
  160. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
  161. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
  162. data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
  163. data/examples/paper/paper.rb +0 -36
@@ -0,0 +1,233 @@
1
+ %% This BibTeX bibliography file was created using BibDesk.
2
+ %% http://bibdesk.sourceforge.net/
3
+
4
+
5
+ %% Created for Galyardt at 2014-08-21 22:49:39 -0400
6
+
7
+
8
+ %% Saved with string encoding Unicode (UTF-8)
9
+
10
+
11
+
12
+ @incollection{Galyardt14mmm,
13
+ Author = {April Galyardt},
14
+ Booktitle = {Handbook of Mixed Membership Models},
15
+ Date-Added = {2014-08-21 21:18:27 +0000},
16
+ Date-Modified = {2014-08-21 21:18:27 +0000},
17
+ Editor = {Edoardo M. Airoldi and David Blei and Erosheva, Elena and Fienberg, Stephen E.},
18
+ Publisher = {Chapman and Hall},
19
+ Title = {Interpreting Mixed Membership Models: Implications of Erosheva's Representation Theorem},
20
+ Year = {2014},
21
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QMi4uLy4uL1BhcGVyLU1NIGNoYXB0ZXIvR2FseWFyZHQtY2hhcHRlci03LjguMTMucGRm0hcLGBlXTlMuZGF0YU8RAeIAAAAAAeIAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAMm3i1VIKwAAAJ3/thtHYWx5YXJkdC1jaGFwdGVyLTcuOC4xMy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu7Y5zgBejQAAAAAAAAAAAAIAAgAACSAAAAAAAAAAAAAAAAAAAAAQUGFwZXItTU0gY2hhcHRlcgAQAAgAAMm3w5UAAAARAAgAAM4Als0AAAABABAAnf+2ABefWwANUdgAAJg6AAIAVU1hY2ludG9zaCBIRDpVc2VyczoAYWdhbHlhcmR0OgBEcm9wYm94OgBQYXBlci1NTSBjaGFwdGVyOgBHYWx5YXJkdC1jaGFwdGVyLTcuOC4xMy5wZGYAAA4AOAAbAEcAYQBsAHkAYQByAGQAdAAtAGMAaABhAHAAdABlAHIALQA3AC4AOAAuADEAMwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIARFVzZXJzL2FnYWx5YXJkdC9Ecm9wYm94L1BhcGVyLU1NIGNoYXB0ZXIvR2FseWFyZHQtY2hhcHRlci03LjguMTMucGRmABMAAS8AABUAAgAQ//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AwwDIANACtgK4Ar0CyALRAt8C4wLqAvMC+AMFAwgDGgMdAyIAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADJA==}}
22
+
23
+ @phdthesis{Galyardt12dis,
24
+ Address = {Pittsburgh, PA 15213},
25
+ Author = {April Galyardt},
26
+ Date-Added = {2014-08-21 21:17:56 +0000},
27
+ Date-Modified = {2014-08-22 02:49:38 +0000},
28
+ Keywords = {mixed membership, Latent Dirichlet Allocation, cognitive diagnosis models, numerical estimation, psychometrics},
29
+ Month = {July},
30
+ School = {Carnegie Mellon University},
31
+ Title = {Mixed Membership Distributions with Applications to Modeling Multiple Strategy Usage},
32
+ Year = {2012},
33
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QRC4uLy4uLy4uL0RvY3VtZW50cy9QdWJsaWNhdGlvbnMvMjAxMi1HYWx5YXJkdC1EaXNzZXJ0YXRpb24tRmluYWwucGRm0hcLGBlXTlMuZGF0YU8RAfoAAAAAAfoAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAMtppx9IKwAAAAuN+h8yMDEyLUdhbHlhcmR0LURpc3NlciMyNjgyNTgucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJoJYzMbb7wAAAAAAAAAAAAMAAwAACSAAAAAAAAAAAAAAAAAAAAAMUHVibGljYXRpb25zABAACAAAy2ntbwAAABEACAAAzMciPwAAAAEAEAALjfoABcifAAXIngAAuVcAAgBXTWFjaW50b3NoIEhEOlVzZXJzOgBhZ2FseWFyZHQ6AERvY3VtZW50czoAUHVibGljYXRpb25zOgAyMDEyLUdhbHlhcmR0LURpc3NlciMyNjgyNTgucGRmAAAOAEoAJAAyADAAMQAyAC0ARwBhAGwAeQBhAHIAZAB0AC0ARABpAHMAcwBlAHIAdABhAHQAaQBvAG4ALQBGAGkAbgBhAGwALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEtVc2Vycy9hZ2FseWFyZHQvRG9jdW1lbnRzL1B1YmxpY2F0aW9ucy8yMDEyLUdhbHlhcmR0LURpc3NlcnRhdGlvbi1GaW5hbC5wZGYAABMAAS8AABUAAgAQ//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A1QDaAOIC4ALiAucC8gL7AwkDDQMUAx0DIgMvAzIDRANHA0wAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADTg==}}
34
+
35
+ @conference{Galyardt13smmc,
36
+ Address = {Arnhem, Netherlands},
37
+ Author = {April Galyardt and Ilya Goldin},
38
+ Booktitle = {International Meeting of the Psychometric Society},
39
+ Date-Added = {2014-08-21 21:17:50 +0000},
40
+ Date-Modified = {2014-08-21 21:17:50 +0000},
41
+ Keywords = {conf},
42
+ Title = {Modeling Student Metacognitive Strategies in a Intelligent Tutoring System},
43
+ Year = {2013}}
44
+
45
+ @article{Campbell02,
46
+ Author = {Jamie I.D. Campbell and Shauna Austin},
47
+ Date-Added = {2014-08-21 21:12:16 +0000},
48
+ Date-Modified = {2014-08-21 21:13:22 +0000},
49
+ Journal = {Memory \& Cognition},
50
+ Keywords = {strategies, addition, response time},
51
+ Number = {6},
52
+ Pages = {988-994},
53
+ Title = {Effects of response time deadlines on adults' strategy choices for simple addition},
54
+ Volume = {30},
55
+ Year = {2002}}
56
+
57
+ @article{Schubert13,
58
+ Author = {Schubert, Christiane C and Denmark, T Kent and Crandall, Beth and Grome, Anna and Pappas, James},
59
+ Date-Added = {2014-08-21 21:00:46 +0000},
60
+ Date-Modified = {2014-08-21 21:00:46 +0000},
61
+ Journal = {Annals of emergency medicine},
62
+ Keywords = {expert/novice differences},
63
+ Number = {1},
64
+ Pages = {96--109},
65
+ Publisher = {Elsevier},
66
+ Title = {Characterizing novice-expert differences in macrocognition: an exploratory study of cognitive work in the emergency department},
67
+ Volume = {61},
68
+ Year = {2013},
69
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QYS4uLy4uL1BhcGVyLVdoYXQncyBhIFN0cmF0ZWd5L1BhcGVycy1TdHJhdGVnaWVzL1JlYWQvU2NodWJlcnQgZXRhbCAoMjAxMikgLUVtZXJnZW5jeSBNZWRpY2luZS5wZGbSFwsYGVdOUy5kYXRhTxECVAAAAAACVAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAybeLVUgrAAACeKY6H1NjaHViZXJ0IGV0YWwgKDIwMTIjMjc4QTdCNi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4p7bP6W1eAAAAAAAAAAAAAgAEAAAJIAAAAAAAAAAAAAAAAAAAAARSZWFkABAACAAAybfDlQAAABEACAAAz+mlngAAAAEAGAJ4pjoCeKY4ANZobAAXn1sADVHYAACYOgACAHlNYWNpbnRvc2ggSEQ6VXNlcnM6AGFnYWx5YXJkdDoARHJvcGJveDoAUGFwZXItV2hhdCdzIGEgU3RyYXRlZ3k6AFBhcGVycy1TdHJhdGVnaWVzOgBSZWFkOgBTY2h1YmVydCBldGFsICgyMDEyIzI3OEE3QjYucGRmAAAOAFoALABTAGMAaAB1AGIAZQByAHQAIABlAHQAYQBsACAAKAAyADAAMQAyACkAIAAtAEUAbQBlAHIAZwBlAG4AYwB5ACAATQBlAGQAaQBjAGkAbgBlAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBzVXNlcnMvYWdhbHlhcmR0L0Ryb3Bib3gvUGFwZXItV2hhdCdzIGEgU3RyYXRlZ3kvUGFwZXJzLVN0cmF0ZWdpZXMvUmVhZC9TY2h1YmVydCBldGFsICgyMDEyKSAtRW1lcmdlbmN5IE1lZGljaW5lLnBkZgAAEwABLwAAFQACABD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDyAPcA/wNXA1kDXgNpA3IDgAOEA4sDlAOZA6YDqQO7A74DwwAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAPF}}
70
+
71
+ @article{Siegler87,
72
+ Author = {Robert S. Siegler},
73
+ Date-Added = {2014-08-21 21:00:35 +0000},
74
+ Date-Modified = {2014-08-21 21:00:35 +0000},
75
+ Journal = {Journal of Experimental Psychology: General},
76
+ Keywords = {Multiple strategy use; mathematics education; strategies; learning sciences; psychology},
77
+ Number = {3},
78
+ Pages = {250-264},
79
+ Title = {The perils of averaging data over strategies: An example from children's addition},
80
+ Volume = {116},
81
+ Year = {1987},
82
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8Qby4uLy4uLy4uL0RvY3VtZW50cy9Kb3VybmFsLU5ld3MtQXJ0aWNsZXMvTGVhcm5pbmcgU2NpZW5jZXMsIExBLCBFRE0vU2llZ2xlci04Ny1NdWx0aXBsZSBBZGRpdGlvbiBTdHJhdGVnaWVzLnBkZtIXCxgZV05TLmRhdGFPEQJoAAAAAAJoAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADLaacfSCsAAAALnbIfU2llZ2xlci04Ny1NdWx0aXBsZSBBI0I5RTE1LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAueFcjZ9odQREYgAAAAAAADAAQAAAkgAAAAAAAAAAAAAAAAAAAAGkxlYXJuaW5nIFNjaWVuY2VzLCBMQSwgRURNABAACAAAy2ntbwAAABEACAAAyNouxwAAAAEAFAALnbIAC5wCAAXInwAFyJ4AALlXAAIAfE1hY2ludG9zaCBIRDpVc2VyczoAYWdhbHlhcmR0OgBEb2N1bWVudHM6AEpvdXJuYWwtTmV3cy1BcnRpY2xlczoATGVhcm5pbmcgU2NpZW5jZXMsIExBLCBFRE06AFNpZWdsZXItODctTXVsdGlwbGUgQSNCOUUxNS5wZGYADgBYACsAUwBpAGUAZwBsAGUAcgAtADgANwAtAE0AdQBsAHQAaQBwAGwAZQAgAEEAZABkAGkAdABpAG8AbgAgAFMAdAByAGEAdABlAGcAaQBlAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHZVc2Vycy9hZ2FseWFyZHQvRG9jdW1lbnRzL0pvdXJuYWwtTmV3cy1BcnRpY2xlcy9MZWFybmluZyBTY2llbmNlcywgTEEsIEVETS9TaWVnbGVyLTg3LU11bHRpcGxlIEFkZGl0aW9uIFN0cmF0ZWdpZXMucGRmABMAAS8AABUAAgAQ//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4BAAEFAQ0DeQN7A4ADiwOUA6IDpgOtA7YDuwPIA8sD3QPgA+UAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAD5w==}}
83
+
84
+ @article{Chi81,
85
+ Author = {Chi, Michelene T.H. and Feltovich, Paul J. and Glaser, Robert},
86
+ Date-Added = {2014-08-21 21:00:27 +0000},
87
+ Date-Modified = {2014-08-21 21:00:27 +0000},
88
+ Journal = {Cognitive science},
89
+ Keywords = {expert/novice differences},
90
+ Number = {2},
91
+ Pages = {121--152},
92
+ Publisher = {Wiley Online Library},
93
+ Title = {Categorization and representation of physics problems by experts and novices},
94
+ Volume = {5},
95
+ Year = {1981},
96
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QZy4uLy4uL1BhcGVyLVdoYXQncyBhIFN0cmF0ZWd5L1BhcGVycy1TdHJhdGVnaWVzL1JlYWQvQ2hpLCBGZWx0b3ZpY2gsIEdsYXNlciAoMTk4MSktcGh5c2ljcyBwcm9ibGVtcy5wZGbSFwsYGVdOUy5kYXRhTxECZgAAAAACZgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAybeLVUgrAAACeKY6H0NoaSwgRmVsdG92aWNoLCBHbGEjMjc4QTdDQy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4p8zP6ZB8AAAAAAAAAAAAAgAEAAAJIAAAAAAAAAAAAAAAAAAAAARSZWFkABAACAAAybfDlQAAABEACAAAz+nIvAAAAAEAGAJ4pjoCeKY4ANZobAAXn1sADVHYAACYOgACAHlNYWNpbnRvc2ggSEQ6VXNlcnM6AGFnYWx5YXJkdDoARHJvcGJveDoAUGFwZXItV2hhdCdzIGEgU3RyYXRlZ3k6AFBhcGVycy1TdHJhdGVnaWVzOgBSZWFkOgBDaGksIEZlbHRvdmljaCwgR2xhIzI3OEE3Q0MucGRmAAAOAGYAMgBDAGgAaQAsACAARgBlAGwAdABvAHYAaQBjAGgALAAgAEcAbABhAHMAZQByACAAKAAxADkAOAAxACkALQBwAGgAeQBzAGkAYwBzACAAcAByAG8AYgBsAGUAbQBzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgB5VXNlcnMvYWdhbHlhcmR0L0Ryb3Bib3gvUGFwZXItV2hhdCdzIGEgU3RyYXRlZ3kvUGFwZXJzLVN0cmF0ZWdpZXMvUmVhZC9DaGksIEZlbHRvdmljaCwgR2xhc2VyICgxOTgxKS1waHlzaWNzIHByb2JsZW1zLnBkZgAAEwABLwAAFQACABD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgD4AP0BBQNvA3EDdgOBA4oDmAOcA6MDrAOxA74DwQPTA9YD2wAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAPd}}
97
+
98
+ @incollection{Mislevy06Cog,
99
+ Author = {Robert Mislevy},
100
+ Booktitle = {Educational Assessment},
101
+ Chapter = {8},
102
+ Date-Added = {2014-08-21 20:58:59 +0000},
103
+ Date-Modified = {2014-08-21 20:58:59 +0000},
104
+ Editor = {Robert L. Brennan},
105
+ Publisher = {American Council on Education and Praeger Publishers},
106
+ Title = {Cognitive Psychology and Educational Assessment},
107
+ Year = {2006},
108
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QUy4uLy4uL1BhcGVyLVdoYXQncyBhIFN0cmF0ZWd5L1BhcGVycy1Nb2RlbHMvTWlzbGV2eSAoMjAwNiktQ29nIFBzeSAmIEFzc2Vzc21lbnQucGRm0hcLGBlXTlMuZGF0YU8RAjgAAAAAAjgAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAMm3i1VIKwAAAnimNh9NaXNsZXZ5ICgyMDA2KS1Db2cgIzI3QjBENEIucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACew1Lz+7ulQAAAAAAAAAAAAIAAwAACSAAAAAAAAAAAAAAAAAAAAANUGFwZXJzLU1vZGVscwAAEAAIAADJt8OVAAAAEQAIAADP7ybVAAAAAQAUAnimNgDWaGwAF59bAA1R2AAAmDoAAgBvTWFjaW50b3NoIEhEOlVzZXJzOgBhZ2FseWFyZHQ6AERyb3Bib3g6AFBhcGVyLVdoYXQncyBhIFN0cmF0ZWd5OgBQYXBlcnMtTW9kZWxzOgBNaXNsZXZ5ICgyMDA2KS1Db2cgIzI3QjBENEIucGRmAAAOAFAAJwBNAGkAcwBsAGUAdgB5ACAAKAAyADAAMAA2ACkALQBDAG8AZwAgAFAAcwB5ACAAJgAgAEEAcwBzAGUAcwBzAG0AZQBuAHQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAGVVc2Vycy9hZ2FseWFyZHQvRHJvcGJveC9QYXBlci1XaGF0J3MgYSBTdHJhdGVneS9QYXBlcnMtTW9kZWxzL01pc2xldnkgKDIwMDYpLUNvZyBQc3kgJiBBc3Nlc3NtZW50LnBkZgAAEwABLwAAFQACABD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDkAOkA8QMtAy8DNAM/A0gDVgNaA2EDagNvA3wDfwORA5QDmQAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAOb}}
109
+
110
+ @article{Mislevy12,
111
+ Author = {Robert J. Mislevy and John T. Behrens and Kristen E. {DiCerbo} and Roy Levy},
112
+ Date-Added = {2014-03-27 15:22:33 +0000},
113
+ Date-Modified = {2014-03-27 15:22:33 +0000},
114
+ Journal = {Journal of Educational Data Mining},
115
+ Number = {1},
116
+ Title = {Design and Discovery in Educational Assessment: Evidence-Centered Design, Psychometrics, and Educational Data Mining},
117
+ Volume = {4},
118
+ Year = {2012},
119
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QWC4uLy4uL1ByaXZhdGUtRVJTSDg5OTAvUmVhZGluZ0xpc3QvQ29waWVzX1VubWFya2VkX0Rpc3RyaWJ1dGUvUjEtTWlzbGV2eSBldGFsICgyMDEyKS5wZGbSFwsYGVdOUy5kYXRhTxECQAAAAAACQAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAybeLVUgrAAACIbwqGlIxLU1pc2xldnkgZXRhbCAoMjAxMikucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIhvEDPPjaUAAAAAAAAAAAAAgAEAAAJIAAAAAAAAAAAAAAAAAAAABpDb3BpZXNfVW5tYXJrZWRfRGlzdHJpYnV0ZQAQAAgAAMm3w5UAAAARAAgAAM8+fOQAAAABABgCIbwqAiG8JQCmuWsAF59bAA1R2AAAmDoAAgB9TWFjaW50b3NoIEhEOlVzZXJzOgBhZ2FseWFyZHQ6AERyb3Bib3g6AFByaXZhdGUtRVJTSDg5OTA6AFJlYWRpbmdMaXN0OgBDb3BpZXNfVW5tYXJrZWRfRGlzdHJpYnV0ZToAUjEtTWlzbGV2eSBldGFsICgyMDEyKS5wZGYAAA4ANgAaAFIAMQAtAE0AaQBzAGwAZQB2AHkAIABlAHQAYQBsACAAKAAyADAAMQAyACkALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAGpVc2Vycy9hZ2FseWFyZHQvRHJvcGJveC9Qcml2YXRlLUVSU0g4OTkwL1JlYWRpbmdMaXN0L0NvcGllc19Vbm1hcmtlZF9EaXN0cmlidXRlL1IxLU1pc2xldnkgZXRhbCAoMjAxMikucGRmABMAAS8AABUAAgAQ//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A6QDuAPYDOgM8A0EDTANVA2MDZwNuA3cDfAOJA4wDngOhA6YAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADqA==}}
120
+
121
+ @incollection{VanLehn08,
122
+ Author = {Kurt VanLehn},
123
+ Booktitle = {The future of assessment: Shaping teaching and learning.},
124
+ Date-Added = {2014-03-27 14:52:29 +0000},
125
+ Date-Modified = {2014-03-27 14:54:32 +0000},
126
+ Editor = {C. Dwyer},
127
+ Keywords = {intelligent tutoring systems},
128
+ Pages = {113-138},
129
+ Publisher = {Erbaum},
130
+ Title = {Intelligent Tutoring Systems for Continuous, Embedded Assessment},
131
+ Year = {2008},
132
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QXS4uLy4uL05ldyBBcnRpY2xlcy9SZWFkL1ZhbkxlaG4oMjAwOCktIEludGVsbGlnZW50IHR1dG9yaW5nIHN5c3RlbXMgZm9yIGNvbnRpbnVvdXMsIGVtYmVkLnBkZtIXCxgZV05TLmRhdGFPEQJgAAAAAAJgAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADJt4tVSCsAAAE5yhcfVmFuTGVobigyMDA4KS0gSW50ZSMyMkY0MUFFLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi9Brs9Zst0AAAAAAAAAAAACAAMAAAkgAAAAAAAAAAAAAAAAAAAABFJlYWQAEAAIAADJt8OVAAAAEQAIAADPWesdAAAAAQAUATnKFwAb8HgAF59bAA1R2AAAmDoAAgBbTWFjaW50b3NoIEhEOlVzZXJzOgBhZ2FseWFyZHQ6AERyb3Bib3g6AE5ldyBBcnRpY2xlczoAUmVhZDoAVmFuTGVobigyMDA4KS0gSW50ZSMyMkY0MUFFLnBkZgAADgCMAEUAVgBhAG4ATABlAGgAbgAoADIAMAAwADgAKQAtACAASQBuAHQAZQBsAGwAaQBnAGUAbgB0ACAAdAB1AHQAbwByAGkAbgBnACAAcwB5AHMAdABlAG0AcwAgAGYAbwByACAAYwBvAG4AdABpAG4AdQBvAHUAcwAsACAAZQBtAGIAZQBkAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBvVXNlcnMvYWdhbHlhcmR0L0Ryb3Bib3gvTmV3IEFydGljbGVzL1JlYWQvVmFuTGVobigyMDA4KS0gSW50ZWxsaWdlbnQgdHV0b3Jpbmcgc3lzdGVtcyBmb3IgY29udGludW91cywgZW1iZWQucGRmAAATAAEvAAAVAAIAEP//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAO4A8wD7A18DYQNmA3EDegOIA4wDkwOcA6EDrgOxA8MDxgPLAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA80=}}
133
+
134
+ @article{Erosheva04,
135
+ Author = {Elena Erosheva and Stephen E. Fienberg and John Lafferty},
136
+ Date-Added = {2013-12-18 14:22:42 +0000},
137
+ Date-Modified = {2013-12-18 14:25:57 +0000},
138
+ Journal = {PNAS},
139
+ Number = {Suppl.1},
140
+ Pages = {5220-5227},
141
+ Title = {Mixed-Membership Models of Scientific Publications},
142
+ Volume = {101},
143
+ Year = {2004},
144
+ Bdsk-Url-1 = {http://www.pnas.org/cgi/content/full/101/suppl_1/5220}}
145
+
146
+ @incollection{Blei09,
147
+ Author = {David Blei and John Lafferty},
148
+ Booktitle = {Text Mining: Classification, Clustering, and Applications},
149
+ Date-Added = {2013-12-18 14:09:12 +0000},
150
+ Date-Modified = {2013-12-18 14:12:00 +0000},
151
+ Editor = {A. Srivastava and M. Sahami},
152
+ Publisher = {Chapman \& Hall/CRC},
153
+ Series = {Data Mining and Knowledge Discovery Series},
154
+ Title = {Topic Models},
155
+ Year = {2009},
156
+ Bdsk-Url-1 = {http://www.cs.princeton.edu/~blei/papers/BleiLafferty2009.pdf}}
157
+
158
+ @article{aleven_toward_2006,
159
+ Author = {Aleven, V. and Mclaren, B. and Roll, I. and Koedinger, K.},
160
+ Date-Added = {2013-12-05 22:14:42 +0000},
161
+ Date-Modified = {2013-12-17 17:12:03 +0000},
162
+ Issue = {2},
163
+ Journal = {International Journal of Artificial Intelligence in Education},
164
+ Pages = {101-128},
165
+ Title = {Toward meta-cognitive tutoring: A model of help seeking with a Cognitive Tutor},
166
+ Volume = {16},
167
+ Year = {2006}}
168
+
169
+ @inproceedings{goldin_hints:_2013,
170
+ Author = {Goldin, Ilya M. and Koedinger, Kenneth R. and Aleven, Vincent A. W. M. M.},
171
+ Booktitle = {Proceedings of 6th International Conference on Educational Data Mining},
172
+ Date-Added = {2013-12-05 22:14:42 +0000},
173
+ Date-Modified = {2013-12-17 19:51:31 +0000},
174
+ Editor = {{D'Mello}, Sidney K. and Calvo, Rafael A. and Olney, Andrew},
175
+ Location = {Memphis, {TN}},
176
+ Month = {July},
177
+ Title = {Hints: You Can't Have Just One},
178
+ Year = {2013},
179
+ Bdsk-Url-1 = {http://www.educationaldatamining.org/EDM2013/papers/rn_paper_35.pdf}}
180
+
181
+ @inproceedings{goldin_learner_2012,
182
+ Address = {Chania, Greece},
183
+ Author = {Goldin, Ilya M. and Koedinger, Kenneth R. and Aleven, Vincent A. W. M. M.},
184
+ Booktitle = {Proceedings of 5th International Conference on Educational Data Mining},
185
+ Date-Added = {2013-12-05 22:14:42 +0000},
186
+ Date-Modified = {2013-12-17 19:50:21 +0000},
187
+ Editor = {Yacef, Kalina and Za{\"\i}ane, Osmar and Hershkovitz, Arnon and Yudelson, Michael and Stamper, John},
188
+ Pages = {73-80},
189
+ Title = {Learner Differences in Hint Processing},
190
+ Year = {2012},
191
+ Bdsk-Url-1 = {http://educationaldatamining.org/EDM2012/uploads/procs/Full_Papers/edm2012_full_6.pdf}}
192
+
193
+ @inproceedings{goldin_learner_2013,
194
+ Address = {Memphis, {TN}},
195
+ Author = {Goldin, Ilya M. and Carlson, Ryan},
196
+ Booktitle = {Proceedings of 16th International Conference on Artificial Intelligence in Education},
197
+ Date-Added = {2013-12-05 22:14:42 +0000},
198
+ Date-Modified = {2013-12-17 17:14:16 +0000},
199
+ Title = {Learner Differences and Hint Content},
200
+ Year = {2013}}
201
+
202
+ @article{Girolami05,
203
+ Abstract = {To provide a parsimonious generative representation of the sequential activity of a number of individuals within a population there is a necessary tradeoff between the definition of individual specific and global
204
+ representations. A linear-time algorithm is proposed that defines a distributed predictive model for finite state symbolic sequences which represent the traces of the activity of a number of individuals within a group. The algorithm is based on a straightforward generalization of latent Dirichlet allocation to time-invariant Markov chains of arbitrary order. The modelling assumption made is that the possibly heterogeneous behavior of individuals may be represented by a relatively small number of simple and common behavioral traits which may interleave randomly according to an individual-specific distribution. The results of an empirical study on three different application domains indicate that this modelling approach provides an efficient low-complexity and intuitively interpretable representation scheme which is reflected by improved prediction performance over comparable models.},
205
+ Annote = {Builds a mixed-membership model where the basis profiles are markov chains of varying order.
206
+ Uses two types of estimation: Variational approximation, and "maximum a posteriori" (MAP)
207
+ Fits model on 3 different data sets of user-log data: actions in a word processor, sequences of calls to different geographic regions (UK), and finally web page browsing.
208
+
209
+ Compares models on "perplexity" which they define as the exponential of the negative-normalized log-likelihood. (Might be a standard markov-chain goodness of fit measure, or it might be more standard to ML)
210
+ They use t-tests and non-parametric Wilcoxon Rank-Sum tests to test for significant differences in perplexity.
211
+
212
+ They call their model a "simplical mixture of markov chains" and cite Minka and Lafferty 2002.
213
+
214
+ For the zero^th order Markov model (when no memory is assumed in the markov process), then their model reduces to a multinomial LDA model.
215
+
216
+ They also claim that Hofmann's pLSA algorithm is equivalent to LDA when the MAP estimator is calculated through an iterative convergence method. Suggests that LDA is an improvement over pLSA because of the estimation method used. Cites Lappalainen and Miskin (2000) on the weakness of MAP estimators.
217
+
218
+ For all the data sets, the mixed-membership model offers better results. Better on the goodness-of-fit measures and more interpretable results. The differences were clearer on the bigger data sets with larger state-spaces.
219
+
220
+ Data Structure: only 1 item per model - the sequences (J=1)
221
+ many replications of each item (big R)
222
+
223
+ They offer some additional comments on computational algorithms and computational time.},
224
+ Author = {Mark Girolami and Ata Kaban},
225
+ Date-Added = {2013-06-25 19:41:00 +0000},
226
+ Date-Modified = {2013-06-25 19:41:00 +0000},
227
+ Journal = {Data Mining and Knowledge Discovery},
228
+ Keywords = {Latent Dirichlet Allocation, markov chains, Mixture models, user profiling, mixed membership, variational approximation},
229
+ Pages = {175-196},
230
+ Title = {Sequential Activity Profiling: Latent Dirichlet Allocation of Markov Chains},
231
+ Volume = {10},
232
+ Year = {2005},
233
+ Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8Qay4uLy4uLy4uL0RvY3VtZW50cy9Kb3VybmFsLU5ld3MtQXJ0aWNsZXMvTWl4ZWQgTWVtYmVyc2hpcC9HaXJvbGFtaSAmIEthYmFuICgyMDA1KS0gTERBIG9mIG1hcmtvdiBjaGFpbnMucGRm0hcLGBlXTlMuZGF0YU8RAlwAAAAAAlwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAMtppx9IKwAAAAueSx9HaXJvbGFtaSAmIEthYmFuICgyMDAjQjlFNkEucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC55qyVXqE1BERiAAAAAAAAMABAAACSAAAAAAAAAAAAAAAAAAAAAQTWl4ZWQgTWVtYmVyc2hpcAAQAAgAAMtp7W8AAAARAAgAAMlWMGMAAAABABQAC55LAAucAgAFyJ8ABcieAAC5VwACAHJNYWNpbnRvc2ggSEQ6VXNlcnM6AGFnYWx5YXJkdDoARG9jdW1lbnRzOgBKb3VybmFsLU5ld3MtQXJ0aWNsZXM6AE1peGVkIE1lbWJlcnNoaXA6AEdpcm9sYW1pICYgS2FiYW4gKDIwMCNCOUU2QS5wZGYADgBkADEARwBpAHIAbwBsAGEAbQBpACAAJgAgAEsAYQBiAGEAbgAgACgAMgAwADAANQApAC0AIABMAEQAQQAgAG8AZgAgAG0AYQByAGsAbwB2ACAAYwBoAGEAaQBuAHMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAHJVc2Vycy9hZ2FseWFyZHQvRG9jdW1lbnRzL0pvdXJuYWwtTmV3cy1BcnRpY2xlcy9NaXhlZCBNZW1iZXJzaGlwL0dpcm9sYW1pICYgS2FiYW4gKDIwMDUpLSBMREEgb2YgbWFya292IGNoYWlucy5wZGYAEwABLwAAFQACABD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgD8AQEBCQNpA2sDcAN7A4QDkgOWA50DpgOrA7gDuwPNA9AD1QAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAPX}}
@@ -0,0 +1,2409 @@
1
+ %%
2
+ %% IEEEtran.bst
3
+ %% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
4
+ %% Version 1.14 (2015/08/26)
5
+ %%
6
+ %% Copyright (c) 2003-2015 Michael Shell
7
+ %%
8
+ %% Original starting code base and algorithms obtained from the output of
9
+ %% Patrick W. Daly's makebst package as well as from prior versions of
10
+ %% IEEE BibTeX styles:
11
+ %%
12
+ %% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
13
+ %% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
14
+ %%
15
+ %% Support sites:
16
+ %% http://www.michaelshell.org/tex/ieeetran/
17
+ %% http://www.ctan.org/pkg/ieeetran
18
+ %% and/or
19
+ %% http://www.ieee.org/
20
+ %%
21
+ %% For use with BibTeX version 0.99a or later
22
+ %%
23
+ %% This is a numerical citation style.
24
+ %%
25
+ %%*************************************************************************
26
+ %% Legal Notice:
27
+ %% This code is offered as-is without any warranty either expressed or
28
+ %% implied; without even the implied warranty of MERCHANTABILITY or
29
+ %% FITNESS FOR A PARTICULAR PURPOSE!
30
+ %% User assumes all risk.
31
+ %% In no event shall the IEEE or any contributor to this code be liable for
32
+ %% any damages or losses, including, but not limited to, incidental,
33
+ %% consequential, or any other damages, resulting from the use or misuse
34
+ %% of any information contained here.
35
+ %%
36
+ %% All comments are the opinions of their respective authors and are not
37
+ %% necessarily endorsed by the IEEE.
38
+ %%
39
+ %% This work is distributed under the LaTeX Project Public License (LPPL)
40
+ %% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
41
+ %% distributed and modified. A copy of the LPPL, version 1.3, is included
42
+ %% in the base LaTeX documentation of all distributions of LaTeX released
43
+ %% 2003/12/01 or later.
44
+ %% Retain all contribution notices and credits.
45
+ %% ** Modified files should be clearly indicated as such, including **
46
+ %% ** renaming them and changing author support contact information. **
47
+ %%*************************************************************************
48
+
49
+
50
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51
+ %% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
52
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53
+
54
+ % These are the defaults for the user adjustable controls. The values used
55
+ % here can be overridden by the user via IEEEtranBSTCTL entry type.
56
+
57
+ % NOTE: The recommended LaTeX command to invoke a control entry type is:
58
+ %
59
+ %\makeatletter
60
+ %\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
61
+ %\def\@bstctlcite[#1]#2{\@bsphack
62
+ % \@for\@citeb:=#2\do{%
63
+ % \edef\@citeb{\expandafter\@firstofone\@citeb}%
64
+ % \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
65
+ % \@esphack}
66
+ %\makeatother
67
+ %
68
+ % It is called at the start of the document, before the first \cite, like:
69
+ % \bstctlcite{IEEEexample:BSTcontrol}
70
+ %
71
+ % IEEEtran.cls V1.6 and later does provide this command.
72
+
73
+
74
+
75
+ % #0 turns off the display of the number for articles.
76
+ % #1 enables
77
+ FUNCTION {default.is.use.number.for.article} { #1 }
78
+
79
+
80
+ % #0 turns off the display of the paper and type fields in @inproceedings.
81
+ % #1 enables
82
+ FUNCTION {default.is.use.paper} { #1 }
83
+
84
+
85
+ % #0 turns off the display of urls
86
+ % #1 enables
87
+ FUNCTION {default.is.use.url} { #1 }
88
+
89
+
90
+ % #0 turns off the forced use of "et al."
91
+ % #1 enables
92
+ FUNCTION {default.is.forced.et.al} { #0 }
93
+
94
+
95
+ % The maximum number of names that can be present beyond which an "et al."
96
+ % usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
97
+ % is not greater than this value!
98
+ % Note: There are many instances of references in IEEE journals which have
99
+ % a very large number of authors as well as instances in which "et al." is
100
+ % used profusely.
101
+ FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
102
+
103
+
104
+ % The number of names that will be shown with a forced "et al.".
105
+ % Must be less than or equal to max.num.names.before.forced.et.al
106
+ FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
107
+
108
+
109
+ % #0 turns off the alternate interword spacing for entries with URLs.
110
+ % #1 enables
111
+ FUNCTION {default.is.use.alt.interword.spacing} { #1 }
112
+
113
+
114
+ % If alternate interword spacing for entries with URLs is enabled, this is
115
+ % the interword spacing stretch factor that will be used. For example, the
116
+ % default "4" here means that the interword spacing in entries with URLs can
117
+ % stretch to four times normal. Does not have to be an integer. Note that
118
+ % the value specified here can be overridden by the user in their LaTeX
119
+ % code via a command such as:
120
+ % "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
121
+ % that via the IEEEtranBSTCTL entry type.
122
+ FUNCTION {default.ALTinterwordstretchfactor} { "4" }
123
+
124
+
125
+ % #0 turns off the "dashification" of repeated (i.e., identical to those
126
+ % of the previous entry) names. The IEEE normally does this.
127
+ % #1 enables
128
+ FUNCTION {default.is.dash.repeated.names} { #1 }
129
+
130
+
131
+ % The default name format control string.
132
+ FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
133
+
134
+
135
+ % The default LaTeX font command for the names.
136
+ FUNCTION {default.name.latex.cmd}{ "" }
137
+
138
+
139
+ % The default URL prefix.
140
+ FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
141
+
142
+
143
+ % Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
144
+
145
+ % #0 turns off the terminal startup banner/completed message so as to
146
+ % operate more quietly.
147
+ % #1 enables
148
+ FUNCTION {is.print.banners.to.terminal} { #1 }
149
+
150
+
151
+
152
+
153
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
154
+ %% FILE VERSION AND BANNER %%
155
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
156
+
157
+ FUNCTION{bst.file.version} { "1.14" }
158
+ FUNCTION{bst.file.date} { "2015/08/26" }
159
+ FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
160
+
161
+ FUNCTION {banner.message}
162
+ { is.print.banners.to.terminal
163
+ { "-- IEEEtran.bst version" " " * bst.file.version *
164
+ " (" * bst.file.date * ") " * "by Michael Shell." *
165
+ top$
166
+ "-- " bst.file.website *
167
+ top$
168
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
169
+ top$
170
+ }
171
+ { skip$ }
172
+ if$
173
+ }
174
+
175
+ FUNCTION {completed.message}
176
+ { is.print.banners.to.terminal
177
+ { ""
178
+ top$
179
+ "Done."
180
+ top$
181
+ }
182
+ { skip$ }
183
+ if$
184
+ }
185
+
186
+
187
+
188
+
189
+ %%%%%%%%%%%%%%%%%%%%%%
190
+ %% STRING CONSTANTS %%
191
+ %%%%%%%%%%%%%%%%%%%%%%
192
+
193
+ FUNCTION {bbl.and}{ "and" }
194
+ FUNCTION {bbl.etal}{ "et~al." }
195
+ FUNCTION {bbl.editors}{ "eds." }
196
+ FUNCTION {bbl.editor}{ "ed." }
197
+ FUNCTION {bbl.edition}{ "ed." }
198
+ FUNCTION {bbl.volume}{ "vol." }
199
+ FUNCTION {bbl.of}{ "of" }
200
+ FUNCTION {bbl.number}{ "no." }
201
+ FUNCTION {bbl.in}{ "in" }
202
+ FUNCTION {bbl.pages}{ "pp." }
203
+ FUNCTION {bbl.page}{ "p." }
204
+ FUNCTION {bbl.chapter}{ "ch." }
205
+ FUNCTION {bbl.paper}{ "paper" }
206
+ FUNCTION {bbl.part}{ "pt." }
207
+ FUNCTION {bbl.patent}{ "Patent" }
208
+ FUNCTION {bbl.patentUS}{ "U.S." }
209
+ FUNCTION {bbl.revision}{ "Rev." }
210
+ FUNCTION {bbl.series}{ "ser." }
211
+ FUNCTION {bbl.standard}{ "Std." }
212
+ FUNCTION {bbl.techrep}{ "Tech. Rep." }
213
+ FUNCTION {bbl.mthesis}{ "Master's thesis" }
214
+ FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
215
+ FUNCTION {bbl.st}{ "st" }
216
+ FUNCTION {bbl.nd}{ "nd" }
217
+ FUNCTION {bbl.rd}{ "rd" }
218
+ FUNCTION {bbl.th}{ "th" }
219
+
220
+
221
+ % This is the LaTeX spacer that is used when a larger than normal space
222
+ % is called for (such as just before the address:publisher).
223
+ FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
224
+
225
+ % The LaTeX code for dashes that are used to represent repeated names.
226
+ % Note: Some older IEEE journals used something like
227
+ % "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
228
+ % the baseline. However, the IEEE now uses a thinner, above baseline,
229
+ % six dash long sequence.
230
+ FUNCTION {repeated.name.dashes} { "------" }
231
+
232
+
233
+
234
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
235
+ %% PREDEFINED STRING MACROS %%
236
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
237
+
238
+ MACRO {jan} {"Jan."}
239
+ MACRO {feb} {"Feb."}
240
+ MACRO {mar} {"Mar."}
241
+ MACRO {apr} {"Apr."}
242
+ MACRO {may} {"May"}
243
+ MACRO {jun} {"Jun."}
244
+ MACRO {jul} {"Jul."}
245
+ MACRO {aug} {"Aug."}
246
+ MACRO {sep} {"Sep."}
247
+ MACRO {oct} {"Oct."}
248
+ MACRO {nov} {"Nov."}
249
+ MACRO {dec} {"Dec."}
250
+
251
+
252
+
253
+ %%%%%%%%%%%%%%%%%%
254
+ %% ENTRY FIELDS %%
255
+ %%%%%%%%%%%%%%%%%%
256
+
257
+ ENTRY
258
+ { address
259
+ assignee
260
+ author
261
+ booktitle
262
+ chapter
263
+ day
264
+ dayfiled
265
+ edition
266
+ editor
267
+ howpublished
268
+ institution
269
+ intype
270
+ journal
271
+ key
272
+ language
273
+ month
274
+ monthfiled
275
+ nationality
276
+ note
277
+ number
278
+ organization
279
+ pages
280
+ paper
281
+ publisher
282
+ school
283
+ series
284
+ revision
285
+ title
286
+ type
287
+ url
288
+ volume
289
+ year
290
+ yearfiled
291
+ CTLuse_article_number
292
+ CTLuse_paper
293
+ CTLuse_url
294
+ CTLuse_forced_etal
295
+ CTLmax_names_forced_etal
296
+ CTLnames_show_etal
297
+ CTLuse_alt_spacing
298
+ CTLalt_stretch_factor
299
+ CTLdash_repeated_names
300
+ CTLname_format_string
301
+ CTLname_latex_cmd
302
+ CTLname_url_prefix
303
+ }
304
+ {}
305
+ { label }
306
+
307
+
308
+
309
+
310
+ %%%%%%%%%%%%%%%%%%%%%%%
311
+ %% INTEGER VARIABLES %%
312
+ %%%%%%%%%%%%%%%%%%%%%%%
313
+
314
+ INTEGERS { prev.status.punct this.status.punct punct.std
315
+ punct.no punct.comma punct.period
316
+ prev.status.space this.status.space space.std
317
+ space.no space.normal space.large
318
+ prev.status.quote this.status.quote quote.std
319
+ quote.no quote.close
320
+ prev.status.nline this.status.nline nline.std
321
+ nline.no nline.newblock
322
+ status.cap cap.std
323
+ cap.no cap.yes}
324
+
325
+ INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
326
+
327
+ INTEGERS { is.use.number.for.article
328
+ is.use.paper
329
+ is.use.url
330
+ is.forced.et.al
331
+ max.num.names.before.forced.et.al
332
+ num.names.shown.with.forced.et.al
333
+ is.use.alt.interword.spacing
334
+ is.dash.repeated.names}
335
+
336
+
337
+ %%%%%%%%%%%%%%%%%%%%%%
338
+ %% STRING VARIABLES %%
339
+ %%%%%%%%%%%%%%%%%%%%%%
340
+
341
+ STRINGS { bibinfo
342
+ longest.label
343
+ oldname
344
+ s
345
+ t
346
+ ALTinterwordstretchfactor
347
+ name.format.string
348
+ name.latex.cmd
349
+ name.url.prefix}
350
+
351
+
352
+
353
+
354
+ %%%%%%%%%%%%%%%%%%%%%%%%%
355
+ %% LOW LEVEL FUNCTIONS %%
356
+ %%%%%%%%%%%%%%%%%%%%%%%%%
357
+
358
+ FUNCTION {initialize.controls}
359
+ { default.is.use.number.for.article 'is.use.number.for.article :=
360
+ default.is.use.paper 'is.use.paper :=
361
+ default.is.use.url 'is.use.url :=
362
+ default.is.forced.et.al 'is.forced.et.al :=
363
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
364
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
365
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
366
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
367
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
368
+ default.name.format.string 'name.format.string :=
369
+ default.name.latex.cmd 'name.latex.cmd :=
370
+ default.name.url.prefix 'name.url.prefix :=
371
+ }
372
+
373
+
374
+ % This IEEEtran.bst features a very powerful and flexible mechanism for
375
+ % controlling the capitalization, punctuation, spacing, quotation, and
376
+ % newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
377
+ % or use the newline/newblock feature, but it has been implemented for
378
+ % possible future use.) The output states of IEEEtran.bst consist of
379
+ % multiple independent attributes and, as such, can be thought of as being
380
+ % vectors, rather than the simple scalar values ("before.all",
381
+ % "mid.sentence", etc.) used in most other .bst files.
382
+ %
383
+ % The more flexible and complex design used here was motivated in part by
384
+ % the IEEE's rather unusual bibliography style. For example, the IEEE ends the
385
+ % previous field item with a period and large space prior to the publisher
386
+ % address; the @electronic entry types use periods as inter-item punctuation
387
+ % rather than the commas used by the other entry types; and URLs are never
388
+ % followed by periods even though they are the last item in the entry.
389
+ % Although it is possible to accommodate these features with the conventional
390
+ % output state system, the seemingly endless exceptions make for convoluted,
391
+ % unreliable and difficult to maintain code.
392
+ %
393
+ % IEEEtran.bst's output state system can be easily understood via a simple
394
+ % illustration of two most recently formatted entry fields (on the stack):
395
+ %
396
+ % CURRENT_ITEM
397
+ % "PREVIOUS_ITEM
398
+ %
399
+ % which, in this example, is to eventually appear in the bibliography as:
400
+ %
401
+ % "PREVIOUS_ITEM," CURRENT_ITEM
402
+ %
403
+ % It is the job of the output routine to take the previous item off of the
404
+ % stack (while leaving the current item at the top of the stack), apply its
405
+ % trailing punctuation (including closing quote marks) and spacing, and then
406
+ % to write the result to BibTeX's output buffer:
407
+ %
408
+ % "PREVIOUS_ITEM,"
409
+ %
410
+ % Punctuation (and spacing) between items is often determined by both of the
411
+ % items rather than just the first one. The presence of quotation marks
412
+ % further complicates the situation because, in standard English, trailing
413
+ % punctuation marks are supposed to be contained within the quotes.
414
+ %
415
+ % IEEEtran.bst maintains two output state (aka "status") vectors which
416
+ % correspond to the previous and current (aka "this") items. Each vector
417
+ % consists of several independent attributes which track punctuation,
418
+ % spacing, quotation, and newlines. Capitalization status is handled by a
419
+ % separate scalar because the format routines, not the output routine,
420
+ % handle capitalization and, therefore, there is no need to maintain the
421
+ % capitalization attribute for both the "previous" and "this" items.
422
+ %
423
+ % When a format routine adds a new item, it copies the current output status
424
+ % vector to the previous output status vector and (usually) resets the
425
+ % current (this) output status vector to a "standard status" vector. Using a
426
+ % "standard status" vector in this way allows us to redefine what we mean by
427
+ % "standard status" at the start of each entry handler and reuse the same
428
+ % format routines under the various inter-item separation schemes. For
429
+ % example, the standard status vector for the @book entry type may use
430
+ % commas for item separators, while the @electronic type may use periods,
431
+ % yet both entry handlers exploit many of the exact same format routines.
432
+ %
433
+ % Because format routines have write access to the output status vector of
434
+ % the previous item, they can override the punctuation choices of the
435
+ % previous format routine! Therefore, it becomes trivial to implement rules
436
+ % such as "Always use a period and a large space before the publisher." By
437
+ % pushing the generation of the closing quote mark to the output routine, we
438
+ % avoid all the problems caused by having to close a quote before having all
439
+ % the information required to determine what the punctuation should be.
440
+ %
441
+ % The IEEEtran.bst output state system can easily be expanded if needed.
442
+ % For instance, it is easy to add a "space.tie" attribute value if the
443
+ % bibliography rules mandate that two items have to be joined with an
444
+ % unbreakable space.
445
+
446
+ FUNCTION {initialize.status.constants}
447
+ { #0 'punct.no :=
448
+ #1 'punct.comma :=
449
+ #2 'punct.period :=
450
+ #0 'space.no :=
451
+ #1 'space.normal :=
452
+ #2 'space.large :=
453
+ #0 'quote.no :=
454
+ #1 'quote.close :=
455
+ #0 'cap.no :=
456
+ #1 'cap.yes :=
457
+ #0 'nline.no :=
458
+ #1 'nline.newblock :=
459
+ }
460
+
461
+ FUNCTION {std.status.using.comma}
462
+ { punct.comma 'punct.std :=
463
+ space.normal 'space.std :=
464
+ quote.no 'quote.std :=
465
+ nline.no 'nline.std :=
466
+ cap.no 'cap.std :=
467
+ }
468
+
469
+ FUNCTION {std.status.using.period}
470
+ { punct.period 'punct.std :=
471
+ space.normal 'space.std :=
472
+ quote.no 'quote.std :=
473
+ nline.no 'nline.std :=
474
+ cap.yes 'cap.std :=
475
+ }
476
+
477
+ FUNCTION {initialize.prev.this.status}
478
+ { punct.no 'prev.status.punct :=
479
+ space.no 'prev.status.space :=
480
+ quote.no 'prev.status.quote :=
481
+ nline.no 'prev.status.nline :=
482
+ punct.no 'this.status.punct :=
483
+ space.no 'this.status.space :=
484
+ quote.no 'this.status.quote :=
485
+ nline.no 'this.status.nline :=
486
+ cap.yes 'status.cap :=
487
+ }
488
+
489
+ FUNCTION {this.status.std}
490
+ { punct.std 'this.status.punct :=
491
+ space.std 'this.status.space :=
492
+ quote.std 'this.status.quote :=
493
+ nline.std 'this.status.nline :=
494
+ }
495
+
496
+ FUNCTION {cap.status.std}{ cap.std 'status.cap := }
497
+
498
+ FUNCTION {this.to.prev.status}
499
+ { this.status.punct 'prev.status.punct :=
500
+ this.status.space 'prev.status.space :=
501
+ this.status.quote 'prev.status.quote :=
502
+ this.status.nline 'prev.status.nline :=
503
+ }
504
+
505
+
506
+ FUNCTION {not}
507
+ { { #0 }
508
+ { #1 }
509
+ if$
510
+ }
511
+
512
+ FUNCTION {and}
513
+ { { skip$ }
514
+ { pop$ #0 }
515
+ if$
516
+ }
517
+
518
+ FUNCTION {or}
519
+ { { pop$ #1 }
520
+ { skip$ }
521
+ if$
522
+ }
523
+
524
+
525
+ % convert the strings "yes" or "no" to #1 or #0 respectively
526
+ FUNCTION {yes.no.to.int}
527
+ { "l" change.case$ duplicate$
528
+ "yes" =
529
+ { pop$ #1 }
530
+ { duplicate$ "no" =
531
+ { pop$ #0 }
532
+ { "unknown boolean " quote$ * swap$ * quote$ *
533
+ " in " * cite$ * warning$
534
+ #0
535
+ }
536
+ if$
537
+ }
538
+ if$
539
+ }
540
+
541
+
542
+ % pushes true if the single char string on the stack is in the
543
+ % range of "0" to "9"
544
+ FUNCTION {is.num}
545
+ { chr.to.int$
546
+ duplicate$ "0" chr.to.int$ < not
547
+ swap$ "9" chr.to.int$ > not and
548
+ }
549
+
550
+ % multiplies the integer on the stack by a factor of 10
551
+ FUNCTION {bump.int.mag}
552
+ { #0 'multiresult :=
553
+ { duplicate$ #0 > }
554
+ { #1 -
555
+ multiresult #10 +
556
+ 'multiresult :=
557
+ }
558
+ while$
559
+ pop$
560
+ multiresult
561
+ }
562
+
563
+ % converts a single character string on the stack to an integer
564
+ FUNCTION {char.to.integer}
565
+ { duplicate$
566
+ is.num
567
+ { chr.to.int$ "0" chr.to.int$ - }
568
+ {"noninteger character " quote$ * swap$ * quote$ *
569
+ " in integer field of " * cite$ * warning$
570
+ #0
571
+ }
572
+ if$
573
+ }
574
+
575
+ % converts a string on the stack to an integer
576
+ FUNCTION {string.to.integer}
577
+ { duplicate$ text.length$ 'namesleft :=
578
+ #1 'nameptr :=
579
+ #0 'numnames :=
580
+ { nameptr namesleft > not }
581
+ { duplicate$ nameptr #1 substring$
582
+ char.to.integer numnames bump.int.mag +
583
+ 'numnames :=
584
+ nameptr #1 +
585
+ 'nameptr :=
586
+ }
587
+ while$
588
+ pop$
589
+ numnames
590
+ }
591
+
592
+
593
+
594
+
595
+ % The output routines write out the *next* to the top (previous) item on the
596
+ % stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
597
+ % the output status for the top two items on the stack, these output
598
+ % routines have to consider the previous output status (which corresponds to
599
+ % the item that is being output). Full independent control of punctuation,
600
+ % closing quote marks, spacing, and newblock is provided.
601
+ %
602
+ % "output.nonnull" does not check for the presence of a previous empty
603
+ % item.
604
+ %
605
+ % "output" does check for the presence of a previous empty item and will
606
+ % remove an empty item rather than outputing it.
607
+ %
608
+ % "output.warn" is like "output", but will issue a warning if it detects
609
+ % an empty item.
610
+
611
+ FUNCTION {output.nonnull}
612
+ { swap$
613
+ prev.status.punct punct.comma =
614
+ { "," * }
615
+ { skip$ }
616
+ if$
617
+ prev.status.punct punct.period =
618
+ { add.period$ }
619
+ { skip$ }
620
+ if$
621
+ prev.status.quote quote.close =
622
+ { "''" * }
623
+ { skip$ }
624
+ if$
625
+ prev.status.space space.normal =
626
+ { " " * }
627
+ { skip$ }
628
+ if$
629
+ prev.status.space space.large =
630
+ { large.space * }
631
+ { skip$ }
632
+ if$
633
+ write$
634
+ prev.status.nline nline.newblock =
635
+ { newline$ "\newblock " write$ }
636
+ { skip$ }
637
+ if$
638
+ }
639
+
640
+ FUNCTION {output}
641
+ { duplicate$ empty$
642
+ 'pop$
643
+ 'output.nonnull
644
+ if$
645
+ }
646
+
647
+ FUNCTION {output.warn}
648
+ { 't :=
649
+ duplicate$ empty$
650
+ { pop$ "empty " t * " in " * cite$ * warning$ }
651
+ 'output.nonnull
652
+ if$
653
+ }
654
+
655
+ % "fin.entry" is the output routine that handles the last item of the entry
656
+ % (which will be on the top of the stack when "fin.entry" is called).
657
+
658
+ FUNCTION {fin.entry}
659
+ { this.status.punct punct.no =
660
+ { skip$ }
661
+ { add.period$ }
662
+ if$
663
+ this.status.quote quote.close =
664
+ { "''" * }
665
+ { skip$ }
666
+ if$
667
+ write$
668
+ newline$
669
+ }
670
+
671
+
672
+ FUNCTION {is.last.char.not.punct}
673
+ { duplicate$
674
+ "}" * add.period$
675
+ #-1 #1 substring$ "." =
676
+ }
677
+
678
+ FUNCTION {is.multiple.pages}
679
+ { 't :=
680
+ #0 'multiresult :=
681
+ { multiresult not
682
+ t empty$ not
683
+ and
684
+ }
685
+ { t #1 #1 substring$
686
+ duplicate$ "-" =
687
+ swap$ duplicate$ "," =
688
+ swap$ "+" =
689
+ or or
690
+ { #1 'multiresult := }
691
+ { t #2 global.max$ substring$ 't := }
692
+ if$
693
+ }
694
+ while$
695
+ multiresult
696
+ }
697
+
698
+ FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
699
+
700
+ FUNCTION {emphasize}
701
+ { duplicate$ empty$
702
+ { pop$ "" }
703
+ { "\emph{" swap$ * "}" * }
704
+ if$
705
+ }
706
+
707
+ FUNCTION {do.name.latex.cmd}
708
+ { name.latex.cmd
709
+ empty$
710
+ { skip$ }
711
+ { name.latex.cmd "{" * swap$ * "}" * }
712
+ if$
713
+ }
714
+
715
+ % IEEEtran.bst uses its own \BIBforeignlanguage command which directly
716
+ % invokes the TeX hyphenation patterns without the need of the Babel
717
+ % package. Babel does a lot more than switch hyphenation patterns and
718
+ % its loading can cause unintended effects in many class files (such as
719
+ % IEEEtran.cls).
720
+ FUNCTION {select.language}
721
+ { duplicate$ empty$ 'pop$
722
+ { language empty$ 'skip$
723
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
724
+ if$
725
+ }
726
+ if$
727
+ }
728
+
729
+ FUNCTION {tie.or.space.prefix}
730
+ { duplicate$ text.length$ #3 <
731
+ { "~" }
732
+ { " " }
733
+ if$
734
+ swap$
735
+ }
736
+
737
+ FUNCTION {get.bbl.editor}
738
+ { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
739
+
740
+ FUNCTION {space.word}{ " " swap$ * " " * }
741
+
742
+
743
+ % Field Conditioners, Converters, Checkers and External Interfaces
744
+
745
+ FUNCTION {empty.field.to.null.string}
746
+ { duplicate$ empty$
747
+ { pop$ "" }
748
+ { skip$ }
749
+ if$
750
+ }
751
+
752
+ FUNCTION {either.or.check}
753
+ { empty$
754
+ { pop$ }
755
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
756
+ if$
757
+ }
758
+
759
+ FUNCTION {empty.entry.warn}
760
+ { author empty$ title empty$ howpublished empty$
761
+ month empty$ year empty$ note empty$ url empty$
762
+ and and and and and and
763
+ { "all relevant fields are empty in " cite$ * warning$ }
764
+ 'skip$
765
+ if$
766
+ }
767
+
768
+
769
+ % The bibinfo system provides a way for the electronic parsing/acquisition
770
+ % of a bibliography's contents as is done by ReVTeX. For example, a field
771
+ % could be entered into the bibliography as:
772
+ % \bibinfo{volume}{2}
773
+ % Only the "2" would show up in the document, but the LaTeX \bibinfo command
774
+ % could do additional things with the information. IEEEtran.bst does provide
775
+ % a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
776
+ % currently not used as the bogus bibinfo functions defined here output the
777
+ % entry values directly without the \bibinfo wrapper. The bibinfo functions
778
+ % themselves (and the calls to them) are retained for possible future use.
779
+ %
780
+ % bibinfo.check avoids acting on missing fields while bibinfo.warn will
781
+ % issue a warning message if a missing field is detected. Prior to calling
782
+ % the bibinfo functions, the user should push the field value and then its
783
+ % name string, in that order.
784
+
785
+ FUNCTION {bibinfo.check}
786
+ { swap$ duplicate$ missing$
787
+ { pop$ pop$ "" }
788
+ { duplicate$ empty$
789
+ { swap$ pop$ }
790
+ { swap$ pop$ }
791
+ if$
792
+ }
793
+ if$
794
+ }
795
+
796
+ FUNCTION {bibinfo.warn}
797
+ { swap$ duplicate$ missing$
798
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
799
+ { duplicate$ empty$
800
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
801
+ { swap$ pop$ }
802
+ if$
803
+ }
804
+ if$
805
+ }
806
+
807
+
808
+ % The IEEE separates large numbers with more than 4 digits into groups of
809
+ % three. The IEEE uses a small space to separate these number groups.
810
+ % Typical applications include patent and page numbers.
811
+
812
+ % number of consecutive digits required to trigger the group separation.
813
+ FUNCTION {large.number.trigger}{ #5 }
814
+
815
+ % For numbers longer than the trigger, this is the blocksize of the groups.
816
+ % The blocksize must be less than the trigger threshold, and 2 * blocksize
817
+ % must be greater than the trigger threshold (can't do more than one
818
+ % separation on the initial trigger).
819
+ FUNCTION {large.number.blocksize}{ #3 }
820
+
821
+ % What is actually inserted between the number groups.
822
+ FUNCTION {large.number.separator}{ "\," }
823
+
824
+ % So as to save on integer variables by reusing existing ones, numnames
825
+ % holds the current number of consecutive digits read and nameptr holds
826
+ % the number that will trigger an inserted space.
827
+ FUNCTION {large.number.separate}
828
+ { 't :=
829
+ ""
830
+ #0 'numnames :=
831
+ large.number.trigger 'nameptr :=
832
+ { t empty$ not }
833
+ { t #-1 #1 substring$ is.num
834
+ { numnames #1 + 'numnames := }
835
+ { #0 'numnames :=
836
+ large.number.trigger 'nameptr :=
837
+ }
838
+ if$
839
+ t #-1 #1 substring$ swap$ *
840
+ t #-2 global.max$ substring$ 't :=
841
+ numnames nameptr =
842
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
843
+ nameptr large.number.blocksize - #1 + global.max$ substring$
844
+ large.number.separator swap$ * *
845
+ nameptr large.number.blocksize - 'numnames :=
846
+ large.number.blocksize #1 + 'nameptr :=
847
+ }
848
+ { skip$ }
849
+ if$
850
+ }
851
+ while$
852
+ }
853
+
854
+ % Converts all single dashes "-" to double dashes "--".
855
+ FUNCTION {n.dashify}
856
+ { large.number.separate
857
+ 't :=
858
+ ""
859
+ { t empty$ not }
860
+ { t #1 #1 substring$ "-" =
861
+ { t #1 #2 substring$ "--" = not
862
+ { "--" *
863
+ t #2 global.max$ substring$ 't :=
864
+ }
865
+ { { t #1 #1 substring$ "-" = }
866
+ { "-" *
867
+ t #2 global.max$ substring$ 't :=
868
+ }
869
+ while$
870
+ }
871
+ if$
872
+ }
873
+ { t #1 #1 substring$ *
874
+ t #2 global.max$ substring$ 't :=
875
+ }
876
+ if$
877
+ }
878
+ while$
879
+ }
880
+
881
+
882
+ % This function detects entries with names that are identical to that of
883
+ % the previous entry and replaces the repeated names with dashes (if the
884
+ % "is.dash.repeated.names" user control is nonzero).
885
+ FUNCTION {name.or.dash}
886
+ { 's :=
887
+ oldname empty$
888
+ { s 'oldname := s }
889
+ { s oldname =
890
+ { is.dash.repeated.names
891
+ { repeated.name.dashes }
892
+ { s 'oldname := s }
893
+ if$
894
+ }
895
+ { s 'oldname := s }
896
+ if$
897
+ }
898
+ if$
899
+ }
900
+
901
+ % Converts the number string on the top of the stack to
902
+ % "numerical ordinal form" (e.g., "7" to "7th"). There is
903
+ % no artificial limit to the upper bound of the numbers as the
904
+ % two least significant digits determine the ordinal form.
905
+ FUNCTION {num.to.ordinal}
906
+ { duplicate$ #-2 #1 substring$ "1" =
907
+ { bbl.th * }
908
+ { duplicate$ #-1 #1 substring$ "1" =
909
+ { bbl.st * }
910
+ { duplicate$ #-1 #1 substring$ "2" =
911
+ { bbl.nd * }
912
+ { duplicate$ #-1 #1 substring$ "3" =
913
+ { bbl.rd * }
914
+ { bbl.th * }
915
+ if$
916
+ }
917
+ if$
918
+ }
919
+ if$
920
+ }
921
+ if$
922
+ }
923
+
924
+ % If the string on the top of the stack begins with a number,
925
+ % (e.g., 11th) then replace the string with the leading number
926
+ % it contains. Otherwise retain the string as-is. s holds the
927
+ % extracted number, t holds the part of the string that remains
928
+ % to be scanned.
929
+ FUNCTION {extract.num}
930
+ { duplicate$ 't :=
931
+ "" 's :=
932
+ { t empty$ not }
933
+ { t #1 #1 substring$
934
+ t #2 global.max$ substring$ 't :=
935
+ duplicate$ is.num
936
+ { s swap$ * 's := }
937
+ { pop$ "" 't := }
938
+ if$
939
+ }
940
+ while$
941
+ s empty$
942
+ 'skip$
943
+ { pop$ s }
944
+ if$
945
+ }
946
+
947
+ % Converts the word number string on the top of the stack to
948
+ % Arabic string form. Will be successful up to "tenth".
949
+ FUNCTION {word.to.num}
950
+ { duplicate$ "l" change.case$ 's :=
951
+ s "first" =
952
+ { pop$ "1" }
953
+ { skip$ }
954
+ if$
955
+ s "second" =
956
+ { pop$ "2" }
957
+ { skip$ }
958
+ if$
959
+ s "third" =
960
+ { pop$ "3" }
961
+ { skip$ }
962
+ if$
963
+ s "fourth" =
964
+ { pop$ "4" }
965
+ { skip$ }
966
+ if$
967
+ s "fifth" =
968
+ { pop$ "5" }
969
+ { skip$ }
970
+ if$
971
+ s "sixth" =
972
+ { pop$ "6" }
973
+ { skip$ }
974
+ if$
975
+ s "seventh" =
976
+ { pop$ "7" }
977
+ { skip$ }
978
+ if$
979
+ s "eighth" =
980
+ { pop$ "8" }
981
+ { skip$ }
982
+ if$
983
+ s "ninth" =
984
+ { pop$ "9" }
985
+ { skip$ }
986
+ if$
987
+ s "tenth" =
988
+ { pop$ "10" }
989
+ { skip$ }
990
+ if$
991
+ }
992
+
993
+
994
+ % Converts the string on the top of the stack to numerical
995
+ % ordinal (e.g., "11th") form.
996
+ FUNCTION {convert.edition}
997
+ { duplicate$ empty$ 'skip$
998
+ { duplicate$ #1 #1 substring$ is.num
999
+ { extract.num
1000
+ num.to.ordinal
1001
+ }
1002
+ { word.to.num
1003
+ duplicate$ #1 #1 substring$ is.num
1004
+ { num.to.ordinal }
1005
+ { "edition ordinal word " quote$ * edition * quote$ *
1006
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
1007
+ }
1008
+ if$
1009
+ }
1010
+ if$
1011
+ }
1012
+ if$
1013
+ }
1014
+
1015
+
1016
+
1017
+
1018
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1019
+ %% LATEX BIBLIOGRAPHY CODE %%
1020
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1021
+
1022
+ FUNCTION {start.entry}
1023
+ { newline$
1024
+ "\bibitem{" write$
1025
+ cite$ write$
1026
+ "}" write$
1027
+ newline$
1028
+ ""
1029
+ initialize.prev.this.status
1030
+ }
1031
+
1032
+ % Here we write out all the LaTeX code that we will need. The most involved
1033
+ % code sequences are those that control the alternate interword spacing and
1034
+ % foreign language hyphenation patterns. The heavy use of \providecommand
1035
+ % gives users a way to override the defaults. Special thanks to Javier Bezos,
1036
+ % Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
1037
+ % the other gurus on comp.text.tex for their help and advice on the topic of
1038
+ % \selectlanguage, Babel and BibTeX.
1039
+ FUNCTION {begin.bib}
1040
+ { "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
1041
+ write$ newline$
1042
+ preamble$ empty$ 'skip$
1043
+ { preamble$ write$ newline$ }
1044
+ if$
1045
+ "\begin{thebibliography}{" longest.label * "}" *
1046
+ write$ newline$
1047
+ "\providecommand{\url}[1]{#1}"
1048
+ write$ newline$
1049
+ "\csname url@samestyle\endcsname"
1050
+ write$ newline$
1051
+ "\providecommand{\newblock}{\relax}"
1052
+ write$ newline$
1053
+ "\providecommand{\bibinfo}[2]{#2}"
1054
+ write$ newline$
1055
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
1056
+ write$ newline$
1057
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
1058
+ ALTinterwordstretchfactor * "}" *
1059
+ write$ newline$
1060
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
1061
+ write$ newline$
1062
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
1063
+ write$ newline$
1064
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
1065
+ write$ newline$
1066
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
1067
+ write$ newline$
1068
+ "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
1069
+ write$ newline$
1070
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
1071
+ write$ newline$
1072
+ "\typeout{** the default language instead.}%"
1073
+ write$ newline$
1074
+ "\else"
1075
+ write$ newline$
1076
+ "\language=\csname l@#1\endcsname"
1077
+ write$ newline$
1078
+ "\fi"
1079
+ write$ newline$
1080
+ "#2}}"
1081
+ write$ newline$
1082
+ "\providecommand{\BIBdecl}{\relax}"
1083
+ write$ newline$
1084
+ "\BIBdecl"
1085
+ write$ newline$
1086
+ }
1087
+
1088
+ FUNCTION {end.bib}
1089
+ { newline$ "\end{thebibliography}" write$ newline$ }
1090
+
1091
+ FUNCTION {if.url.alt.interword.spacing}
1092
+ { is.use.alt.interword.spacing
1093
+ { is.use.url
1094
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
1095
+ { skip$ }
1096
+ if$
1097
+ }
1098
+ { skip$ }
1099
+ if$
1100
+ }
1101
+
1102
+ FUNCTION {if.url.std.interword.spacing}
1103
+ { is.use.alt.interword.spacing
1104
+ { is.use.url
1105
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
1106
+ { skip$ }
1107
+ if$
1108
+ }
1109
+ { skip$ }
1110
+ if$
1111
+ }
1112
+
1113
+
1114
+
1115
+
1116
+ %%%%%%%%%%%%%%%%%%%%%%%%
1117
+ %% LONGEST LABEL PASS %%
1118
+ %%%%%%%%%%%%%%%%%%%%%%%%
1119
+
1120
+ FUNCTION {initialize.longest.label}
1121
+ { "" 'longest.label :=
1122
+ #1 'number.label :=
1123
+ #0 'longest.label.width :=
1124
+ }
1125
+
1126
+ FUNCTION {longest.label.pass}
1127
+ { type$ "ieeetranbstctl" =
1128
+ { skip$ }
1129
+ { number.label int.to.str$ 'label :=
1130
+ number.label #1 + 'number.label :=
1131
+ label width$ longest.label.width >
1132
+ { label 'longest.label :=
1133
+ label width$ 'longest.label.width :=
1134
+ }
1135
+ { skip$ }
1136
+ if$
1137
+ }
1138
+ if$
1139
+ }
1140
+
1141
+
1142
+
1143
+
1144
+ %%%%%%%%%%%%%%%%%%%%%
1145
+ %% FORMAT HANDLERS %%
1146
+ %%%%%%%%%%%%%%%%%%%%%
1147
+
1148
+ %% Lower Level Formats (used by higher level formats)
1149
+
1150
+ FUNCTION {format.address.org.or.pub.date}
1151
+ { 't :=
1152
+ ""
1153
+ year empty$
1154
+ { "empty year in " cite$ * warning$ }
1155
+ { skip$ }
1156
+ if$
1157
+ address empty$ t empty$ and
1158
+ year empty$ and month empty$ and
1159
+ { skip$ }
1160
+ { this.to.prev.status
1161
+ this.status.std
1162
+ cap.status.std
1163
+ address "address" bibinfo.check *
1164
+ t empty$
1165
+ { skip$ }
1166
+ { punct.period 'prev.status.punct :=
1167
+ space.large 'prev.status.space :=
1168
+ address empty$
1169
+ { skip$ }
1170
+ { ": " * }
1171
+ if$
1172
+ t *
1173
+ }
1174
+ if$
1175
+ year empty$ month empty$ and
1176
+ { skip$ }
1177
+ { t empty$ address empty$ and
1178
+ { skip$ }
1179
+ { ", " * }
1180
+ if$
1181
+ month empty$
1182
+ { year empty$
1183
+ { skip$ }
1184
+ { year "year" bibinfo.check * }
1185
+ if$
1186
+ }
1187
+ { month "month" bibinfo.check *
1188
+ year empty$
1189
+ { skip$ }
1190
+ { " " * year "year" bibinfo.check * }
1191
+ if$
1192
+ }
1193
+ if$
1194
+ }
1195
+ if$
1196
+ }
1197
+ if$
1198
+ }
1199
+
1200
+
1201
+ FUNCTION {format.names}
1202
+ { 'bibinfo :=
1203
+ duplicate$ empty$ 'skip$ {
1204
+ this.to.prev.status
1205
+ this.status.std
1206
+ 's :=
1207
+ "" 't :=
1208
+ #1 'nameptr :=
1209
+ s num.names$ 'numnames :=
1210
+ numnames 'namesleft :=
1211
+ { namesleft #0 > }
1212
+ { s nameptr
1213
+ name.format.string
1214
+ format.name$
1215
+ bibinfo bibinfo.check
1216
+ 't :=
1217
+ nameptr #1 >
1218
+ { nameptr num.names.shown.with.forced.et.al #1 + =
1219
+ numnames max.num.names.before.forced.et.al >
1220
+ is.forced.et.al and and
1221
+ { "others" 't :=
1222
+ #1 'namesleft :=
1223
+ }
1224
+ { skip$ }
1225
+ if$
1226
+ namesleft #1 >
1227
+ { ", " * t do.name.latex.cmd * }
1228
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
1229
+ { 't := }
1230
+ { pop$ }
1231
+ if$
1232
+ t "others" =
1233
+ { " " * bbl.etal emphasize * }
1234
+ { numnames #2 >
1235
+ { "," * }
1236
+ { skip$ }
1237
+ if$
1238
+ bbl.and
1239
+ space.word * t do.name.latex.cmd *
1240
+ }
1241
+ if$
1242
+ }
1243
+ if$
1244
+ }
1245
+ { t do.name.latex.cmd }
1246
+ if$
1247
+ nameptr #1 + 'nameptr :=
1248
+ namesleft #1 - 'namesleft :=
1249
+ }
1250
+ while$
1251
+ cap.status.std
1252
+ } if$
1253
+ }
1254
+
1255
+
1256
+
1257
+
1258
+ %% Higher Level Formats
1259
+
1260
+ %% addresses/locations
1261
+
1262
+ FUNCTION {format.address}
1263
+ { address duplicate$ empty$ 'skip$
1264
+ { this.to.prev.status
1265
+ this.status.std
1266
+ cap.status.std
1267
+ }
1268
+ if$
1269
+ }
1270
+
1271
+
1272
+
1273
+ %% author/editor names
1274
+
1275
+ FUNCTION {format.authors}{ author "author" format.names }
1276
+
1277
+ FUNCTION {format.editors}
1278
+ { editor "editor" format.names duplicate$ empty$ 'skip$
1279
+ { ", " *
1280
+ get.bbl.editor
1281
+ capitalize
1282
+ *
1283
+ }
1284
+ if$
1285
+ }
1286
+
1287
+
1288
+
1289
+ %% date
1290
+
1291
+ FUNCTION {format.date}
1292
+ {
1293
+ month "month" bibinfo.check duplicate$ empty$
1294
+ year "year" bibinfo.check duplicate$ empty$
1295
+ { swap$ 'skip$
1296
+ { this.to.prev.status
1297
+ this.status.std
1298
+ cap.status.std
1299
+ "there's a month but no year in " cite$ * warning$ }
1300
+ if$
1301
+ *
1302
+ }
1303
+ { this.to.prev.status
1304
+ this.status.std
1305
+ cap.status.std
1306
+ swap$ 'skip$
1307
+ {
1308
+ swap$
1309
+ " " * swap$
1310
+ }
1311
+ if$
1312
+ *
1313
+ }
1314
+ if$
1315
+ }
1316
+
1317
+ FUNCTION {format.date.electronic}
1318
+ { month "month" bibinfo.check duplicate$ empty$
1319
+ year "year" bibinfo.check duplicate$ empty$
1320
+ { swap$
1321
+ { pop$ }
1322
+ { "there's a month but no year in " cite$ * warning$
1323
+ pop$ ")" * "(" swap$ *
1324
+ this.to.prev.status
1325
+ punct.no 'this.status.punct :=
1326
+ space.normal 'this.status.space :=
1327
+ quote.no 'this.status.quote :=
1328
+ cap.yes 'status.cap :=
1329
+ }
1330
+ if$
1331
+ }
1332
+ { swap$
1333
+ { swap$ pop$ ")" * "(" swap$ * }
1334
+ { "(" swap$ * ", " * swap$ * ")" * }
1335
+ if$
1336
+ this.to.prev.status
1337
+ punct.no 'this.status.punct :=
1338
+ space.normal 'this.status.space :=
1339
+ quote.no 'this.status.quote :=
1340
+ cap.yes 'status.cap :=
1341
+ }
1342
+ if$
1343
+ }
1344
+
1345
+
1346
+
1347
+ %% edition/title
1348
+
1349
+ % Note: The IEEE considers the edition to be closely associated with
1350
+ % the title of a book. So, in IEEEtran.bst the edition is normally handled
1351
+ % within the formatting of the title. The format.edition function is
1352
+ % retained here for possible future use.
1353
+ FUNCTION {format.edition}
1354
+ { edition duplicate$ empty$ 'skip$
1355
+ { this.to.prev.status
1356
+ this.status.std
1357
+ convert.edition
1358
+ status.cap
1359
+ { "t" }
1360
+ { "l" }
1361
+ if$ change.case$
1362
+ "edition" bibinfo.check
1363
+ "~" * bbl.edition *
1364
+ cap.status.std
1365
+ }
1366
+ if$
1367
+ }
1368
+
1369
+ % This is used to format the booktitle of a conference proceedings.
1370
+ % Here we use the "intype" field to provide the user a way to
1371
+ % override the word "in" (e.g., with things like "presented at")
1372
+ % Use of intype stops the emphasis of the booktitle to indicate that
1373
+ % we no longer mean the written conference proceedings, but the
1374
+ % conference itself.
1375
+ FUNCTION {format.in.booktitle}
1376
+ { booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
1377
+ { this.to.prev.status
1378
+ this.status.std
1379
+ select.language
1380
+ intype missing$
1381
+ { emphasize
1382
+ bbl.in " " *
1383
+ }
1384
+ { intype " " * }
1385
+ if$
1386
+ swap$ *
1387
+ cap.status.std
1388
+ }
1389
+ if$
1390
+ }
1391
+
1392
+ % This is used to format the booktitle of collection.
1393
+ % Here the "intype" field is not supported, but "edition" is.
1394
+ FUNCTION {format.in.booktitle.edition}
1395
+ { booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
1396
+ { this.to.prev.status
1397
+ this.status.std
1398
+ select.language
1399
+ emphasize
1400
+ edition empty$ 'skip$
1401
+ { ", " *
1402
+ edition
1403
+ convert.edition
1404
+ "l" change.case$
1405
+ * "~" * bbl.edition *
1406
+ }
1407
+ if$
1408
+ bbl.in " " * swap$ *
1409
+ cap.status.std
1410
+ }
1411
+ if$
1412
+ }
1413
+
1414
+ FUNCTION {format.article.title}
1415
+ { title duplicate$ empty$ 'skip$
1416
+ { this.to.prev.status
1417
+ this.status.std
1418
+ "t" change.case$
1419
+ }
1420
+ if$
1421
+ "title" bibinfo.check
1422
+ duplicate$ empty$ 'skip$
1423
+ { quote.close 'this.status.quote :=
1424
+ is.last.char.not.punct
1425
+ { punct.std 'this.status.punct := }
1426
+ { punct.no 'this.status.punct := }
1427
+ if$
1428
+ select.language
1429
+ "``" swap$ *
1430
+ cap.status.std
1431
+ }
1432
+ if$
1433
+ }
1434
+
1435
+ FUNCTION {format.article.title.electronic}
1436
+ { title duplicate$ empty$ 'skip$
1437
+ { this.to.prev.status
1438
+ this.status.std
1439
+ cap.status.std
1440
+ "t" change.case$
1441
+ }
1442
+ if$
1443
+ "title" bibinfo.check
1444
+ duplicate$ empty$
1445
+ { skip$ }
1446
+ { select.language }
1447
+ if$
1448
+ }
1449
+
1450
+ FUNCTION {format.book.title.edition}
1451
+ { title "title" bibinfo.check
1452
+ duplicate$ empty$
1453
+ { "empty title in " cite$ * warning$ }
1454
+ { this.to.prev.status
1455
+ this.status.std
1456
+ select.language
1457
+ emphasize
1458
+ edition empty$ 'skip$
1459
+ { ", " *
1460
+ edition
1461
+ convert.edition
1462
+ status.cap
1463
+ { "t" }
1464
+ { "l" }
1465
+ if$
1466
+ change.case$
1467
+ * "~" * bbl.edition *
1468
+ }
1469
+ if$
1470
+ cap.status.std
1471
+ }
1472
+ if$
1473
+ }
1474
+
1475
+ FUNCTION {format.book.title}
1476
+ { title "title" bibinfo.check
1477
+ duplicate$ empty$ 'skip$
1478
+ { this.to.prev.status
1479
+ this.status.std
1480
+ cap.status.std
1481
+ select.language
1482
+ emphasize
1483
+ }
1484
+ if$
1485
+ }
1486
+
1487
+
1488
+
1489
+ %% journal
1490
+
1491
+ FUNCTION {format.journal}
1492
+ { journal duplicate$ empty$ 'skip$
1493
+ { this.to.prev.status
1494
+ this.status.std
1495
+ cap.status.std
1496
+ select.language
1497
+ emphasize
1498
+ }
1499
+ if$
1500
+ }
1501
+
1502
+
1503
+
1504
+ %% how published
1505
+
1506
+ FUNCTION {format.howpublished}
1507
+ { howpublished duplicate$ empty$ 'skip$
1508
+ { this.to.prev.status
1509
+ this.status.std
1510
+ cap.status.std
1511
+ }
1512
+ if$
1513
+ }
1514
+
1515
+
1516
+
1517
+ %% institutions/organization/publishers/school
1518
+
1519
+ FUNCTION {format.institution}
1520
+ { institution duplicate$ empty$ 'skip$
1521
+ { this.to.prev.status
1522
+ this.status.std
1523
+ cap.status.std
1524
+ }
1525
+ if$
1526
+ }
1527
+
1528
+ FUNCTION {format.organization}
1529
+ { organization duplicate$ empty$ 'skip$
1530
+ { this.to.prev.status
1531
+ this.status.std
1532
+ cap.status.std
1533
+ }
1534
+ if$
1535
+ }
1536
+
1537
+ FUNCTION {format.address.publisher.date}
1538
+ { publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
1539
+
1540
+ FUNCTION {format.address.publisher.date.nowarn}
1541
+ { publisher "publisher" bibinfo.check format.address.org.or.pub.date }
1542
+
1543
+ FUNCTION {format.address.organization.date}
1544
+ { organization "organization" bibinfo.check format.address.org.or.pub.date }
1545
+
1546
+ FUNCTION {format.school}
1547
+ { school duplicate$ empty$ 'skip$
1548
+ { this.to.prev.status
1549
+ this.status.std
1550
+ cap.status.std
1551
+ }
1552
+ if$
1553
+ }
1554
+
1555
+
1556
+
1557
+ %% volume/number/series/chapter/pages
1558
+
1559
+ FUNCTION {format.volume}
1560
+ { volume empty.field.to.null.string
1561
+ duplicate$ empty$ 'skip$
1562
+ { this.to.prev.status
1563
+ this.status.std
1564
+ bbl.volume
1565
+ status.cap
1566
+ { capitalize }
1567
+ { skip$ }
1568
+ if$
1569
+ swap$ tie.or.space.prefix
1570
+ "volume" bibinfo.check
1571
+ * *
1572
+ cap.status.std
1573
+ }
1574
+ if$
1575
+ }
1576
+
1577
+ FUNCTION {format.number}
1578
+ { number empty.field.to.null.string
1579
+ duplicate$ empty$ 'skip$
1580
+ { this.to.prev.status
1581
+ this.status.std
1582
+ status.cap
1583
+ { bbl.number capitalize }
1584
+ { bbl.number }
1585
+ if$
1586
+ swap$ tie.or.space.prefix
1587
+ "number" bibinfo.check
1588
+ * *
1589
+ cap.status.std
1590
+ }
1591
+ if$
1592
+ }
1593
+
1594
+ FUNCTION {format.number.if.use.for.article}
1595
+ { is.use.number.for.article
1596
+ { format.number }
1597
+ { "" }
1598
+ if$
1599
+ }
1600
+
1601
+ % The IEEE does not seem to tie the series so closely with the volume
1602
+ % and number as is done in other bibliography styles. Instead the
1603
+ % series is treated somewhat like an extension of the title.
1604
+ FUNCTION {format.series}
1605
+ { series empty$
1606
+ { "" }
1607
+ { this.to.prev.status
1608
+ this.status.std
1609
+ bbl.series " " *
1610
+ series "series" bibinfo.check *
1611
+ cap.status.std
1612
+ }
1613
+ if$
1614
+ }
1615
+
1616
+
1617
+ FUNCTION {format.chapter}
1618
+ { chapter empty$
1619
+ { "" }
1620
+ { this.to.prev.status
1621
+ this.status.std
1622
+ type empty$
1623
+ { bbl.chapter }
1624
+ { type "l" change.case$
1625
+ "type" bibinfo.check
1626
+ }
1627
+ if$
1628
+ chapter tie.or.space.prefix
1629
+ "chapter" bibinfo.check
1630
+ * *
1631
+ cap.status.std
1632
+ }
1633
+ if$
1634
+ }
1635
+
1636
+
1637
+ % The intended use of format.paper is for paper numbers of inproceedings.
1638
+ % The paper type can be overridden via the type field.
1639
+ % We allow the type to be displayed even if the paper number is absent
1640
+ % for things like "postdeadline paper"
1641
+ FUNCTION {format.paper}
1642
+ { is.use.paper
1643
+ { paper empty$
1644
+ { type empty$
1645
+ { "" }
1646
+ { this.to.prev.status
1647
+ this.status.std
1648
+ type "type" bibinfo.check
1649
+ cap.status.std
1650
+ }
1651
+ if$
1652
+ }
1653
+ { this.to.prev.status
1654
+ this.status.std
1655
+ type empty$
1656
+ { bbl.paper }
1657
+ { type "type" bibinfo.check }
1658
+ if$
1659
+ " " * paper
1660
+ "paper" bibinfo.check
1661
+ *
1662
+ cap.status.std
1663
+ }
1664
+ if$
1665
+ }
1666
+ { "" }
1667
+ if$
1668
+ }
1669
+
1670
+
1671
+ FUNCTION {format.pages}
1672
+ { pages duplicate$ empty$ 'skip$
1673
+ { this.to.prev.status
1674
+ this.status.std
1675
+ duplicate$ is.multiple.pages
1676
+ {
1677
+ bbl.pages swap$
1678
+ n.dashify
1679
+ }
1680
+ {
1681
+ bbl.page swap$
1682
+ }
1683
+ if$
1684
+ tie.or.space.prefix
1685
+ "pages" bibinfo.check
1686
+ * *
1687
+ cap.status.std
1688
+ }
1689
+ if$
1690
+ }
1691
+
1692
+
1693
+
1694
+ %% technical report number
1695
+
1696
+ FUNCTION {format.tech.report.number}
1697
+ { number "number" bibinfo.check
1698
+ this.to.prev.status
1699
+ this.status.std
1700
+ cap.status.std
1701
+ type duplicate$ empty$
1702
+ { pop$
1703
+ bbl.techrep
1704
+ }
1705
+ { skip$ }
1706
+ if$
1707
+ "type" bibinfo.check
1708
+ swap$ duplicate$ empty$
1709
+ { pop$ }
1710
+ { tie.or.space.prefix * * }
1711
+ if$
1712
+ }
1713
+
1714
+
1715
+
1716
+ %% note
1717
+
1718
+ FUNCTION {format.note}
1719
+ { note empty$
1720
+ { "" }
1721
+ { this.to.prev.status
1722
+ this.status.std
1723
+ punct.period 'this.status.punct :=
1724
+ note #1 #1 substring$
1725
+ duplicate$ "{" =
1726
+ { skip$ }
1727
+ { status.cap
1728
+ { "u" }
1729
+ { "l" }
1730
+ if$
1731
+ change.case$
1732
+ }
1733
+ if$
1734
+ note #2 global.max$ substring$ * "note" bibinfo.check
1735
+ cap.yes 'status.cap :=
1736
+ }
1737
+ if$
1738
+ }
1739
+
1740
+
1741
+
1742
+ %% patent
1743
+
1744
+ FUNCTION {format.patent.date}
1745
+ { this.to.prev.status
1746
+ this.status.std
1747
+ year empty$
1748
+ { monthfiled duplicate$ empty$
1749
+ { "monthfiled" bibinfo.check pop$ "" }
1750
+ { "monthfiled" bibinfo.check }
1751
+ if$
1752
+ dayfiled duplicate$ empty$
1753
+ { "dayfiled" bibinfo.check pop$ "" * }
1754
+ { "dayfiled" bibinfo.check
1755
+ monthfiled empty$
1756
+ { "dayfiled without a monthfiled in " cite$ * warning$
1757
+ *
1758
+ }
1759
+ { " " swap$ * * }
1760
+ if$
1761
+ }
1762
+ if$
1763
+ yearfiled empty$
1764
+ { "no year or yearfiled in " cite$ * warning$ }
1765
+ { yearfiled "yearfiled" bibinfo.check
1766
+ swap$
1767
+ duplicate$ empty$
1768
+ { pop$ }
1769
+ { ", " * swap$ * }
1770
+ if$
1771
+ }
1772
+ if$
1773
+ }
1774
+ { month duplicate$ empty$
1775
+ { "month" bibinfo.check pop$ "" }
1776
+ { "month" bibinfo.check }
1777
+ if$
1778
+ day duplicate$ empty$
1779
+ { "day" bibinfo.check pop$ "" * }
1780
+ { "day" bibinfo.check
1781
+ month empty$
1782
+ { "day without a month in " cite$ * warning$
1783
+ *
1784
+ }
1785
+ { " " swap$ * * }
1786
+ if$
1787
+ }
1788
+ if$
1789
+ year "year" bibinfo.check
1790
+ swap$
1791
+ duplicate$ empty$
1792
+ { pop$ }
1793
+ { ", " * swap$ * }
1794
+ if$
1795
+ }
1796
+ if$
1797
+ cap.status.std
1798
+ }
1799
+
1800
+ FUNCTION {format.patent.nationality.type.number}
1801
+ { this.to.prev.status
1802
+ this.status.std
1803
+ nationality duplicate$ empty$
1804
+ { "nationality" bibinfo.warn pop$ "" }
1805
+ { "nationality" bibinfo.check
1806
+ duplicate$ "l" change.case$ "united states" =
1807
+ { pop$ bbl.patentUS }
1808
+ { skip$ }
1809
+ if$
1810
+ " " *
1811
+ }
1812
+ if$
1813
+ type empty$
1814
+ { bbl.patent "type" bibinfo.check }
1815
+ { type "type" bibinfo.check }
1816
+ if$
1817
+ *
1818
+ number duplicate$ empty$
1819
+ { "number" bibinfo.warn pop$ }
1820
+ { "number" bibinfo.check
1821
+ large.number.separate
1822
+ swap$ " " * swap$ *
1823
+ }
1824
+ if$
1825
+ cap.status.std
1826
+ }
1827
+
1828
+
1829
+
1830
+ %% standard
1831
+
1832
+ FUNCTION {format.organization.institution.standard.type.number}
1833
+ { this.to.prev.status
1834
+ this.status.std
1835
+ organization duplicate$ empty$
1836
+ { pop$
1837
+ institution duplicate$ empty$
1838
+ { "institution" bibinfo.warn }
1839
+ { "institution" bibinfo.warn " " * }
1840
+ if$
1841
+ }
1842
+ { "organization" bibinfo.warn " " * }
1843
+ if$
1844
+ type empty$
1845
+ { bbl.standard "type" bibinfo.check }
1846
+ { type "type" bibinfo.check }
1847
+ if$
1848
+ *
1849
+ number duplicate$ empty$
1850
+ { "number" bibinfo.check pop$ }
1851
+ { "number" bibinfo.check
1852
+ large.number.separate
1853
+ swap$ " " * swap$ *
1854
+ }
1855
+ if$
1856
+ cap.status.std
1857
+ }
1858
+
1859
+ FUNCTION {format.revision}
1860
+ { revision empty$
1861
+ { "" }
1862
+ { this.to.prev.status
1863
+ this.status.std
1864
+ bbl.revision
1865
+ revision tie.or.space.prefix
1866
+ "revision" bibinfo.check
1867
+ * *
1868
+ cap.status.std
1869
+ }
1870
+ if$
1871
+ }
1872
+
1873
+
1874
+ %% thesis
1875
+
1876
+ FUNCTION {format.master.thesis.type}
1877
+ { this.to.prev.status
1878
+ this.status.std
1879
+ type empty$
1880
+ {
1881
+ bbl.mthesis
1882
+ }
1883
+ {
1884
+ type "type" bibinfo.check
1885
+ }
1886
+ if$
1887
+ cap.status.std
1888
+ }
1889
+
1890
+ FUNCTION {format.phd.thesis.type}
1891
+ { this.to.prev.status
1892
+ this.status.std
1893
+ type empty$
1894
+ {
1895
+ bbl.phdthesis
1896
+ }
1897
+ {
1898
+ type "type" bibinfo.check
1899
+ }
1900
+ if$
1901
+ cap.status.std
1902
+ }
1903
+
1904
+
1905
+
1906
+ %% URL
1907
+
1908
+ FUNCTION {format.url}
1909
+ { is.use.url
1910
+ { url empty$
1911
+ { "" }
1912
+ { this.to.prev.status
1913
+ this.status.std
1914
+ cap.yes 'status.cap :=
1915
+ name.url.prefix " " *
1916
+ "\url{" * url * "}" *
1917
+ punct.no 'this.status.punct :=
1918
+ punct.period 'prev.status.punct :=
1919
+ space.normal 'this.status.space :=
1920
+ space.normal 'prev.status.space :=
1921
+ quote.no 'this.status.quote :=
1922
+ }
1923
+ if$
1924
+ }
1925
+ { "" }
1926
+ if$
1927
+ }
1928
+
1929
+
1930
+
1931
+
1932
+ %%%%%%%%%%%%%%%%%%%%
1933
+ %% ENTRY HANDLERS %%
1934
+ %%%%%%%%%%%%%%%%%%%%
1935
+
1936
+
1937
+ % Note: In many journals, the IEEE (or the authors) tend not to show the number
1938
+ % for articles, so the display of the number is controlled here by the
1939
+ % switch "is.use.number.for.article"
1940
+ FUNCTION {article}
1941
+ { std.status.using.comma
1942
+ start.entry
1943
+ if.url.alt.interword.spacing
1944
+ format.authors "author" output.warn
1945
+ name.or.dash
1946
+ format.article.title "title" output.warn
1947
+ format.journal "journal" bibinfo.check "journal" output.warn
1948
+ format.volume output
1949
+ format.number.if.use.for.article output
1950
+ format.pages output
1951
+ format.date "year" output.warn
1952
+ format.note output
1953
+ format.url output
1954
+ fin.entry
1955
+ if.url.std.interword.spacing
1956
+ }
1957
+
1958
+ FUNCTION {book}
1959
+ { std.status.using.comma
1960
+ start.entry
1961
+ if.url.alt.interword.spacing
1962
+ author empty$
1963
+ { format.editors "author and editor" output.warn }
1964
+ { format.authors output.nonnull }
1965
+ if$
1966
+ name.or.dash
1967
+ format.book.title.edition output
1968
+ format.series output
1969
+ author empty$
1970
+ { skip$ }
1971
+ { format.editors output }
1972
+ if$
1973
+ format.address.publisher.date output
1974
+ format.volume output
1975
+ format.number output
1976
+ format.note output
1977
+ format.url output
1978
+ fin.entry
1979
+ if.url.std.interword.spacing
1980
+ }
1981
+
1982
+ FUNCTION {booklet}
1983
+ { std.status.using.comma
1984
+ start.entry
1985
+ if.url.alt.interword.spacing
1986
+ format.authors output
1987
+ name.or.dash
1988
+ format.article.title "title" output.warn
1989
+ format.howpublished "howpublished" bibinfo.check output
1990
+ format.organization "organization" bibinfo.check output
1991
+ format.address "address" bibinfo.check output
1992
+ format.date output
1993
+ format.note output
1994
+ format.url output
1995
+ fin.entry
1996
+ if.url.std.interword.spacing
1997
+ }
1998
+
1999
+ FUNCTION {electronic}
2000
+ { std.status.using.period
2001
+ start.entry
2002
+ if.url.alt.interword.spacing
2003
+ format.authors output
2004
+ name.or.dash
2005
+ format.date.electronic output
2006
+ format.article.title.electronic output
2007
+ format.howpublished "howpublished" bibinfo.check output
2008
+ format.organization "organization" bibinfo.check output
2009
+ format.address "address" bibinfo.check output
2010
+ format.note output
2011
+ format.url output
2012
+ fin.entry
2013
+ empty.entry.warn
2014
+ if.url.std.interword.spacing
2015
+ }
2016
+
2017
+ FUNCTION {inbook}
2018
+ { std.status.using.comma
2019
+ start.entry
2020
+ if.url.alt.interword.spacing
2021
+ author empty$
2022
+ { format.editors "author and editor" output.warn }
2023
+ { format.authors output.nonnull }
2024
+ if$
2025
+ name.or.dash
2026
+ format.book.title.edition output
2027
+ format.series output
2028
+ format.address.publisher.date output
2029
+ format.volume output
2030
+ format.number output
2031
+ format.chapter output
2032
+ format.pages output
2033
+ format.note output
2034
+ format.url output
2035
+ fin.entry
2036
+ if.url.std.interword.spacing
2037
+ }
2038
+
2039
+ FUNCTION {incollection}
2040
+ { std.status.using.comma
2041
+ start.entry
2042
+ if.url.alt.interword.spacing
2043
+ format.authors "author" output.warn
2044
+ name.or.dash
2045
+ format.article.title "title" output.warn
2046
+ format.in.booktitle.edition "booktitle" output.warn
2047
+ format.series output
2048
+ format.editors output
2049
+ format.address.publisher.date.nowarn output
2050
+ format.volume output
2051
+ format.number output
2052
+ format.chapter output
2053
+ format.pages output
2054
+ format.note output
2055
+ format.url output
2056
+ fin.entry
2057
+ if.url.std.interword.spacing
2058
+ }
2059
+
2060
+ FUNCTION {inproceedings}
2061
+ { std.status.using.comma
2062
+ start.entry
2063
+ if.url.alt.interword.spacing
2064
+ format.authors "author" output.warn
2065
+ name.or.dash
2066
+ format.article.title "title" output.warn
2067
+ format.in.booktitle "booktitle" output.warn
2068
+ format.series output
2069
+ format.editors output
2070
+ format.volume output
2071
+ format.number output
2072
+ publisher empty$
2073
+ { format.address.organization.date output }
2074
+ { format.organization "organization" bibinfo.check output
2075
+ format.address.publisher.date output
2076
+ }
2077
+ if$
2078
+ format.paper output
2079
+ format.pages output
2080
+ format.note output
2081
+ format.url output
2082
+ fin.entry
2083
+ if.url.std.interword.spacing
2084
+ }
2085
+
2086
+ FUNCTION {manual}
2087
+ { std.status.using.comma
2088
+ start.entry
2089
+ if.url.alt.interword.spacing
2090
+ format.authors output
2091
+ name.or.dash
2092
+ format.book.title.edition "title" output.warn
2093
+ format.howpublished "howpublished" bibinfo.check output
2094
+ format.organization "organization" bibinfo.check output
2095
+ format.address "address" bibinfo.check output
2096
+ format.date output
2097
+ format.note output
2098
+ format.url output
2099
+ fin.entry
2100
+ if.url.std.interword.spacing
2101
+ }
2102
+
2103
+ FUNCTION {mastersthesis}
2104
+ { std.status.using.comma
2105
+ start.entry
2106
+ if.url.alt.interword.spacing
2107
+ format.authors "author" output.warn
2108
+ name.or.dash
2109
+ format.article.title "title" output.warn
2110
+ format.master.thesis.type output.nonnull
2111
+ format.school "school" bibinfo.warn output
2112
+ format.address "address" bibinfo.check output
2113
+ format.date "year" output.warn
2114
+ format.note output
2115
+ format.url output
2116
+ fin.entry
2117
+ if.url.std.interword.spacing
2118
+ }
2119
+
2120
+ FUNCTION {misc}
2121
+ { std.status.using.comma
2122
+ start.entry
2123
+ if.url.alt.interword.spacing
2124
+ format.authors output
2125
+ name.or.dash
2126
+ format.article.title output
2127
+ format.howpublished "howpublished" bibinfo.check output
2128
+ format.organization "organization" bibinfo.check output
2129
+ format.address "address" bibinfo.check output
2130
+ format.pages output
2131
+ format.date output
2132
+ format.note output
2133
+ format.url output
2134
+ fin.entry
2135
+ empty.entry.warn
2136
+ if.url.std.interword.spacing
2137
+ }
2138
+
2139
+ FUNCTION {patent}
2140
+ { std.status.using.comma
2141
+ start.entry
2142
+ if.url.alt.interword.spacing
2143
+ format.authors output
2144
+ name.or.dash
2145
+ format.article.title output
2146
+ format.patent.nationality.type.number output
2147
+ format.patent.date output
2148
+ format.note output
2149
+ format.url output
2150
+ fin.entry
2151
+ empty.entry.warn
2152
+ if.url.std.interword.spacing
2153
+ }
2154
+
2155
+ FUNCTION {periodical}
2156
+ { std.status.using.comma
2157
+ start.entry
2158
+ if.url.alt.interword.spacing
2159
+ format.editors output
2160
+ name.or.dash
2161
+ format.book.title "title" output.warn
2162
+ format.series output
2163
+ format.volume output
2164
+ format.number output
2165
+ format.organization "organization" bibinfo.check output
2166
+ format.date "year" output.warn
2167
+ format.note output
2168
+ format.url output
2169
+ fin.entry
2170
+ if.url.std.interword.spacing
2171
+ }
2172
+
2173
+ FUNCTION {phdthesis}
2174
+ { std.status.using.comma
2175
+ start.entry
2176
+ if.url.alt.interword.spacing
2177
+ format.authors "author" output.warn
2178
+ name.or.dash
2179
+ format.article.title "title" output.warn
2180
+ format.phd.thesis.type output.nonnull
2181
+ format.school "school" bibinfo.warn output
2182
+ format.address "address" bibinfo.check output
2183
+ format.date "year" output.warn
2184
+ format.note output
2185
+ format.url output
2186
+ fin.entry
2187
+ if.url.std.interword.spacing
2188
+ }
2189
+
2190
+ FUNCTION {proceedings}
2191
+ { std.status.using.comma
2192
+ start.entry
2193
+ if.url.alt.interword.spacing
2194
+ format.editors output
2195
+ name.or.dash
2196
+ format.book.title "title" output.warn
2197
+ format.series output
2198
+ format.volume output
2199
+ format.number output
2200
+ publisher empty$
2201
+ { format.address.organization.date output }
2202
+ { format.organization "organization" bibinfo.check output
2203
+ format.address.publisher.date output
2204
+ }
2205
+ if$
2206
+ format.note output
2207
+ format.url output
2208
+ fin.entry
2209
+ if.url.std.interword.spacing
2210
+ }
2211
+
2212
+ FUNCTION {standard}
2213
+ { std.status.using.comma
2214
+ start.entry
2215
+ if.url.alt.interword.spacing
2216
+ format.authors output
2217
+ name.or.dash
2218
+ format.book.title "title" output.warn
2219
+ format.howpublished "howpublished" bibinfo.check output
2220
+ format.organization.institution.standard.type.number output
2221
+ format.revision output
2222
+ format.date output
2223
+ format.note output
2224
+ format.url output
2225
+ fin.entry
2226
+ if.url.std.interword.spacing
2227
+ }
2228
+
2229
+ FUNCTION {techreport}
2230
+ { std.status.using.comma
2231
+ start.entry
2232
+ if.url.alt.interword.spacing
2233
+ format.authors "author" output.warn
2234
+ name.or.dash
2235
+ format.article.title "title" output.warn
2236
+ format.howpublished "howpublished" bibinfo.check output
2237
+ format.institution "institution" bibinfo.warn output
2238
+ format.address "address" bibinfo.check output
2239
+ format.tech.report.number output.nonnull
2240
+ format.date "year" output.warn
2241
+ format.note output
2242
+ format.url output
2243
+ fin.entry
2244
+ if.url.std.interword.spacing
2245
+ }
2246
+
2247
+ FUNCTION {unpublished}
2248
+ { std.status.using.comma
2249
+ start.entry
2250
+ if.url.alt.interword.spacing
2251
+ format.authors "author" output.warn
2252
+ name.or.dash
2253
+ format.article.title "title" output.warn
2254
+ format.date output
2255
+ format.note "note" output.warn
2256
+ format.url output
2257
+ fin.entry
2258
+ if.url.std.interword.spacing
2259
+ }
2260
+
2261
+
2262
+ % The special entry type which provides the user interface to the
2263
+ % BST controls
2264
+ FUNCTION {IEEEtranBSTCTL}
2265
+ { is.print.banners.to.terminal
2266
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
2267
+ top$
2268
+ }
2269
+ { skip$ }
2270
+ if$
2271
+ CTLuse_article_number
2272
+ empty$
2273
+ { skip$ }
2274
+ { CTLuse_article_number
2275
+ yes.no.to.int
2276
+ 'is.use.number.for.article :=
2277
+ }
2278
+ if$
2279
+ CTLuse_paper
2280
+ empty$
2281
+ { skip$ }
2282
+ { CTLuse_paper
2283
+ yes.no.to.int
2284
+ 'is.use.paper :=
2285
+ }
2286
+ if$
2287
+ CTLuse_url
2288
+ empty$
2289
+ { skip$ }
2290
+ { CTLuse_url
2291
+ yes.no.to.int
2292
+ 'is.use.url :=
2293
+ }
2294
+ if$
2295
+ CTLuse_forced_etal
2296
+ empty$
2297
+ { skip$ }
2298
+ { CTLuse_forced_etal
2299
+ yes.no.to.int
2300
+ 'is.forced.et.al :=
2301
+ }
2302
+ if$
2303
+ CTLmax_names_forced_etal
2304
+ empty$
2305
+ { skip$ }
2306
+ { CTLmax_names_forced_etal
2307
+ string.to.integer
2308
+ 'max.num.names.before.forced.et.al :=
2309
+ }
2310
+ if$
2311
+ CTLnames_show_etal
2312
+ empty$
2313
+ { skip$ }
2314
+ { CTLnames_show_etal
2315
+ string.to.integer
2316
+ 'num.names.shown.with.forced.et.al :=
2317
+ }
2318
+ if$
2319
+ CTLuse_alt_spacing
2320
+ empty$
2321
+ { skip$ }
2322
+ { CTLuse_alt_spacing
2323
+ yes.no.to.int
2324
+ 'is.use.alt.interword.spacing :=
2325
+ }
2326
+ if$
2327
+ CTLalt_stretch_factor
2328
+ empty$
2329
+ { skip$ }
2330
+ { CTLalt_stretch_factor
2331
+ 'ALTinterwordstretchfactor :=
2332
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
2333
+ ALTinterwordstretchfactor * "}" *
2334
+ write$ newline$
2335
+ }
2336
+ if$
2337
+ CTLdash_repeated_names
2338
+ empty$
2339
+ { skip$ }
2340
+ { CTLdash_repeated_names
2341
+ yes.no.to.int
2342
+ 'is.dash.repeated.names :=
2343
+ }
2344
+ if$
2345
+ CTLname_format_string
2346
+ empty$
2347
+ { skip$ }
2348
+ { CTLname_format_string
2349
+ 'name.format.string :=
2350
+ }
2351
+ if$
2352
+ CTLname_latex_cmd
2353
+ empty$
2354
+ { skip$ }
2355
+ { CTLname_latex_cmd
2356
+ 'name.latex.cmd :=
2357
+ }
2358
+ if$
2359
+ CTLname_url_prefix
2360
+ missing$
2361
+ { skip$ }
2362
+ { CTLname_url_prefix
2363
+ 'name.url.prefix :=
2364
+ }
2365
+ if$
2366
+
2367
+
2368
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
2369
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
2370
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
2371
+ }
2372
+ { skip$ }
2373
+ if$
2374
+ }
2375
+
2376
+
2377
+ %%%%%%%%%%%%%%%%%%%
2378
+ %% ENTRY ALIASES %%
2379
+ %%%%%%%%%%%%%%%%%%%
2380
+ FUNCTION {conference}{inproceedings}
2381
+ FUNCTION {online}{electronic}
2382
+ FUNCTION {internet}{electronic}
2383
+ FUNCTION {webpage}{electronic}
2384
+ FUNCTION {www}{electronic}
2385
+ FUNCTION {default.type}{misc}
2386
+
2387
+
2388
+
2389
+ %%%%%%%%%%%%%%%%%%
2390
+ %% MAIN PROGRAM %%
2391
+ %%%%%%%%%%%%%%%%%%
2392
+
2393
+ READ
2394
+
2395
+ EXECUTE {initialize.controls}
2396
+ EXECUTE {initialize.status.constants}
2397
+ EXECUTE {banner.message}
2398
+
2399
+ EXECUTE {initialize.longest.label}
2400
+ ITERATE {longest.label.pass}
2401
+
2402
+ EXECUTE {begin.bib}
2403
+ ITERATE {call.type$}
2404
+ EXECUTE {end.bib}
2405
+
2406
+ EXECUTE{completed.message}
2407
+
2408
+
2409
+ %% That's all folks, mds.