unaltraweb 0.3.0

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 (444) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/Makefile +412 -0
  4. data/README.md +226 -0
  5. data/_config.yml +842 -0
  6. data/_data/i18n/ca.yml +278 -0
  7. data/_data/i18n/en.yml +278 -0
  8. data/_data/i18n/es.yml +278 -0
  9. data/_includes/audio.liquid +30 -0
  10. data/_includes/bib_search.liquid +5 -0
  11. data/_includes/blog-list.liquid +66 -0
  12. data/_includes/book-citation.liquid +33 -0
  13. data/_includes/citation.liquid +26 -0
  14. data/_includes/custom_head.liquid +3 -0
  15. data/_includes/custom_scripts.liquid +5 -0
  16. data/_includes/cv/list.liquid +5 -0
  17. data/_includes/cv/list_groups.liquid +51 -0
  18. data/_includes/cv/map.liquid +29 -0
  19. data/_includes/cv/nested_list.liquid +16 -0
  20. data/_includes/cv/time_table.liquid +118 -0
  21. data/_includes/cv-download-card.liquid +26 -0
  22. data/_includes/developer-mode-switcher.liquid +24 -0
  23. data/_includes/disqus.liquid +13 -0
  24. data/_includes/distill_scripts.liquid +298 -0
  25. data/_includes/documentation-download-detail.liquid +76 -0
  26. data/_includes/documentation-downloads.liquid +71 -0
  27. data/_includes/documentation-profile-attributes.liquid +4 -0
  28. data/_includes/documentation-section-toc.liquid +9 -0
  29. data/_includes/documentation-sidebar.liquid +112 -0
  30. data/_includes/figure.liquid +87 -0
  31. data/_includes/footer.liquid +66 -0
  32. data/_includes/giscus.liquid +25 -0
  33. data/_includes/head.liquid +220 -0
  34. data/_includes/header.liquid +544 -0
  35. data/_includes/latest_posts.liquid +61 -0
  36. data/_includes/localized-date.liquid +5 -0
  37. data/_includes/manual-bibliography.liquid +2 -0
  38. data/_includes/manual-featured-readings.liquid +12 -0
  39. data/_includes/manual-other-readings.liquid +12 -0
  40. data/_includes/manual-page-toc.liquid +11 -0
  41. data/_includes/manual-sidebar.liquid +58 -0
  42. data/_includes/manual-teachers.liquid +74 -0
  43. data/_includes/metadata.liquid +278 -0
  44. data/_includes/news.liquid +48 -0
  45. data/_includes/newsletter.liquid +68 -0
  46. data/_includes/page-hero.liquid +96 -0
  47. data/_includes/page-link.liquid +8 -0
  48. data/_includes/pagination.liquid +22 -0
  49. data/_includes/post-reading-time.liquid +29 -0
  50. data/_includes/previous-next.liquid +37 -0
  51. data/_includes/profile-card.liquid +49 -0
  52. data/_includes/profile-feature-matrix.liquid +75 -0
  53. data/_includes/profile-highlights.liquid +122 -0
  54. data/_includes/project-grid.liquid +26 -0
  55. data/_includes/project-resource-link.liquid +45 -0
  56. data/_includes/project-resources.liquid +21 -0
  57. data/_includes/projects.liquid +38 -0
  58. data/_includes/projects_horizontal.liquid +37 -0
  59. data/_includes/publications-metrics-summary.liquid +69 -0
  60. data/_includes/publications-summary.liquid +127 -0
  61. data/_includes/reading-biblio-controls.liquid +65 -0
  62. data/_includes/reading-cover-card.liquid +93 -0
  63. data/_includes/reading-rating.liquid +11 -0
  64. data/_includes/recommended-readings.liquid +30 -0
  65. data/_includes/related_posts.liquid +39 -0
  66. data/_includes/repository/repo.liquid +48 -0
  67. data/_includes/repository/repo_trophies.liquid +44 -0
  68. data/_includes/repository/repo_user.liquid +35 -0
  69. data/_includes/resume/awards.liquid +19 -0
  70. data/_includes/resume/basics.liquid +28 -0
  71. data/_includes/resume/certificates.liquid +35 -0
  72. data/_includes/resume/education.liquid +54 -0
  73. data/_includes/resume/interests.liquid +34 -0
  74. data/_includes/resume/languages.liquid +31 -0
  75. data/_includes/resume/projects.liquid +32 -0
  76. data/_includes/resume/publications.liquid +28 -0
  77. data/_includes/resume/references.liquid +31 -0
  78. data/_includes/resume/skills.liquid +33 -0
  79. data/_includes/resume/volunteer.liquid +52 -0
  80. data/_includes/resume/work.liquid +52 -0
  81. data/_includes/scripts.liquid +364 -0
  82. data/_includes/search-data.js.liquid +341 -0
  83. data/_includes/selected_papers.liquid +3 -0
  84. data/_includes/t.liquid +31 -0
  85. data/_includes/team-grid.liquid +172 -0
  86. data/_includes/video.liquid +97 -0
  87. data/_layouts/about.liquid +93 -0
  88. data/_layouts/archive.liquid +45 -0
  89. data/_layouts/bib.liquid +677 -0
  90. data/_layouts/book-review.liquid +225 -0
  91. data/_layouts/book-shelf.liquid +66 -0
  92. data/_layouts/cv.liquid +127 -0
  93. data/_layouts/default.liquid +70 -0
  94. data/_layouts/distill.liquid +132 -0
  95. data/_layouts/documentation-download-detail.liquid +5 -0
  96. data/_layouts/documentation-home.liquid +100 -0
  97. data/_layouts/documentation-page.liquid +45 -0
  98. data/_layouts/manual-bib.liquid +73 -0
  99. data/_layouts/manual-chapter.liquid +99 -0
  100. data/_layouts/manual-featured-bib.liquid +100 -0
  101. data/_layouts/manual-home.liquid +120 -0
  102. data/_layouts/none.liquid +1 -0
  103. data/_layouts/outputs.liquid +29 -0
  104. data/_layouts/page.liquid +52 -0
  105. data/_layouts/post.liquid +95 -0
  106. data/_layouts/profile.liquid +36 -0
  107. data/_layouts/profiles.liquid +36 -0
  108. data/_layouts/project.liquid +7 -0
  109. data/_layouts/repositories.liquid +58 -0
  110. data/_layouts/theses.liquid +126 -0
  111. data/_plugins/bibliography_profiles.rb +164 -0
  112. data/_plugins/callouts.rb +104 -0
  113. data/_plugins/code_blocks.rb +277 -0
  114. data/_plugins/computation_figure_images.rb +266 -0
  115. data/_plugins/computation_sources.rb +42 -0
  116. data/_plugins/content_search_index.rb +210 -0
  117. data/_plugins/details.rb +23 -0
  118. data/_plugins/external-posts.rb +124 -0
  119. data/_plugins/figure_captions.rb +800 -0
  120. data/_plugins/file-exists.rb +22 -0
  121. data/_plugins/google-scholar-citations.rb +86 -0
  122. data/_plugins/hide-custom-bibtex.rb +18 -0
  123. data/_plugins/inspirehep-citations.rb +57 -0
  124. data/_plugins/localized_visual_sources.rb +145 -0
  125. data/_plugins/manual_release_metadata.rb +47 -0
  126. data/_plugins/mermaid_mmd_images.rb +233 -0
  127. data/_plugins/profile-pages.rb +28 -0
  128. data/_plugins/remove-accents.rb +32 -0
  129. data/_plugins/reproducible_build_time.rb +55 -0
  130. data/_plugins/search-data.rb +83 -0
  131. data/_plugins/theme-cache-bust.rb +56 -0
  132. data/_plugins/vega_visual_images.rb +290 -0
  133. data/_plugins/web_capture_images.rb +154 -0
  134. data/_sass/_base.scss +2133 -0
  135. data/_sass/_blog.scss +67 -0
  136. data/_sass/_callouts.scss +100 -0
  137. data/_sass/_custom.scss +437 -0
  138. data/_sass/_cv.scss +274 -0
  139. data/_sass/_developer.scss +97 -0
  140. data/_sass/_distill.scss +185 -0
  141. data/_sass/_documentation.scss +2220 -0
  142. data/_sass/_layout.scss +218 -0
  143. data/_sass/_manual.scss +2691 -0
  144. data/_sass/_profile.scss +323 -0
  145. data/_sass/_projects.scss +163 -0
  146. data/_sass/_reading.scss +465 -0
  147. data/_sass/_site-custom.scss +3 -0
  148. data/_sass/_tabs.scss +48 -0
  149. data/_sass/_team.scss +230 -0
  150. data/_sass/_themes.scss +254 -0
  151. data/_sass/_typograms.scss +132 -0
  152. data/_sass/_variables.scss +52 -0
  153. data/_sass/font-awesome/_animated.scss +152 -0
  154. data/_sass/font-awesome/_bordered-pulled.scss +20 -0
  155. data/_sass/font-awesome/_core.scss +49 -0
  156. data/_sass/font-awesome/_fixed-width.scss +7 -0
  157. data/_sass/font-awesome/_functions.scss +57 -0
  158. data/_sass/font-awesome/_icons.scss +13 -0
  159. data/_sass/font-awesome/_list.scss +18 -0
  160. data/_sass/font-awesome/_mixins.scss +65 -0
  161. data/_sass/font-awesome/_rotated-flipped.scss +31 -0
  162. data/_sass/font-awesome/_screen-reader.scss +14 -0
  163. data/_sass/font-awesome/_shims.scss +1578 -0
  164. data/_sass/font-awesome/_sizing.scss +16 -0
  165. data/_sass/font-awesome/_stacked.scss +32 -0
  166. data/_sass/font-awesome/_variables.scss +5044 -0
  167. data/_sass/font-awesome/brands.scss +30 -0
  168. data/_sass/font-awesome/fontawesome.scss +21 -0
  169. data/_sass/font-awesome/regular.scss +27 -0
  170. data/_sass/font-awesome/solid.scss +27 -0
  171. data/_sass/font-awesome/v4-shims.scss +11 -0
  172. data/_sass/tabler-icons/tabler-icons-filled.scss +1646 -0
  173. data/_sass/tabler-icons/tabler-icons-outline.scss +9859 -0
  174. data/_sass/tabler-icons/tabler-icons.scss +11463 -0
  175. data/_scripts/cronitor-analytics-setup.js +9 -0
  176. data/_scripts/giscus-setup.js +48 -0
  177. data/_scripts/google-analytics-setup.js +9 -0
  178. data/_scripts/open-panel-analytics-setup.js +14 -0
  179. data/_scripts/photoswipe-setup.js +11 -0
  180. data/assets/audio/epicaly-short-113909.mp3 +0 -0
  181. data/assets/bibliography/2018-12-22-distill.bib +7 -0
  182. data/assets/css/academicons.min.css +1 -0
  183. data/assets/css/bootstrap-toc.min.css +4 -0
  184. data/assets/css/bootstrap.min.css +7 -0
  185. data/assets/css/bootstrap.min.css.map +1 -0
  186. data/assets/css/jekyll-pygments-themes-github.css +209 -0
  187. data/assets/css/jekyll-pygments-themes-native.css +232 -0
  188. data/assets/css/jupyter-grade3.css +3758 -0
  189. data/assets/css/jupyter-monokai.css +3758 -0
  190. data/assets/css/jupyter.css +383 -0
  191. data/assets/css/main.scss +36 -0
  192. data/assets/css/mdb.min.css +48 -0
  193. data/assets/css/mdb.min.css.map +1 -0
  194. data/assets/css/scholar-icons.css +386 -0
  195. data/assets/fonts/academicons.ttf +0 -0
  196. data/assets/fonts/academicons.woff +0 -0
  197. data/assets/fonts/scholar-icons.ttf +0 -0
  198. data/assets/fonts/scholar-icons.woff +0 -0
  199. data/assets/fonts/tabler-icons-filled.ttf +0 -0
  200. data/assets/fonts/tabler-icons-filled.woff +0 -0
  201. data/assets/fonts/tabler-icons-filled.woff2 +0 -0
  202. data/assets/fonts/tabler-icons-outline.ttf +0 -0
  203. data/assets/fonts/tabler-icons-outline.woff +0 -0
  204. data/assets/fonts/tabler-icons-outline.woff2 +0 -0
  205. data/assets/fonts/tabler-icons.ttf +0 -0
  206. data/assets/fonts/tabler-icons.woff +0 -0
  207. data/assets/fonts/tabler-icons.woff2 +0 -0
  208. data/assets/html/relativity.html +15 -0
  209. data/assets/img/1.jpg +0 -0
  210. data/assets/img/10.jpg +0 -0
  211. data/assets/img/11.jpg +0 -0
  212. data/assets/img/12.jpg +0 -0
  213. data/assets/img/2.jpg +0 -0
  214. data/assets/img/3.jpg +0 -0
  215. data/assets/img/4.jpg +0 -0
  216. data/assets/img/5.jpg +0 -0
  217. data/assets/img/6.jpg +0 -0
  218. data/assets/img/7.jpg +0 -0
  219. data/assets/img/8.jpg +0 -0
  220. data/assets/img/9.jpg +0 -0
  221. data/assets/img/book_covers/the_godfather.jpg +0 -0
  222. data/assets/img/brand/dosquartsdedocs-logo-cafe.svg +31 -0
  223. data/assets/img/brand/dosquartsdedocs-logo-footer-cafe.svg +31 -0
  224. data/assets/img/brand/dosquartsdedocs-logo-white.svg +31 -0
  225. data/assets/img/brand/dosquartsdedocs-logo.svg +31 -0
  226. data/assets/img/prof_pic.jpg +0 -0
  227. data/assets/img/prof_pic_color.png +0 -0
  228. data/assets/img/profile-placeholder.svg +8 -0
  229. data/assets/img/publication_preview/brownian-motion.gif +0 -0
  230. data/assets/img/publication_preview/goodchild1992-gis-cover.jpg +0 -0
  231. data/assets/img/publication_preview/gutierrez2020-jtrg-preview.jpg +0 -0
  232. data/assets/img/publication_preview/harvey1989-postmodernity-cover.jpg +0 -0
  233. data/assets/img/publication_preview/tobler1970-economic-geography-cover.jpg +0 -0
  234. data/assets/img/publication_preview/tuan1977-space-place-cover.jpg +0 -0
  235. data/assets/img/publication_preview/wave-mechanics.gif +0 -0
  236. data/assets/img/publication_preview/zaragozi2025-rooftop-pv-preview.jpg +0 -0
  237. data/assets/img/rhino.png +0 -0
  238. data/assets/img/team/aaron-gutierrez.png +0 -0
  239. data/assets/img/team/alba-font.png +0 -0
  240. data/assets/img/team/alba-viana.png +0 -0
  241. data/assets/img/team/alejandro-gonzalez.png +0 -0
  242. data/assets/img/team/ana-pastor.png +0 -0
  243. data/assets/img/team/antoni-domenech.png +0 -0
  244. data/assets/img/team/benito-zaragozi.png +0 -0
  245. data/assets/img/team/cinta-sanz.png +0 -0
  246. data/assets/img/team/daniel-miravet.png +0 -0
  247. data/assets/img/team/eugenia-altamirano.png +0 -0
  248. data/assets/img/team/fiammetta-brandajs.png +0 -0
  249. data/assets/img/team/francesc-gonzalez.png +0 -0
  250. data/assets/img/team/isabel-paulino.png +0 -0
  251. data/assets/img/team/joan-borras.png +0 -0
  252. data/assets/img/team/julie-wilson.png +0 -0
  253. data/assets/img/team/liliana-sole.png +0 -0
  254. data/assets/img/team/maria-casado.png +0 -0
  255. data/assets/img/team/maria-medina.png +0 -0
  256. data/assets/img/team/marta-nello.png +0 -0
  257. data/assets/img/team/mogrify +1 -0
  258. data/assets/img/team/oscar-saladie.png +0 -0
  259. data/assets/img/team/paolo-russo.png +0 -0
  260. data/assets/img/team/raquel-santos.png +0 -0
  261. data/assets/img/team/salvador-anton.png +0 -0
  262. data/assets/img/team/sunsi-huertas.png +0 -0
  263. data/assets/img/team/user-placeholder.png +0 -0
  264. data/assets/img/team/wilbert-den-hoed.png +0 -0
  265. data/assets/img/team/xavier-delclos.png +0 -0
  266. data/assets/img/template_error.png +0 -0
  267. data/assets/js/bibsearch.js +70 -0
  268. data/assets/js/bootstrap-toc.min.js +5 -0
  269. data/assets/js/bootstrap.bundle.min.js +7 -0
  270. data/assets/js/bootstrap.bundle.min.js.map +1 -0
  271. data/assets/js/callouts.js +115 -0
  272. data/assets/js/chartjs-setup.js +14 -0
  273. data/assets/js/common.js +117 -0
  274. data/assets/js/content-search-match.js +159 -0
  275. data/assets/js/content-search.js +441 -0
  276. data/assets/js/copy_code.js +60 -0
  277. data/assets/js/custom.js +6 -0
  278. data/assets/js/developer-mode.js +103 -0
  279. data/assets/js/diff2html-setup.js +20 -0
  280. data/assets/js/distillpub/overrides.js +27 -0
  281. data/assets/js/distillpub/template.v2.js +9616 -0
  282. data/assets/js/distillpub/template.v2.js.map +1 -0
  283. data/assets/js/distillpub/transforms.v2.js +14557 -0
  284. data/assets/js/distillpub/transforms.v2.js.map +1 -0
  285. data/assets/js/documentation.js +435 -0
  286. data/assets/js/echarts-setup.js +29 -0
  287. data/assets/js/highlight-search-term.js +110 -0
  288. data/assets/js/jupyter_new_tab.js +18 -0
  289. data/assets/js/leaflet-setup.js +22 -0
  290. data/assets/js/manual.js +308 -0
  291. data/assets/js/masonry.js +12 -0
  292. data/assets/js/mathjax-setup.js +46 -0
  293. data/assets/js/mermaid-setup.js +37 -0
  294. data/assets/js/newsletter.js +105 -0
  295. data/assets/js/no_defer.js +24 -0
  296. data/assets/js/plotly-setup.js +52 -0
  297. data/assets/js/profile-nav.js +92 -0
  298. data/assets/js/progress-bar.js +73 -0
  299. data/assets/js/pseudocode-setup.js +18 -0
  300. data/assets/js/search/base-styles.min.js +286 -0
  301. data/assets/js/search/command-score.min.js +7 -0
  302. data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +18 -0
  303. data/assets/js/search/lit/decorators.min.js +7 -0
  304. data/assets/js/search/lit/directives/class-map.min.js +7 -0
  305. data/assets/js/search/lit/directives/join.min.js +7 -0
  306. data/assets/js/search/lit/directives/live.min.js +7 -0
  307. data/assets/js/search/lit/directives/ref.min.js +7 -0
  308. data/assets/js/search/lit/directives/repeat.min.js +7 -0
  309. data/assets/js/search/lit/directives/unsafe-html.min.js +7 -0
  310. data/assets/js/search/lit/index.min.js +7 -0
  311. data/assets/js/search/lit-element/lit-element.min.js +12 -0
  312. data/assets/js/search/lit-html/directives/class-map.min.js +22 -0
  313. data/assets/js/search/lit-html/directives/join.min.js +12 -0
  314. data/assets/js/search/lit-html/directives/live.min.js +28 -0
  315. data/assets/js/search/lit-html/directives/ref.min.js +32 -0
  316. data/assets/js/search/lit-html/directives/repeat.min.js +27 -0
  317. data/assets/js/search/lit-html/directives/unsafe-html.min.js +22 -0
  318. data/assets/js/search/lit-html/is-server.min.js +12 -0
  319. data/assets/js/search/lit-html/lit-html.min.js +12 -0
  320. data/assets/js/search/ninja-action.min.js +101 -0
  321. data/assets/js/search/ninja-footer.min.js +62 -0
  322. data/assets/js/search/ninja-header.min.js +78 -0
  323. data/assets/js/search/ninja-keys.min.js +39 -0
  324. data/assets/js/search/reactive-element/decorators/custom-element.min.js +12 -0
  325. data/assets/js/search/reactive-element/decorators/event-options.min.js +12 -0
  326. data/assets/js/search/reactive-element/decorators/property.min.js +22 -0
  327. data/assets/js/search/reactive-element/decorators/query-all.min.js +17 -0
  328. data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +17 -0
  329. data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +17 -0
  330. data/assets/js/search/reactive-element/decorators/query-async.min.js +17 -0
  331. data/assets/js/search/reactive-element/decorators/query.min.js +17 -0
  332. data/assets/js/search/reactive-element/decorators/state.min.js +27 -0
  333. data/assets/js/search/reactive-element/reactive-element.min.js +17 -0
  334. data/assets/js/search-setup.js +17 -0
  335. data/assets/js/shortcut-key.js +11 -0
  336. data/assets/js/tabs.min.js +5 -0
  337. data/assets/js/theme.js +314 -0
  338. data/assets/js/tooltips-setup.js +3 -0
  339. data/assets/js/typograms.js +1341 -0
  340. data/assets/js/vanilla-back-to-top.min.js +1 -0
  341. data/assets/js/vega-setup.js +24 -0
  342. data/assets/js/venobox-setup.js +5 -0
  343. data/assets/js/wechat.js +14 -0
  344. data/assets/js/zoom.js +15 -0
  345. data/assets/json/resume.json +98 -0
  346. data/assets/json/table_data.json +128 -0
  347. data/assets/jupyter/blog.ipynb +48 -0
  348. data/assets/pdf/example_pdf.pdf +0 -0
  349. data/assets/plotly/demo.html +72 -0
  350. data/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 +0 -0
  351. data/assets/webfonts/fa-brands-400.ttf +0 -0
  352. data/assets/webfonts/fa-brands-400.woff2 +0 -0
  353. data/assets/webfonts/fa-regular-400.ttf +0 -0
  354. data/assets/webfonts/fa-regular-400.woff2 +0 -0
  355. data/assets/webfonts/fa-solid-900.ttf +0 -0
  356. data/assets/webfonts/fa-solid-900.woff2 +0 -0
  357. data/assets/webfonts/fa-v4compatibility.ttf +0 -0
  358. data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
  359. data/docs/Gemfile +5 -0
  360. data/docs/_config.yml +83 -0
  361. data/docs/_documentation/en/01-quick-start.md +115 -0
  362. data/docs/_documentation/en/02-tools.md +146 -0
  363. data/docs/_documentation/en/03-usage.md +107 -0
  364. data/docs/_documentation/en/04-jekyll-basics.md +51 -0
  365. data/docs/_documentation/en/05-pages-collections.md +68 -0
  366. data/docs/_documentation/en/06-github-web-editing.md +92 -0
  367. data/docs/_documentation/en/10-profiles.md +125 -0
  368. data/docs/_documentation/en/11-unaltreselfie.md +39 -0
  369. data/docs/_documentation/en/12-unaltreprojecte.md +38 -0
  370. data/docs/_documentation/en/13-unaltremanual.md +237 -0
  371. data/docs/_documentation/en/14-unaltredocs.md +92 -0
  372. data/docs/_documentation/en/15-profile-checklist.md +39 -0
  373. data/docs/_documentation/en/20-syntax.md +353 -0
  374. data/docs/_documentation/en/21-themes.md +103 -0
  375. data/docs/_documentation/en/22-feature-reference.md +56 -0
  376. data/docs/_documentation/en/23-front-matter.md +51 -0
  377. data/docs/_documentation/en/24-data-files.md +28 -0
  378. data/docs/_documentation/en/30-customization.md +448 -0
  379. data/docs/_documentation/en/31-template.md +55 -0
  380. data/docs/_documentation/en/32-development.md +108 -0
  381. data/docs/_documentation/en/33-reusable-workflows.md +136 -0
  382. data/docs/_documentation/en/40-distribution.md +164 -0
  383. data/docs/_documentation/en/41-bibliometrics.md +137 -0
  384. data/docs/_documentation/en/42-docker-image.md +185 -0
  385. data/docs/_documentation/en/50-faq.md +33 -0
  386. data/docs/_pages/ca/index.md +35 -0
  387. data/docs/_pages/en/index.md +35 -0
  388. data/docs/_pages/es/index.md +35 -0
  389. data/docs/agents/action-prompts/00-start-site-session.txt +10 -0
  390. data/docs/agents/action-prompts/05-create-new-web.txt +5 -0
  391. data/docs/agents/action-prompts/10-content-update.txt +9 -0
  392. data/docs/agents/action-prompts/15-edit-default-content.txt +8 -0
  393. data/docs/agents/action-prompts/20-manual-teaching-materials.txt +18 -0
  394. data/docs/agents/action-prompts/22-manual-style-audit.txt +14 -0
  395. data/docs/agents/action-prompts/23-manual-structure-audit.txt +17 -0
  396. data/docs/agents/action-prompts/25-translation-prepublish.txt +8 -0
  397. data/docs/agents/action-prompts/30-project-site-update.txt +7 -0
  398. data/docs/agents/action-prompts/40-documentation-update.txt +7 -0
  399. data/docs/agents/action-prompts/50-bibliography-entry.txt +7 -0
  400. data/docs/agents/action-prompts/60-bibliometrics-refresh.txt +7 -0
  401. data/docs/agents/action-prompts/70-build-and-review.txt +12 -0
  402. data/docs/agents/manual-authoring-components.md +255 -0
  403. data/docs/agents/mcp-contract.md +162 -0
  404. data/docs/agents/quarto-computation-adoption.md +102 -0
  405. data/docs/assets/img/unaltraweb-docs-hero.svg +36 -0
  406. data/lib/unaltraweb/version.rb +8 -0
  407. data/lib/unaltraweb.rb +31 -0
  408. data/requirements.txt +5 -0
  409. data/scripts/biblio/fetch_scimago_csv.sh +126 -0
  410. data/scripts/biblio/metrics_common.py +154 -0
  411. data/scripts/biblio/metrics_merge_meta.py +73 -0
  412. data/scripts/biblio/metrics_update.py +826 -0
  413. data/scripts/computations/python/Dockerfile +37 -0
  414. data/scripts/computations/r/Dockerfile +31 -0
  415. data/scripts/computations/render.py +1267 -0
  416. data/scripts/cv/render_pdf_preview.sh +36 -0
  417. data/scripts/deploy/publish_branch.sh +80 -0
  418. data/scripts/generate_logo_variants.py +47 -0
  419. data/scripts/manual/Dockerfile +31 -0
  420. data/scripts/manual/build_pdf.py +1780 -0
  421. data/scripts/manual/filters/bibliography.lua +164 -0
  422. data/scripts/manual/filters/code-blocks.lua +102 -0
  423. data/scripts/manual/filters/figure-captions.lua +35 -0
  424. data/scripts/manual/publish_release.sh +281 -0
  425. data/scripts/manual/templates/manual.tex +494 -0
  426. data/scripts/manual/verify_release_assets.py +650 -0
  427. data/scripts/test_gem_build.py +128 -0
  428. data/scripts/test_reproducible_jekyll_build.py +191 -0
  429. data/scripts/test_wheel_install.py +282 -0
  430. data/scripts/unaltraweb-docker-mount.sh +36 -0
  431. data/scripts/unaltraweb-mcp-bootstrap.sh +105 -0
  432. data/scripts/unaltraweb-mcp-cleanup.sh +73 -0
  433. data/scripts/unaltraweb-mcp-project-id.sh +34 -0
  434. data/scripts/validate_distribution.py +563 -0
  435. data/scripts/validate_workflows.py +1285 -0
  436. data/scripts/web_captures/Dockerfile +31 -0
  437. data/scripts/web_captures/capture.mjs +157 -0
  438. data/scripts/web_captures/package-lock.json +56 -0
  439. data/scripts/web_captures/package.json +9 -0
  440. data/scripts/web_captures/render.py +867 -0
  441. data/src/unaltraweb_mcp/component-contract.json +153 -0
  442. data/src/unaltraweb_mcp/component-contract.schema.json +87 -0
  443. data/src/unaltraweb_mcp/docker_mount.py +19 -0
  444. metadata +861 -0
@@ -0,0 +1,494 @@
1
+ \documentclass[11pt,a4paper,twoside,openright]{book}
2
+
3
+ \usepackage{amsmath,amssymb}
4
+ \usepackage{booktabs}
5
+ \usepackage{cancel}
6
+ \usepackage{emptypage}
7
+ \usepackage{enumitem}
8
+ \usepackage{etoolbox}
9
+ \usepackage{fontspec}
10
+ \usepackage{float}
11
+ \usepackage{framed}
12
+ \usepackage{graphicx}
13
+ \usepackage{grffile}
14
+ \usepackage{longtable}
15
+ \usepackage{array}
16
+ \usepackage{calc}
17
+ \usepackage{geometry}
18
+ \usepackage{microtype}
19
+ \usepackage{needspace}
20
+ \usepackage{ragged2e}
21
+ \usepackage{setspace}
22
+ \usepackage{subcaption}
23
+ \usepackage{tikz}
24
+ \usepackage{titlesec}
25
+ \usepackage{listings}
26
+ \usepackage{lstlinebgrd}
27
+ \usepackage[most]{tcolorbox}
28
+ \usepackage{xcolor}
29
+ \usepackage{xurl}
30
+ \usepackage{hyperref}
31
+ \usepackage{bookmark}
32
+ \usepackage[$babel-lang$]{babel}
33
+
34
+ \geometry{inner=25mm,outer=22mm,top=24mm,bottom=26mm}
35
+ \setmainfont{DejaVu Serif}
36
+ \setsansfont{DejaVu Sans}
37
+ \setmonofont{DejaVu Sans Mono}[Scale=MatchLowercase]
38
+ \setstretch{1.08}
39
+ \setlength{\parindent}{0pt}
40
+ \setlength{\parskip}{0.5em}
41
+ \raggedbottom
42
+ \clubpenalty=10000
43
+ \widowpenalty=10000
44
+ \displaywidowpenalty=10000
45
+ \setcounter{secnumdepth}{3}
46
+ \setcounter{tocdepth}{2}
47
+ \pretocmd{\section}{\Needspace{6\baselineskip}}{}{}
48
+ \pretocmd{\subsection}{\Needspace{5\baselineskip}}{}{}
49
+ \pretocmd{\subsubsection}{\Needspace{5\baselineskip}}{}{}
50
+ \pretocmd{\paragraph}{\Needspace{4\baselineskip}}{}{}
51
+ \setlist[description]{style=nextline,leftmargin=1.5em,labelindent=0pt,itemsep=0.65em,topsep=0.65em,font=\normalfont\bfseries}
52
+ \renewcommand*{\descriptionlabel}[1]{\hspace\labelsep\normalfont\bfseries #1:}
53
+ \setlength{\LTpre}{0.6em}
54
+ \setlength{\LTpost}{0.8em}
55
+
56
+ \definecolor{ManualPrimary}{HTML}{$primary-color$}
57
+ \definecolor{ManualBand}{HTML}{$band-color$}
58
+ \definecolor{ManualSecondary}{HTML}{$secondary-color$}
59
+ \definecolor{ManualMuted}{HTML}{$muted-color$}
60
+ \definecolor{ManualInternalLink}{HTML}{$internal-link-color$}
61
+ \definecolor{ManualExternalLink}{HTML}{$external-link-color$}
62
+ \definecolor{ManualCitationLink}{HTML}{$citation-link-color$}
63
+ \definecolor{ManualInlineCode}{HTML}{$inline-code-color$}
64
+ \colorlet{ManualCodeBackground}{ManualMuted!5!white}
65
+ \colorlet{ManualCodeStripe}{ManualSecondary!4!white}
66
+ \colorlet{ManualCodeBorder}{ManualSecondary!38!white}
67
+ \colorlet{ManualCodeText}{ManualSecondary!82!black}
68
+ \definecolor{ManualCodeKeyword}{HTML}{003F73}
69
+ \definecolor{ManualCodeComment}{HTML}{39705A}
70
+ \definecolor{ManualCodeString}{HTML}{9A3D45}
71
+ \definecolor{ManualCodeNumber}{HTML}{687789}
72
+ \DeclareCaptionFont{manualcaption}{\sffamily\fontsize{9.4}{11.2}\selectfont}
73
+ \DeclareCaptionFont{manualsubcaption}{\sffamily\fontsize{8.8}{10.5}\selectfont}
74
+ \DeclareCaptionLabelFormat{manual}{\textcolor{ManualSecondary}{#1\nobreakspace #2}}
75
+ \captionsetup{
76
+ font={manualcaption,color=ManualMuted},
77
+ labelfont={bf,sf},
78
+ labelformat=manual,
79
+ format=hang,
80
+ justification=RaggedRight,
81
+ singlelinecheck=false
82
+ }
83
+ \captionsetup[figure]{position=top,margin=1em,aboveskip=0pt,belowskip=7pt}
84
+ \captionsetup[table]{position=top,margin=1em,aboveskip=0pt,belowskip=7pt}
85
+ \captionsetup[lstlisting]{position=top,margin=0pt,aboveskip=0pt,belowskip=7pt}
86
+ \captionsetup[subfigure]{
87
+ font={manualsubcaption,color=ManualMuted},
88
+ labelfont={bf,sf,color=ManualSecondary},
89
+ margin=0pt,
90
+ skip=5pt
91
+ }
92
+ \titleformat{\chapter}[hang]
93
+ {\normalfont\sffamily\LARGE\bfseries\color{ManualSecondary}}
94
+ {\thechapter.}{0.55em}{}
95
+ \titlespacing*{\chapter}{0pt}{36pt}{30pt}
96
+ \titleformat{\section}
97
+ {\normalfont\Large\bfseries\color{ManualSecondary}}
98
+ {\thesection}{0.75em}{}
99
+ \titleformat{\subsection}
100
+ {\normalfont\large\bfseries\color{ManualSecondary}}
101
+ {\thesubsection}{0.75em}{}
102
+ \titleformat{\subsubsection}
103
+ {\normalfont\normalsize\bfseries\color{ManualSecondary}}
104
+ {\thesubsubsection}{0.75em}{}
105
+ \titleformat{\paragraph}[runin]
106
+ {\normalfont\normalsize\bfseries\color{ManualSecondary}}
107
+ {\theparagraph}{0.75em}{}
108
+ \titleformat{\subparagraph}[runin]
109
+ {\normalfont\normalsize\bfseries\color{ManualSecondary}}
110
+ {\thesubparagraph}{0.75em}{}
111
+ \definecolor{ManualCalloutInfo}{HTML}{2A5FB8}
112
+ \definecolor{ManualCalloutExample}{HTML}{13795B}
113
+ \definecolor{ManualCalloutWarning}{HTML}{A65D03}
114
+ \definecolor{ManualCalloutObjectives}{HTML}{2F6FD6}
115
+ \definecolor{ManualCalloutDanger}{HTML}{A12929}
116
+
117
+ \newcommand{\ManualCodeLineBackground}{%
118
+ \ifodd\value{lstnumber}\color{ManualCodeBackground}\else\color{ManualCodeStripe}\fi
119
+ }
120
+ \lstdefinelanguage{ManualURL}{
121
+ sensitive=true,
122
+ morecomment=[l]{\#},
123
+ morekeywords={http,https,SERVICE,REQUEST,VERSION,LAYERS,FORMAT,CRS,SRS,BBOX,WIDTH,HEIGHT},
124
+ morestring=[b]"
125
+ }
126
+ \lstdefinelanguage{ManualSpreadsheet}{
127
+ sensitive=false,
128
+ morekeywords={AND,AVERAGE,COUNTIF,DATEDIF,DATE,DAY,HEX2DEC,HLOOKUP,IF,ISBLANK,ISNUMBER,ISTEXT,LEFT,MID,MONTH,NA,NETWORKDAYS,ROUND,SI,SUM,SUMA,SUMIFS,TODAY,TRIM,VLOOKUP,WEEKDAY,XLOOKUP,YEAR},
129
+ morestring=[b]"
130
+ }
131
+ \lstdefinelanguage{ManualFileTree}{
132
+ sensitive=true,
133
+ morecomment=[l]{\#},
134
+ alsoletter={_-},
135
+ morekeywords={data,figures,maps,outputs,processed,qgis,raw,scripts,src},
136
+ emph={csv,geojson,gpkg,jpeg,jpg,pdf,png,qgz,svg,tif,tiff,xlsx},
137
+ emphstyle=\color{ManualCodeString}
138
+ }
139
+ \lstdefinestyle{manualbase}{
140
+ basicstyle=\ttfamily\small\color{ManualCodeText},
141
+ keywordstyle=\bfseries\color{ManualCodeKeyword},
142
+ commentstyle=\itshape\color{ManualCodeComment},
143
+ stringstyle=\color{ManualCodeString},
144
+ numberstyle=\scriptsize\ttfamily\color{ManualCodeNumber},
145
+ numbers=none,
146
+ frame=none,
147
+ xleftmargin=0pt,
148
+ framexleftmargin=0pt,
149
+ columns=fullflexible,
150
+ keepspaces=true,
151
+ showspaces=false,
152
+ showstringspaces=false,
153
+ showtabs=false,
154
+ tabsize=4,
155
+ upquote=true,
156
+ breaklines=true,
157
+ breakatwhitespace=false,
158
+ breakautoindent=true,
159
+ breakindent=0.75em,
160
+ prebreak={},
161
+ postbreak={},
162
+ linebackgroundcolor=\ManualCodeLineBackground,
163
+ linebackgroundsep=0pt,
164
+ linebackgroundwidth=\linewidth,
165
+ aboveskip=0pt,
166
+ belowskip=0pt,
167
+ literate=
168
+ {à}{{\`a}}1 {á}{{\'a}}1 {è}{{\`e}}1 {é}{{\'e}}1
169
+ {í}{{\'i}}1 {ï}{{\"i}}1 {ò}{{\`o}}1 {ó}{{\'o}}1
170
+ {ú}{{\'u}}1 {ü}{{\"u}}1 {ç}{{\c{c}}}1
171
+ {À}{{\`A}}1 {Á}{{\'A}}1 {È}{{\`E}}1 {É}{{\'E}}1
172
+ {Í}{{\'I}}1 {Ï}{{\"I}}1 {Ò}{{\`O}}1 {Ó}{{\'O}}1
173
+ {Ú}{{\'U}}1 {Ü}{{\"U}}1 {Ç}{{\c{C}}}1
174
+ {·}{{\textperiodcentered}}1 {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1
175
+ }
176
+ \lstdefinestyle{manualcode}{
177
+ style=manualbase,
178
+ numbers=left,
179
+ numbersep=7pt,
180
+ xleftmargin=2.35em
181
+ }
182
+ \lstdefinestyle{manualverbatim}{
183
+ style=manualbase,
184
+ numbers=none,
185
+ xleftmargin=0pt
186
+ }
187
+ \newtcblisting{manualcode}[2][]{
188
+ enhanced,
189
+ breakable,
190
+ listing only,
191
+ listing engine=listings,
192
+ listing options={style=manualcode,#1},
193
+ colback=ManualCodeBackground,
194
+ colframe=ManualCodeBorder,
195
+ colbacktitle=ManualSecondary!8!white,
196
+ coltitle=ManualSecondary,
197
+ fonttitle=\sffamily\bfseries\footnotesize,
198
+ title={\strut #2},
199
+ boxrule=0.55pt,
200
+ titlerule=0pt,
201
+ arc=0.8mm,
202
+ outer arc=0.8mm,
203
+ left=2pt,
204
+ right=4pt,
205
+ top=6pt,
206
+ bottom=6pt,
207
+ lefttitle=9pt,
208
+ righttitle=9pt,
209
+ toptitle=5pt,
210
+ bottomtitle=5pt,
211
+ before skip=1em,
212
+ after skip=1.1em
213
+ }
214
+ \newenvironment{manualcodelisting}[1]{%
215
+ \Needspace{6\baselineskip}%
216
+ \captionof{lstlisting}{#1}%
217
+ \vspace{-0.45em}%
218
+ }{}
219
+ \newtcblisting{manualverbatim}{
220
+ enhanced,
221
+ breakable,
222
+ listing only,
223
+ listing engine=listings,
224
+ listing options={style=manualverbatim},
225
+ colback=ManualCodeBackground,
226
+ colframe=ManualCodeBorder,
227
+ boxrule=0.55pt,
228
+ arc=0.8mm,
229
+ outer arc=0.8mm,
230
+ left=5pt,
231
+ right=5pt,
232
+ top=6pt,
233
+ bottom=6pt,
234
+ before skip=1em,
235
+ after skip=1.1em
236
+ }
237
+
238
+ \let\ManualOriginalTexttt\texttt
239
+ \renewcommand{\texttt}[1]{{\color{ManualInlineCode}\ManualOriginalTexttt{#1}}}
240
+
241
+ \newenvironment{manualcallout}[3][enhanced]{%
242
+ \begin{tcolorbox}[
243
+ #1,
244
+ colback=#2!6!white,
245
+ colframe=#2,
246
+ boxrule=0.55pt,
247
+ leftrule=2.6pt,
248
+ arc=1.2pt,
249
+ left=8pt,
250
+ right=8pt,
251
+ top=7pt,
252
+ bottom=7pt,
253
+ before skip=0.8em,
254
+ after skip=0.8em
255
+ ]%
256
+ {\bfseries\sffamily\color{#2}#3}\par\smallskip
257
+ }{%
258
+ \end{tcolorbox}
259
+ }
260
+
261
+ \hypersetup{
262
+ colorlinks=true,
263
+ linkcolor=ManualInternalLink,
264
+ urlcolor=ManualExternalLink,
265
+ citecolor=ManualCitationLink,
266
+ pdftitle={$title$},
267
+ pdfauthor={$author$}
268
+ }
269
+
270
+ \providecommand{\tightlist}{%
271
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
272
+ \providecommand{\pandocbounded}[1]{#1}
273
+ \providecommand{\cm}{\,\mathrm{cm}}
274
+ \providecommand{\mm}{\,\mathrm{mm}}
275
+ \providecommand{\m}{\,\mathrm{m}}
276
+ \providecommand{\km}{\,\mathrm{km}}
277
+ \providecommand{\cms}{\,\mathrm{cm^2}}
278
+ \providecommand{\squarekilometre}{\,\mathrm{km^2}}
279
+ \providecommand{\hectare}{\,\mathrm{ha}}
280
+ \providecommand{\ha}{\,\mathrm{ha}}
281
+ \newcommand{\passthrough}[1]{#1}
282
+ \newlength{\cslhangindent}
283
+ \setlength{\cslhangindent}{1.5em}
284
+ \newlength{\csllabelwidth}
285
+ \setlength{\csllabelwidth}{3em}
286
+ \NewDocumentCommand\citeproctext{}{}
287
+ \NewDocumentCommand\citeproc{mm}{\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
288
+ \makeatletter
289
+ \let\@cite@ofmt\@firstofone
290
+ \def\@biblabel#1{}
291
+ \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
292
+ \makeatother
293
+ \newenvironment{CSLReferences}[2]
294
+ {\begin{list}{}{%
295
+ \setlength{\itemindent}{0pt}
296
+ \setlength{\leftmargin}{0pt}
297
+ \setlength{\parsep}{0pt}
298
+ \ifodd #1
299
+ \setlength{\leftmargin}{\cslhangindent}
300
+ \setlength{\itemindent}{-1\cslhangindent}
301
+ \fi
302
+ \setlength{\itemsep}{#2\baselineskip}}}
303
+ {\end{list}}
304
+ \newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
305
+ \newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
306
+ \newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
307
+ \newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
308
+
309
+ \makeatletter
310
+ \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
311
+ \def\maxheight{\ifdim\Gin@nat@height>0.82\textheight 0.82\textheight\else\Gin@nat@height\fi}
312
+ \makeatother
313
+ \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
314
+ \floatplacement{figure}{H}
315
+ \renewcommand{\lstlistingname}{$listing-label$}
316
+ \renewcommand{\lstlistlistingname}{$list-of-listings-title$}
317
+ \renewcommand{\listfigurename}{$list-of-figures-title$}
318
+ \renewcommand{\listtablename}{$list-of-tables-title$}
319
+
320
+ \usepackage{fancyhdr}
321
+ \pagestyle{fancy}
322
+ \fancyhf{}
323
+ \fancyhead[LE,RO]{\small\sffamily\color{ManualMuted}{$short-title$}}
324
+ \fancyhead[RE,LO]{\small\sffamily\color{ManualMuted}\leftmark}
325
+ \fancyfoot[LE,RO]{\small\sffamily\thepage}
326
+ \renewcommand{\headrulewidth}{0.2pt}
327
+ \renewcommand{\footrulewidth}{0pt}
328
+
329
+ \fancypagestyle{plain}{%
330
+ \fancyhf{}%
331
+ \fancyfoot[LE,RO]{\small\sffamily\thepage}%
332
+ \renewcommand{\headrulewidth}{0pt}%
333
+ \renewcommand{\footrulewidth}{0pt}%
334
+ }
335
+
336
+ \begin{document}
337
+ \special{pdf:trailerid [<$trailer-id$><$trailer-id$>]}
338
+ \frontmatter
339
+
340
+ \begin{titlepage}
341
+ \thispagestyle{empty}
342
+ \begin{tikzpicture}[remember picture,overlay]
343
+ \fill[ManualBand] (current page.north west) rectangle ([yshift=-2cm]current page.north east);
344
+ \fill[ManualBand] (current page.south west) rectangle ([yshift=2cm]current page.south east);
345
+
346
+ \node[anchor=north,inner sep=0pt,text=white,yshift=-0.46cm] at (current page.north) {
347
+ $if(series-logo)$\raisebox{-0.23cm}{\includegraphics[height=1.05cm]{$series-logo$}}\hspace{0.42cm}$endif$
348
+ {\large\bfseries\sffamily ``\textit{$series$}''}$if(series-subtitle)$\enspace·\enspace{\normalsize\bfseries\sffamily $series-subtitle$}$endif$
349
+ };
350
+
351
+ \node[text width=0.9\textwidth,align=center,anchor=north,font=\fontsize{23}{28}\selectfont\bfseries\sffamily,text=ManualSecondary,yshift=-3.6cm]
352
+ at (current page.north) {$title$};
353
+
354
+ $if(cover-image)$
355
+ \node[anchor=north,inner sep=0pt,yshift=-7.8cm] at (current page.north) {
356
+ \includegraphics[width=\paperwidth]{$cover-image$}
357
+ };
358
+ $else$
359
+ \fill[ManualSecondary!10] ([yshift=-7cm]current page.north west) rectangle ([yshift=-18cm]current page.north east);
360
+ $endif$
361
+
362
+ \node[text width=0.92\textwidth,align=center,anchor=north,font=\normalsize\sffamily,text=ManualMuted,yshift=-22.12cm]
363
+ at (current page.north) {$for(instructors)$$instructors$$sep$ · $endfor$};
364
+
365
+ $if(cover-logo)$
366
+ \node[anchor=center,yshift=4.7cm] at (current page.south) {
367
+ \includegraphics[height=2.1cm]{$cover-logo$}
368
+ };
369
+ $endif$
370
+
371
+ \node[anchor=center,font=\small\sffamily,text=white] at ([yshift=1cm]current page.south) {$rights$};
372
+ \end{tikzpicture}
373
+ \end{titlepage}
374
+
375
+ \thispagestyle{empty}
376
+ \vspace*{0.7cm}
377
+ {\LARGE\bfseries\sffamily\color{ManualSecondary}$metadata-page-title$}\par
378
+ \vspace{0.35cm}
379
+ {\large\bfseries\sffamily $title$}\par
380
+ $if(description)$
381
+ \vspace{0.2cm}
382
+ {\small\color{ManualMuted}$description$}\par
383
+ $endif$
384
+ \vspace{0.55cm}
385
+ \small
386
+ \begin{description}[style=multiline,leftmargin=4.95cm,labelwidth=4.5cm,labelsep=0.45cm,itemsep=0.34em,parsep=0pt,topsep=0pt,font=\normalfont\bfseries\sffamily\color{ManualSecondary}]
387
+ $if(series)$
388
+ \item[$metadata-series-label$] $series$$if(series-subtitle)$ · $series-subtitle$$endif$
389
+ $endif$
390
+ $if(edition)$
391
+ \item[$metadata-edition-label$] $edition$
392
+ $endif$
393
+ $if(publication-date)$
394
+ \item[$metadata-publication-date-label$] $publication-date$
395
+ $endif$
396
+ $if(release-channel)$
397
+ \item[$metadata-release-channel-label$] $release-channel$
398
+ $endif$
399
+ $if(release-selector)$
400
+ \item[$metadata-release-version-label$] $release-selector$
401
+ $endif$
402
+ $if(publisher)$
403
+ \item[$metadata-publisher-label$] $publisher$
404
+ $endif$
405
+ $if(instructors)$
406
+ \item[$metadata-instructors-label$] $for(instructors)$$instructors$$sep$, $endfor$
407
+ $endif$
408
+ $if(institution)$
409
+ \item[$metadata-institution-label$] $institution$
410
+ $endif$
411
+ $if(department)$
412
+ \item[$metadata-department-label$] $department$
413
+ $endif$
414
+ $if(faculty)$
415
+ \item[$metadata-faculty-label$] $faculty$
416
+ $endif$
417
+ $if(location)$
418
+ \item[$metadata-location-label$] $location$
419
+ $endif$
420
+ $if(subject)$
421
+ \item[$metadata-subject-label$] $subject$
422
+ $endif$
423
+ $if(teaching-guides)$
424
+ \item[$metadata-teaching-guides-label$]
425
+ $for(teaching-guides)$$teaching-guides.degree$$if(teaching-guides.subject-code)$ · \texttt{$teaching-guides.subject-code$}$endif$\par
426
+ $endfor$
427
+ $endif$
428
+ $if(academic-year)$
429
+ \item[$metadata-academic-year-label$] $academic-year$
430
+ $endif$
431
+ $if(revision-date)$
432
+ \item[$metadata-revision-date-label$] $revision-date$
433
+ $endif$
434
+ $if(identifier)$
435
+ \item[$metadata-identifier-label$] $identifier$
436
+ $endif$
437
+ $if(source)$
438
+ \item[$metadata-source-label$] $source$
439
+ $endif$
440
+ $if(license)$
441
+ \item[$metadata-license-label$] $license$
442
+ $endif$
443
+ $if(rights)$
444
+ \item[$metadata-rights-label$] $rights$
445
+ $endif$
446
+ \end{description}
447
+ \clearpage
448
+
449
+ $if(draft)$
450
+ \thispagestyle{empty}
451
+ \vspace*{0.3\textheight}
452
+ \begin{center}
453
+ {\Huge\bfseries\sffamily\color{ManualPrimary}$draft-label$}\par
454
+ \vspace{1em}
455
+ {\large\sffamily $draft-description$}
456
+ \end{center}
457
+ \clearpage
458
+ $endif$
459
+
460
+ $if(toc)$
461
+ \tableofcontents
462
+ \label{manual:toc-end}
463
+ \clearpage
464
+ $endif$
465
+
466
+ $if(has-figures)$
467
+ \listoffigures
468
+ \clearpage
469
+ $endif$
470
+
471
+ $if(has-tables)$
472
+ \listoftables
473
+ \clearpage
474
+ $endif$
475
+
476
+ $if(has-listings)$
477
+ \lstlistoflistings
478
+ \clearpage
479
+ $endif$
480
+
481
+ \mainmatter
482
+ $if(include-home)$
483
+ \setcounter{chapter}{-1}
484
+ $endif$
485
+ \makeatletter
486
+ \let\ManualOriginalStarredChapter\@schapter
487
+ \renewcommand{\@schapter}[1]{%
488
+ \markboth{\MakeUppercase{#1}}{}%
489
+ \ManualOriginalStarredChapter{#1}%
490
+ }
491
+ \makeatother
492
+ $body$
493
+
494
+ \end{document}