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,34 @@
1
+ <div class="list-groups">
2
+ {% for content in data[1] %}
3
+ <div class="list-group col-md-6">
4
+ <table class="table-cv list-group-table">
5
+ <tbody>
6
+ <tr>
7
+ {% if content.icon %}
8
+ <td class="list-group-category-icon">
9
+ <i class="{{ content.icon }}"></i>
10
+ </td>
11
+ {% else %}
12
+ <td class="list-group-category-icon"></td>
13
+ {% endif %}
14
+
15
+ {% assign i = 1 %}
16
+ {% for item in content.keywords %}
17
+ {% assign i = i | plus: 1 %}
18
+ {% endfor %}
19
+ <td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
20
+ </tr>
21
+
22
+ {% for item in content.keywords %}
23
+ <tr>
24
+ <td></td>
25
+ <td class="list-group-name">
26
+ <b>{{ item }}</b>
27
+ </td>
28
+ </tr>
29
+ {% endfor %}
30
+ </tbody>
31
+ </table>
32
+ </div>
33
+ {% endfor %}
34
+ </div>
@@ -0,0 +1,31 @@
1
+ <div class="list-groups">
2
+ {% for content in data[1] %}
3
+ <div class="list-group col-md-6">
4
+ <table class="table-cv list-group-table">
5
+ <tbody>
6
+ <tr>
7
+ {% if content.icon %}
8
+ <td class="list-group-category-icon">
9
+ <i class="{{ content.icon }}"></i>
10
+ </td>
11
+ {% else %}
12
+ <td class="list-group-category-icon"></td>
13
+ {% endif %}
14
+ <!-- Calculate colspan number for category title -->
15
+ {% assign i = 1 %}
16
+ {% for item in content.items %}
17
+ {% assign i = i | plus: 1 %}
18
+ {% endfor %}
19
+ <td colspan="{{ i }}" class="list-group-category">{{ content.language }}</td>
20
+ </tr>
21
+ <tr>
22
+ <td></td>
23
+ <td class="list-group-name">
24
+ <b>{{ content.fluency }}</b>
25
+ </td>
26
+ </tr>
27
+ </tbody>
28
+ </table>
29
+ </div>
30
+ {% endfor %}
31
+ </div>
@@ -0,0 +1,32 @@
1
+ <ul class="card-text font-weight-light list-group list-group-flush">
2
+ {% for content in data[1] %}
3
+ <li class="list-group-item">
4
+ <div class="row">
5
+ <div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
6
+ {% if content.startDate %}
7
+ {% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
8
+ {% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
9
+ {% assign date = startDate | append: ' - ' %}
10
+ {% assign date = date | append: endDate %}
11
+ {% else %}
12
+ {% assign date = '' %}
13
+ {% endif %}
14
+ <span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
15
+ </div>
16
+ <div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
17
+ <h6 class="title font-weight-bold ml-1 ml-md-4">
18
+ <a href="{{ content.url }}">{{ content.name }}</a>
19
+ </h6>
20
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
21
+ <ul class="items">
22
+ {% for item in content.highlights %}
23
+ <li>
24
+ <span class="item">{{ item }}</span>
25
+ </li>
26
+ {% endfor %}
27
+ </ul>
28
+ </div>
29
+ </div>
30
+ </li>
31
+ {% endfor %}
32
+ </ul>
@@ -0,0 +1,28 @@
1
+ <ul class="card-text font-weight-light list-group list-group-flush">
2
+ {% assign publications = data[1] | sort: 'releaseDate' | reverse %}
3
+ {% for content in publications %}
4
+ <li class="list-group-item">
5
+ <div class="row">
6
+ <div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
7
+ {% if content.releaseDate %} {% assign date = content.releaseDate | split: '-' | join: '.' %} {% else %} {% assign date = '' %} {% endif %}
8
+ <table class="table-cv">
9
+ <tbody>
10
+ <tr>
11
+ <td>
12
+ <span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">{{ date }}</span>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
19
+ <h6 class="title font-weight-bold ml-1 ml-md-4">
20
+ <a href="{{ content.url }}">{{ content.name }}</a>
21
+ </h6>
22
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.publisher }}</h6>
23
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
24
+ </div>
25
+ </div>
26
+ </li>
27
+ {% endfor %}
28
+ </ul>
@@ -0,0 +1,31 @@
1
+ <div class="list-groups">
2
+ {% for content in data[1] %}
3
+ <div class="list-group col-md-6">
4
+ <table class="table-cv list-group-table">
5
+ <tbody>
6
+ <tr>
7
+ {% if content.icon %}
8
+ <td class="list-group-category-icon">
9
+ <i class="{{ content.icon }}"></i>
10
+ </td>
11
+ {% else %}
12
+ <td class="list-group-category-icon"></td>
13
+ {% endif %}
14
+ <!-- Calculate colspan number for category title -->
15
+ {% assign i = 1 %}
16
+ {% for item in content.items %}
17
+ {% assign i = i | plus: 1 %}
18
+ {% endfor %}
19
+ <td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
20
+ </tr>
21
+ <tr>
22
+ <td></td>
23
+ <td class="list-group-name">
24
+ <b>{{ content.reference }}</b>
25
+ </td>
26
+ </tr>
27
+ </tbody>
28
+ </table>
29
+ </div>
30
+ {% endfor %}
31
+ </div>
@@ -0,0 +1,33 @@
1
+ <div class="list-groups">
2
+ {% for content in data[1] %}
3
+ <div class="list-group col-md-6" title="{{ content.level }}">
4
+ <table class="table-cv list-group-table">
5
+ <tbody>
6
+ <tr>
7
+ {% if content.icon %}
8
+ <td class="list-group-category-icon">
9
+ <i class="{{ content.icon }}"></i>
10
+ </td>
11
+ {% else %}
12
+ <td class="list-group-category-icon"></td>
13
+ {% endif %}
14
+ <!-- Calculate colspan number for category title -->
15
+ {% assign i = 1 %}
16
+ {% for item in content.items %}
17
+ {% assign i = i | plus: 1 %}
18
+ {% endfor %}
19
+ <td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
20
+ </tr>
21
+ {% for item in content.keywords %}
22
+ <tr>
23
+ <td></td>
24
+ <td class="list-group-name">
25
+ <b>{{ item }}</b>
26
+ </td>
27
+ </tr>
28
+ {% endfor %}
29
+ </tbody>
30
+ </table>
31
+ </div>
32
+ {% endfor %}
33
+ </div>
@@ -0,0 +1,52 @@
1
+ <ul class="card-text font-weight-light list-group list-group-flush">
2
+ {% assign volunteer = data[1] | sort: 'startDate' | reverse %}
3
+ {% for content in volunteer %}
4
+ <li class="list-group-item">
5
+ <div class="row">
6
+ <div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
7
+ {% if content.startDate %}
8
+ {% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
9
+ {% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
10
+ {% assign date = startDate | append: ' - ' %}
11
+ {% assign date = date | append: endDate %}
12
+ {% else %}
13
+ {% assign date = '' %}
14
+ {% endif %}
15
+ <table class="table-cv">
16
+ <tbody>
17
+ <tr>
18
+ <td>
19
+ <span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
20
+ </td>
21
+ </tr>
22
+ {% if content.location %}
23
+ <tr>
24
+ <td>
25
+ <p class="location">
26
+ <i class="fa-solid fa-location-dot iconlocation"></i>
27
+ {{ content.location }}
28
+ </p>
29
+ </td>
30
+ </tr>
31
+ {% endif %}
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
36
+ <h6 class="title font-weight-bold ml-1 ml-md-4">
37
+ <a href="{{ content.url }}">{{ content.position }}</a>
38
+ </h6>
39
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.organization }}</h6>
40
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
41
+ <ul class="items">
42
+ {% for item in content.highlights %}
43
+ <li>
44
+ <span class="item">{{ item }}</span>
45
+ </li>
46
+ {% endfor %}
47
+ </ul>
48
+ </div>
49
+ </div>
50
+ </li>
51
+ {% endfor %}
52
+ </ul>
@@ -0,0 +1,52 @@
1
+ <ul class="card-text font-weight-light list-group list-group-flush">
2
+ {% assign work = data[1] | sort: 'startDate' | reverse %}
3
+ {% for content in work %}
4
+ <li class="list-group-item">
5
+ <div class="row">
6
+ <div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
7
+ {% if content.startDate %}
8
+ {% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
9
+ {% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
10
+ {% assign date = startDate | append: ' - ' %}
11
+ {% assign date = date | append: endDate %}
12
+ {% else %}
13
+ {% assign date = '' %}
14
+ {% endif %}
15
+ <table class="table-cv">
16
+ <tbody>
17
+ <tr>
18
+ <td>
19
+ <span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
20
+ </td>
21
+ </tr>
22
+ {% if content.location %}
23
+ <tr>
24
+ <td>
25
+ <p class="location">
26
+ <i class="fa-solid fa-location-dot iconlocation"></i>
27
+ {{ content.location }}
28
+ </p>
29
+ </td>
30
+ </tr>
31
+ {% endif %}
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
36
+ <h6 class="title font-weight-bold ml-1 ml-md-4">
37
+ <a href="{{ content.url }}">{{ content.position }}</a>
38
+ </h6>
39
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.name }}</h6>
40
+ <h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
41
+ <ul class="items">
42
+ {% for item in content.highlights %}
43
+ <li>
44
+ <span class="item">{{ item }}</span>
45
+ </li>
46
+ {% endfor %}
47
+ </ul>
48
+ </div>
49
+ </div>
50
+ </li>
51
+ {% endfor %}
52
+ </ul>
@@ -0,0 +1,364 @@
1
+ <!-- jQuery -->
2
+ <script
3
+ src="{{ site.third_party_libraries.jquery.url.js }}"
4
+ integrity="{{ site.third_party_libraries.jquery.integrity.js }}"
5
+ crossorigin="anonymous"
6
+ ></script>
7
+
8
+ <!-- Bootsrap & MDB scripts -->
9
+ <script src="{{ '/assets/js/bootstrap.bundle.min.js' | relative_url }}"></script>
10
+ <script
11
+ src="{{ site.third_party_libraries.mdb.url.js }}"
12
+ integrity="{{ site.third_party_libraries.mdb.integrity.js }}"
13
+ crossorigin="anonymous"
14
+ ></script>
15
+
16
+ {% if site.enable_masonry %}
17
+ <!-- Masonry & imagesLoaded -->
18
+ <script
19
+ defer
20
+ src="{{ site.third_party_libraries.masonry.url.js }}"
21
+ integrity="{{ site.third_party_libraries.masonry.integrity.js }}"
22
+ crossorigin="anonymous"
23
+ ></script>
24
+ <script
25
+ defer
26
+ src="{{ site.third_party_libraries.imagesloaded.url.js }}"
27
+ integrity="{{ site.third_party_libraries.imagesloaded.integrity.js }}"
28
+ crossorigin="anonymous"
29
+ ></script>
30
+ <script defer src="{{ '/assets/js/masonry.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
31
+ {% endif %}
32
+
33
+ {% if page.mermaid and page.mermaid.enabled %}
34
+ <!-- Mermaid and D3 -->
35
+ <script
36
+ defer
37
+ src="{{ site.third_party_libraries.mermaid.url.js }}"
38
+ integrity="{{ site.third_party_libraries.mermaid.integrity.js }}"
39
+ crossorigin="anonymous"
40
+ ></script>
41
+ {% if page.mermaid.zoomable %}
42
+ <script
43
+ defer
44
+ src="{{ site.third_party_libraries.d3.url.js }}"
45
+ integrity="{{ site.third_party_libraries.d3.integrity.js }}"
46
+ crossorigin="anonymous"
47
+ ></script>
48
+ {% endif %}
49
+ <script defer src="{{ '/assets/js/mermaid-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
50
+ {% endif %}
51
+
52
+ {% if page.code_diff %}
53
+ <!-- Diff2HTML -->
54
+ <!-- diff2html doesn't go well with Bootstrap Table -->
55
+ <script
56
+ src="{{ site.third_party_libraries.diff2html.url.js }}"
57
+ integrity="{{ site.third_party_libraries.diff2html.integrity.js }}"
58
+ crossorigin="anonymous"
59
+ ></script>
60
+ <script defer src="{{ '/assets/js/diff2html-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
61
+ {% endif %}
62
+
63
+ {% if page.map %}
64
+ <!-- Leaflet -->
65
+ <script
66
+ src="{{ site.third_party_libraries.leaflet.url.js }}"
67
+ integrity="{{ site.third_party_libraries.leaflet.integrity.js }}"
68
+ crossorigin="anonymous"
69
+ ></script>
70
+ <script defer src="{{ '/assets/js/leaflet-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
71
+ {% endif %}
72
+
73
+ {% if page.chart and page.chart.chartjs %}
74
+ <!-- Chart.js -->
75
+ <script
76
+ defer
77
+ src="{{ site.third_party_libraries.chartjs.url.js }}"
78
+ integrity="{{ site.third_party_libraries.chartjs.integrity.js }}"
79
+ crossorigin="anonymous"
80
+ ></script>
81
+ <script defer src="{{ '/assets/js/chartjs-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
82
+ {% endif %}
83
+
84
+ {% if page.chart and page.chart.echarts %}
85
+ <!-- ECharts -->
86
+ <script
87
+ src="{{ site.third_party_libraries.echarts.url.js.library }}"
88
+ integrity="{{ site.third_party_libraries.echarts.integrity.js.library }}"
89
+ crossorigin="anonymous"
90
+ ></script>
91
+ {% if site.enable_darkmode %}
92
+ <script
93
+ src="{{ site.third_party_libraries.echarts.url.js.dark_theme }}"
94
+ integrity="{{ site.third_party_libraries.echarts.integrity.js.dark_theme }}"
95
+ crossorigin="anonymous"
96
+ ></script>
97
+ {% endif %}
98
+ <script defer src="{{ '/assets/js/echarts-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
99
+ {% endif %}
100
+
101
+ {% if page.chart and page.chart.plotly %}
102
+ <!-- Plotly -->
103
+ <script
104
+ defer
105
+ src="{{ site.third_party_libraries.plotly.url.js }}"
106
+ integrity="{{ site.third_party_libraries.plotly.integrity.js }}"
107
+ crossorigin="anonymous"
108
+ ></script>
109
+ <script defer src="{{ '/assets/js/plotly-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
110
+ {% endif %}
111
+
112
+ {% if page.chart and page.chart.vega_lite %}
113
+ <!-- Vega -->
114
+ <script
115
+ defer
116
+ src="{{ site.third_party_libraries.vega.url.js }}"
117
+ integrity="{{ site.third_party_libraries.vega.integrity.js }}"
118
+ crossorigin="anonymous"
119
+ ></script>
120
+ <script
121
+ defer
122
+ src="{{ site.third_party_libraries.vega-lite.url.js }}"
123
+ integrity="{{ site.third_party_libraries.vega-lite.integrity.js }}"
124
+ crossorigin="anonymous"
125
+ ></script>
126
+ <script
127
+ defer
128
+ src="{{ site.third_party_libraries.vega-embed.url.js }}"
129
+ integrity="{{ site.third_party_libraries.vega-embed.integrity.js }}"
130
+ crossorigin="anonymous"
131
+ ></script>
132
+ <script defer src="{{ '/assets/js/vega-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
133
+ {% endif %}
134
+
135
+ {% if page.tikzjax %}
136
+ <!-- Tikzjax -->
137
+ <script
138
+ defer
139
+ src="https://tikzjax.com/v1/tikzjax.js"
140
+ integrity="sha256-+1qyucCXRZJrCg3lm3KxRt/7WXaYhBid4/1XJRHGB1E="
141
+ crossorigin="anonymous"
142
+ ></script>
143
+ {% endif %}
144
+
145
+ {% if page.typograms %}
146
+ <!-- Typograms -->
147
+ <script src="{{ '/assets/js/typograms.js' | relative_url | bust_file_cache }}"></script>
148
+ {% endif %}
149
+
150
+ {% if site.enable_tooltips %}
151
+ <!-- Tooltips -->
152
+ <script src="{{ '/assets/js/tooltips-setup.js' | relative_url | bust_file_cache }}"></script>
153
+ {% endif %}
154
+
155
+ {% if site.enable_medium_zoom %}
156
+ <!-- Medium Zoom JS -->
157
+ <script
158
+ defer
159
+ src="{{ site.third_party_libraries.medium_zoom.url.js }}"
160
+ integrity="{{ site.third_party_libraries.medium_zoom.integrity.js }}"
161
+ crossorigin="anonymous"
162
+ ></script>
163
+ <script defer src="{{ '/assets/js/zoom.js' | relative_url | bust_file_cache }}"></script>
164
+ {% endif %}
165
+
166
+ {% if page.toc and page.toc.sidebar %}
167
+ <!-- Sidebar Table of Contents -->
168
+ <script defer src="{{ '/assets/js/bootstrap-toc.min.js' | relative_url | bust_file_cache }}"></script>
169
+ {% endif %}
170
+
171
+ {% if page.pretty_table %}
172
+ <!-- Bootstrap Table -->
173
+ <!-- Bootstrap Table doesn't go well with diff2html -->
174
+ <script
175
+ defer
176
+ src="{{ site.third_party_libraries.bootstrap-table.url.js }}"
177
+ integrity="{{ site.third_party_libraries.bootstrap-table.integrity.js }}"
178
+ crossorigin="anonymous"
179
+ ></script>
180
+ {% endif %}
181
+
182
+ <!-- Load Common JS -->
183
+ <script src="{{ '/assets/js/no_defer.js' | relative_url | bust_file_cache }}"></script>
184
+ <script defer src="{{ '/assets/js/common.js' | relative_url | bust_file_cache }}"></script>
185
+ <script defer src="{{ '/assets/js/copy_code.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
186
+ {% capture callout_info_text %}{% include t.liquid key='callouts.info' default='NOTE' %}{% endcapture %}
187
+ {% capture callout_example_text %}{% include t.liquid key='callouts.example' default='EXAMPLE' %}{% endcapture %}
188
+ {% capture callout_warning_text %}{% include t.liquid key='callouts.warning' default='WARNING' %}{% endcapture %}
189
+ {% capture callout_objectives_text %}{% include t.liquid key='callouts.objectives' default='LEARNING OBJECTIVES' %}{% endcapture %}
190
+ {% capture callout_danger_text %}{% include t.liquid key='callouts.danger' default='CAUTION' %}{% endcapture %}
191
+ <script>
192
+ window.unaltrawebCalloutLabels = window.unaltrawebCalloutLabels || {};
193
+ window.unaltrawebCalloutLabels["{{ page.lang | default: site.default_lang | default: site.lang }}"] = {
194
+ info: {{ callout_info_text | strip | jsonify }},
195
+ example: {{ callout_example_text | strip | jsonify }},
196
+ warning: {{ callout_warning_text | strip | jsonify }},
197
+ objectives: {{ callout_objectives_text | strip | jsonify }},
198
+ danger: {{ callout_danger_text | strip | jsonify }},
199
+ };
200
+ </script>
201
+ <script defer src="{{ '/assets/js/callouts.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
202
+ {% assign unaltraweb_current_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
203
+ {% assign unaltraweb_developer_mode = site.developer_mode | default: site.unaltraweb.developer_mode %}
204
+ {% if unaltraweb_developer_mode and jekyll.environment != 'production' %}
205
+ <script defer src="{{ '/assets/js/developer-mode.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
206
+ {% endif %}
207
+ <script defer src="{{ '/assets/js/content-search-match.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
208
+ <script defer src="{{ '/assets/js/content-search.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
209
+ {% if unaltraweb_current_profile == 'unaltremanual' or page.layout == 'manual-home' or page.layout == 'manual-chapter' %}
210
+ <script defer src="{{ '/assets/js/manual.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
211
+ {% endif %}
212
+ {% if page.layout == 'documentation-home' or page.layout == 'documentation-page' %}
213
+ <script defer src="{{ '/assets/js/documentation.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
214
+ {% endif %}
215
+ {% if unaltraweb_current_profile == 'unaltreprojecte' or unaltraweb_current_profile == 'unaltreselfie' %}
216
+ <script defer src="{{ '/assets/js/profile-nav.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
217
+ {% endif %}
218
+
219
+
220
+ <!-- Jupyter Open External Links New Tab -->
221
+ <script defer src="{{ '/assets/js/jupyter_new_tab.js' | relative_url | bust_file_cache }}"></script>
222
+
223
+ <!-- Badges -->
224
+ {% unless unaltraweb_current_profile == 'unaltremanual' %}
225
+ {% if site.enable_publication_badges.altmetric %}
226
+ <script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
227
+ {% endif %}
228
+ {% if site.enable_publication_badges.dimensions %}
229
+ <script async src="https://badge.dimensions.ai/badge.js"></script>
230
+ {% endif %}
231
+ {% endunless %}
232
+
233
+ {% if site.enable_math %}
234
+ <!-- MathJax -->
235
+ <script
236
+ defer
237
+ type="text/javascript"
238
+ id="MathJax-script"
239
+ src="{{ site.third_party_libraries.mathjax.url.js }}"
240
+ integrity="{{ site.third_party_libraries.mathjax.integrity.js }}"
241
+ crossorigin="anonymous"
242
+ ></script>
243
+ <script>window.unaltrawebMathJaxTags = {{ site.unaltraweb.mathjax.tags | default: 'all' | jsonify }};</script>
244
+ <script src="{{ '/assets/js/mathjax-setup.js' | relative_url | bust_file_cache }}"></script>
245
+ {% unless page.pseudocode %}
246
+ <script
247
+ defer
248
+ src="{{ site.third_party_libraries.polyfill.url.js }}"
249
+ crossorigin="anonymous"
250
+ ></script>
251
+ {% else %}
252
+ <script src="{{ '/assets/js/pseudocode-setup.js' | relative_url | bust_file_cache }}"></script>
253
+ <script
254
+ type="text/javascript"
255
+ src="{{ site.third_party_libraries.pseudocode.url.js }}"
256
+ integrity="{{ site.third_party_libraries.pseudocode.integrity.js }}"
257
+ crossorigin="anonymous"
258
+ ></script>
259
+ {% endunless %}
260
+ {% endif %}
261
+
262
+ {% if site.enable_google_analytics %}
263
+ <!-- Analytics -->
264
+ <!-- Global site tag (gtag.js) - Google Analytics -->
265
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
266
+ <script defer src="{{ '/assets/js/google-analytics-setup.js' | relative_url }}"></script>
267
+ {% endif %}
268
+
269
+ {% if site.enable_cronitor_analytics %}
270
+ <!-- Cronitor RUM -->
271
+ <script async src="https://rum.cronitor.io/script.js"></script>
272
+ <script defer src="{{ '/assets/js/cronitor-analytics-setup.js' | relative_url }}"></script>
273
+ {% endif %}
274
+ {% if site.enable_pirsch_analytics %}
275
+ <script
276
+ defer
277
+ src="https://api.pirsch.io/pa.js"
278
+ id="pianjs"
279
+ data-code="{{ site.pirsch_analytics }}"
280
+ ></script>
281
+ {% endif %}
282
+ {% if site.enable_openpanel_analytics %}
283
+ <script defer src="{{ '/assets/js/open-panel-analytics-setup.js' | relative_url }}"></script>
284
+ <script async defer src="https://openpanel.dev/op1.js"></script>
285
+ {% endif %}
286
+
287
+ {% if site.enable_progressbar %}
288
+ <!-- Scrolling Progress Bar -->
289
+ <script defer src="{{ '/assets/js/progress-bar.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
290
+ {% endif %}
291
+
292
+ {% if page.images %}
293
+ <!-- Image Layouts -->
294
+ {% if page.images.compare %}
295
+ <script
296
+ defer
297
+ src="{{ site.third_party_libraries.img-comparison-slider.url.js }}"
298
+ integrity="{{ site.third_party_libraries.img-comparison-slider.integrity.js }}"
299
+ crossorigin="anonymous"
300
+ ></script>
301
+ {% endif %}
302
+ {% if page.images.lightbox2 %}
303
+ <script
304
+ defer
305
+ src="{{ site.third_party_libraries.lightbox2.url.js }}"
306
+ integrity="{{ site.third_party_libraries.lightbox2.integrity.js }}"
307
+ crossorigin="anonymous"
308
+ ></script>
309
+ {% endif %}
310
+ {% if page.images.photoswipe %}
311
+ <script defer src="{{ '/assets/js/photoswipe-setup.js' | relative_url }}" type="module"></script>
312
+ {% endif %}
313
+ {% if page.images.slider %}
314
+ <script
315
+ defer
316
+ src="{{ site.third_party_libraries.swiper.url.js }}"
317
+ integrity="{{ site.third_party_libraries.swiper.integrity.js }}"
318
+ crossorigin="anonymous"
319
+ ></script>
320
+ {% endif %}
321
+ {% if page.images.spotlight %}
322
+ <script
323
+ defer
324
+ src="{{ site.third_party_libraries.spotlight.url.js }}"
325
+ crossorigin="anonymous"
326
+ ></script>
327
+ {% endif %}
328
+ {% if page.images.venobox %}
329
+ <script
330
+ defer
331
+ src="{{ site.third_party_libraries.venobox.url.js }}"
332
+ integrity="{{ site.third_party_libraries.venobox.integrity.js }}"
333
+ crossorigin="anonymous"
334
+ ></script>
335
+ <script defer src="{{ '/assets/js/venobox-setup.js' | relative_url | bust_file_cache }}" type="text/javascript"></script>
336
+ {% endif %}
337
+ {% endif %}
338
+
339
+ {% if page.tabs %}
340
+ <!-- Jekyll Tabs -->
341
+ <script src="{{ '/assets/js/tabs.min.js' | relative_url | bust_file_cache }}"></script>
342
+ {% endif %}
343
+
344
+ {% if site.back_to_top %}
345
+ <!-- Back to Top -->
346
+ <script src="{{ '/assets/js/vanilla-back-to-top.min.js' | relative_url | bust_file_cache }}"></script>
347
+ <script>
348
+ addBackToTop();
349
+ </script>
350
+ {% endif %}
351
+
352
+ {% if site.search_enabled %}
353
+ <!-- Search -->
354
+ {% capture search_placeholder %}{% include t.liquid key='search.placeholder' default='Type to start searching' %}{% endcapture %}
355
+ <script type="module" src="{{ '/assets/js/search/ninja-keys.min.js' | relative_url | bust_file_cache }}"></script>
356
+ <ninja-keys hideBreadcrumbs noAutoLoadMdIcons placeholder="{{ search_placeholder | strip }}"></ninja-keys>
357
+ <script src="{{ '/assets/js/search-setup.js' | relative_url | bust_file_cache }}"></script>
358
+ <script src="{{ '/assets/js/search-data.js' | relative_url }}"></script>
359
+ <script src="{{ '/assets/js/shortcut-key.js' | relative_url | bust_file_cache }}"></script>
360
+ {% endif %}
361
+
362
+ {% if site.newsletter.enabled %}
363
+ <script defer src="{{ '/assets/js/newsletter.js' | relative_url | bust_file_cache }}"></script>
364
+ {% endif %}