@research-copilot/plugin 1.1.17 → 1.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (800) hide show
  1. package/README.md +18 -9
  2. package/dist/.claude-plugin/plugin.json +1 -1
  3. package/dist/.codex-plugin/plugin.toml +1 -1
  4. package/dist/.cursor-plugin/plugin.json +1 -1
  5. package/dist/.gemini-plugin/plugin.json +1 -1
  6. package/dist/.opencode-plugin/plugin.json +1 -1
  7. package/dist/.windsurf-plugin/plugin.json +1 -1
  8. package/dist/skills/ablation-planner/SKILL.md +126 -0
  9. package/dist/skills/alphaxiv/SKILL.md +186 -0
  10. package/dist/skills/analyze-results/SKILL.md +45 -0
  11. package/dist/skills/arxiv/SKILL.md +210 -0
  12. package/dist/skills/auto-paper-improvement-loop/SKILL.md +574 -0
  13. package/dist/skills/auto-review-loop/SKILL.md +370 -0
  14. package/dist/skills/auto-review-loop-llm/SKILL.md +247 -0
  15. package/dist/skills/auto-review-loop-minimax/SKILL.md +290 -0
  16. package/dist/skills/benchmark-paper-template/SKILL.md +142 -0
  17. package/dist/skills/benchmark-paper-template/references/benchmark-design.md +180 -0
  18. package/dist/skills/benchmark-paper-template/references/checklist.md +113 -0
  19. package/dist/skills/benchmark-paper-template/references/construction-pipeline.md +127 -0
  20. package/dist/skills/benchmark-paper-template/references/experiments.md +159 -0
  21. package/dist/skills/benchmark-paper-template/references/gap-analysis.md +86 -0
  22. package/dist/skills/benchmark-paper-template/references/instantiation-template.md +194 -0
  23. package/dist/skills/benchmark-paper-template/references/orchestrator-notes.md +96 -0
  24. package/dist/skills/benchmark-paper-template/references/paper-structure.md +209 -0
  25. package/dist/skills/citation-audit/SKILL.md +494 -0
  26. package/dist/skills/claims-drafting/SKILL.md +239 -0
  27. package/dist/skills/comm-lit-review/SKILL.md +299 -0
  28. package/dist/skills/comm-lit-review/references/domain-taxonomy.md +57 -0
  29. package/dist/skills/comm-lit-review/references/output-template.md +37 -0
  30. package/dist/skills/comm-lit-review/references/source-policy.md +99 -0
  31. package/dist/skills/comm-lit-review/references/venue-tiering.md +112 -0
  32. package/dist/skills/composer/SKILL.md +840 -0
  33. package/dist/skills/composer/references/section_guides.md +675 -0
  34. package/dist/skills/composer/references/writing_standards.md +629 -0
  35. package/dist/skills/composer/scripts/chapter_quality_check.py +470 -0
  36. package/dist/skills/composer/scripts/final_evaluation.py +550 -0
  37. package/dist/skills/deepxiv/SKILL.md +142 -0
  38. package/dist/skills/dse-loop/SKILL.md +277 -0
  39. package/dist/skills/embodiment-description/SKILL.md +129 -0
  40. package/dist/skills/exa-search/SKILL.md +192 -0
  41. package/dist/skills/experiment-audit/SKILL.md +262 -0
  42. package/dist/skills/experiment-bridge/SKILL.md +316 -0
  43. package/dist/skills/experiment-plan/SKILL.md +249 -0
  44. package/dist/skills/experiment-queue/SKILL.md +380 -0
  45. package/dist/skills/experiment-queue/scripts/build_manifest.py +142 -0
  46. package/dist/skills/experiment-queue/scripts/queue_manager.py +426 -0
  47. package/dist/skills/feishu-notify/SKILL.md +155 -0
  48. package/dist/skills/figure-description/SKILL.md +138 -0
  49. package/dist/skills/figure-designer/SKILL.md +207 -0
  50. package/dist/skills/figure-designer/references/design-rules.md +99 -0
  51. package/dist/skills/figure-designer/references/experimental-results.md +127 -0
  52. package/dist/skills/figure-designer/references/motivated-example.md +138 -0
  53. package/dist/skills/figure-designer/references/solution-overview.md +145 -0
  54. package/dist/skills/figure-designer/references/tools.md +124 -0
  55. package/dist/skills/figure-spec/SKILL.md +252 -0
  56. package/dist/skills/figure-spec/scripts/figure_renderer.py +799 -0
  57. package/dist/skills/formula-derivation/SKILL.md +280 -0
  58. package/dist/skills/gemini-search/SKILL.md +205 -0
  59. package/dist/skills/grant-proposal/SKILL.md +625 -0
  60. package/dist/skills/humanizer/AGENTS.md +25 -0
  61. package/dist/skills/humanizer/SKILL.md +621 -0
  62. package/dist/skills/idea-creator/SKILL.md +311 -0
  63. package/dist/skills/idea-discovery/SKILL.md +340 -0
  64. package/dist/skills/idea-discovery-robot/SKILL.md +362 -0
  65. package/dist/skills/idea-evaluator/SKILL.md +265 -0
  66. package/dist/skills/idea-evaluator/references/fatal-flaws.md +192 -0
  67. package/dist/skills/idea-evaluator/references/five-dimensions.md +251 -0
  68. package/dist/skills/idea-evaluator/references/lifecycle-capability-matching.md +177 -0
  69. package/dist/skills/idea-evaluator/references/paradigm-elephant.md +112 -0
  70. package/dist/skills/idea-evaluator/references/paradigm-examples.md +107 -0
  71. package/dist/skills/idea-evaluator/references/paradigm-first-principles.md +115 -0
  72. package/dist/skills/idea-evaluator/references/paradigm-hamming.md +137 -0
  73. package/dist/skills/idea-evaluator/references/paradigm-shift-probe.md +160 -0
  74. package/dist/skills/idea-evaluator/references/paradigm-technology-cycle.md +116 -0
  75. package/dist/skills/idea-evaluator/references/worked-examples.md +206 -0
  76. package/dist/skills/interview-cheatsheet/SKILL.md +245 -0
  77. package/dist/skills/intro-drafter/SKILL.md +250 -0
  78. package/dist/skills/intro-drafter/references/contribution-patterns.md +116 -0
  79. package/dist/skills/intro-drafter/references/flowchart.md +204 -0
  80. package/dist/skills/intro-drafter/references/paper-types.md +155 -0
  81. package/dist/skills/intro-drafter/references/running-example.md +133 -0
  82. package/dist/skills/intro-drafter/references/worked-examples.md +161 -0
  83. package/dist/skills/invention-structuring/SKILL.md +188 -0
  84. package/dist/skills/jurisdiction-format/SKILL.md +192 -0
  85. package/dist/skills/kill-argument/SKILL.md +384 -0
  86. package/dist/skills/llm-wiki/.mise.toml +2 -0
  87. package/dist/skills/llm-wiki/.nvmrc +1 -0
  88. package/dist/skills/llm-wiki/AGENTS.md +132 -0
  89. package/dist/skills/llm-wiki/CHANGELOG.md +459 -0
  90. package/dist/skills/llm-wiki/CLAUDE.md +109 -0
  91. package/dist/skills/llm-wiki/HERMES.md +44 -0
  92. package/dist/skills/llm-wiki/SKILL.md +1133 -0
  93. package/dist/skills/llm-wiki/assets/graph-demo.gif +0 -0
  94. package/dist/skills/llm-wiki/assets/graph-preview.png +0 -0
  95. package/dist/skills/llm-wiki/deps/LICENSE-d3.txt +13 -0
  96. package/dist/skills/llm-wiki/deps/LICENSE-marked.txt +44 -0
  97. package/dist/skills/llm-wiki/deps/LICENSE-purify.txt +568 -0
  98. package/{LICENSE → dist/skills/llm-wiki/deps/LICENSE-roughjs.txt} +1 -1
  99. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/SKILL.md +261 -0
  100. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/references/config/first-time-setup.md +106 -0
  101. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/cdp.ts +179 -0
  102. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/constants.ts +13 -0
  103. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/defuddle-converter.ts +58 -0
  104. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/html-to-markdown.ts +135 -0
  105. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/legacy-converter.ts +629 -0
  106. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/main.ts +314 -0
  107. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/markdown-conversion-shared.ts +305 -0
  108. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/media-localizer.ts +317 -0
  109. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/package.json +14 -0
  110. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/paths.ts +29 -0
  111. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/package.json +9 -0
  112. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.test.ts +307 -0
  113. package/dist/skills/llm-wiki/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.ts +523 -0
  114. package/dist/skills/llm-wiki/deps/d3.min.js +2 -0
  115. package/dist/skills/llm-wiki/deps/marked.min.js +6 -0
  116. package/dist/skills/llm-wiki/deps/purify.min.js +3 -0
  117. package/dist/skills/llm-wiki/deps/rough.min.js +7 -0
  118. package/dist/skills/llm-wiki/deps/youtube-transcript/SKILL.md +47 -0
  119. package/dist/skills/llm-wiki/deps/youtube-transcript/scripts/get_transcript.py +72 -0
  120. package/dist/skills/llm-wiki/docs/design/oriental-atlas/DESIGN.md +183 -0
  121. package/dist/skills/llm-wiki/docs/design/oriental-atlas/design-brief.md +170 -0
  122. package/dist/skills/llm-wiki/docs/design/oriental-atlas/oriental-editorial-atlas.html +1908 -0
  123. package/dist/skills/llm-wiki/docs/design/oriental-atlas/reviews/result-review.md +68 -0
  124. package/dist/skills/llm-wiki/docs/plans/2026-06-15-omp-tool-status-events-phased-plan.md +655 -0
  125. package/dist/skills/llm-wiki/docs/plans/2026-06-15-omp-tool-status-events-progress.json +913 -0
  126. package/dist/skills/llm-wiki/docs/spark/2026-06-15-omp-tool-status-events-design.md +174 -0
  127. package/dist/skills/llm-wiki/install.ps1 +87 -0
  128. package/dist/skills/llm-wiki/install.sh +722 -0
  129. package/dist/skills/llm-wiki/package-lock.json +10309 -0
  130. package/dist/skills/llm-wiki/package.json +24 -0
  131. package/dist/skills/llm-wiki/packages/graph-engine/package.json +33 -0
  132. package/dist/skills/llm-wiki/packages/graph-engine/src/anim/.gitkeep +1 -0
  133. package/dist/skills/llm-wiki/packages/graph-engine/src/anim/index.ts +179 -0
  134. package/dist/skills/llm-wiki/packages/graph-engine/src/diff.ts +121 -0
  135. package/dist/skills/llm-wiki/packages/graph-engine/src/graph-node.ts +37 -0
  136. package/dist/skills/llm-wiki/packages/graph-engine/src/index.ts +140 -0
  137. package/dist/skills/llm-wiki/packages/graph-engine/src/model/atlas.ts +18 -0
  138. package/dist/skills/llm-wiki/packages/graph-engine/src/model/index.ts +6 -0
  139. package/dist/skills/llm-wiki/packages/graph-engine/src/model/labels.ts +11 -0
  140. package/dist/skills/llm-wiki/packages/graph-engine/src/model/learning.ts +8 -0
  141. package/dist/skills/llm-wiki/packages/graph-engine/src/model/legacy-helpers.ts +1373 -0
  142. package/dist/skills/llm-wiki/packages/graph-engine/src/model/queue.ts +7 -0
  143. package/dist/skills/llm-wiki/packages/graph-engine/src/model/storage.ts +4 -0
  144. package/dist/skills/llm-wiki/packages/graph-engine/src/model/visibility.ts +9 -0
  145. package/dist/skills/llm-wiki/packages/graph-engine/src/render/.gitkeep +1 -0
  146. package/dist/skills/llm-wiki/packages/graph-engine/src/render/index.ts +59 -0
  147. package/dist/skills/llm-wiki/packages/graph-engine/src/render/legend.ts +25 -0
  148. package/dist/skills/llm-wiki/packages/graph-engine/src/render/model.ts +593 -0
  149. package/dist/skills/llm-wiki/packages/graph-engine/src/render/preview.ts +65 -0
  150. package/dist/skills/llm-wiki/packages/graph-engine/src/render/search.ts +48 -0
  151. package/dist/skills/llm-wiki/packages/graph-engine/src/render/static-renderer.ts +2783 -0
  152. package/dist/skills/llm-wiki/packages/graph-engine/src/render/toolbar.ts +40 -0
  153. package/dist/skills/llm-wiki/packages/graph-engine/src/render/viewport.ts +272 -0
  154. package/dist/skills/llm-wiki/packages/graph-engine/src/select/.gitkeep +1 -0
  155. package/dist/skills/llm-wiki/packages/graph-engine/src/select/index.ts +189 -0
  156. package/dist/skills/llm-wiki/packages/graph-engine/src/sim/index.ts +298 -0
  157. package/dist/skills/llm-wiki/packages/graph-engine/src/sim/pins.ts +96 -0
  158. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/.gitkeep +1 -0
  159. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/index.ts +8 -0
  160. package/dist/skills/llm-wiki/packages/graph-engine/src/themes/tokens.ts +107 -0
  161. package/dist/skills/llm-wiki/packages/graph-engine/src/types.ts +313 -0
  162. package/dist/skills/llm-wiki/packages/graph-engine/test/anim.test.ts +100 -0
  163. package/dist/skills/llm-wiki/packages/graph-engine/test/diff.test.ts +133 -0
  164. package/dist/skills/llm-wiki/packages/graph-engine/test/helpers.test.ts +275 -0
  165. package/dist/skills/llm-wiki/packages/graph-engine/test/learning.test.ts +259 -0
  166. package/dist/skills/llm-wiki/packages/graph-engine/test/preview.test.ts +56 -0
  167. package/dist/skills/llm-wiki/packages/graph-engine/test/queue.test.ts +114 -0
  168. package/dist/skills/llm-wiki/packages/graph-engine/test/render-model.test.ts +322 -0
  169. package/dist/skills/llm-wiki/packages/graph-engine/test/runtime-state.test.ts +281 -0
  170. package/dist/skills/llm-wiki/packages/graph-engine/test/search-and-legend.test.ts +111 -0
  171. package/dist/skills/llm-wiki/packages/graph-engine/test/select.test.ts +168 -0
  172. package/dist/skills/llm-wiki/packages/graph-engine/test/sim.test.ts +123 -0
  173. package/dist/skills/llm-wiki/packages/graph-engine/test/themes.test.ts +62 -0
  174. package/dist/skills/llm-wiki/packages/graph-engine/test/toolbar.test.ts +64 -0
  175. package/dist/skills/llm-wiki/packages/graph-engine/test/viewport.test.ts +167 -0
  176. package/dist/skills/llm-wiki/packages/graph-engine/tsconfig.json +17 -0
  177. package/dist/skills/llm-wiki/packages/graph-engine/vite.config.ts +15 -0
  178. package/dist/skills/llm-wiki/platforms/claude/CLAUDE.md +37 -0
  179. package/dist/skills/llm-wiki/platforms/claude/companions/llm-wiki-upgrade/SKILL.md +95 -0
  180. package/dist/skills/llm-wiki/platforms/codex/AGENTS.md +23 -0
  181. package/dist/skills/llm-wiki/scripts/adapter-state.sh +424 -0
  182. package/dist/skills/llm-wiki/scripts/build-graph-data.sh +395 -0
  183. package/dist/skills/llm-wiki/scripts/build-graph-html.sh +453 -0
  184. package/dist/skills/llm-wiki/scripts/cache.sh +352 -0
  185. package/dist/skills/llm-wiki/scripts/create-source-page.sh +100 -0
  186. package/dist/skills/llm-wiki/scripts/delete-helper.sh +68 -0
  187. package/dist/skills/llm-wiki/scripts/graph-analysis.js +732 -0
  188. package/dist/skills/llm-wiki/scripts/hook-session-start.sh +46 -0
  189. package/dist/skills/llm-wiki/scripts/init-wiki.sh +95 -0
  190. package/dist/skills/llm-wiki/scripts/lib/source-signal-eligibility.js +158 -0
  191. package/dist/skills/llm-wiki/scripts/lint-fix.sh +114 -0
  192. package/dist/skills/llm-wiki/scripts/lint-runner.sh +217 -0
  193. package/dist/skills/llm-wiki/scripts/runtime-context.sh +77 -0
  194. package/dist/skills/llm-wiki/scripts/shared-config.sh +83 -0
  195. package/dist/skills/llm-wiki/scripts/source-record-contract.tsv +10 -0
  196. package/dist/skills/llm-wiki/scripts/source-registry.sh +349 -0
  197. package/dist/skills/llm-wiki/scripts/source-registry.tsv +10 -0
  198. package/dist/skills/llm-wiki/scripts/source-signal-coverage.js +83 -0
  199. package/dist/skills/llm-wiki/scripts/validate-step1.sh +144 -0
  200. package/dist/skills/llm-wiki/scripts/wiki-compat.sh +267 -0
  201. package/dist/skills/llm-wiki/setup.sh +8 -0
  202. package/dist/skills/llm-wiki/templates/entity-template.md +30 -0
  203. package/dist/skills/llm-wiki/templates/graph-styles/wash/footer.html +27 -0
  204. package/dist/skills/llm-wiki/templates/graph-styles/wash/graph-wash-helpers.js +1326 -0
  205. package/dist/skills/llm-wiki/templates/graph-styles/wash/graph-wash.js +1009 -0
  206. package/dist/skills/llm-wiki/templates/graph-styles/wash/header.html +2002 -0
  207. package/dist/skills/llm-wiki/templates/index-en-template.md +51 -0
  208. package/dist/skills/llm-wiki/templates/index-template.md +51 -0
  209. package/dist/skills/llm-wiki/templates/log-en-template.md +11 -0
  210. package/dist/skills/llm-wiki/templates/log-template.md +11 -0
  211. package/dist/skills/llm-wiki/templates/overview-en-template.md +41 -0
  212. package/dist/skills/llm-wiki/templates/overview-template.md +41 -0
  213. package/dist/skills/llm-wiki/templates/purpose-en-template.md +16 -0
  214. package/dist/skills/llm-wiki/templates/purpose-template.md +16 -0
  215. package/dist/skills/llm-wiki/templates/query-template.md +19 -0
  216. package/dist/skills/llm-wiki/templates/schema-template.md +185 -0
  217. package/dist/skills/llm-wiki/templates/source-template.md +51 -0
  218. package/dist/skills/llm-wiki/templates/synthesis-template.md +25 -0
  219. package/dist/skills/llm-wiki/templates/topic-template.md +35 -0
  220. package/dist/skills/llm-wiki/tests/adapter-state.sh +338 -0
  221. package/dist/skills/llm-wiki/tests/browser/graph-density-preview.mjs +53 -0
  222. package/dist/skills/llm-wiki/tests/browser/graph-html-insights.mjs +41 -0
  223. package/dist/skills/llm-wiki/tests/browser/graph-node-slim.mjs +71 -0
  224. package/dist/skills/llm-wiki/tests/browser/graph-stage-4-5.mjs +717 -0
  225. package/dist/skills/llm-wiki/tests/expected/graph-data-empty.json +60 -0
  226. package/dist/skills/llm-wiki/tests/expected/graph-data-sample.json +396 -0
  227. package/dist/skills/llm-wiki/tests/expected/graph-interactive-basic.html +1736 -0
  228. package/dist/skills/llm-wiki/tests/expected/lint-output.txt +44 -0
  229. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/index.md +1 -0
  230. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Alpha.md +10 -0
  231. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Beta.md +7 -0
  232. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Delta.md +8 -0
  233. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/entities/Gamma.md +8 -0
  234. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/queries/20260422-abc.md +10 -0
  235. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/synthesis/Crystal.md +8 -0
  236. package/dist/skills/llm-wiki/tests/fixtures/coverage-sample-wiki/wiki/topics/Overview.md +9 -0
  237. package/dist/skills/llm-wiki/tests/fixtures/graph-data-empty-wiki/wiki/entities/.gitkeep +0 -0
  238. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/purpose.md +3 -0
  239. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Attention.md +7 -0
  240. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Decoder.md +7 -0
  241. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Encoder.md +7 -0
  242. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/GPT.md +7 -0
  243. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/entities/Transformer.md +13 -0
  244. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/sources/paper.md +9 -0
  245. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/topics/arch.md +12 -0
  246. package/dist/skills/llm-wiki/tests/fixtures/graph-data-sample-wiki/wiki/topics/finetune.md +9 -0
  247. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-basic/wiki/graph-data.json +40 -0
  248. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-dense/wiki/graph-data.json +3965 -0
  249. package/dist/skills/llm-wiki/tests/fixtures/graph-interactive-multicomm/wiki/graph-data.json +212 -0
  250. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/index.md +14 -0
  251. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/C++.md +6 -0
  252. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Lonely.md +4 -0
  253. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Other.md +8 -0
  254. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/entities/Real.md +7 -0
  255. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/sources/2026-01-01-test-source.md +15 -0
  256. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/sources/2026-02-01-inline-img.md +12 -0
  257. package/dist/skills/llm-wiki/tests/fixtures/lint-sample-wiki/wiki/topics/AIbasic.md +3 -0
  258. package/dist/skills/llm-wiki/tests/graph-analysis-helper.regression-1.sh +237 -0
  259. package/dist/skills/llm-wiki/tests/graph-browser-stage-4-5.regression-1.sh +157 -0
  260. package/dist/skills/llm-wiki/tests/graph-build-failures.regression-1.sh +91 -0
  261. package/dist/skills/llm-wiki/tests/graph-data-confidence-merge.regression-1.sh +309 -0
  262. package/dist/skills/llm-wiki/tests/graph-data-source-paths.regression-1.sh +49 -0
  263. package/dist/skills/llm-wiki/tests/graph-html-a11y.regression-1.sh +47 -0
  264. package/dist/skills/llm-wiki/tests/graph-html-brand-link.regression-1.sh +47 -0
  265. package/dist/skills/llm-wiki/tests/graph-html-density.regression-1.sh +228 -0
  266. package/dist/skills/llm-wiki/tests/graph-html-drawer-neighbors.regression-1.sh +47 -0
  267. package/dist/skills/llm-wiki/tests/graph-html-insights.regression-1.sh +80 -0
  268. package/dist/skills/llm-wiki/tests/graph-html-long-label.regression-1.sh +92 -0
  269. package/dist/skills/llm-wiki/tests/graph-html-minimap.regression-1.sh +51 -0
  270. package/dist/skills/llm-wiki/tests/graph-html-mobile.regression-1.sh +48 -0
  271. package/dist/skills/llm-wiki/tests/graph-html-oriental-atlas-contract.regression-1.sh +94 -0
  272. package/dist/skills/llm-wiki/tests/graph-html-oriental-design-contract.regression-1.sh +82 -0
  273. package/dist/skills/llm-wiki/tests/graph-html-search.regression-1.sh +52 -0
  274. package/dist/skills/llm-wiki/tests/graph-html-styles.regression-1.sh +66 -0
  275. package/dist/skills/llm-wiki/tests/graph-html-toolbar.regression-1.sh +62 -0
  276. package/dist/skills/llm-wiki/tests/js/graph-wash-bootstrap.test.js +110 -0
  277. package/dist/skills/llm-wiki/tests/js/graph-wash-helpers.test.js +296 -0
  278. package/dist/skills/llm-wiki/tests/js/graph-wash-learning.test.js +260 -0
  279. package/dist/skills/llm-wiki/tests/js/graph-wash-queue.test.js +115 -0
  280. package/dist/skills/llm-wiki/tests/js/graph-wash-runtime-state.test.js +282 -0
  281. package/dist/skills/llm-wiki/tests/js/source-signal-coverage.test.js +48 -0
  282. package/dist/skills/llm-wiki/tests/js/source-signal-eligibility.test.js +202 -0
  283. package/dist/skills/llm-wiki/tests/lib/graph-html-engine-helpers.sh +110 -0
  284. package/dist/skills/llm-wiki/tests/lint-output.regression-1.sh +32 -0
  285. package/dist/skills/llm-wiki/tests/regression.sh +1754 -0
  286. package/dist/skills/llm-wiki/workbench/.claude/skills/.gitkeep +0 -0
  287. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/SKILL.md +590 -0
  288. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/__init__.py +1 -0
  289. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/accept_changes.py +135 -0
  290. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/comment.py +318 -0
  291. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/__init__.py +0 -0
  292. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  293. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  294. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/pack.py +159 -0
  295. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  296. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  297. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  298. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  299. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  300. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  301. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  302. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  303. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  304. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  305. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  306. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  307. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  308. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  309. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  310. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  311. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  312. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  313. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  314. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  315. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  316. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  317. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  318. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  319. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  320. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  321. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  322. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  323. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  324. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  325. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  326. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  327. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  328. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  329. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  330. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  331. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  332. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  333. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  334. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/soffice.py +183 -0
  335. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/unpack.py +132 -0
  336. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validate.py +111 -0
  337. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/__init__.py +15 -0
  338. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/base.py +847 -0
  339. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/docx.py +446 -0
  340. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/pptx.py +275 -0
  341. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/office/validators/redlining.py +247 -0
  342. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/comments.xml +3 -0
  343. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  344. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  345. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
  346. package/dist/skills/llm-wiki/workbench/.claude/skills/docx/scripts/templates/people.xml +3 -0
  347. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/SKILL.md +314 -0
  348. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/forms.md +294 -0
  349. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/reference.md +612 -0
  350. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  351. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/check_fillable_fields.py +11 -0
  352. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  353. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/create_validation_image.py +37 -0
  354. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/extract_form_field_info.py +122 -0
  355. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/extract_form_structure.py +115 -0
  356. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  357. package/dist/skills/llm-wiki/workbench/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  358. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/SKILL.md +232 -0
  359. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/editing.md +205 -0
  360. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/pptxgenjs.md +420 -0
  361. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/__init__.py +0 -0
  362. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/add_slide.py +195 -0
  363. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/clean.py +286 -0
  364. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  365. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  366. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  367. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/pack.py +159 -0
  368. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  369. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  370. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  371. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  372. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  373. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  374. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  375. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  376. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  377. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  378. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  379. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  380. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  381. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  382. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  383. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  384. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  385. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  386. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  387. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  388. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  389. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  390. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  391. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  392. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  393. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  394. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  395. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  396. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  397. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  398. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  399. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  400. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  401. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  402. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  403. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  404. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  405. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  406. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  407. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/soffice.py +183 -0
  408. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/unpack.py +132 -0
  409. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validate.py +111 -0
  410. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/__init__.py +15 -0
  411. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/base.py +847 -0
  412. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/docx.py +446 -0
  413. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/pptx.py +275 -0
  414. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/office/validators/redlining.py +247 -0
  415. package/dist/skills/llm-wiki/workbench/.claude/skills/pptx/scripts/thumbnail.py +289 -0
  416. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/SKILL.md +292 -0
  417. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  418. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  419. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  420. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/pack.py +159 -0
  421. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  422. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  423. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  424. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  425. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  426. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  427. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  428. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  429. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  430. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  431. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  432. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  433. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  434. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  435. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  436. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  437. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  438. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  439. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  440. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  441. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  442. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  443. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  444. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  445. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  446. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  447. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  448. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  449. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  450. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  451. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  452. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  453. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  454. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  455. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  456. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  457. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  458. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  459. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  460. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/soffice.py +183 -0
  461. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/unpack.py +132 -0
  462. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validate.py +111 -0
  463. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  464. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/base.py +847 -0
  465. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/docx.py +446 -0
  466. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  467. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  468. package/dist/skills/llm-wiki/workbench/.claude/skills/xlsx/scripts/recalc.py +184 -0
  469. package/dist/skills/llm-wiki/workbench/AGENTS.md +110 -0
  470. package/dist/skills/llm-wiki/workbench/CLAUDE.md +54 -0
  471. package/dist/skills/llm-wiki/workbench/PRODUCT.md +1268 -0
  472. package/dist/skills/llm-wiki/workbench/docs/current-kb-retrieval-design.md +587 -0
  473. package/dist/skills/llm-wiki/workbench/docs/graph-evolution-1-design.md +210 -0
  474. package/dist/skills/llm-wiki/workbench/docs/stage-2-design.md +1139 -0
  475. package/dist/skills/llm-wiki/workbench/docs/stage-3-design.md +1269 -0
  476. package/dist/skills/llm-wiki/workbench/docs/stage-3.5-design.md +1164 -0
  477. package/dist/skills/llm-wiki/workbench/docs/stage-4-design.md +504 -0
  478. package/dist/skills/llm-wiki/workbench/docs/stage-4.5-design.md +195 -0
  479. package/dist/skills/llm-wiki/workbench/docs/superpowers/specs/2026-05-28-resizable-preview-layout-design.md +165 -0
  480. package/dist/skills/llm-wiki/workbench/docs/superpowers/specs/2026-05-28-settings-panel-scroll-fix.md +50 -0
  481. package/dist/skills/llm-wiki/workbench/server/package.json +29 -0
  482. package/dist/skills/llm-wiki/workbench/server/src/agent.ts +457 -0
  483. package/dist/skills/llm-wiki/workbench/server/src/artifacts.ts +248 -0
  484. package/dist/skills/llm-wiki/workbench/server/src/auth.ts +164 -0
  485. package/dist/skills/llm-wiki/workbench/server/src/config.ts +130 -0
  486. package/dist/skills/llm-wiki/workbench/server/src/conversations.test.ts +121 -0
  487. package/dist/skills/llm-wiki/workbench/server/src/conversations.ts +255 -0
  488. package/dist/skills/llm-wiki/workbench/server/src/digest/batch.ts +189 -0
  489. package/dist/skills/llm-wiki/workbench/server/src/digest/concurrency.test.ts +36 -0
  490. package/dist/skills/llm-wiki/workbench/server/src/digest/concurrency.ts +31 -0
  491. package/dist/skills/llm-wiki/workbench/server/src/digest/subagent.ts +91 -0
  492. package/dist/skills/llm-wiki/workbench/server/src/extensions/artifacts.ts +81 -0
  493. package/dist/skills/llm-wiki/workbench/server/src/extensions/knowledge-base.ts +263 -0
  494. package/dist/skills/llm-wiki/workbench/server/src/extensions/new-wiki.ts +42 -0
  495. package/dist/skills/llm-wiki/workbench/server/src/extensions/synthesis.ts +172 -0
  496. package/dist/skills/llm-wiki/workbench/server/src/graph-watcher.test.ts +196 -0
  497. package/dist/skills/llm-wiki/workbench/server/src/graph.test.ts +84 -0
  498. package/dist/skills/llm-wiki/workbench/server/src/graph.ts +379 -0
  499. package/dist/skills/llm-wiki/workbench/server/src/index.ts +1148 -0
  500. package/dist/skills/llm-wiki/workbench/server/src/knowledge-bases.test.ts +30 -0
  501. package/dist/skills/llm-wiki/workbench/server/src/knowledge-bases.ts +321 -0
  502. package/dist/skills/llm-wiki/workbench/server/src/pages.test.ts +16 -0
  503. package/dist/skills/llm-wiki/workbench/server/src/pages.ts +158 -0
  504. package/dist/skills/llm-wiki/workbench/server/src/retrieval.test.ts +151 -0
  505. package/dist/skills/llm-wiki/workbench/server/src/retrieval.ts +427 -0
  506. package/dist/skills/llm-wiki/workbench/server/src/tool-status-events.test.ts +363 -0
  507. package/dist/skills/llm-wiki/workbench/server/src/tool-status-events.ts +616 -0
  508. package/dist/skills/llm-wiki/workbench/server/src/wiki-init.test.ts +19 -0
  509. package/dist/skills/llm-wiki/workbench/server/src/wiki-init.ts +188 -0
  510. package/dist/skills/llm-wiki/workbench/server/tsconfig.json +10 -0
  511. package/dist/skills/llm-wiki/workbench/tsconfig.json +20 -0
  512. package/dist/skills/llm-wiki/workbench/web/components.json +21 -0
  513. package/dist/skills/llm-wiki/workbench/web/eslint.config.js +22 -0
  514. package/dist/skills/llm-wiki/workbench/web/index.html +13 -0
  515. package/dist/skills/llm-wiki/workbench/web/package.json +48 -0
  516. package/dist/skills/llm-wiki/workbench/web/src/App.tsx +749 -0
  517. package/dist/skills/llm-wiki/workbench/web/src/components/AddExternalDialog.tsx +373 -0
  518. package/dist/skills/llm-wiki/workbench/web/src/components/ArtifactView.tsx +15 -0
  519. package/dist/skills/llm-wiki/workbench/web/src/components/BatchDigestPanel.tsx +106 -0
  520. package/dist/skills/llm-wiki/workbench/web/src/components/ChatPanel.tsx +821 -0
  521. package/dist/skills/llm-wiki/workbench/web/src/components/CommandMenu.tsx +65 -0
  522. package/dist/skills/llm-wiki/workbench/web/src/components/ExportButtons.tsx +54 -0
  523. package/dist/skills/llm-wiki/workbench/web/src/components/GraphPanel.tsx +516 -0
  524. package/dist/skills/llm-wiki/workbench/web/src/components/GraphReader.tsx +48 -0
  525. package/dist/skills/llm-wiki/workbench/web/src/components/GraphSelection.tsx +100 -0
  526. package/dist/skills/llm-wiki/workbench/web/src/components/MarkdownView.tsx +56 -0
  527. package/dist/skills/llm-wiki/workbench/web/src/components/NewWikiDialog.tsx +101 -0
  528. package/dist/skills/llm-wiki/workbench/web/src/components/RefMenu.tsx +40 -0
  529. package/dist/skills/llm-wiki/workbench/web/src/components/RightDrawer.tsx +227 -0
  530. package/dist/skills/llm-wiki/workbench/web/src/components/SettingsPanel.tsx +331 -0
  531. package/dist/skills/llm-wiki/workbench/web/src/components/Sidebar.tsx +436 -0
  532. package/dist/skills/llm-wiki/workbench/web/src/components/ToolHistorySummary.tsx +123 -0
  533. package/dist/skills/llm-wiki/workbench/web/src/components/ToolStatusRunway.tsx +90 -0
  534. package/dist/skills/llm-wiki/workbench/web/src/components/renderers/DownloadOnlyRenderer.tsx +88 -0
  535. package/dist/skills/llm-wiki/workbench/web/src/components/renderers/HtmlRenderer.tsx +92 -0
  536. package/dist/skills/llm-wiki/workbench/web/src/components/ui/button.tsx +52 -0
  537. package/dist/skills/llm-wiki/workbench/web/src/components/ui/command.tsx +50 -0
  538. package/dist/skills/llm-wiki/workbench/web/src/components/ui/dialog.tsx +156 -0
  539. package/dist/skills/llm-wiki/workbench/web/src/components/ui/input.tsx +21 -0
  540. package/dist/skills/llm-wiki/workbench/web/src/components/ui/tooltip.tsx +57 -0
  541. package/dist/skills/llm-wiki/workbench/web/src/index.css +1737 -0
  542. package/dist/skills/llm-wiki/workbench/web/src/lib/api.ts +648 -0
  543. package/dist/skills/llm-wiki/workbench/web/src/lib/drawer-state.ts +79 -0
  544. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-reader.ts +25 -0
  545. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-selection-drawer.ts +35 -0
  546. package/dist/skills/llm-wiki/workbench/web/src/lib/graph-selection.ts +96 -0
  547. package/dist/skills/llm-wiki/workbench/web/src/lib/legacy-tool-status.ts +113 -0
  548. package/dist/skills/llm-wiki/workbench/web/src/lib/sse.ts +72 -0
  549. package/dist/skills/llm-wiki/workbench/web/src/lib/tool-status-format.ts +170 -0
  550. package/dist/skills/llm-wiki/workbench/web/src/lib/tool-status-model.ts +392 -0
  551. package/dist/skills/llm-wiki/workbench/web/src/lib/utils.ts +10 -0
  552. package/dist/skills/llm-wiki/workbench/web/src/lib/wiki-links.ts +32 -0
  553. package/dist/skills/llm-wiki/workbench/web/src/main.tsx +10 -0
  554. package/dist/skills/llm-wiki/workbench/web/test/api.test.ts +61 -0
  555. package/dist/skills/llm-wiki/workbench/web/test/chat-panel-tool-status.test.tsx +26 -0
  556. package/dist/skills/llm-wiki/workbench/web/test/graph-drawer-state.test.ts +78 -0
  557. package/dist/skills/llm-wiki/workbench/web/test/graph-reader-request.test.ts +32 -0
  558. package/dist/skills/llm-wiki/workbench/web/test/graph-reader.test.ts +62 -0
  559. package/dist/skills/llm-wiki/workbench/web/test/graph-selection-drawer.test.ts +56 -0
  560. package/dist/skills/llm-wiki/workbench/web/test/graph-selection.test.ts +83 -0
  561. package/dist/skills/llm-wiki/workbench/web/test/tool-history-summary.test.tsx +124 -0
  562. package/dist/skills/llm-wiki/workbench/web/test/tool-status-format.test.ts +107 -0
  563. package/dist/skills/llm-wiki/workbench/web/test/tool-status-model.test.ts +324 -0
  564. package/dist/skills/llm-wiki/workbench/web/test/tool-status-runway.test.ts +134 -0
  565. package/dist/skills/llm-wiki/workbench/web/test/wiki-links.test.ts +23 -0
  566. package/dist/skills/llm-wiki/workbench/web/tsconfig.app.json +30 -0
  567. package/dist/skills/llm-wiki/workbench/web/tsconfig.json +7 -0
  568. package/dist/skills/llm-wiki/workbench/web/tsconfig.node.json +24 -0
  569. package/dist/skills/llm-wiki/workbench/web/vite.config.ts +26 -0
  570. package/dist/skills/mean-reviewer/SECURITY.md +23 -0
  571. package/dist/skills/mean-reviewer/SKILL.md +203 -0
  572. package/dist/skills/mean-reviewer/examples/13446_1000_Layer_Networks_for_.pdf +0 -0
  573. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer.md +116 -0
  574. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer_author_rebuttal_simulated.md +282 -0
  575. package/dist/skills/mean-reviewer/examples/13446_mean_reviewer_reply.md +91 -0
  576. package/dist/skills/mean-reviewer/examples/13446_official_review.json +973 -0
  577. package/dist/skills/mean-reviewer/examples/ChatGPT_AC_Roleplay.jpeg +0 -0
  578. package/dist/skills/medical-imaging-review/SKILL.md +295 -0
  579. package/dist/skills/medical-imaging-review/references/CITATION_INTEGRITY.md +233 -0
  580. package/dist/skills/medical-imaging-review/references/DOMAINS.md +302 -0
  581. package/dist/skills/medical-imaging-review/references/HALLUCINATION_PATTERNS.md +211 -0
  582. package/dist/skills/medical-imaging-review/references/MCP_SETUP.md +216 -0
  583. package/dist/skills/medical-imaging-review/references/PARADIGM.md +221 -0
  584. package/dist/skills/medical-imaging-review/references/QUALITY_CHECKLIST.md +169 -0
  585. package/dist/skills/medical-imaging-review/references/TEMPLATES.md +291 -0
  586. package/dist/skills/medical-imaging-review/references/WORKFLOW.md +289 -0
  587. package/dist/skills/mermaid-diagram/SKILL.md +379 -0
  588. package/dist/skills/meta-apply/SKILL.md +137 -0
  589. package/dist/skills/meta-optimize/SKILL.md +253 -0
  590. package/dist/skills/monitor-experiment/SKILL.md +98 -0
  591. package/dist/skills/novelty-check/SKILL.md +89 -0
  592. package/dist/skills/openalex/SKILL.md +228 -0
  593. package/dist/skills/overleaf-sync/SKILL.md +220 -0
  594. package/dist/skills/paper-claim-audit/SKILL.md +340 -0
  595. package/dist/skills/paper-compile/SKILL.md +253 -0
  596. package/dist/skills/paper-figure/SKILL.md +279 -0
  597. package/dist/skills/paper-illustration/SKILL.md +690 -0
  598. package/dist/skills/paper-illustration-image2/SKILL.md +383 -0
  599. package/dist/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  600. package/dist/skills/paper-plan/SKILL.md +278 -0
  601. package/dist/skills/paper-poster/SKILL.md +19 -0
  602. package/dist/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
  603. package/dist/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
  604. package/dist/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
  605. package/dist/skills/paper-poster-html/NOTICE.md +57 -0
  606. package/dist/skills/paper-poster-html/SKILL.md +357 -0
  607. package/dist/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
  608. package/dist/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
  609. package/dist/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
  610. package/dist/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
  611. package/dist/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
  612. package/dist/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
  613. package/dist/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
  614. package/dist/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
  615. package/dist/skills/paper-poster-html/scripts/asset_check.py +897 -0
  616. package/dist/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
  617. package/dist/skills/paper-poster-html/scripts/poster_check.py +251 -0
  618. package/dist/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
  619. package/dist/skills/paper-poster-html/scripts/render_preview.py +217 -0
  620. package/dist/skills/paper-poster-html/scripts/run_gates.py +556 -0
  621. package/dist/skills/paper-poster-html/scripts/style_check.py +1324 -0
  622. package/dist/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
  623. package/dist/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
  624. package/dist/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
  625. package/dist/skills/paper-poster-html/templates/portrait_2col.html +947 -0
  626. package/dist/skills/paper-poster-html/templates/tokens/acl.json +9 -0
  627. package/dist/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
  628. package/dist/skills/paper-poster-html/templates/tokens/generic.json +9 -0
  629. package/dist/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
  630. package/dist/skills/paper-poster-html/templates/tokens/icml.json +9 -0
  631. package/dist/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
  632. package/dist/skills/paper-slide-deck/SKILL.md +464 -0
  633. package/dist/skills/paper-slide-deck/references/analysis-framework.md +392 -0
  634. package/dist/skills/paper-slide-deck/references/base-prompt.md +70 -0
  635. package/dist/skills/paper-slide-deck/references/content-rules.md +95 -0
  636. package/dist/skills/paper-slide-deck/references/figure-container-template.md +177 -0
  637. package/dist/skills/paper-slide-deck/references/modification-guide.md +85 -0
  638. package/dist/skills/paper-slide-deck/references/outline-template.md +437 -0
  639. package/dist/skills/paper-slide-deck/references/styles/academic-paper.md +109 -0
  640. package/dist/skills/paper-slide-deck/references/styles/blueprint.md +67 -0
  641. package/dist/skills/paper-slide-deck/references/styles/bold-editorial.md +70 -0
  642. package/dist/skills/paper-slide-deck/references/styles/chalkboard.md +68 -0
  643. package/dist/skills/paper-slide-deck/references/styles/corporate.md +69 -0
  644. package/dist/skills/paper-slide-deck/references/styles/dark-atmospheric.md +69 -0
  645. package/dist/skills/paper-slide-deck/references/styles/editorial-infographic.md +73 -0
  646. package/dist/skills/paper-slide-deck/references/styles/fantasy-animation.md +69 -0
  647. package/dist/skills/paper-slide-deck/references/styles/intuition-machine.md +72 -0
  648. package/dist/skills/paper-slide-deck/references/styles/minimal.md +64 -0
  649. package/dist/skills/paper-slide-deck/references/styles/notion.md +69 -0
  650. package/dist/skills/paper-slide-deck/references/styles/pixel-art.md +67 -0
  651. package/dist/skills/paper-slide-deck/references/styles/scientific.md +73 -0
  652. package/dist/skills/paper-slide-deck/references/styles/sketch-notes.md +66 -0
  653. package/dist/skills/paper-slide-deck/references/styles/vector-illustration.md +72 -0
  654. package/dist/skills/paper-slide-deck/references/styles/vintage.md +73 -0
  655. package/dist/skills/paper-slide-deck/references/styles/watercolor.md +68 -0
  656. package/dist/skills/paper-slide-deck/scripts/apply-template.ts +282 -0
  657. package/dist/skills/paper-slide-deck/scripts/detect-figures.ts +283 -0
  658. package/dist/skills/paper-slide-deck/scripts/extract-figure.ts +140 -0
  659. package/dist/skills/paper-slide-deck/scripts/generate-slides.py +182 -0
  660. package/dist/skills/paper-slide-deck/scripts/merge-to-pdf.ts +116 -0
  661. package/dist/skills/paper-slide-deck/scripts/merge-to-pptx.ts +137 -0
  662. package/dist/skills/paper-slide-deck/scripts/package-lock.json +899 -0
  663. package/dist/skills/paper-slide-deck/scripts/package.json +8 -0
  664. package/dist/skills/paper-slides/SKILL.md +571 -0
  665. package/dist/skills/paper-talk/SKILL.md +381 -0
  666. package/dist/skills/paper-write/SKILL.md +411 -0
  667. package/dist/skills/paper-write/templates/IEEEtran.bst +2409 -0
  668. package/dist/skills/paper-write/templates/IEEEtran.cls +6347 -0
  669. package/dist/skills/paper-write/templates/aaai2026.bst +1493 -0
  670. package/dist/skills/paper-write/templates/aaai2026.sty +315 -0
  671. package/dist/skills/paper-write/templates/aaai2026.tex +952 -0
  672. package/dist/skills/paper-write/templates/acl.sty +312 -0
  673. package/dist/skills/paper-write/templates/acl2026.tex +377 -0
  674. package/dist/skills/paper-write/templates/acl_natbib.bst +1940 -0
  675. package/dist/skills/paper-write/templates/acm.bst +3081 -0
  676. package/dist/skills/paper-write/templates/acm_mm2026.tex +204 -0
  677. package/dist/skills/paper-write/templates/acmart.cls +3520 -0
  678. package/dist/skills/paper-write/templates/cvpr.bst +1448 -0
  679. package/dist/skills/paper-write/templates/cvpr.sty +508 -0
  680. package/dist/skills/paper-write/templates/cvpr2026.tex +63 -0
  681. package/dist/skills/paper-write/templates/iclr2026.tex +84 -0
  682. package/dist/skills/paper-write/templates/iclr2026_conference.bst +1440 -0
  683. package/dist/skills/paper-write/templates/iclr2026_conference.sty +246 -0
  684. package/dist/skills/paper-write/templates/icml2025.tex +87 -0
  685. package/dist/skills/paper-write/templates/icml2026.sty +767 -0
  686. package/dist/skills/paper-write/templates/icml2026.tex +662 -0
  687. package/dist/skills/paper-write/templates/ieee_conference.tex +89 -0
  688. package/dist/skills/paper-write/templates/ieee_journal.tex +93 -0
  689. package/dist/skills/paper-write/templates/math_commands.tex +48 -0
  690. package/dist/skills/paper-write/templates/neurips2025.tex +80 -0
  691. package/dist/skills/paper-write/templates/neurips2026.tex +493 -0
  692. package/dist/skills/paper-write/templates/neurips_2026.sty +437 -0
  693. package/dist/skills/paper-writing/SKILL.md +632 -0
  694. package/dist/skills/patent-novelty-check/SKILL.md +153 -0
  695. package/dist/skills/patent-pipeline/SKILL.md +344 -0
  696. package/dist/skills/patent-review/SKILL.md +202 -0
  697. package/dist/skills/pixel-art/SKILL.md +139 -0
  698. package/dist/skills/pre-submission-reviewer/SKILL.md +247 -0
  699. package/dist/skills/pre-submission-reviewer/references/forbidden-patterns.md +163 -0
  700. package/dist/skills/pre-submission-reviewer/references/grammar-rules.md +135 -0
  701. package/dist/skills/pre-submission-reviewer/references/latex-rules.md +158 -0
  702. package/dist/skills/pre-submission-reviewer/references/logic-and-structure.md +125 -0
  703. package/dist/skills/pre-submission-reviewer/references/section-guides.md +169 -0
  704. package/dist/skills/prior-art-search/SKILL.md +146 -0
  705. package/dist/skills/proof-checker/SKILL.md +499 -0
  706. package/dist/skills/proof-writer/SKILL.md +222 -0
  707. package/dist/skills/qzcli/SKILL.md +316 -0
  708. package/dist/skills/rebuttal/SKILL.md +304 -0
  709. package/dist/skills/render-html/SKILL.md +299 -0
  710. package/dist/skills/render-html/scripts/render_html.py +905 -0
  711. package/dist/skills/render-html/scripts/templates/academic.html +342 -0
  712. package/dist/skills/render-html/scripts/templates/dashboard.html +333 -0
  713. package/dist/skills/research-lit/SKILL.md +353 -0
  714. package/dist/skills/research-paper-writing/SKILL.md +99 -0
  715. package/dist/skills/research-paper-writing/agents/openai.yaml +4 -0
  716. package/dist/skills/research-paper-writing/references/abstract.md +102 -0
  717. package/dist/skills/research-paper-writing/references/conclusion.md +35 -0
  718. package/dist/skills/research-paper-writing/references/does-my-writing-flow-source.md +45 -0
  719. package/dist/skills/research-paper-writing/references/examples/abstract/template-a.md +21 -0
  720. package/dist/skills/research-paper-writing/references/examples/abstract/template-b.md +34 -0
  721. package/dist/skills/research-paper-writing/references/examples/abstract/template-c.md +28 -0
  722. package/dist/skills/research-paper-writing/references/examples/abstract-examples.md +13 -0
  723. package/dist/skills/research-paper-writing/references/examples/index.md +21 -0
  724. package/dist/skills/research-paper-writing/references/examples/introduction/novel-task-challenge-decomposition.md +18 -0
  725. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-not-recommended-abstract-only.md +30 -0
  726. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-1-one-contribution-multi-advantages.md +30 -0
  727. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-2-two-contributions.md +34 -0
  728. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-3-new-module-on-existing-pipeline.md +18 -0
  729. package/dist/skills/research-paper-writing/references/examples/introduction/pipeline-version-4-observation-driven.md +16 -0
  730. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-1-existing-task.md +32 -0
  731. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-2-existing-task-insight-backed-by-traditional.md +33 -0
  732. package/dist/skills/research-paper-writing/references/examples/introduction/technical-challenge-version-3-novel-task.md +21 -0
  733. package/dist/skills/research-paper-writing/references/examples/introduction/version-1-task-then-application.md +14 -0
  734. package/dist/skills/research-paper-writing/references/examples/introduction/version-2-application-first.md +10 -0
  735. package/dist/skills/research-paper-writing/references/examples/introduction/version-3-general-to-specific-setting.md +14 -0
  736. package/dist/skills/research-paper-writing/references/examples/introduction/version-4-open-with-challenge.md +20 -0
  737. package/dist/skills/research-paper-writing/references/examples/introduction-examples.md +25 -0
  738. package/dist/skills/research-paper-writing/references/examples/method/example-of-the-three-elements.md +67 -0
  739. package/dist/skills/research-paper-writing/references/examples/method/method-writing-common-issues-note.md +10 -0
  740. package/dist/skills/research-paper-writing/references/examples/method/module-design-instant-ngp.md +55 -0
  741. package/dist/skills/research-paper-writing/references/examples/method/module-motivation-patterns.md +15 -0
  742. package/dist/skills/research-paper-writing/references/examples/method/module-triad-neural-body.md +19 -0
  743. package/dist/skills/research-paper-writing/references/examples/method/neural-body-annotated-figure-text.md +66 -0
  744. package/dist/skills/research-paper-writing/references/examples/method/overview-template.md +30 -0
  745. package/dist/skills/research-paper-writing/references/examples/method/pre-writing-questions.md +17 -0
  746. package/dist/skills/research-paper-writing/references/examples/method/section-skeleton.md +9 -0
  747. package/dist/skills/research-paper-writing/references/examples/method-examples.md +24 -0
  748. package/dist/skills/research-paper-writing/references/experiments.md +102 -0
  749. package/dist/skills/research-paper-writing/references/introduction.md +408 -0
  750. package/dist/skills/research-paper-writing/references/method.md +196 -0
  751. package/dist/skills/research-paper-writing/references/paper-review.md +86 -0
  752. package/dist/skills/research-paper-writing/references/related-work.md +41 -0
  753. package/dist/skills/research-pipeline/SKILL.md +257 -0
  754. package/dist/skills/research-proposal/SKILL.md +573 -0
  755. package/dist/skills/research-proposal/assets/proposal_scaffold_en.md +323 -0
  756. package/dist/skills/research-proposal/assets/proposal_scaffold_zh.md +346 -0
  757. package/dist/skills/research-proposal/references/DOMAIN_TEMPLATES.md +518 -0
  758. package/dist/skills/research-proposal/references/LITERATURE_WORKFLOW.md +529 -0
  759. package/dist/skills/research-proposal/references/QUALITY_CHECKLIST.md +325 -0
  760. package/dist/skills/research-proposal/references/STRUCTURE_GUIDE.md +398 -0
  761. package/dist/skills/research-proposal/references/WRITING_STYLE_GUIDE.md +661 -0
  762. package/dist/skills/research-refine/SKILL.md +716 -0
  763. package/dist/skills/research-refine-pipeline/SKILL.md +186 -0
  764. package/dist/skills/research-review/SKILL.md +119 -0
  765. package/dist/skills/research-wiki/SKILL.md +373 -0
  766. package/dist/skills/resubmit-pipeline/SKILL.md +427 -0
  767. package/dist/skills/result-to-claim/SKILL.md +190 -0
  768. package/dist/skills/run-experiment/SKILL.md +227 -0
  769. package/dist/skills/scientific-figure-making/SKILL.md +38 -0
  770. package/dist/skills/scientific-figure-making/references/api.md +152 -0
  771. package/dist/skills/scientific-figure-making/references/common-patterns.md +74 -0
  772. package/dist/skills/scientific-figure-making/references/demos.md +30 -0
  773. package/dist/skills/scientific-figure-making/references/design-theory.md +138 -0
  774. package/dist/skills/scientific-figure-making/references/tutorials.md +135 -0
  775. package/dist/skills/semantic-scholar/SKILL.md +219 -0
  776. package/dist/skills/serverless-modal/SKILL.md +324 -0
  777. package/dist/skills/slides-polish/SKILL.md +563 -0
  778. package/dist/skills/specification-writing/SKILL.md +211 -0
  779. package/dist/skills/strategist/SKILL.md +670 -0
  780. package/dist/skills/strategist/references/quality_standards.md +336 -0
  781. package/dist/skills/strategist/references/search_strategy.md +459 -0
  782. package/dist/skills/strategist/scripts/evaluate_samples.py +300 -0
  783. package/dist/skills/strategist/scripts/gap_analysis.py +399 -0
  784. package/dist/skills/system-profile/SKILL.md +103 -0
  785. package/dist/skills/tech-paper-template/SKILL.md +192 -0
  786. package/dist/skills/tech-paper-template/references/consistency-checks.md +166 -0
  787. package/dist/skills/tech-paper-template/references/paper-types.md +127 -0
  788. package/dist/skills/tech-paper-template/references/thinking-template.md +194 -0
  789. package/dist/skills/tech-paper-template/references/worked-examples.md +124 -0
  790. package/dist/skills/training-check/SKILL.md +83 -0
  791. package/dist/skills/vast-gpu/SKILL.md +380 -0
  792. package/dist/skills/vibe-research-workflow/SKILL.md +189 -0
  793. package/dist/skills/vibe-research-workflow/references/behavior-guidelines.md +149 -0
  794. package/dist/skills/vibe-research-workflow/references/tool-selection.md +144 -0
  795. package/dist/skills/vibe-research-workflow/references/vibe-coding.md +154 -0
  796. package/dist/skills/vibe-research-workflow/references/vibe-figure.md +131 -0
  797. package/dist/skills/vibe-research-workflow/references/vibe-writing.md +181 -0
  798. package/dist/skills/wiki-enrich/SKILL.md +254 -0
  799. package/dist/skills/writing-systems-papers/SKILL.md +184 -0
  800. package/package.json +1 -1
@@ -0,0 +1,3081 @@
1
+ %%% -*-BibTeX-*-
2
+ %%% ====================================================================
3
+ %%% @BibTeX-style-file{
4
+ %%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
5
+ %%% version = "2.1",
6
+ %%% acmart-version = "1.79",
7
+ %%% date = "14 June 2017",
8
+ %%% filename = "ACM-Reference-Format.bst",
9
+ %%% email = "borisv@lk.net, boris@varphi.com",
10
+ %%% codetable = "ISO/ASCII",
11
+ %%% keywords = "ACM Transactions bibliography style; BibTeX",
12
+ %%% license = "public domain",
13
+ %%% supported = "yes",
14
+ %%% abstract = "",
15
+ %%% }
16
+ %%% ====================================================================
17
+
18
+ %%% Revision history: see source in git
19
+
20
+ ENTRY
21
+ { address
22
+ advisor
23
+ archiveprefix
24
+ author
25
+ booktitle
26
+ chapter
27
+ city
28
+ date
29
+ edition
30
+ editor
31
+ eprint
32
+ eprinttype
33
+ eprintclass
34
+ howpublished
35
+ institution
36
+ journal
37
+ key
38
+ location
39
+ month
40
+ note
41
+ number
42
+ organization
43
+ pages
44
+ primaryclass
45
+ publisher
46
+ school
47
+ series
48
+ title
49
+ type
50
+ volume
51
+ year
52
+ % New keys recognized
53
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
54
+ articleno
55
+ eid
56
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
57
+ doi % UTAH
58
+ url % UTAH
59
+ bookpages % UTAH
60
+ numpages
61
+ lastaccessed % UTAH: used only for @Misc{...}
62
+ coden % UTAH
63
+ isbn % UTAH
64
+ isbn-13 % UTAH
65
+ issn % UTAH
66
+ lccn % UTAH
67
+ distinctURL % whether to print url if doi is present
68
+ }
69
+ {}
70
+ { label.year extra.label sort.year sort.label basic.label.year}
71
+
72
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
73
+
74
+ INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
75
+
76
+ INTEGERS { nameptr namesleft numnames }
77
+
78
+ INTEGERS { multiresult }
79
+
80
+ INTEGERS { len }
81
+
82
+ INTEGERS { last.extra.num }
83
+
84
+ STRINGS { s t t.org u }
85
+
86
+ STRINGS { last.label next.extra }
87
+
88
+ STRINGS { p1 p2 p3 page.count }
89
+
90
+
91
+ FUNCTION { not }
92
+ {
93
+ { #0 }
94
+ { #1 }
95
+ if$
96
+ }
97
+
98
+ FUNCTION { and }
99
+ {
100
+ 'skip$
101
+ { pop$ #0 }
102
+ if$
103
+ }
104
+
105
+ FUNCTION { or }
106
+ {
107
+ { pop$ #1 }
108
+ 'skip$
109
+ if$
110
+ }
111
+
112
+
113
+ FUNCTION { dump.stack.1 }
114
+ {
115
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
116
+ }
117
+
118
+ FUNCTION { dump.stack.2 }
119
+ {
120
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
121
+ swap$
122
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
123
+ swap$
124
+ }
125
+
126
+ FUNCTION { empty.or.unknown }
127
+ {
128
+ %% Examine the top stack entry, and push 1 if it is empty, or
129
+ %% consists only of whitespace, or is a string beginning with two
130
+ %% queries (??), and otherwise, push 0.
131
+ %%
132
+ %% This function provides a replacement for empty$, with the
133
+ %% convenient feature that unknown values marked by two leading
134
+ %% queries are treated the same as missing values, and thus, do not
135
+ %% appear in the output .bbl file, and yet, their presence in .bib
136
+ %% file(s) serves to mark values which are temporarily missing, but
137
+ %% are expected to be filled in eventually once more data is
138
+ %% obtained. The TeX User Group and BibNet bibliography archives
139
+ %% make extensive use of this practice.
140
+ %%
141
+ %% An empty string cannot serve the same purpose, because just as in
142
+ %% statistics data processing, an unknown value is not the same as an
143
+ %% empty value.
144
+ %%
145
+ %% At entry: stack = ... top:[string]
146
+ %% At exit: stack = ... top:[0 or 1]
147
+
148
+ duplicate$ empty$
149
+ { pop$ #1 }
150
+ { #1 #2 substring$ "??" = }
151
+ if$
152
+ }
153
+
154
+ FUNCTION { empty.or.zero }
155
+ {
156
+ %% Examine the top entry and push 1 if it is empty, or is zero
157
+ duplicate$ empty$
158
+ { pop$ #1 }
159
+ { "0" = }
160
+ if$
161
+ }
162
+
163
+
164
+ FUNCTION { writeln }
165
+ {
166
+ %% In BibTeX style files, the sequences
167
+ %%
168
+ %% ... "one" "two" output
169
+ %% ... "one" "two" output.xxx
170
+ %%
171
+ %% ship "one" to the output file, possibly following by punctuation,
172
+ %% leaving the stack with
173
+ %%
174
+ %% ... "two"
175
+ %%
176
+ %% There is thus a one-string lag in output processing that must be
177
+ %% carefully handled to avoid duplicating a string in the output
178
+ %% file. Unless otherwise noted, all output.xxx functions leave
179
+ %% just one new string on the stack, and that model should be born
180
+ %% in mind when reading or writing function code.
181
+ %%
182
+ %% BibTeX's asynchronous buffering of output from strings from the
183
+ %% stack is confusing because newline$ bypasses the buffer. It
184
+ %% would have been so much easier for newline to be a character
185
+ %% rather than a state of the output-in-progress.
186
+ %%
187
+ %% The documentation in btxhak.dvi is WRONG: it says
188
+ %%
189
+ %% newline$ Writes onto the bbl file what's accumulated in the
190
+ %% output buffer. It writes a blank line if and only
191
+ %% if the output buffer is empty. Since write$ does
192
+ %% reasonable line breaking, you should use this
193
+ %% function only when you want a blank line or an
194
+ %% explicit line break.
195
+ %%
196
+ %% write$ Pops the top (string) literal and writes it on the
197
+ %% output buffer (which will result in stuff being
198
+ %% written onto the bbl file when the buffer fills
199
+ %% up).
200
+ %%
201
+ %% Examination of the BibTeX source code shows that write$ does
202
+ %% indeed behave as claimed, but newline$ sends a newline character
203
+ %% directly to the output file, leaving the stack unchanged. The
204
+ %% first line "Writes onto ... buffer." is therefore wrong.
205
+ %%
206
+ %% The original BibTeX style files almost always use "write$ newline$"
207
+ %% in that order, so it makes sense to hide that pair in a private
208
+ %% function like this one, named after a statement in Pascal,
209
+ %% the programming language embedded in the BibTeX Web program.
210
+
211
+ write$ % output top-of-stack string
212
+ newline$ % immediate write of newline (not via stack)
213
+ }
214
+
215
+ FUNCTION { init.state.consts }
216
+ {
217
+ #0 'before.all :=
218
+ #1 'mid.sentence :=
219
+ #2 'after.sentence :=
220
+ #3 'after.block :=
221
+ }
222
+
223
+ FUNCTION { output.nonnull }
224
+ { % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
225
+ 's :=
226
+ output.state mid.sentence =
227
+ {
228
+ ", " * write$
229
+ }
230
+ {
231
+ output.state after.block =
232
+ {
233
+ add.period$ writeln
234
+ "\newblock " write$
235
+ }
236
+ {
237
+ output.state before.all =
238
+ {
239
+ write$
240
+ }
241
+ {
242
+ add.period$ " " * write$
243
+ }
244
+ if$
245
+ }
246
+ if$
247
+ mid.sentence 'output.state :=
248
+ }
249
+ if$
250
+ s
251
+ }
252
+
253
+ FUNCTION { output.nonnull.dot.space }
254
+ { % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
255
+ 's :=
256
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
257
+ {
258
+ ". " * write$
259
+ }
260
+ {
261
+ output.state after.block =
262
+ {
263
+ add.period$ writeln "\newblock " write$
264
+ }
265
+ {
266
+ output.state before.all =
267
+ {
268
+ write$
269
+ }
270
+ {
271
+ add.period$ " " * write$
272
+ }
273
+ if$
274
+ }
275
+ if$
276
+ mid.sentence 'output.state :=
277
+ }
278
+ if$
279
+ s
280
+ }
281
+
282
+ FUNCTION { output.nonnull.remove }
283
+ { % Stack in: ... R S T Stack out: ... R T File out: S<space>
284
+ 's :=
285
+ output.state mid.sentence =
286
+ {
287
+ " " * write$
288
+ }
289
+ {
290
+ output.state after.block =
291
+ {
292
+ add.period$ writeln "\newblock " write$
293
+ }
294
+ {
295
+ output.state before.all =
296
+ {
297
+ write$
298
+ }
299
+ {
300
+ add.period$ " " * write$
301
+ }
302
+ if$
303
+ }
304
+ if$
305
+ mid.sentence 'output.state :=
306
+ }
307
+ if$
308
+ s
309
+ }
310
+
311
+ FUNCTION { output.nonnull.removenospace }
312
+ { % Stack in: ... R S T Stack out: ... R T File out: S
313
+ 's :=
314
+ output.state mid.sentence =
315
+ {
316
+ "" * write$
317
+ }
318
+ {
319
+ output.state after.block =
320
+ {
321
+ add.period$ writeln "\newblock " write$
322
+ }
323
+ {
324
+ output.state before.all =
325
+ {
326
+ write$
327
+ }
328
+ {
329
+ add.period$ " " * write$
330
+ }
331
+ if$
332
+ }
333
+ if$
334
+ mid.sentence 'output.state :=
335
+ }
336
+ if$
337
+ s
338
+ }
339
+
340
+ FUNCTION { output }
341
+ { % discard top token if empty, else like output.nonnull
342
+ duplicate$ empty.or.unknown
343
+ 'pop$
344
+ 'output.nonnull
345
+ if$
346
+ }
347
+
348
+ FUNCTION { output.dot.space }
349
+ { % discard top token if empty, else like output.nonnull.dot.space
350
+ duplicate$ empty.or.unknown
351
+ 'pop$
352
+ 'output.nonnull.dot.space
353
+ if$
354
+ }
355
+
356
+ FUNCTION { output.removenospace }
357
+ { % discard top token if empty, else like output.nonnull.removenospace
358
+ duplicate$ empty.or.unknown
359
+ 'pop$
360
+ 'output.nonnull.removenospace
361
+ if$
362
+ }
363
+
364
+ FUNCTION { output.check }
365
+ { % like output, but warn if key name on top-of-stack is not set
366
+ 't :=
367
+ duplicate$ empty.or.unknown
368
+ { pop$ "empty " t * " in " * cite$ * warning$ }
369
+ 'output.nonnull
370
+ if$
371
+ }
372
+
373
+ FUNCTION { bibinfo.output.check }
374
+ { % like output.check, adding bibinfo field
375
+ 't :=
376
+ duplicate$ empty.or.unknown
377
+ { pop$ "empty " t * " in " * cite$ * warning$ }
378
+ { "\bibinfo{" t "}{" * * swap$ * "}" *
379
+ output.nonnull }
380
+ if$
381
+ }
382
+
383
+ FUNCTION { output.check.dot.space }
384
+ { % like output.dot.space, but warn if key name on top-of-stack is not set
385
+ 't :=
386
+ duplicate$ empty.or.unknown
387
+ { pop$ "empty " t * " in " * cite$ * warning$ }
388
+ 'output.nonnull.dot.space
389
+ if$
390
+ }
391
+
392
+ FUNCTION { fin.block }
393
+ { % functionally, but not logically, identical to fin.entry
394
+ add.period$
395
+ writeln
396
+ }
397
+
398
+ FUNCTION { fin.entry }
399
+ {
400
+ add.period$
401
+ writeln
402
+ }
403
+
404
+ FUNCTION { new.sentence }
405
+ { % update sentence state, with neither output nor stack change
406
+ output.state after.block =
407
+ 'skip$
408
+ {
409
+ output.state before.all =
410
+ 'skip$
411
+ { after.sentence 'output.state := }
412
+ if$
413
+ }
414
+ if$
415
+ }
416
+
417
+ FUNCTION { fin.sentence }
418
+ {
419
+ add.period$
420
+ write$
421
+ new.sentence
422
+ ""
423
+ }
424
+
425
+ FUNCTION { new.block }
426
+ {
427
+ output.state before.all =
428
+ 'skip$
429
+ { after.block 'output.state := }
430
+ if$
431
+ }
432
+
433
+ FUNCTION { output.coden } % UTAH
434
+ { % output non-empty CODEN as one-line sentence (stack untouched)
435
+ coden empty.or.unknown
436
+ { }
437
+ { "\showCODEN{" coden * "}" * writeln }
438
+ if$
439
+ }
440
+
441
+ %
442
+ % Sometimes articleno starts with the word 'Article' or 'Paper.
443
+ % (this is a bug of acmdl, sigh)
444
+ % We strip them. We assume eid or articleno is already on stack
445
+ %
446
+
447
+ FUNCTION { strip.articleno.or.eid }
448
+ {
449
+ 't :=
450
+ t #1 #7 substring$ "Article" =
451
+ {t #8 t text.length$ substring$ 't :=}
452
+ { }
453
+ if$
454
+ t #1 #7 substring$ "article" =
455
+ {t #8 t text.length$ substring$ 't :=}
456
+ { }
457
+ if$
458
+ t #1 #5 substring$ "Paper" =
459
+ {t #6 t text.length$ substring$ 't :=}
460
+ { }
461
+ if$
462
+ t #1 #5 substring$ "paper" =
463
+ {t #6 t text.length$ substring$ 't :=}
464
+ { }
465
+ if$
466
+ % Strip any left trailing space or ~
467
+ t #1 #1 substring$ " " =
468
+ {t #2 t text.length$ substring$ 't :=}
469
+ { }
470
+ if$
471
+ t #1 #1 substring$ "~" =
472
+ {t #2 t text.length$ substring$ 't :=}
473
+ { }
474
+ if$
475
+ t
476
+ }
477
+
478
+
479
+ FUNCTION { format.articleno }
480
+ {
481
+ articleno empty.or.unknown not eid empty.or.unknown not and
482
+ { "Both articleno and eid are defined for " cite$ * warning$ }
483
+ 'skip$
484
+ if$
485
+ articleno empty.or.unknown eid empty.or.unknown and
486
+ { "" }
487
+ {
488
+ numpages empty.or.unknown
489
+ { "articleno or eid field, but no numpages field, in "
490
+ cite$ * warning$ }
491
+ { }
492
+ if$
493
+ eid empty.or.unknown
494
+ { "Article \bibinfo{articleno}{" articleno strip.articleno.or.eid * "}" * }
495
+ { "Article \bibinfo{articleno}{" eid strip.articleno.or.eid * "}" * }
496
+ if$
497
+ }
498
+ if$
499
+ }
500
+
501
+ FUNCTION { format.year }
502
+ { % push year string or "[n.\,d.]" onto output stack
503
+ %% Because year is a mandatory field, we always force SOMETHING
504
+ %% to be output
505
+ "\bibinfo{year}{"
506
+ year empty.or.unknown
507
+ { "[n.\,d.]" }
508
+ { year }
509
+ if$
510
+ * "}" *
511
+ }
512
+
513
+ FUNCTION { format.day.month }
514
+ { % push "day month " or "month " or "" onto output stack
515
+ day empty.or.unknown
516
+ {
517
+ month empty.or.unknown
518
+ { "" }
519
+ { "\bibinfo{date}{" month * "} " *}
520
+ if$
521
+ }
522
+ {
523
+ month empty.or.unknown
524
+ { "" }
525
+ { "\bibinfo{date}{" day * " " * month * "} " *}
526
+ if$
527
+ }
528
+ if$
529
+ }
530
+
531
+ FUNCTION { format.day.month.year } % UTAH
532
+ { % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
533
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
534
+ % acm-*.bst addition: prefix parenthesized date string with
535
+ % ", Article nnn "
536
+ articleno empty.or.unknown eid empty.or.unknown and
537
+ { "" }
538
+ { output.state after.block =
539
+ {", " format.articleno * }
540
+ { format.articleno }
541
+ if$
542
+ }
543
+ if$
544
+ " (" * format.day.month * format.year * ")" *
545
+ }
546
+
547
+ FUNCTION { output.day.month.year } % UTAH
548
+ { % if month is empty value, do nothing; else output stack top and
549
+ % leave with new top string "(MON.)" or "(DD MON.)"
550
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
551
+ format.day.month.year
552
+ output.nonnull.remove
553
+ }
554
+
555
+ FUNCTION { strip.doi } % UTAH
556
+ { % Strip any Web address prefix to recover the bare DOI, leaving the
557
+ % result on the output stack, as recommended by CrossRef DOI
558
+ % documentation.
559
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
560
+ % "10.1145/1534530.1534545". A suitable URL is later typeset and
561
+ % displayed as the LAST item in the reference list entry. Publisher Web
562
+ % sites wrap this with a suitable link to a real URL to resolve the DOI,
563
+ % and the master https://doi.org/ address is preferred, since publisher-
564
+ % specific URLs can disappear in response to economic events. All
565
+ % journals are encouraged by the DOI authorities to use that typeset
566
+ % format and link procedures for uniformity across all publications that
567
+ % include DOIs in reference lists.
568
+ % The numeric prefix is guaranteed to start with "10.", so we use
569
+ % that as a test.
570
+ % 2017-02-04 Added stripping of https:// (Boris)
571
+ doi #1 #3 substring$ "10." =
572
+ { doi }
573
+ {
574
+ doi 't := % get modifiable copy of DOI
575
+
576
+ % Change https:// to http:// to strip both prefixes (BV)
577
+
578
+ t #1 #8 substring$ "https://" =
579
+ { "http://" t #9 t text.length$ #8 - substring$ * 't := }
580
+ { }
581
+ if$
582
+
583
+ t #1 #7 substring$ "http://" =
584
+ {
585
+ t #8 t text.length$ #7 - substring$ 't :=
586
+
587
+ "INTERNAL STYLE-FILE ERROR" 's :=
588
+
589
+ % search for next "/" and assign its suffix to s
590
+
591
+ { t text.length$ }
592
+ {
593
+ t #1 #1 substring$ "/" =
594
+ {
595
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
596
+ t #2 t text.length$ #1 - substring$ 's :=
597
+ "" 't := % empty string t terminates the loop
598
+ }
599
+ {
600
+ % discard first character and continue loop: t <= substring(t,2,last)
601
+ t #2 t text.length$ #1 - substring$ 't :=
602
+ }
603
+ if$
604
+ }
605
+ while$
606
+
607
+ % check for valid DOI (should be 10.xxxx/yyyy)
608
+ s #1 #3 substring$ "10." =
609
+ { }
610
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
611
+ if$
612
+
613
+ s % push the stripped DOI on the output stack
614
+
615
+ }
616
+ {
617
+ "unrecognized DOI value [" doi * "]" * warning$
618
+ doi % push the unrecognized original DOI on the output stack
619
+ }
620
+ if$
621
+ }
622
+ if$
623
+ }
624
+
625
+ %
626
+ % Change by BV: added standard prefix to URL
627
+ %
628
+ FUNCTION { output.doi } % UTAH
629
+ { % output non-empty DOI as one-line sentence (stack untouched)
630
+ doi empty.or.unknown
631
+ { }
632
+ {
633
+ %% Use \urldef here for the same reason it is used in output.url,
634
+ %% see output.url for further discussion.
635
+ "\urldef\tempurl%" writeln
636
+ "\url{https://doi.org/" strip.doi * "}" * writeln
637
+ "\showDOI{\tempurl}" writeln
638
+ }
639
+ if$
640
+ }
641
+
642
+ FUNCTION { output.isbn } % UTAH
643
+ { % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
644
+ show-isbn-10-and-13
645
+ {
646
+ %% show both 10- and 13-digit ISBNs
647
+ isbn empty.or.unknown
648
+ { }
649
+ {
650
+ "\showISBNx{" isbn * "}" * writeln
651
+ }
652
+ if$
653
+ isbn-13 empty.or.unknown
654
+ { }
655
+ {
656
+ "\showISBNxiii{" isbn-13 * "}" * writeln
657
+ }
658
+ if$
659
+ }
660
+ {
661
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
662
+ isbn-13 empty.or.unknown
663
+ {
664
+ isbn empty.or.unknown
665
+ { }
666
+ {
667
+ "\showISBNx{" isbn * "}" * writeln
668
+ }
669
+ if$
670
+ }
671
+ {
672
+ "\showISBNxiii{" isbn-13 * "}" * writeln
673
+ }
674
+ if$
675
+ }
676
+ if$
677
+ }
678
+
679
+ FUNCTION { output.issn } % UTAH
680
+ { % output non-empty ISSN as one-line sentence (stack untouched)
681
+ issn empty.or.unknown
682
+ { }
683
+ { "\showISSN{" issn * "}" * writeln }
684
+ if$
685
+ }
686
+
687
+ FUNCTION { output.issue }
688
+ { % output non-empty issue number as a one-line sentence (stack untouched)
689
+ issue empty.or.unknown
690
+ { }
691
+ { "Issue " issue * "." * writeln }
692
+ if$
693
+ }
694
+
695
+ FUNCTION { output.lccn } % UTAH
696
+ { % return with stack untouched
697
+ lccn empty.or.unknown
698
+ { }
699
+ { "\showLCCN{" lccn * "}" * writeln }
700
+ if$
701
+ }
702
+
703
+ FUNCTION { output.note } % UTAH
704
+ { % return with stack empty
705
+ note empty.or.unknown
706
+ { }
707
+ { "\shownote{" note * "}" add.period$ * writeln }
708
+ if$
709
+ }
710
+
711
+ FUNCTION { output.note.check } % UTAH
712
+ { % return with stack empty
713
+ note empty.or.unknown
714
+ { "empty note in " cite$ * warning$ }
715
+ { "\shownote{" note * "}" add.period$ * writeln }
716
+ if$
717
+ }
718
+
719
+ FUNCTION { output.eprint } %
720
+ { % return with stack empty
721
+ eprint empty.or.unknown
722
+ { }
723
+ { "\showeprint"
724
+ archiveprefix empty.or.unknown
725
+ { eprinttype empty.or.unknown
726
+ { }
727
+ { "[" eprinttype "]" * * * }
728
+ if$
729
+ }
730
+ { "[" archiveprefix "l" change.case$ "]" * * * }
731
+ if$
732
+ "{" eprint "}" * * *
733
+ primaryclass empty.or.unknown
734
+ { eprintclass empty.or.unknown
735
+ { }
736
+ { "~[" eprintclass "]" * * * }
737
+ if$
738
+ }
739
+ { "~[" primaryclass "]" * * * }
740
+ if$
741
+ writeln
742
+ }
743
+ if$
744
+ }
745
+
746
+
747
+ %
748
+ % Changes by BV 2011/04/15. Do not output
749
+ % url if doi is defined
750
+ %
751
+ %
752
+ % Changes by BV 2021/11/26. Output url even if doi is defined
753
+ % if distinctURL is not zero.
754
+ %
755
+ FUNCTION { output.url } % UTAH
756
+ { % return with stack untouched
757
+ % output URL and associated lastaccessed fields
758
+ doi empty.or.unknown distinctURL empty.or.zero not or
759
+ {
760
+ url empty.or.unknown
761
+ { }
762
+ {
763
+ %% Use \urldef, outside \showURL, so that %nn, #, etc in URLs work
764
+ %% correctly. Put the actual URL on its own line to reduce the
765
+ %% likelihood of BibTeX's nasty line wrapping after column 79.
766
+ %% \url{} can undo this, but if that doesn't work for some reason
767
+ %% the .bbl file would have to be repaired manually.
768
+ "\urldef\tempurl%" writeln
769
+ "\url{" url * "}" * writeln
770
+
771
+ "\showURL{%" writeln
772
+ lastaccessed empty.or.unknown
773
+ { "" }
774
+ { "Retrieved " lastaccessed * " from " * }
775
+ if$
776
+ "\tempurl}" * writeln
777
+ }
778
+ if$
779
+ }
780
+ { }
781
+ if$
782
+ }
783
+
784
+ FUNCTION { output.year.check }
785
+ { % warn if year empty, output top string and leave " YEAR<label>" on stack in mid-sentence
786
+ year empty.or.unknown
787
+ { "empty year in " cite$ * warning$
788
+ write$
789
+ " \bibinfo{year}{[n.\,d.]}"
790
+ "\natexlab{" extra.label * "}" * *
791
+ mid.sentence 'output.state :=
792
+ }
793
+ { write$
794
+ " \bibinfo{year}{" year * "}" *
795
+ "\natexlab{" extra.label * "}" * *
796
+ mid.sentence 'output.state :=
797
+ }
798
+ if$
799
+ }
800
+
801
+
802
+ FUNCTION { le }
803
+ {
804
+ %% test whether first number is less than or equal to second number
805
+ %% stack in: n1 n2
806
+ %% stack out: if n1 <= n2 then 1 else 0
807
+
808
+ %% "DEBUG: le " cite$ * warning$
809
+ > { #0 } { #1 } if$
810
+ }
811
+
812
+ FUNCTION { ge }
813
+ {
814
+ %% test whether first number is greater than or equal to second number
815
+ %% stack in: n1 n2
816
+ %% stack out: if n1 >= n2 then 1 else 0
817
+
818
+ %% "DEBUG: ge " cite$ * warning$
819
+ < { #0 } { #1 } if$
820
+ }
821
+
822
+ FUNCTION { is.leading.digit }
823
+ {
824
+ %% test whether first character of string is a digit
825
+ %% stack in: string
826
+ %% stack out: if first-char-is-digit then 1 else 0
827
+
828
+ #1 #1 substring$ % replace string by string[1:1]
829
+ duplicate$ % string[1:1] string[1:1]
830
+ chr.to.int$
831
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
832
+ swap$ % 0-or-1 string[1:1]
833
+ chr.to.int$
834
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
835
+ and
836
+ }
837
+
838
+ FUNCTION { skip.digits }
839
+ {
840
+ %% skip over leading digits in string
841
+ %% stack in: string
842
+ %% stack out: rest-of-string leading-digits
843
+
844
+ %% "DEBUG: enter skip.digits " cite$ * warning$
845
+
846
+ %% dump.stack.1
847
+
848
+ duplicate$
849
+ 't :=
850
+ 't.org :=
851
+ "" 'u :=
852
+
853
+ { t text.length$ }
854
+ {
855
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
856
+ t is.leading.digit
857
+ { t #2 t text.length$ #1 - substring$ }
858
+ {
859
+ t 'u :=
860
+ ""
861
+ }
862
+ if$
863
+ 't :=
864
+ }
865
+ while$
866
+
867
+ u % rest of string
868
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
869
+
870
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
871
+ %% "DEBUG: u = [" u * "]" * warning$
872
+
873
+ %% dump.stack.2
874
+
875
+ %% "DEBUG: leave skip.digits " cite$ * warning$
876
+ }
877
+
878
+ FUNCTION { skip.nondigits }
879
+ {
880
+ %% skip over leading nondigits in string
881
+ %% stack in: string
882
+ %% stack out: rest-of-string
883
+
884
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
885
+
886
+ 't :=
887
+ "" 'u :=
888
+
889
+ { t text.length$ }
890
+ {
891
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
892
+ t is.leading.digit
893
+ {
894
+ t 'u :=
895
+ ""
896
+ }
897
+ { t #2 t text.length$ #1 - substring$ }
898
+ if$
899
+ 't :=
900
+ }
901
+ while$
902
+
903
+ u % rest of string
904
+
905
+ %% dump.stack.1
906
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
907
+ }
908
+
909
+ FUNCTION { parse.next.number }
910
+ {
911
+ %% stack in: string
912
+ %% stack out: rest-of-string next-numeric-part-of-string
913
+ %% Example:
914
+ %% stack in: "123:1--123:59"
915
+ %% stack out: ":1--123:59" "123"
916
+
917
+ 's :=
918
+ s skip.nondigits 's :=
919
+ s skip.digits
920
+ }
921
+
922
+ FUNCTION { reduce.pages.to.page.count }
923
+ {
924
+ %% Stack in: arbitrary-and-unused
925
+ %% Stack out: unchanged
926
+ %%
927
+ %% For the new-style pagination with article number and numpages or
928
+ %% pages, we expect to have BibTeX entries containing something like
929
+ %% articleno = "17",
930
+ %% pages = "1--23",
931
+ %% with output "Article 17, 23 pages",
932
+ %% or
933
+ %% articleno = "17",
934
+ %% numpages = "23",
935
+ %% with output "Article 17, 23 pages",
936
+ %% or
937
+ %% articleno = "17",
938
+ %% pages = "17:1--17:23",
939
+ %% with output "Article 17, 23 pages",
940
+ %%
941
+ %% If articleno is missing or empty, then we should output "1--23",
942
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
943
+ %% respectively.
944
+
945
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
946
+
947
+ %% "DEBUG: pages = [" pages * "]" * warning$
948
+
949
+ pages
950
+ parse.next.number 'p1 :=
951
+ parse.next.number 'p2 :=
952
+ parse.next.number 'p3 :=
953
+ parse.next.number 'page.count :=
954
+
955
+ duplicate$
956
+ empty.or.unknown
957
+ { }
958
+ {
959
+ duplicate$ "unexpected trailing garbage [" swap$ *
960
+ "] after n:p1--n:p2 in pages = [" *
961
+ pages *
962
+ "] in " *
963
+ cite$ *
964
+ warning$
965
+ }
966
+ if$
967
+
968
+ pop$
969
+
970
+ %% "DEBUG: reduce.pages.to.page.count: "
971
+ %% " p1 = " p1 * *
972
+ %% " p2 = " p2 * *
973
+ %% " p3 = " p3 * *
974
+ %% " p4 = " page.count * *
975
+ %% " in " cite$ * * warning$
976
+
977
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
978
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
979
+ {
980
+ numpages empty.or.unknown
981
+ { pages }
982
+ { numpages }
983
+ if$
984
+ 'page.count :=
985
+ }
986
+ if$
987
+
988
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
989
+ {
990
+ p2 'page.count :=
991
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
992
+ }
993
+ {
994
+ numpages empty.or.unknown
995
+ { pages }
996
+ { numpages }
997
+ if$
998
+ 'page.count :=
999
+ }
1000
+ if$
1001
+
1002
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
1003
+ }
1004
+
1005
+ FUNCTION { new.block.checkb }
1006
+ { % issue a new.block only if at least one of top two stack strings is not empty
1007
+ empty.or.unknown
1008
+ swap$ empty.or.unknown
1009
+ and
1010
+ 'skip$
1011
+ 'new.block
1012
+ if$
1013
+ }
1014
+
1015
+ FUNCTION { field.or.null }
1016
+ { % convert empty value to null string, else return value
1017
+ duplicate$ empty.or.unknown
1018
+ { pop$ "" }
1019
+ 'skip$
1020
+ if$
1021
+ }
1022
+
1023
+
1024
+
1025
+ FUNCTION { emphasize }
1026
+ { % emphasize a non-empty top string on the stack
1027
+ duplicate$ empty.or.unknown
1028
+ { pop$ "" }
1029
+ { "\emph{" swap$ * "}" * }
1030
+ if$
1031
+ }
1032
+
1033
+ FUNCTION { comma }
1034
+ { % convert empty string to null string, or brace string and add trailing comma
1035
+ duplicate$ empty.or.unknown
1036
+ { pop$ "" }
1037
+ { "{" swap$ * "}," * }
1038
+ if$
1039
+ }
1040
+
1041
+ FUNCTION { format.names }
1042
+ {
1043
+ % Format bibliographical entries with the first author last name first,
1044
+ % and subsequent authors with initials followed by last name.
1045
+ % All names are formatted in this routine.
1046
+
1047
+ 's :=
1048
+ #1 'nameptr := % nameptr = 1;
1049
+ s num.names$ 'numnames := % numnames = num.name$(s);
1050
+ numnames 'namesleft :=
1051
+ { namesleft #0 > }
1052
+ { nameptr #1 =
1053
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
1054
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
1055
+ {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
1056
+ {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
1057
+ if$
1058
+ nameptr #1 >
1059
+ {
1060
+ namesleft #1 >
1061
+ { ", " * t * }
1062
+ {
1063
+ numnames #2 >
1064
+ { "," * }
1065
+ 'skip$
1066
+ if$
1067
+ t "\bibinfo{person}{others}" =
1068
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
1069
+ { " {and} " * t * } % from Chicago Manual of Style
1070
+ if$
1071
+ }
1072
+ if$
1073
+ }
1074
+ 't
1075
+ if$
1076
+ nameptr #1 + 'nameptr := % nameptr += 1;
1077
+ namesleft #1 - 'namesleft := % namesleft =- 1;
1078
+ }
1079
+ while$
1080
+ }
1081
+
1082
+ FUNCTION { my.full.label }
1083
+ {
1084
+ 's :=
1085
+ #1 'nameptr := % nameptr = 1;
1086
+ s num.names$ 'numnames := % numnames = num.name$(s);
1087
+ numnames 'namesleft :=
1088
+ { namesleft #0 > }
1089
+
1090
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
1091
+ nameptr #1 >
1092
+ {
1093
+ namesleft #1 >
1094
+ { ", " * t * }
1095
+ {
1096
+ numnames #2 >
1097
+ { "," * }
1098
+ 'skip$
1099
+ if$
1100
+ t "others" =
1101
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
1102
+ { " and " * t * } % from Chicago Manual of Style
1103
+ if$
1104
+ }
1105
+ if$
1106
+ }
1107
+ 't
1108
+ if$
1109
+ nameptr #1 + 'nameptr := % nameptr += 1;
1110
+ namesleft #1 - 'namesleft := % namesleft =- 1;
1111
+ }
1112
+ while$
1113
+
1114
+ }
1115
+
1116
+ FUNCTION { format.names.fml }
1117
+ {
1118
+ % Format names in "familiar" format, with first initial followed by
1119
+ % last name. Like format.names, ALL names are formatted.
1120
+ % jtb: The names are NOT put in small caps
1121
+
1122
+ 's :=
1123
+ #1 'nameptr := % nameptr = 1;
1124
+ s num.names$ 'numnames := % numnames = num.name$(s);
1125
+ numnames 'namesleft :=
1126
+ { namesleft #0 > }
1127
+
1128
+ {
1129
+ "\bibinfo{person}{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
1130
+
1131
+ nameptr #1 >
1132
+ {
1133
+ namesleft #1 >
1134
+ { ", " * t * }
1135
+ {
1136
+ numnames #2 >
1137
+ { "," * }
1138
+ 'skip$
1139
+ if$
1140
+ t "\bibinfo{person}{others}" =
1141
+ { " {et~al\mbox{.}}" * }
1142
+ { " {and} " * t * }
1143
+ if$
1144
+ }
1145
+ if$
1146
+ }
1147
+ 't
1148
+ if$
1149
+ nameptr #1 + 'nameptr := % nameptr += 1;
1150
+ namesleft #1 - 'namesleft := % namesleft =- 1;
1151
+ }
1152
+ while$
1153
+ }
1154
+
1155
+ FUNCTION { format.authors }
1156
+ {
1157
+ author empty.or.unknown
1158
+ { "" }
1159
+ {
1160
+ "\bibfield{author}{"
1161
+ author format.names add.period$ * "}" *} % jtb: add period if none before
1162
+ if$
1163
+ }
1164
+
1165
+ FUNCTION { format.key }
1166
+ {
1167
+ empty.or.unknown
1168
+ { key field.or.null }
1169
+ { "" }
1170
+ if$
1171
+ }
1172
+
1173
+ FUNCTION { format.no.key }
1174
+ {
1175
+ empty.or.unknown
1176
+ { "" }
1177
+ { "" }
1178
+ if$
1179
+ }
1180
+
1181
+ FUNCTION { format.editors.fml }
1182
+ {
1183
+ % Format editor names for use in the "in" types: inbook, incollection,
1184
+ % inproceedings: first initial, then last names. When editors are the
1185
+ % LABEL for an entry, then format.editor is used which lists editors
1186
+ % by last name first.
1187
+
1188
+ editor empty.or.unknown
1189
+ { "" }
1190
+ {
1191
+ "\bibfield{editor}{"
1192
+ editor format.names.fml
1193
+ * "}" *
1194
+ editor num.names$ #1 >
1195
+ { " (Eds.)" * }
1196
+ { " (Ed.)" * }
1197
+ if$
1198
+ }
1199
+ if$
1200
+ }
1201
+
1202
+ FUNCTION { format.editors }
1203
+ { % format editor names for use in labels, last names first.
1204
+ editor empty.or.unknown
1205
+ { "" }
1206
+ {
1207
+ "\bibfield{editor}{"
1208
+ editor format.names
1209
+ * "}" *
1210
+ editor num.names$ #1 >
1211
+ { " (Eds.)." * }
1212
+ { " (Ed.)." * }
1213
+ if$
1214
+ }
1215
+ if$
1216
+ }
1217
+
1218
+ FUNCTION { format.articletitle }
1219
+ {
1220
+ title empty.or.unknown
1221
+ { "" }
1222
+ % Use this to preserve lettercase in titles:
1223
+ { "\showarticletitle{" title * "}" * }
1224
+ % Use this for downcase title style:
1225
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
1226
+ if$
1227
+ }
1228
+
1229
+ FUNCTION { format.title }
1230
+ {
1231
+ title empty.or.unknown
1232
+ { "" }
1233
+ % Use this to preserve lettercase in titles:
1234
+ { "\bibinfo{title}{" title * "}" * }
1235
+ % Use this for downcase title style:
1236
+ % { title "t" change.case$ }
1237
+ if$
1238
+ }
1239
+
1240
+ FUNCTION { n.dashify }
1241
+ {
1242
+ 't :=
1243
+ ""
1244
+ { t empty.or.unknown not }
1245
+ {
1246
+ t #1 #1 substring$ "-" =
1247
+ {
1248
+ t #1 #2 substring$ "--" = not
1249
+ { "--" *
1250
+ t #2 global.max$ substring$ 't :=
1251
+ }
1252
+ {
1253
+ { t #1 #1 substring$ "-" = }
1254
+ {
1255
+ "-" *
1256
+ t #2 global.max$ substring$ 't :=
1257
+ }
1258
+ while$
1259
+ }
1260
+ if$
1261
+ }
1262
+ {
1263
+ t #1 #1 substring$ *
1264
+ t #2 global.max$ substring$ 't :=
1265
+ }
1266
+ if$
1267
+ }
1268
+ while$
1269
+ }
1270
+
1271
+ FUNCTION { format.a.title.with.edition }
1272
+ {
1273
+ "\bibinfo{booktitle}{"
1274
+ swap$ emphasize *
1275
+ edition empty.or.unknown
1276
+ 'skip$
1277
+ { " (\bibinfo{edition}{" * edition "l" change.case$ *
1278
+ "} ed.)" * } % jtb: no parens for ed.
1279
+ if$
1280
+ "}" *
1281
+ }
1282
+
1283
+ FUNCTION { format.btitle }
1284
+ { title format.a.title.with.edition }
1285
+
1286
+ FUNCTION { format.emphasize.booktitle }
1287
+ { booktitle format.a.title.with.edition }
1288
+
1289
+
1290
+
1291
+ FUNCTION { format.city }
1292
+ {
1293
+ % jtb: if the preceding string (the title of the conference) is non-empty,
1294
+ % jtb: append the location, otherwise leave empty (so as to trigger the
1295
+ % jtb: error message in output.check
1296
+
1297
+ duplicate$ empty.or.unknown
1298
+ { }
1299
+ {
1300
+ city empty.or.unknown location empty.or.unknown and
1301
+ {
1302
+ date empty.or.unknown
1303
+ { }
1304
+ { " (" * date * ")" * }
1305
+ if$
1306
+ }
1307
+ {
1308
+ location empty.or.unknown
1309
+ {
1310
+ date empty.or.unknown
1311
+ { " (" * city * ")" * }
1312
+ { " (" * city * ", " * date * ")" * }
1313
+ if$
1314
+ }
1315
+ {
1316
+ date empty.or.unknown
1317
+ { " (" * location * ")" * }
1318
+ { " (" * location * ", " * date * ")" * }
1319
+ if$
1320
+ }
1321
+ if$
1322
+ }
1323
+ if$
1324
+ }
1325
+ if$
1326
+ }
1327
+
1328
+ FUNCTION { tie.or.space.connect }
1329
+ {
1330
+ duplicate$ text.length$ #3 <
1331
+ { "~" }
1332
+ { " " }
1333
+ if$
1334
+ swap$ * *
1335
+ }
1336
+
1337
+ FUNCTION { either.or.check }
1338
+ {
1339
+ empty.or.unknown
1340
+ 'pop$
1341
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
1342
+ if$
1343
+ }
1344
+
1345
+ FUNCTION { format.bvolume }
1346
+ {
1347
+ % jtb: If there is a series, this is added and the volume trails after it.
1348
+ % jtb: Otherwise, "Vol" is Capitalized.
1349
+
1350
+ volume empty.or.unknown
1351
+ { "" }
1352
+ {
1353
+ series empty.or.unknown
1354
+ { "Vol.~\bibinfo{volume}{" volume "}" * *}
1355
+ { "\bibinfo{series}{" series "}, " * *
1356
+ "Vol.~\bibinfo{volume}{" volume "}" * * *}
1357
+ if$
1358
+ "volume and number" number either.or.check
1359
+ }
1360
+ if$
1361
+ }
1362
+
1363
+ FUNCTION { format.bvolume.noseries }
1364
+ {
1365
+ volume empty.or.unknown
1366
+ { "" }
1367
+ { "Vol.~\bibinfo{volume}{" volume "}" * *
1368
+ "volume and number" number either.or.check
1369
+ }
1370
+ if$
1371
+ }
1372
+
1373
+ FUNCTION { format.series }
1374
+ {
1375
+ series empty.or.unknown
1376
+ {""}
1377
+ {" \emph{(\bibinfo{series}{" * series "}" *
1378
+ volume empty.or.unknown
1379
+ {
1380
+ number empty.or.unknown
1381
+ {")}" *}
1382
+ {", \bibinfo{number}{" number "})}" * * *}
1383
+ if$
1384
+ }
1385
+ {", Vol.~\bibinfo{volume}{" volume "})}" * * *
1386
+ "volume and number" number either.or.check
1387
+ }
1388
+ if$
1389
+ }
1390
+ if$
1391
+ }
1392
+
1393
+ FUNCTION { format.number.series }
1394
+ {
1395
+ volume empty.or.unknown
1396
+ {
1397
+ number empty.or.unknown
1398
+ {
1399
+ volume empty.or.unknown
1400
+ { "" }
1401
+ {
1402
+ series empty.or.unknown
1403
+ { "" }
1404
+ { " (\bibinfo{series}{" series * "})" * }
1405
+ if$
1406
+ }
1407
+ if$
1408
+ } % { series field.or.null }
1409
+ {
1410
+ output.state mid.sentence =
1411
+ { "Number" } % gnp - changed to mixed case always
1412
+ { "Number" }
1413
+ if$
1414
+ number tie.or.space.connect series empty.or.unknown
1415
+ { "there's a number but no series in " cite$ * warning$ }
1416
+ { " in \bibinfo{series}{" * series * "}" * }
1417
+ if$
1418
+ }
1419
+ if$
1420
+ }
1421
+ {
1422
+ ""
1423
+ }
1424
+ if$
1425
+ }
1426
+
1427
+ FUNCTION { multi.page.check }
1428
+ {
1429
+ 't :=
1430
+ #0 'multiresult :=
1431
+ { multiresult not
1432
+ t empty.or.unknown not
1433
+ and
1434
+ }
1435
+ { t #1 #1 substring$
1436
+ duplicate$ "-" =
1437
+ swap$ duplicate$ "," =
1438
+ swap$ "+" =
1439
+ or or
1440
+ { #1 'multiresult := }
1441
+ { t #2 global.max$ substring$ 't := }
1442
+ if$
1443
+ }
1444
+ while$
1445
+ multiresult
1446
+ }
1447
+
1448
+ FUNCTION { format.pages }
1449
+ {
1450
+ pages empty.or.unknown
1451
+ { "" }
1452
+ { "\bibinfo{pages}{"
1453
+ pages multi.page.check
1454
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
1455
+ { pages }
1456
+ if$
1457
+ * "}" *
1458
+ }
1459
+ if$
1460
+ }
1461
+
1462
+ FUNCTION { format.pages.check.without.articleno }
1463
+ { %% format pages field only if articleno is absent
1464
+ %% Stack out: pages-specification
1465
+ numpages missing$ pages missing$ and
1466
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
1467
+ { }
1468
+ if$
1469
+
1470
+ articleno empty.or.unknown eid empty.or.unknown and
1471
+ {
1472
+ pages missing$
1473
+ {
1474
+ numpages empty.or.unknown
1475
+ {""}
1476
+ { "\bibinfo{numpages}{" numpages * "}~pages" * }
1477
+ if$
1478
+ }
1479
+ { format.pages }
1480
+ if$
1481
+ }
1482
+ { "" }
1483
+ if$
1484
+ }
1485
+
1486
+ FUNCTION { format.pages.check }
1487
+ {
1488
+ pages empty.or.unknown
1489
+ { "page numbers missing in " cite$ * warning$ "" }
1490
+ { pages n.dashify }
1491
+ if$
1492
+ }
1493
+
1494
+ FUNCTION { format.bookpages }
1495
+ {
1496
+ bookpages empty.or.unknown
1497
+ { "" }
1498
+ { bookpages "book pages" tie.or.space.connect }
1499
+ if$
1500
+ }
1501
+
1502
+ FUNCTION { format.named.pages }
1503
+ {
1504
+ pages empty.or.unknown
1505
+ { "" }
1506
+ { format.pages "pages" tie.or.space.connect }
1507
+ if$
1508
+ }
1509
+
1510
+ %
1511
+ % Changed by Boris Veytsman, 2011-03-13
1512
+ % Now the word "pages" is printed even if
1513
+ % there field pages is not empty.
1514
+ %
1515
+
1516
+ FUNCTION { format.page.count }
1517
+ {
1518
+ page.count empty.or.unknown
1519
+ { "" }
1520
+ { "\bibinfo{numpages}{" page.count * "}~pages" * }
1521
+ if$
1522
+ }
1523
+
1524
+ FUNCTION { format.articleno.numpages }
1525
+ {
1526
+ %% There are seven possible outputs, depending on which fields are set.
1527
+ %%
1528
+ %% These four are handled here:
1529
+ %%
1530
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
1531
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
1532
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
1533
+ %% articleno -> "Article articleno-value" and warn about missing numpages
1534
+ %%
1535
+ %% The remaining three have already been handled by
1536
+ %% format.pages.check.without.articleno:
1537
+ %%
1538
+ %% numpages, pages -> "pages-value"
1539
+ %% numpages -> "numpages-value"
1540
+ %% pages -> "pages-value"
1541
+ %%
1542
+ %% We no longer issue warninig when missing articleno, but having numpages
1543
+
1544
+ articleno empty.or.unknown eid empty.or.unknown and
1545
+ {
1546
+ %% numpages empty.or.unknown
1547
+ %% { }
1548
+ %% { "numpages field, but no articleno or eid field, in "
1549
+ %% cite$ * warning$ }
1550
+ %% if$
1551
+ ""
1552
+ }
1553
+ {
1554
+ numpages empty.or.unknown
1555
+ {
1556
+ pages empty.or.unknown
1557
+ {
1558
+ "articleno or eid, but no pages or numpages field in "
1559
+ cite$ * warning$
1560
+ "" 'page.count :=
1561
+ }
1562
+ { reduce.pages.to.page.count }
1563
+ if$
1564
+ }
1565
+ { numpages 'page.count := }
1566
+ if$
1567
+
1568
+ %% The Article number is now handled in format.day.month.year because
1569
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
1570
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
1571
+ %% format.articleno output
1572
+ format.page.count
1573
+ }
1574
+ if$
1575
+ }
1576
+
1577
+ FUNCTION {calc.format.page.count}
1578
+ {
1579
+ numpages empty.or.unknown
1580
+ {
1581
+ pages empty.or.unknown
1582
+ {
1583
+ "" 'page.count :=
1584
+ }
1585
+ { reduce.pages.to.page.count }
1586
+ if$
1587
+ }
1588
+ { numpages 'page.count := }
1589
+ if$
1590
+ format.page.count
1591
+ }
1592
+
1593
+
1594
+ FUNCTION { journal.canon.abbrev }
1595
+ {
1596
+ % Returns a canonical abbreviation for 'journal', or else 'journal'
1597
+ % unchanged.
1598
+ journal "ACM Computing Surveys" = { "Comput. Surveys" } {
1599
+ journal "{ACM} Computing Surveys" = { "Comput. Surveys" } {
1600
+ journal "ACM Transactions on Mathematical Software" = { "ACM Trans. Math. Software" } {
1601
+ journal "{ACM} Transactions on Mathematical Software" = { "ACM Trans. Math. Software" } {
1602
+ journal "ACM SIGNUM Newsletter" = { "ACM SIGNUM Newslett." } {
1603
+ journal "ACM {SIGNUM} Newsletter" = { "ACM SIGNUM Newslett." } {
1604
+ journal "{ACM} SIGNUM Newsletter" = { "ACM SIGNUM Newslett." } {
1605
+ journal "{ACM} {SIGNUM} Newsletter" = { "ACM SIGNUM Newslett." } {
1606
+ journal "American Journal of Sociology" = { "Amer. J. Sociology" } {
1607
+ journal "American Mathematical Monthly" = { "Amer. Math. Monthly" } {
1608
+ journal "American Mathematical Society Translations" = { "Amer. Math. Soc. Transl." } {
1609
+ journal "Applied Mathematics and Computation" = { "Appl. Math. Comput." } {
1610
+ journal "British Journal of Mathematical and Statistical Psychology" = { "Brit. J. Math. Statist. Psych." } {
1611
+ journal "Bulletin of the American Mathematical Society" = { "Bull. Amer. Math. Soc." } {
1612
+ journal "Canadian Mathematical Bulletin" = { "Canad. Math. Bull." } {
1613
+ journal "Communications of the ACM" = { "Commun. ACM" } {
1614
+ journal "Communications of the {ACM}" = { "Commun. ACM" } {
1615
+ journal "Computers and Structures" = { "Comput. \& Structures" } {
1616
+ journal "Contemporary Mathematics" = { "Contemp. Math." } {
1617
+ journal "Crelle's Journal" = { "Crelle's J." } {
1618
+ journal "Giornale di Mathematiche" = { "Giorn. Mat." } {
1619
+ journal "IEEE Transactions on Aerospace and Electronic Systems" = { "IEEE Trans. Aerospace Electron. Systems" } {
1620
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" = { "IEEE Trans. Aerospace Electron. Systems" } {
1621
+ journal "IEEE Transactions on Automatic Control" = { "IEEE Trans. Automat. Control" } {
1622
+ journal "{IEEE} Transactions on Automatic Control" = { "IEEE Trans. Automat. Control" } {
1623
+ journal "IEEE Transactions on Computers" = { "IEEE Trans. Comput." } {
1624
+ journal "{IEEE} Transactions on Computers" = { "IEEE Trans. Comput." } {
1625
+ journal "IMA Journal of Numerical Analysis" = { "IMA J. Numer. Anal." } {
1626
+ journal "{IMA} Journal of Numerical Analysis" = { "IMA J. Numer. Anal." } {
1627
+ journal "Information Processing Letters" = { "Inform. Process. Lett." } {
1628
+ journal "International Journal for Numerical Methods in Engineering" = { "Internat. J. Numer. Methods Engrg." } {
1629
+ journal "International Journal of Control" = { "Internat. J. Control" } {
1630
+ journal "International Journal of Supercomputing Applications" = { "Internat. J. Supercomputing Applic." } {
1631
+ journal "Journal of Computational Physics" = { "J. Comput. Phys." } {
1632
+ journal "Journal of Computational and Applied Mathematics" = { "J. Comput. Appl. Math." } {
1633
+ journal "Journal of Computer and System Sciences" = { "J. Comput. System Sci." } {
1634
+ journal "Journal of Mathematical Analysis and Applications" = { "J. Math. Anal. Appl." } {
1635
+ journal "Journal of Mathematical Physics" = { "J. Math. Phys." } {
1636
+ journal "Journal of Parallel and Distributed Computing" = { "J. Parallel and Distrib. Comput." } {
1637
+ journal "Journal of Research of the National Bureau of Standards" = { "J. Res. Nat. Bur. Standards" } {
1638
+ journal "Journal of VLSI and Computer Systems" = { "J. VLSI Comput. Syst." } {
1639
+ journal "Journal of {VLSI} and Computer Systems" = { "J. VLSI Comput. Syst." } {
1640
+ journal "Journal of the ACM" = { "J. ACM" } {
1641
+ journal "Journal of the American Statistical Association" = { "J. Amer. Statist. Assoc." } {
1642
+ journal "Journal of the Institute of Mathematics and its Applications" = { "J. Inst. Math. Appl." } {
1643
+ journal "Journal of the Society for Industrial and Applied Mathematics" = { "J. Soc. Indust. Appl. Math." } {
1644
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" = { "J. Soc. Indust. Appl. Math. Ser. B Numer. Anal." } {
1645
+ journal "Linear Algebra and its Applications" = { "Linear Algebra Appl." } {
1646
+ journal "Mathematica Scandinavica" = { "Math. Scand." } {
1647
+ journal "Mathematical Tables and Other Aids to Computation" = { "Math. Tables Aids Comput." } {
1648
+ journal "Mathematics of Computation" = { "Math. Comp." } {
1649
+ journal "Mathematische Annalen" = { "Math. Ann." } {
1650
+ journal "Numerische Mathematik" = { "Numer. Math." } {
1651
+ journal "Pacific Journal of Mathematics" = { "Pacific J. Math." } {
1652
+ journal "Parallel Computing" = { "Parallel Comput." } {
1653
+ journal "Philosophical Magazine" = { "Philos. Mag." } {
1654
+ journal "Proceedings of the American Mathematical Society" = { "Proc. Amer. Math. Soc." } {
1655
+ journal "Proceedings of the IEEE" = { "Proc. IEEE" } {
1656
+ journal "Proceedings of the {IEEE}" = { "Proc. IEEE" } {
1657
+ journal "Proceedings of the National Academy of Sciences of the USA" = { "Proc. Nat. Acad. Sci. U. S. A." } {
1658
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" = { "Quart. J. Math. Oxford Ser. (2)" } {
1659
+ journal "Quarterly of Applied Mathematics" = { "Quart. Appl. Math." } {
1660
+ journal "Review of the International Statisical Institute" = { "Rev. Inst. Internat. Statist." } {
1661
+ journal "SIAM Journal on Algebraic and Discrete Methods" = { "SIAM J. Algebraic Discrete Methods" } {
1662
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" = { "SIAM J. Algebraic Discrete Methods" } {
1663
+ journal "SIAM Journal on Applied Mathematics" = { "SIAM J. Appl. Math." } {
1664
+ journal "{SIAM} Journal on Applied Mathematics" = { "SIAM J. Appl. Math." } {
1665
+ journal "SIAM Journal on Computing" = { "SIAM J. Comput." } {
1666
+ journal "{SIAM} Journal on Computing" = { "SIAM J. Comput." } {
1667
+ journal "SIAM Journal on Matrix Analysis and Applications" = { "SIAM J. Matrix Anal. Appl." } {
1668
+ journal "{SIAM} Journal on Matrix Analysis and Applications" = { "SIAM J. Matrix Anal. Appl." } {
1669
+ journal "SIAM Journal on Numerical Analysis" = { "SIAM J. Numer. Anal." } {
1670
+ journal "{SIAM} Journal on Numerical Analysis" = { "SIAM J. Numer. Anal." } {
1671
+ journal "SIAM Journal on Scientific and Statistical Computing" = { "SIAM J. Sci. Statist. Comput." } {
1672
+ journal "{SIAM} Journal on Scientific and Statistical Computing" = { "SIAM J. Sci. Statist. Comput." } {
1673
+ journal "SIAM Review" = { "SIAM Rev." } {
1674
+ journal "{SIAM} Review" = { "SIAM Rev." } {
1675
+ journal "Software Practice and Experience" = { "Software Prac. Experience" } {
1676
+ journal "Statistical Science" = { "Statist. Sci." } {
1677
+ journal "The Computer Journal" = { "Comput. J." } {
1678
+ journal "Transactions of the American Mathematical Society" = { "Trans. Amer. Math. Soc." } {
1679
+ journal "USSR Computational Mathematics and Mathematical Physics" = { "U. S. S. R. Comput. Math. and Math. Phys." } {
1680
+ journal "{USSR} Computational Mathematics and Mathematical Physics" = { "U. S. S. R. Comput. Math. and Math. Phys." } {
1681
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" = { "Z. Angew. Math. Mech." } {
1682
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" = { "Z. Angew. Math. Phys." } {
1683
+ journal
1684
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1685
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1686
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1687
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1688
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1689
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1690
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1691
+ } if$ } if$ } if$ } if$ } if$ } if$ } if$ } if$
1692
+ }
1693
+
1694
+ FUNCTION { format.journal.volume.number.day.month.year }
1695
+ {
1696
+ % By Young (and Spencer)
1697
+ % GNP - fixed bugs with missing volume, number, and/or pages
1698
+ %
1699
+ % Format journal, volume, number, pages for article types.
1700
+ %
1701
+ journal empty.or.unknown
1702
+ { "no journal in " cite$ * warning$ "" }
1703
+ { "\bibinfo{journal}{"
1704
+ journal.canon.abbrev emphasize *
1705
+ "}" * }
1706
+ if$
1707
+
1708
+ number empty.or.unknown
1709
+ {
1710
+ volume empty.or.unknown
1711
+ { "no number and no volume in " cite$ * warning$ "" * }
1712
+ { " " * " \bibinfo{volume}{" * volume * "}" * }
1713
+ if$
1714
+ }
1715
+ {
1716
+ volume empty.or.unknown
1717
+ {
1718
+ "unusual to have number, but no volume, for " cite$ * warning$
1719
+ " \bibinfo{number}{" * number * "}" *
1720
+ }
1721
+ { " \bibinfo{volume}{" * volume * "}, \bibinfo{number}{" *
1722
+ number * "}" *}
1723
+ if$
1724
+ }
1725
+ if$
1726
+ after.block 'output.state :=
1727
+
1728
+ % Sometimes proceedings are published in journals
1729
+ % In this case we do not want to put year, day and month here
1730
+
1731
+ type$ "inproceedings" =
1732
+ { }
1733
+ {format.day.month.year * }
1734
+ if$
1735
+ }
1736
+
1737
+ FUNCTION { format.chapter.pages }
1738
+ {
1739
+ chapter empty.or.unknown
1740
+ 'format.pages
1741
+ { type empty.or.unknown
1742
+ { "Chapter" } % gnp - changed to mixed case
1743
+ { type "t" change.case$ }
1744
+ if$
1745
+ chapter tie.or.space.connect
1746
+ pages empty.or.unknown
1747
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
1748
+ { ", " * format.pages * }
1749
+ if$
1750
+ }
1751
+ if$
1752
+ }
1753
+
1754
+ FUNCTION { format.in.emphasize.booktitle }
1755
+ { % jtb: format for collections or proceedings not appearing in a journal
1756
+ booktitle empty.or.unknown
1757
+ { "" }
1758
+ { "In " format.emphasize.booktitle * }
1759
+ if$
1760
+ }
1761
+
1762
+ FUNCTION { format.in.booktitle }
1763
+ { % jtb: format for proceedings appearing in a journal
1764
+ booktitle empty.or.unknown
1765
+ { "" }
1766
+ { "In \bibinfo{booktitle}{" booktitle * "}" * }
1767
+ if$
1768
+ }
1769
+
1770
+ FUNCTION { format.in.ed.booktitle }
1771
+ {
1772
+ booktitle empty.or.unknown
1773
+ { "" }
1774
+ { editor empty.or.unknown
1775
+ { "In " format.emphasize.booktitle * }
1776
+ % jtb: swapped editor location
1777
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
1778
+ if$
1779
+ }
1780
+ if$
1781
+ }
1782
+
1783
+ FUNCTION { format.thesis.type }
1784
+ { % call with default type on stack top
1785
+ type empty.or.unknown
1786
+ 'skip$ % use default type
1787
+ {
1788
+ pop$ % discard default type
1789
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
1790
+ type
1791
+ }
1792
+ if$
1793
+ }
1794
+
1795
+ FUNCTION { format.tr.number }
1796
+ {
1797
+ "\bibinfo{type}{"
1798
+ type empty.or.unknown
1799
+ { "{T}echnical {R}eport" }
1800
+ 'type
1801
+ if$
1802
+ "}" * *
1803
+ number empty.or.unknown
1804
+ { "t" change.case$ }
1805
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
1806
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
1807
+ { number tie.or.space.connect }
1808
+ if$
1809
+ }
1810
+
1811
+ FUNCTION { format.advisor }
1812
+ {
1813
+ advisor empty.or.unknown
1814
+ { "" }
1815
+ { "Advisor(s) " advisor * }
1816
+ if$
1817
+ }
1818
+
1819
+ FUNCTION { format.article.crossref }
1820
+ { "See"
1821
+ "\citeN{" * crossref * "}" *
1822
+ }
1823
+
1824
+ FUNCTION { format.crossref.editor }
1825
+ {
1826
+ editor #1 "{vv~}{ll}" format.name$
1827
+ editor num.names$ duplicate$
1828
+ #2 >
1829
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
1830
+ { #2 <
1831
+ 'skip$
1832
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1833
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
1834
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
1835
+ if$
1836
+ }
1837
+ if$
1838
+ }
1839
+ if$
1840
+ }
1841
+
1842
+ FUNCTION { format.book.crossref }
1843
+ {
1844
+ volume empty.or.unknown
1845
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
1846
+ "In "
1847
+ }
1848
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
1849
+ " of " *
1850
+ }
1851
+ if$
1852
+ editor empty.or.unknown
1853
+ editor field.or.null author field.or.null =
1854
+ or
1855
+ { key empty.or.unknown
1856
+ { series empty.or.unknown
1857
+ { "need editor, key, or series for " cite$ * " to crossref " *
1858
+ crossref * warning$
1859
+ "" *
1860
+ }
1861
+ { series emphasize * }
1862
+ if$
1863
+ }
1864
+ { key * }
1865
+ if$
1866
+ }
1867
+ { format.crossref.editor * }
1868
+ if$
1869
+ " \citeN{" * crossref * "}" *
1870
+ }
1871
+
1872
+ FUNCTION { format.incoll.inproc.crossref }
1873
+ { "See"
1874
+ " \citeN{" * crossref * "}" *
1875
+ }
1876
+
1877
+ FUNCTION { format.lab.names }
1878
+ {
1879
+ % format.lab.names:
1880
+ %
1881
+ % determines "short" names for the abbreviated author information.
1882
+ % "Long" labels are created in calc.label, using the routine my.full.label
1883
+ % to format author and editor fields.
1884
+ %
1885
+ % There are 4 cases for labels. (n=3 in the example)
1886
+ % a) one author Foo
1887
+ % b) one to n Foo, Bar and Baz
1888
+ % c) use of "and others" Foo, Bar et al.
1889
+ % d) more than n Foo et al.
1890
+
1891
+ 's :=
1892
+ s num.names$ 'numnames :=
1893
+ numnames #2 > % change number to number of others allowed before
1894
+ % forcing "et al".
1895
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
1896
+ {
1897
+ numnames #1 - 'namesleft :=
1898
+ #2 'nameptr :=
1899
+ s #1 "{vv~}{ll}" format.name$
1900
+ { namesleft #0 > }
1901
+ { nameptr numnames =
1902
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1903
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
1904
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
1905
+ if$
1906
+ }
1907
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
1908
+ if$
1909
+ nameptr #1 + 'nameptr :=
1910
+ namesleft #1 - 'namesleft :=
1911
+ }
1912
+ while$
1913
+ }
1914
+ if$
1915
+ }
1916
+
1917
+ FUNCTION { author.key.label }
1918
+ {
1919
+ author empty.or.unknown
1920
+ { key empty.or.unknown
1921
+ { "no key, author in " cite$ * warning$
1922
+ cite$ #1 #3 substring$ }
1923
+ 'key
1924
+ if$
1925
+ }
1926
+ { author format.lab.names }
1927
+ if$
1928
+ }
1929
+
1930
+ FUNCTION { editor.key.organization.label }
1931
+ { % added - gnp. Provide label formatting by organization if editor is null.
1932
+ editor empty.or.unknown
1933
+ { organization empty.or.unknown
1934
+ { key empty.or.unknown
1935
+ { "no key, editor or organization in " cite$ * warning$
1936
+ cite$ #1 #3 substring$ }
1937
+ 'key
1938
+ if$
1939
+ }
1940
+ { organization }
1941
+ if$
1942
+ }
1943
+ { editor format.lab.names }
1944
+ if$
1945
+ }
1946
+
1947
+ FUNCTION { author.editor.key.label }
1948
+ {
1949
+ author empty.or.unknown
1950
+ { editor empty.or.unknown
1951
+ { key empty.or.unknown
1952
+ { "no key, author, or editor in " cite$ * warning$
1953
+ cite$ #1 #3 substring$ }
1954
+ 'key
1955
+ if$
1956
+ }
1957
+ { editor format.lab.names }
1958
+ if$
1959
+ }
1960
+ { author format.lab.names }
1961
+ if$
1962
+ }
1963
+
1964
+ FUNCTION { author.editor.key.organization.label }
1965
+ { % added - gnp. Provide label formatting by organization if author is null.
1966
+ author empty.or.unknown
1967
+ { editor empty.or.unknown
1968
+ { organization empty.or.unknown
1969
+ { key empty.or.unknown
1970
+ { "no key, author, editor or organization in " cite$ * warning$
1971
+ cite$ #1 #3 substring$ }
1972
+ 'key
1973
+ if$
1974
+ }
1975
+ { organization }
1976
+ if$
1977
+ }
1978
+ { editor format.lab.names }
1979
+ if$
1980
+ }
1981
+ { author format.lab.names }
1982
+ if$
1983
+ }
1984
+
1985
+ % Calculate label and leave it on stack
1986
+ FUNCTION { calc.basic.label }
1987
+ {
1988
+ type$ "book" =
1989
+ type$ "inbook" =
1990
+ or
1991
+ type$ "article" =
1992
+ or
1993
+ 'author.editor.key.label
1994
+ { type$ "proceedings" =
1995
+ type$ "periodical" =
1996
+ or
1997
+ 'editor.key.organization.label
1998
+ { type$ "manual" =
1999
+ 'author.editor.key.organization.label
2000
+ 'author.key.label
2001
+ if$
2002
+ }
2003
+ if$
2004
+ }
2005
+ if$
2006
+ duplicate$
2007
+ year empty.or.unknown
2008
+ { "{[n.\,d.]}" }
2009
+ { year field.or.null purify$ #-1 #4 substring$}
2010
+ if$
2011
+ *
2012
+ 'basic.label.year :=
2013
+ }
2014
+
2015
+ FUNCTION { calc.label }
2016
+ {
2017
+ % Changed - GNP. See also author.editor.organization.sort, editor.organization.sort
2018
+ % Form label for BibTeX entry. The classification of which fields are used
2019
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
2020
+ % The change here from newapa is to also include organization as a
2021
+ % citation label if author or editor is missing.
2022
+
2023
+ calc.basic.label
2024
+
2025
+ author empty.or.unknown % generate the full label citation information.
2026
+ {
2027
+ editor empty.or.unknown
2028
+ {
2029
+ organization empty.or.unknown
2030
+ {
2031
+ key empty.or.unknown
2032
+ {
2033
+ "no author, editor, organization, or key in " cite$ * warning$
2034
+ "??"
2035
+ }
2036
+ { key }
2037
+ if$
2038
+ }
2039
+ { organization }
2040
+ if$
2041
+ }
2042
+ { editor my.full.label }
2043
+ if$
2044
+ }
2045
+ { author my.full.label }
2046
+ if$
2047
+
2048
+ % leave label on the stack, to be popped when required.
2049
+
2050
+ "}{" * swap$ * "}{" *
2051
+ % year field.or.null purify$ #-1 #4 substring$ *
2052
+ %
2053
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
2054
+ %
2055
+ year empty.or.unknown
2056
+ { "{[n.\,d.]}" }
2057
+ { year field.or.null purify$ #-1 #4 substring$}
2058
+ if$
2059
+ 'label.year :=
2060
+ }
2061
+
2062
+
2063
+ FUNCTION { output.bibitem }
2064
+ {
2065
+ newline$
2066
+ "\bibitem[" write$
2067
+ calc.basic.label write$
2068
+ "(" write$
2069
+ sort.year write$
2070
+ ")" write$
2071
+ "]%" writeln
2072
+ " {" write$
2073
+ cite$ write$
2074
+ "}" writeln
2075
+ ""
2076
+ before.all 'output.state :=
2077
+ }
2078
+
2079
+
2080
+ FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint }
2081
+ { % enter and return with stack empty
2082
+ %% We switch now from buffered output to output of complete lines, so
2083
+ %% that the Issue .. URL data have their own lines, and are less likely
2084
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
2085
+ %% lines longer than 79 characters, backtracking to what it thinks is
2086
+ %% a break point in the string. Any such wrapping MUST be undone to
2087
+ %% prevent percent-newline from appearing in DOIs and URLs. The
2088
+ %% output data are intentionally wrapped in \showxxx{} macros at
2089
+ %% beginning of line, and that supply their own punctuation (if they
2090
+ %% are not defined to suppress output entirely), to make it easier for
2091
+ %% other software to recover them from .bbl files.
2092
+ %%
2093
+ %% It also makes it possible to later change the macro definitions
2094
+ %% to suppress particular output values, or alter their appearance.
2095
+ %%
2096
+ %% Note that it is possible for theses, technical reports, and
2097
+ %% manuals to have ISBNs, and anything that has an ISBN may also
2098
+ %% have an ISSN. When there are no values for these keys, there
2099
+ %% is no output generated for them here.
2100
+
2101
+ "\newblock" writeln
2102
+ after.block 'output.state :=
2103
+
2104
+ output.issue
2105
+ output.isbn
2106
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
2107
+ output.issn
2108
+ output.lccn
2109
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
2110
+ output.eprint
2111
+ output.url % but ACM wants URL last
2112
+ }
2113
+
2114
+ FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint.note }
2115
+ { % enter with stack empty, return with empty string on stack
2116
+ output.issue.doi.coden.isxn.lccn.url.eprint
2117
+ note empty.or.unknown
2118
+ { }
2119
+ {
2120
+ "\newblock" writeln
2121
+ output.note
2122
+ }
2123
+ if$
2124
+ ""
2125
+ }
2126
+
2127
+ FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint.note.check }
2128
+ { % enter with stack empty, return with empty string on stack
2129
+ output.issue.doi.coden.isxn.lccn.url.eprint
2130
+ note empty.or.unknown
2131
+ { }
2132
+ {
2133
+ "\newblock" writeln
2134
+ output.note.check
2135
+ }
2136
+ if$
2137
+ ""
2138
+ }
2139
+
2140
+ FUNCTION { article }
2141
+ {
2142
+ output.bibitem
2143
+
2144
+ author empty.or.unknown
2145
+ {
2146
+ editor empty.or.unknown
2147
+ { "neither author and editor supplied for " cite$ * warning$ }
2148
+ { format.editors "editor" output.check }
2149
+ if$
2150
+ }
2151
+ { format.authors "author" output.check }
2152
+ if$
2153
+
2154
+ author format.no.key output % added
2155
+ output.year.check % added
2156
+ new.block
2157
+ format.articletitle "title" output.check
2158
+ new.block
2159
+ howpublished empty.or.unknown
2160
+ { }
2161
+ { "\bibinfo{howpublished}{" howpublished "}" * * output }
2162
+ if$
2163
+
2164
+ crossref missing$
2165
+ { format.journal.volume.number.day.month.year output}
2166
+ {
2167
+ "cross reference in @Article{...} is unusual" warning$
2168
+ format.article.crossref output.nonnull
2169
+ }
2170
+ if$
2171
+
2172
+ format.pages.check.without.articleno output
2173
+ format.articleno.numpages output
2174
+ fin.block
2175
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2176
+ fin.entry
2177
+ }
2178
+
2179
+ FUNCTION { book }
2180
+ {
2181
+ output.bibitem
2182
+ author empty.or.unknown
2183
+ { format.editors "author and editor" output.check }
2184
+ { format.authors output.nonnull
2185
+ crossref missing$
2186
+ { "author and editor" editor either.or.check }
2187
+ 'skip$
2188
+ if$
2189
+ }
2190
+ if$
2191
+ output.year.check % added
2192
+ new.block
2193
+ format.btitle "title" output.check
2194
+ crossref missing$
2195
+ { new.sentence % jtb: start a new sentence for series/volume
2196
+ format.bvolume output
2197
+ new.block
2198
+ format.number.series output
2199
+ new.sentence
2200
+ publisher "publisher" bibinfo.output.check
2201
+ address "address" bibinfo.output.check % jtb: require address
2202
+ fin.sentence
2203
+ pages empty.or.unknown
2204
+ { format.bookpages } % use bookpages when pages empty
2205
+ { format.pages.check "pages" tie.or.space.connect }
2206
+ if$
2207
+ output
2208
+ }
2209
+ { new.block
2210
+ format.book.crossref output.nonnull
2211
+ }
2212
+ if$
2213
+ fin.block
2214
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2215
+ fin.entry
2216
+ }
2217
+
2218
+ FUNCTION { booklet }
2219
+ {
2220
+ output.bibitem
2221
+ format.authors output
2222
+ author format.key output % added
2223
+ output.year.check % added
2224
+ new.block
2225
+ format.title "title" output.check
2226
+ new.block
2227
+ howpublished empty.or.unknown
2228
+ { }
2229
+ { "\bibinfo{howpublished}{" howpublished "}" * * output }
2230
+ if$
2231
+ address output
2232
+ fin.block
2233
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2234
+ fin.entry
2235
+ }
2236
+
2237
+ FUNCTION { inbook }
2238
+ {
2239
+ output.bibitem
2240
+ author empty.or.unknown
2241
+ { format.editors
2242
+ "author and editor" output.check
2243
+ }
2244
+ { format.authors output.nonnull
2245
+ crossref missing$
2246
+ { "author and editor" editor either.or.check }
2247
+ 'skip$
2248
+ if$
2249
+ }
2250
+ if$
2251
+ output.year.check % added
2252
+ new.block
2253
+ format.btitle "title" output.check
2254
+ crossref missing$
2255
+ { new.sentence % jtb: start a new sentence for series/volume
2256
+ format.bvolume output
2257
+ new.block
2258
+ format.number.series output
2259
+ new.sentence
2260
+ publisher "publisher" bibinfo.output.check
2261
+ address "address" bibinfo.output.check % jtb: require address
2262
+ format.bookpages output
2263
+ format.chapter.pages
2264
+ "chapter and pages" output.check % jtb: moved from before publisher
2265
+ }
2266
+ {
2267
+ format.bookpages output
2268
+ format.chapter.pages "chapter and pages" output.check
2269
+ new.block
2270
+ format.book.crossref output.nonnull
2271
+ }
2272
+ if$
2273
+ fin.block
2274
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2275
+ fin.entry
2276
+ }
2277
+
2278
+ FUNCTION { incollection }
2279
+ {
2280
+ output.bibitem
2281
+ format.authors "author" output.check
2282
+ author format.key output % added
2283
+ output.year.check % added
2284
+ new.block
2285
+ format.articletitle "title" output.check
2286
+ new.block
2287
+ crossref missing$
2288
+ { format.in.ed.booktitle "booktitle" output.check
2289
+ new.sentence % jtb: start a new sentence for series/volume
2290
+ format.bvolume output
2291
+ format.number.series output
2292
+ new.sentence
2293
+ publisher "publisher" bibinfo.output.check
2294
+ address "address" bibinfo.output.check % jtb: require address
2295
+ format.bookpages output
2296
+ format.chapter.pages output % gnp - was special.output.nonnull
2297
+ % left out comma before page numbers
2298
+ % jtb: moved from before publisher
2299
+ }
2300
+ {
2301
+ format.incoll.inproc.crossref output.nonnull
2302
+ format.chapter.pages output
2303
+ }
2304
+ if$
2305
+ fin.block
2306
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2307
+ fin.entry
2308
+ }
2309
+
2310
+ FUNCTION { inproceedings }
2311
+ {
2312
+ output.bibitem
2313
+ format.authors "author" output.check
2314
+ author format.key output % added
2315
+ output.year.check % added
2316
+ new.block
2317
+ format.articletitle "title" output.check
2318
+ howpublished empty.or.unknown
2319
+ { }
2320
+ { "\bibinfo{howpublished}{" howpublished "}" * * output.dot.space }
2321
+ if$
2322
+ crossref missing$
2323
+ {
2324
+ journal missing$ % jtb: proceedings appearing in journals
2325
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
2326
+ format.series output.removenospace
2327
+ format.editors.fml output % BV 2011/09/27 Moved dot to comma
2328
+ series empty.or.unknown
2329
+ { format.bvolume.noseries output }
2330
+ {}
2331
+ if$
2332
+ new.sentence
2333
+ organization output
2334
+ publisher "publisher" bibinfo.output.check % jtb: require publisher (?)
2335
+ address "address" bibinfo.output.check % jtb: require address
2336
+ format.bookpages output
2337
+ }
2338
+ {
2339
+ format.in.booktitle format.city "booktitle" output.check
2340
+ format.editors.fml output
2341
+ new.sentence
2342
+ format.journal.volume.number.day.month.year output
2343
+ }
2344
+ if$
2345
+ format.articleno output
2346
+ format.pages.check.without.articleno output
2347
+ }
2348
+ {
2349
+ format.incoll.inproc.crossref output.nonnull
2350
+ format.articleno output
2351
+ format.pages.check.without.articleno output
2352
+ }
2353
+ if$
2354
+ format.articleno.numpages output
2355
+ fin.block
2356
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2357
+ fin.entry
2358
+ }
2359
+
2360
+ FUNCTION { conference } { inproceedings }
2361
+
2362
+ FUNCTION { manual }
2363
+ {
2364
+ output.bibitem
2365
+ author empty.or.unknown
2366
+ { editor empty.or.unknown
2367
+ { organization "organization" output.check
2368
+ organization format.key output } % if all else fails, use key
2369
+ { format.editors "author and editor" output.check }
2370
+ if$
2371
+ }
2372
+ { format.authors output.nonnull }
2373
+ if$
2374
+ output.year.check % added
2375
+ new.block
2376
+ format.btitle "title" output.check
2377
+ organization address new.block.checkb
2378
+ % jtb: back to normal style: organization, address
2379
+ organization "organization" output.check
2380
+ address output
2381
+ fin.block
2382
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2383
+ fin.entry
2384
+ }
2385
+
2386
+ FUNCTION { mastersthesis }
2387
+ {
2388
+ output.bibitem
2389
+ format.authors "author" output.check
2390
+ author format.key output % added
2391
+ output.year.check % added
2392
+ new.block
2393
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
2394
+ new.block
2395
+ "\bibinfo{thesistype}{Master's\ thesis}" format.thesis.type output
2396
+ new.sentence
2397
+ school "school" bibinfo.output.check
2398
+ address empty.or.unknown
2399
+ { }
2400
+ { "\bibinfo{address}{" address * "}" * output }
2401
+ if$
2402
+ new.block
2403
+ format.advisor output
2404
+ fin.block
2405
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2406
+ fin.entry
2407
+ }
2408
+
2409
+ FUNCTION { misc }
2410
+ {
2411
+ output.bibitem
2412
+ format.authors "author" output.check
2413
+ author format.key output % added
2414
+ output.year.check % added
2415
+ title howpublished new.block.checkb
2416
+ format.title output
2417
+ new.block
2418
+ howpublished empty.or.unknown
2419
+ { }
2420
+ { "\bibinfo{howpublished}{" howpublished "}" * * output }
2421
+ if$
2422
+ "" output.nonnull.dot.space
2423
+ calc.format.page.count output
2424
+ fin.block
2425
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2426
+ fin.entry
2427
+ }
2428
+
2429
+ FUNCTION { online } { manual }
2430
+
2431
+ FUNCTION { game } { manual }
2432
+
2433
+ FUNCTION { artifactsoftware } { manual }
2434
+
2435
+ FUNCTION { artifactdataset } { manual }
2436
+
2437
+ FUNCTION { software } { manual }
2438
+
2439
+ FUNCTION { dataset } { manual }
2440
+
2441
+ FUNCTION { phdthesis }
2442
+ {
2443
+ output.bibitem
2444
+ format.authors "author" output.check
2445
+ author format.key output % added
2446
+ output.year.check % added
2447
+ new.block
2448
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
2449
+ new.block
2450
+ "\bibinfo{thesistype}{Ph.\,D. Dissertation}" format.thesis.type output
2451
+ new.sentence
2452
+ school "school" bibinfo.output.check
2453
+ address empty.or.unknown
2454
+ { }
2455
+ { "\bibinfo{address}{" address * "}" * output }
2456
+ if$
2457
+ new.block
2458
+ format.advisor output
2459
+ fin.block
2460
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2461
+ fin.entry
2462
+ }
2463
+
2464
+ FUNCTION {format.date}
2465
+ { year empty.or.unknown
2466
+ { month empty.or.unknown
2467
+ {
2468
+ "" % output empty date if year/month both empty
2469
+ day empty.or.unknown
2470
+ { }
2471
+ { "there's a day but no month or year in " cite$ * warning$ }
2472
+ if$
2473
+ }
2474
+ { "there's a month but no year in " cite$ * warning$
2475
+ month
2476
+ day empty.or.unknown
2477
+ { }
2478
+ { " " * day * }
2479
+ if$
2480
+ }
2481
+ if$
2482
+ }
2483
+ { month empty.or.unknown
2484
+ {
2485
+ year % output only year if month empty
2486
+ day empty.or.unknown
2487
+ { }
2488
+ { "there's a day and year but no month in " cite$ * warning$ }
2489
+ if$
2490
+ }
2491
+ {
2492
+ month " " *
2493
+ day empty.or.unknown
2494
+ { }
2495
+ { day * ", " * }
2496
+ if$
2497
+ year *
2498
+ }
2499
+ if$
2500
+ }
2501
+ if$
2502
+ }
2503
+
2504
+ FUNCTION {new.block.checka}
2505
+ {
2506
+ empty.or.unknown
2507
+ 'skip$
2508
+ 'new.block
2509
+ if$
2510
+ }
2511
+
2512
+ FUNCTION { periodical }
2513
+ {
2514
+ output.bibitem
2515
+ editor empty.or.unknown
2516
+ { organization output }
2517
+ { format.editors output.nonnull }
2518
+ if$
2519
+ new.block
2520
+ output.year.check
2521
+ new.sentence
2522
+ format.articletitle "title" output.check
2523
+ format.journal.volume.number.day.month.year output
2524
+ calc.format.page.count output
2525
+ fin.entry
2526
+ }
2527
+
2528
+ FUNCTION { proceedings }
2529
+ {
2530
+ output.bibitem
2531
+ editor empty.or.unknown
2532
+ { organization output
2533
+ organization format.key output } % gnp - changed from author format.key
2534
+ { format.editors output.nonnull }
2535
+ if$
2536
+ % author format.key output % gnp - removed (should be either
2537
+ % editor or organization
2538
+ output.year.check % added (newapa)
2539
+ new.block
2540
+ format.btitle format.city "title" output.check % jtb: added city
2541
+ new.sentence
2542
+ format.bvolume output
2543
+ format.number.series output
2544
+ new.sentence
2545
+ organization output
2546
+ % jtb: normal order: publisher, address
2547
+ publisher empty.or.unknown
2548
+ { }
2549
+ { "\bibinfo{publisher}{" publisher * "}" * output }
2550
+ if$
2551
+ address empty.or.unknown
2552
+ { }
2553
+ { "\bibinfo{address}{" address * "}" * output }
2554
+ if$
2555
+ fin.block
2556
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2557
+ fin.entry
2558
+ }
2559
+
2560
+ FUNCTION { collection } { proceedings }
2561
+
2562
+ FUNCTION { techreport }
2563
+ {
2564
+ output.bibitem
2565
+ format.authors "author" output.check
2566
+ author format.key output % added
2567
+ output.year.check % added
2568
+ new.block
2569
+ format.btitle "title" output.check
2570
+ new.block
2571
+ % format.tr.number output % jtb: moved month ...
2572
+ format.tr.number output new.sentence % Gerry - need dot 2011/09/28
2573
+ institution "institution" bibinfo.output.check
2574
+ address empty.or.unknown
2575
+ { }
2576
+ { "\bibinfo{address}{" address "}" * * output }
2577
+ if$
2578
+ new.sentence
2579
+ format.named.pages output
2580
+ % ACM omits year at end in transactions style
2581
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
2582
+ fin.block
2583
+ output.issue.doi.coden.isxn.lccn.url.eprint.note
2584
+ fin.entry
2585
+ }
2586
+
2587
+ FUNCTION { unpublished }
2588
+ {
2589
+ output.bibitem
2590
+ format.authors
2591
+ "author" output.check
2592
+ author format.key output % added
2593
+ output.year.check % added
2594
+ new.block
2595
+ format.title "title" output.check
2596
+ fin.sentence
2597
+ output.day.month.year % UTAH
2598
+ calc.format.page.count output
2599
+ fin.block
2600
+ output.issue.doi.coden.isxn.lccn.url.eprint.note.check
2601
+ fin.entry
2602
+ }
2603
+
2604
+ FUNCTION { default.type } { misc }
2605
+
2606
+ %%% ACM journal-style month definitions: full name if 1--5 letters, else
2607
+ %%% abbreviation of 3 or 4 characters and a dot
2608
+
2609
+ MACRO {jan} {"Jan."}
2610
+
2611
+ MACRO {feb} {"Feb."}
2612
+
2613
+ MACRO {mar} {"March"}
2614
+
2615
+ MACRO {apr} {"April"}
2616
+
2617
+ MACRO {may} {"May"}
2618
+
2619
+ MACRO {jun} {"June"}
2620
+
2621
+ MACRO {jul} {"July"}
2622
+
2623
+ MACRO {aug} {"Aug."}
2624
+
2625
+ MACRO {sep} {"Sept."}
2626
+
2627
+ MACRO {oct} {"Oct."}
2628
+
2629
+ MACRO {nov} {"Nov."}
2630
+
2631
+ MACRO {dec} {"Dec."}
2632
+
2633
+ %%% ACM journal names
2634
+
2635
+ MACRO {cie} {"ACM Computers in Entertainment"}
2636
+ MACRO {csur} {"ACM Computing Surveys"}
2637
+ MACRO {dgov} {"Digital Government: Research and Practice"}
2638
+ MACRO {dtrap} {"Digital Threats: Research and Practice"}
2639
+ MACRO {health} {"ACM Transactions on Computing for Healthcare"}
2640
+ MACRO {imwut} {"PACM on Interactive, Mobile, Wearable and Ubiquitous Technologies"}
2641
+ MACRO {jacm} {"Journal of the ACM"}
2642
+ MACRO {jdiq} {"ACM Journal of Data and Information Quality"}
2643
+ MACRO {jea} {"ACM Journal of Experimental Algorithmics"}
2644
+ MACRO {jeric} {"ACM Journal of Educational Resources in Computing"}
2645
+ MACRO {jetc} {"ACM Journal on Emerging Technologies in Computing Systems"}
2646
+ MACRO {jocch} {"ACM Journal on Computing and Cultural Heritage"}
2647
+ MACRO {pacmcgit} {"Proceedings of the ACM on Computer Graphics and Interactive Techniques"}
2648
+ MACRO {pacmhci} {"PACM on Human-Computer Interaction"}
2649
+ MACRO {pacmpl} {"PACM on Programming Languages"}
2650
+ MACRO {pomacs} {"PACM on Measurement and Analysis of Computing Systems"}
2651
+ MACRO {taas} {"ACM Transactions on Autonomous and Adaptive Systems"}
2652
+ MACRO {taccess} {"ACM Transactions on Accessible Computing"}
2653
+ MACRO {taco} {"ACM Transactions on Architecture and Code Optimization"}
2654
+ MACRO {talg} {"ACM Transactions on Algorithms"}
2655
+ MACRO {tallip} {"ACM Transactions on Asian and Low-Resource Language Information Processing"}
2656
+ MACRO {tap} {"ACM Transactions on Applied Perception"}
2657
+ MACRO {tcps} {"ACM Transactions on Cyber-Physical Systems"}
2658
+ MACRO {tds} {"ACM/IMS Transactions on Data Science"}
2659
+ MACRO {teac} {"ACM Transactions on Economics and Computation"}
2660
+ MACRO {tecs} {"ACM Transactions on Embedded Computing Systems"}
2661
+ MACRO {telo} {"ACM Transactions on Evolutionary Learning"}
2662
+ MACRO {thri} {"ACM Transactions on Human-Robot Interaction"}
2663
+ MACRO {tiis} {"ACM Transactions on Interactive Intelligent Systems"}
2664
+ MACRO {tiot} {"ACM Transactions on Internet of Things"}
2665
+ MACRO {tissec} {"ACM Transactions on Information and System Security"}
2666
+ MACRO {tist} {"ACM Transactions on Intelligent Systems and Technology"}
2667
+ MACRO {tkdd} {"ACM Transactions on Knowledge Discovery from Data"}
2668
+ MACRO {tmis} {"ACM Transactions on Management Information Systems"}
2669
+ MACRO {toce} {"ACM Transactions on Computing Education"}
2670
+ MACRO {tochi} {"ACM Transactions on Computer-Human Interaction"}
2671
+ MACRO {tocl} {"ACM Transactions on Computational Logic"}
2672
+ MACRO {tocs} {"ACM Transactions on Computer Systems"}
2673
+ MACRO {toct} {"ACM Transactions on Computation Theory"}
2674
+ MACRO {todaes} {"ACM Transactions on Design Automation of Electronic Systems"}
2675
+ MACRO {tods} {"ACM Transactions on Database Systems"}
2676
+ MACRO {tog} {"ACM Transactions on Graphics"}
2677
+ MACRO {tois} {"ACM Transactions on Information Systems"}
2678
+ MACRO {toit} {"ACM Transactions on Internet Technology"}
2679
+ MACRO {tomacs} {"ACM Transactions on Modeling and Computer Simulation"}
2680
+ MACRO {tomm} {"ACM Transactions on Multimedia Computing, Communications and Applications"}
2681
+ MACRO {tompecs} {"ACM Transactions on Modeling and Performance Evaluation of Computing Systems"}
2682
+ MACRO {toms} {"ACM Transactions on Mathematical Software"}
2683
+ MACRO {topc} {"ACM Transactions on Parallel Computing"}
2684
+ MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
2685
+ MACRO {tops} {"ACM Transactions on Privacy and Security"}
2686
+ MACRO {tos} {"ACM Transactions on Storage"}
2687
+ MACRO {tosem} {"ACM Transactions on Software Engineering and Methodology"}
2688
+ MACRO {tosn} {"ACM Transactions on Sensor Networks"}
2689
+ MACRO {tqc} {"ACM Transactions on Quantum Computing"}
2690
+ MACRO {trets} {"ACM Transactions on Reconfigurable Technology and Systems"}
2691
+ MACRO {tsas} {"ACM Transactions on Spatial Algorithms and Systems"}
2692
+ MACRO {tsc} {"ACM Transactions on Social Computing"}
2693
+ MACRO {tslp} {"ACM Transactions on Speech and Language Processing"}
2694
+ MACRO {tweb} {"ACM Transactions on the Web"}
2695
+
2696
+ %%% Some traditional macros
2697
+ MACRO {acmcs} {"ACM Computing Surveys"}
2698
+
2699
+ MACRO {acta} {"Acta Informatica"}
2700
+
2701
+ MACRO {cacm} {"Communications of the ACM"}
2702
+
2703
+ MACRO {ibmjrd} {"IBM Journal of Research and Development"}
2704
+
2705
+ MACRO {ibmsj} {"IBM Systems Journal"}
2706
+
2707
+ MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
2708
+
2709
+ MACRO {ieeetc} {"IEEE Transactions on Computers"}
2710
+
2711
+ MACRO {ieeetcad}
2712
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
2713
+
2714
+ MACRO {ipl} {"Information Processing Letters"}
2715
+
2716
+ MACRO {jcss} {"Journal of Computer and System Sciences"}
2717
+
2718
+ MACRO {scp} {"Science of Computer Programming"}
2719
+
2720
+ MACRO {sicomp} {"SIAM Journal on Computing"}
2721
+
2722
+ MACRO {toois} {"ACM Transactions on Office Information Systems"}
2723
+
2724
+ MACRO {tcs} {"Theoretical Computer Science"}
2725
+
2726
+
2727
+
2728
+ READ
2729
+
2730
+ FUNCTION { sortify }
2731
+ {
2732
+ purify$
2733
+ "l" change.case$
2734
+ }
2735
+
2736
+ FUNCTION { chop.word }
2737
+ {
2738
+ 's :=
2739
+ 'len :=
2740
+ s #1 len substring$ =
2741
+ { s len #1 + global.max$ substring$ }
2742
+ 's
2743
+ if$
2744
+ }
2745
+
2746
+ FUNCTION { sort.format.names }
2747
+ {
2748
+ 's :=
2749
+ #1 'nameptr :=
2750
+ ""
2751
+ s num.names$ 'numnames :=
2752
+ numnames 'namesleft :=
2753
+ { namesleft #0 > }
2754
+ { nameptr #1 >
2755
+ { " " * }
2756
+ 'skip$
2757
+ if$
2758
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
2759
+ nameptr numnames = t "others" = and
2760
+ { " et~al" * }
2761
+ { t sortify * }
2762
+ if$
2763
+ nameptr #1 + 'nameptr :=
2764
+ namesleft #1 - 'namesleft :=
2765
+ }
2766
+ while$
2767
+ }
2768
+
2769
+ FUNCTION { sort.format.title }
2770
+ {
2771
+ 't :=
2772
+ "A " #2
2773
+ "An " #3
2774
+ "The " #4 t chop.word
2775
+ chop.word
2776
+ chop.word
2777
+ sortify
2778
+ #1 global.max$ substring$
2779
+ }
2780
+
2781
+ FUNCTION { author.sort }
2782
+ {
2783
+ author empty.or.unknown
2784
+ { key empty.or.unknown
2785
+ { "to sort, need author or key in " cite$ * warning$
2786
+ "" }
2787
+ { key sortify }
2788
+ if$
2789
+ }
2790
+ { author sort.format.names }
2791
+ if$
2792
+ }
2793
+
2794
+ FUNCTION { author.editor.sort }
2795
+ {
2796
+ author empty.or.unknown
2797
+ {
2798
+ editor empty.or.unknown
2799
+ {
2800
+ key empty.or.unknown
2801
+ { "to sort, need author, editor, or key in " cite$ * warning$
2802
+ ""
2803
+ }
2804
+ { key sortify }
2805
+ if$
2806
+ }
2807
+ { editor sort.format.names }
2808
+ if$
2809
+ }
2810
+ { author sort.format.names }
2811
+ if$
2812
+ }
2813
+
2814
+ FUNCTION { editor.organization.sort }
2815
+ {
2816
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
2817
+ % Unlike alpha.bst, we need entire names, not abbreviations
2818
+
2819
+ editor empty.or.unknown
2820
+ { organization empty.or.unknown
2821
+ { key empty.or.unknown
2822
+ { "to sort, need editor, organization, or key in " cite$ * warning$
2823
+ ""
2824
+ }
2825
+ { key sortify }
2826
+ if$
2827
+ }
2828
+ { organization sortify }
2829
+ if$
2830
+ }
2831
+ { editor sort.format.names }
2832
+ if$
2833
+ }
2834
+
2835
+ FUNCTION { author.editor.organization.sort }
2836
+ {
2837
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
2838
+ % Unlike alpha.bst, we need entire names, not abbreviations
2839
+
2840
+ author empty.or.unknown
2841
+ {
2842
+ editor empty.or.unknown
2843
+ { organization empty.or.unknown
2844
+ { key empty.or.unknown
2845
+ { "to sort, need author, editor, or key in " cite$ * warning$
2846
+ ""
2847
+ }
2848
+ { key sortify }
2849
+ if$
2850
+ }
2851
+ { organization sortify }
2852
+ if$
2853
+ }
2854
+ { editor sort.format.names }
2855
+ if$
2856
+ }
2857
+ { author sort.format.names }
2858
+ if$
2859
+ }
2860
+
2861
+ FUNCTION { presort }
2862
+ {
2863
+ % Presort creates the bibentry's label via a call to calc.label, and then
2864
+ % sorts the entries based on entry type. Chicago.bst adds support for
2865
+ % including organizations as the sort key; the following is stolen from
2866
+ % alpha.bst.
2867
+
2868
+ calc.label
2869
+ basic.label.year
2870
+ swap$
2871
+ " "
2872
+ swap$
2873
+ * *
2874
+ " "
2875
+ *
2876
+ sortify
2877
+ year field.or.null purify$ #-1 #4 substring$ * % add year
2878
+ " "
2879
+ *
2880
+ type$ "book" =
2881
+ type$ "inbook" =
2882
+ or
2883
+ type$ "article" =
2884
+ or
2885
+ 'author.editor.sort
2886
+ { type$ "proceedings" =
2887
+ type$ "periodical" =
2888
+ or
2889
+ 'editor.organization.sort
2890
+ { type$ "manual" =
2891
+ 'author.editor.organization.sort
2892
+ 'author.sort
2893
+ if$
2894
+ }
2895
+ if$
2896
+ }
2897
+ if$
2898
+ #1 entry.max$ substring$ % added for newapa
2899
+ 'sort.label := % added for newapa
2900
+ sort.label % added for newapa
2901
+ *
2902
+ " "
2903
+ *
2904
+ title field.or.null
2905
+ sort.format.title
2906
+ *
2907
+ #1 entry.max$ substring$
2908
+ 'sort.key$ :=
2909
+ }
2910
+
2911
+
2912
+
2913
+ ITERATE { presort }
2914
+
2915
+ SORT % by label, year, author/editor, title
2916
+
2917
+ % From plainnat.bst
2918
+ STRINGS { longest.label }
2919
+
2920
+ INTEGERS { longest.label.width number.label }
2921
+
2922
+ FUNCTION {initialize.longest.label}
2923
+ { "" 'longest.label :=
2924
+ #0 int.to.chr$ 'last.label :=
2925
+ "" 'next.extra :=
2926
+ #0 'longest.label.width :=
2927
+ #0 'last.extra.num :=
2928
+ #0 'number.label :=
2929
+ }
2930
+
2931
+
2932
+
2933
+ FUNCTION { initialize.extra.label.stuff }
2934
+ { #0 int.to.chr$ 'last.label :=
2935
+ "" 'next.extra :=
2936
+ #0 'last.extra.num :=
2937
+ }
2938
+
2939
+ FUNCTION { forward.pass }
2940
+ {
2941
+ % Pass through all entries, comparing current entry to last one.
2942
+ % Need to concatenate year to the stack (done by calc.label) to determine
2943
+ % if two entries are the same (see presort)
2944
+
2945
+ last.label
2946
+ calc.basic.label year field.or.null purify$ #-1 #4 substring$ * % add year
2947
+ #1 entry.max$ substring$ = % are they equal?
2948
+ { last.extra.num #1 + 'last.extra.num :=
2949
+ last.extra.num int.to.chr$ 'extra.label :=
2950
+ }
2951
+ { "a" chr.to.int$ 'last.extra.num :=
2952
+ "" 'extra.label :=
2953
+ calc.basic.label year field.or.null purify$ #-1 #4 substring$ * % add year
2954
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
2955
+ }
2956
+ if$
2957
+ number.label #1 + 'number.label :=
2958
+ }
2959
+
2960
+ FUNCTION { reverse.pass }
2961
+ {
2962
+ next.extra "b" =
2963
+ { "a" 'extra.label := }
2964
+ 'skip$
2965
+ if$
2966
+ label.year extra.label * 'sort.year :=
2967
+ extra.label 'next.extra :=
2968
+ }
2969
+
2970
+ EXECUTE {initialize.extra.label.stuff}
2971
+ EXECUTE {initialize.longest.label}
2972
+
2973
+
2974
+ ITERATE {forward.pass}
2975
+
2976
+ REVERSE {reverse.pass}
2977
+
2978
+ FUNCTION { bib.sort.order }
2979
+ {
2980
+ sort.label
2981
+ " "
2982
+ *
2983
+ year field.or.null sortify
2984
+ *
2985
+ " "
2986
+ *
2987
+ title field.or.null
2988
+ sort.format.title
2989
+ *
2990
+ #1 entry.max$ substring$
2991
+ 'sort.key$ :=
2992
+ }
2993
+
2994
+ ITERATE { bib.sort.order }
2995
+
2996
+ SORT % by sort.label, year, title --- giving final bib. order.
2997
+
2998
+ FUNCTION { begin.bib }
2999
+ {
3000
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
3001
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
3002
+ #1 'show-isbn-10-and-13 :=
3003
+
3004
+ "%%% -*-BibTeX-*-" writeln
3005
+ "%%% Do NOT edit. File created by BibTeX with style" writeln
3006
+ "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
3007
+ "" writeln
3008
+
3009
+ preamble$ empty.or.unknown
3010
+ 'skip$
3011
+ { preamble$ writeln }
3012
+ if$
3013
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" * writeln
3014
+ "" writeln
3015
+ "%%% ====================================================================" writeln
3016
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
3017
+ "%%% customized versions of any of these macros before the \bibliography" writeln
3018
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
3019
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
3020
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
3021
+ "%%% the Web address." writeln
3022
+ "%%%" writeln
3023
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
3024
+ "%%% to an empty string, or better, \unskip, like this:" writeln
3025
+ "%%%" writeln
3026
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
3027
+ "%%%" writeln
3028
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
3029
+ "%%%" writeln
3030
+ "%%% ====================================================================" writeln
3031
+ "" writeln
3032
+
3033
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
3034
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
3035
+ %% space.
3036
+ %%
3037
+ %% For other publications, prior definitions like these may be useful:
3038
+ %%
3039
+ %% Plain TeX:
3040
+ %% \def \showCODEN #1{CODEN #1.}
3041
+ %% \def \showISSN #1{ISSN #1.}
3042
+ %% \def \showLCCN #1{LCCN #1.}
3043
+ %%
3044
+ %% LaTeX:
3045
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
3046
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
3047
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
3048
+
3049
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
3050
+ "\ifx \showDOI \undefined \def \showDOI #1{#1}\fi" writeln
3051
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
3052
+ % \showISBNx and \showISBNxiii before the .bbl file is read
3053
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
3054
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
3055
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
3056
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
3057
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
3058
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
3059
+ "\ifx \showURL \undefined \def \showURL {\relax} \fi" writeln
3060
+ "% The following commands are used for tagged output and should be " writeln
3061
+ "% invisible to TeX" writeln
3062
+ "\providecommand\bibfield[2]{#2}" writeln
3063
+ "\providecommand\bibinfo[2]{#2}" writeln
3064
+ "\providecommand\natexlab[1]{#1}" writeln
3065
+ "\providecommand\showeprint[2][]{arXiv:#2}" writeln
3066
+ }
3067
+
3068
+ EXECUTE {begin.bib}
3069
+
3070
+ EXECUTE {init.state.consts}
3071
+
3072
+ ITERATE {call.type$}
3073
+
3074
+ FUNCTION { end.bib }
3075
+ {
3076
+ newline$
3077
+ "\end{thebibliography}"
3078
+ writeln
3079
+ }
3080
+
3081
+ EXECUTE {end.bib}