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,225 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
5
+ {% assign current_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
6
+ {% assign use_manual_reading_chrome = false %}
7
+ {% if current_profile == 'unaltremanual' %}
8
+ {% assign use_manual_reading_chrome = true %}
9
+ {% assign manual_config = site.unaltraweb.manual %}
10
+ {% assign manual_collection_name = manual_config.collection | default: 'chapters' %}
11
+ {% assign manual_collection = site[manual_collection_name] %}
12
+ {% assign manual_pages = manual_collection | where: 'lang', current_lang | sort: 'weight' %}
13
+ {% if manual_pages.size == 0 and current_lang != site.default_lang %}
14
+ {% assign manual_pages = manual_collection | where: 'lang', site.default_lang | sort: 'weight' %}
15
+ {% endif %}
16
+ {% assign manual_chapters = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered != false' %}
17
+ {% assign manual_reference_pages = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered == false' %}
18
+ {% endif %}
19
+
20
+ {% assign title_key = "title_" | append: current_lang %}
21
+ {% assign author_key = "author_" | append: current_lang %}
22
+ {% assign type_key = "book_type_" | append: current_lang %}
23
+ {% assign publisher_key = "publisher_" | append: current_lang %}
24
+ {% assign collection_key = "collection_" | append: current_lang %}
25
+ {% assign edition_key = "edition_" | append: current_lang %}
26
+ {% assign language_key = "book_language_" | append: current_lang %}
27
+ {% assign status_key = "status_" | append: current_lang %}
28
+ {% assign review_key = "review_" | append: current_lang %}
29
+
30
+ {% assign localized_title = page[title_key] | default: page.title %}
31
+ {% assign localized_author = page[author_key] | default: page.author %}
32
+ {% assign localized_type = page[type_key] | default: page.book_type %}
33
+ {% assign localized_publisher = page[publisher_key] | default: page.publisher %}
34
+ {% assign localized_collection = page[collection_key] | default: page.collection_name %}
35
+ {% assign localized_edition = page[edition_key] | default: page.edition %}
36
+ {% assign localized_book_language = page[language_key] | default: page.book_language %}
37
+ {% assign localized_status_raw = page[status_key] | default: page.status %}
38
+ {% assign localized_review_text = page[review_key] %}
39
+
40
+ {% assign localized_year = page.year | default: page.released %}
41
+ {% assign localized_isbn = page.isbn %}
42
+ {% assign localized_doi = page.doi %}
43
+ {% assign localized_title_html = localized_title | escape %}
44
+ {% assign localized_author_html = localized_author | escape %}
45
+ {% assign localized_publisher_html = localized_publisher | escape %}
46
+ {% assign localized_isbn_html = localized_isbn | escape %}
47
+ {% assign localized_doi_html = localized_doi | escape %}
48
+ {% assign localized_pages = page.pages | default: page.page_count %}
49
+ {% assign localized_review_date = page.review_date | default: page.date %}
50
+ {% assign localized_tags = page.tags %}
51
+ {% capture localized_rating_html %}{% include reading-rating.liquid item=page %}{% endcapture %}
52
+ {% assign localized_rating_html = localized_rating_html | strip %}
53
+
54
+ {% assign status_slug = localized_status_raw | downcase | replace: ' ', '_' %}
55
+ {% assign status_i18n_key = "reading.status_values." | append: status_slug %}
56
+
57
+ {% assign resource_url = page.resource_url | default: page.website | default: page.url_external %}
58
+ {% assign doi_url = page.doi_url %}
59
+ {% assign doi_http_prefix = doi_url | slice: 0, 7 | downcase %}
60
+ {% assign doi_https_prefix = doi_url | slice: 0, 8 | downcase %}
61
+ {% unless doi_http_prefix == 'http://' or doi_https_prefix == 'https://' %}
62
+ {% assign doi_url = nil %}
63
+ {% endunless %}
64
+ {% if doi_url == nil and localized_doi %}
65
+ {% assign doi_url = "https://doi.org/" | append: localized_doi %}
66
+ {% endif %}
67
+ {% assign openlibrary_url = page.openlibrary_url %}
68
+ {% if openlibrary_url == nil and page.olid %}
69
+ {% assign openlibrary_url = "https://openlibrary.org/olid/" | append: page.olid %}
70
+ {% endif %}
71
+
72
+ {% capture bibliographic_record_text %}{% include t.liquid key='reading.bibliographic_record' default='Bibliographic record' %}{% endcapture %}
73
+ {% capture type_text %}{% include t.liquid key='reading.type' default='Type' %}{% endcapture %}
74
+ {% capture publisher_text %}{% include t.liquid key='reading.publisher' default='Publisher' %}{% endcapture %}
75
+ {% capture collection_text %}{% include t.liquid key='reading.collection' default='Collection' %}{% endcapture %}
76
+ {% capture edition_text %}{% include t.liquid key='reading.edition' default='Edition' %}{% endcapture %}
77
+ {% capture year_text %}{% include t.liquid key='reading.year' default='Year' %}{% endcapture %}
78
+ {% capture pages_text %}{% include t.liquid key='reading.pages' default='Pages' %}{% endcapture %}
79
+ {% capture isbn_text %}{% include t.liquid key='reading.isbn' default='ISBN' %}{% endcapture %}
80
+ {% capture doi_text %}{% include t.liquid key='reading.doi' default='DOI' %}{% endcapture %}
81
+ {% capture language_text %}{% include t.liquid key='reading.language' default='Language' %}{% endcapture %}
82
+ {% capture reviewed_on_text %}{% include t.liquid key='reading.reviewed_on' default='Reviewed on' %}{% endcapture %}
83
+ {% capture status_text %}{% include t.liquid key='reading.status' default='Status' %}{% endcapture %}
84
+ {% capture topics_text %}{% include t.liquid key='reading.topics' default='Topics' %}{% endcapture %}
85
+ {% capture rating_text %}{% include t.liquid key='reading.rating' default='Rating' %}{% endcapture %}
86
+ {% capture links_text %}{% include t.liquid key='reading.links' default='Links' %}{% endcapture %}
87
+ {% capture external_resource_text %}{% include t.liquid key='reading.external_resource' default='External resource' %}{% endcapture %}
88
+ {% capture doi_link_text %}{% include t.liquid key='reading.doi_link' default='DOI record' %}{% endcapture %}
89
+ {% capture openlibrary_text %}{% include t.liquid key='reading.openlibrary' default='Open Library' %}{% endcapture %}
90
+ {% capture cite_text %}{% include t.liquid key='reading.cite' default='Cite' %}{% endcapture %}
91
+ {% capture cover_caption_text %}{% include t.liquid key='reading.cover_caption' default='Cover' %}{% endcapture %}
92
+ {% capture no_review_text %}{% include t.liquid key='reading.no_review' default='No review text yet.' %}{% endcapture %}
93
+ {% capture close_panel_text %}{% include t.liquid key='reading.close_panel' default='Close panel' %}{% endcapture %}
94
+ {% capture localized_status %}{% include t.liquid key=status_i18n_key default=localized_status_raw %}{% endcapture %}
95
+
96
+ {% if page.cover %}
97
+ {% if page.cover contains '://' %}
98
+ {% assign cover_src = page.cover %}
99
+ {% else %}
100
+ {% assign cover_src = page.cover | relative_url %}
101
+ {% endif %}
102
+ {% endif %}
103
+
104
+ {% assign reading_index_url = nil %}
105
+ {% if use_manual_reading_chrome %}
106
+ {% assign manual_bibliography_page = manual_reference_pages | where: 'ref', 'manual-bibliography' | first %}
107
+ {% if manual_bibliography_page %}{% assign reading_index_url = manual_bibliography_page.url %}{% endif %}
108
+ {% capture reading_index_text %}{% include t.liquid key='reading.back_to_bibliography' default='Back to bibliography' %}{% endcapture %}
109
+ {% else %}
110
+ {% assign reading_index_candidates = site.pages | where: 'ref', 'books' | where: 'lang', current_lang %}
111
+ {% assign reading_index_page = reading_index_candidates | where_exp: 'candidate', 'candidate.profiles contains current_profile' | first %}
112
+ {% if reading_index_page == nil %}
113
+ {% assign reading_index_page = reading_index_candidates | where_exp: 'candidate', 'candidate.profiles == nil' | first %}
114
+ {% endif %}
115
+ {% if reading_index_page %}{% assign reading_index_url = reading_index_page.url %}{% endif %}
116
+ {% capture reading_index_text %}{% include t.liquid key='reading.back_to_readings' default='Back to readings' %}{% endcapture %}
117
+ {% endif %}
118
+ {% assign reading_index_text = reading_index_text | strip %}
119
+
120
+ {% capture review_html %}
121
+ {% if localized_review_text and localized_review_text != "" %}
122
+ {{ localized_review_text | markdownify }}
123
+ {% elsif content and content != "" %}
124
+ {{ content }}
125
+ {% else %}
126
+ <p>{{ no_review_text | strip }}</p>
127
+ {% endif %}
128
+ {% endcapture %}
129
+
130
+ {% assign citation_key_author = localized_author | default: localized_title | split: '&' | first | split: ',' | first | split: ' ' | last | slugify %}
131
+ {% assign citation_key_year = localized_year | default: 'nd' %}
132
+ {% assign citation_key = page.citation_key | default: citation_key_author | append: citation_key_year | append: localized_title | slugify %}
133
+ {% assign bibtex_author = localized_author | replace: ' & ', ' and ' %}
134
+ {% capture reading_citation_text %}
135
+ {% if localized_author %}{{ localized_author_html }}{% endif %}{% if localized_year %} ({{ localized_year | escape }}){% endif %}.
136
+ <em>{{ localized_title_html }}</em>{% if localized_publisher %}. {{ localized_publisher_html }}{% endif %}{% if localized_doi %}. <a href="{{ doi_url | escape }}" target="_blank" rel="noopener noreferrer">https://doi.org/{{ localized_doi_html }}</a>{% elsif localized_isbn %}. ISBN {{ localized_isbn_html }}{% endif %}.
137
+ {% endcapture %}
138
+ {% capture reading_bibtex_source %}@book{ {{- citation_key -}},
139
+ title = { {{- localized_title -}} }{% if bibtex_author %},
140
+ author = { {{- bibtex_author -}} }{% endif %}{% if localized_year %},
141
+ year = { {{- localized_year -}} }{% endif %}{% if localized_publisher %},
142
+ publisher = { {{- localized_publisher -}} }{% endif %}{% if localized_isbn %},
143
+ isbn = { {{- localized_isbn -}} }{% endif %}{% if localized_doi %},
144
+ doi = { {{- localized_doi -}} }{% endif %},
145
+ url = { {{- page.url | absolute_url -}} }
146
+ }{% endcapture %}
147
+
148
+ {% capture reading_biblio_controls %}
149
+ {%
150
+ include reading-biblio-controls.liquid
151
+ item=page
152
+ citation=reading_citation_text
153
+ bibtex=reading_bibtex_source
154
+ abstract=page.abstract
155
+ doi=localized_doi
156
+ doi_url=doi_url
157
+ url=resource_url
158
+ url_label='LINK'
159
+ wrap_class='reading-biblio-wrap'
160
+ actions_class='reading-biblio-actions'
161
+ panel_class='reading-biblio-panel'
162
+ %}
163
+ {% endcapture %}
164
+
165
+ {% if use_manual_reading_chrome %}
166
+ <div class="manual-layout manual-reading-layout manual-layout--without-page-toc">
167
+ {% include manual-sidebar.liquid chapters=manual_chapters reference_pages=manual_reference_pages %}
168
+ <div class="post reading-review manual-main manual-reading-review">
169
+ {% else %}
170
+ <div class="post reading-review">
171
+ {% endif %}
172
+ <article>
173
+ {% if reading_index_url %}
174
+ <nav class="reading-review-nav" aria-label="{{ reading_index_text | escape }}">
175
+ <a href="{{ reading_index_url | relative_url }}"><i class="ti ti-arrow-left" aria-hidden="true"></i>{{ reading_index_text }}</a>
176
+ </nav>
177
+ {% endif %}
178
+
179
+ <div class="reading-top-grid{% unless cover_src %} reading-top-grid--single{% endunless %}">
180
+ {% if cover_src %}
181
+ <figure class="reading-figure reading-figure-left">
182
+ <img alt="{{ localized_title_html }}" src="{{ cover_src | escape }}">
183
+ <figcaption>{{ cover_caption_text | strip }}: <em>{{ localized_title_html }}</em></figcaption>
184
+ {{ reading_biblio_controls }}
185
+ </figure>
186
+ {% endif %}
187
+
188
+ <div class="reading-main">
189
+ <header class="post-header reading-main-header">
190
+ <h1 class="post-title">{{ localized_title_html }}</h1>
191
+
192
+ {% if localized_author or localized_year or localized_rating_html != '' %}
193
+ <p class="post-meta">
194
+ {% if localized_author %}
195
+ {{ localized_author_html }}
196
+ {% endif %}
197
+ {% if localized_author and localized_year %}
198
+ &nbsp;&middot;&nbsp;
199
+ {% endif %}
200
+ {% if localized_year %}
201
+ {{ localized_year | escape }}
202
+ {% endif %}
203
+ {% if localized_rating_html != '' %}
204
+ {% if localized_author or localized_year %}&nbsp;&middot;&nbsp;{% endif %}{{ localized_rating_html }}
205
+ {% endif %}
206
+ </p>
207
+ {% endif %}
208
+ </header>
209
+
210
+ <div class="reading-content reading-content-main clearfix">
211
+ {{ review_html }}
212
+ </div>
213
+
214
+ {% unless cover_src %}{{ reading_biblio_controls }}{% endunless %}
215
+ </div>
216
+ </div>
217
+ </article>
218
+
219
+ {% if site.giscus and page.giscus_comments %}
220
+ {% include giscus.liquid %}
221
+ {% endif %}
222
+ </div>
223
+ {% if use_manual_reading_chrome %}
224
+ </div>
225
+ {% endif %}
@@ -0,0 +1,66 @@
1
+ ---
2
+ layout: page
3
+ ---
4
+ {{ content }}
5
+
6
+ {% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
7
+
8
+ {% capture empty_shelf_text %}{% include t.liquid key='reading.empty_shelf' default='No reading notes available yet.' %}{% endcapture %}
9
+ {% capture uncategorized_text %}{% include t.liquid key='reading.uncategorized' default='Uncategorized' %}{% endcapture %}
10
+ {% capture not_dated_text %}{% include t.liquid key='reading.not_dated' default='n.d.' %}{% endcapture %}
11
+ {% capture collections_text %}{% include t.liquid key='reading.collections' default='Collections' %}{% endcapture %}
12
+
13
+ {% if page.collection and page.collection.size > 0 %}
14
+ {% assign collection = site[page.collection] %}
15
+ {% assign localized_items = collection | where: 'lang', current_lang %}
16
+ {% if localized_items.size == 0 and current_lang != site.default_lang %}
17
+ {% assign localized_items = collection | where: 'lang', site.default_lang %}
18
+ {% endif %}
19
+ {% if localized_items.size == 0 %}
20
+ {% assign localized_items = collection | where_exp: 'item', 'item.lang == nil' %}
21
+ {% endif %}
22
+
23
+ {% assign sorted_items = localized_items | sort: 'date' | reverse %}
24
+
25
+ {% if sorted_items.size > 0 %}
26
+ {% assign collection_groups = sorted_items | group_by_exp: 'item', 'item.collection_ref | default: item.collection_name | default: item.series | default: uncategorized_text' %}
27
+
28
+ {% if collection_groups.size > 1 %}
29
+ <nav class="reading-collection-index" aria-label="{{ collections_text | strip }}">
30
+ <strong>{{ collections_text | strip }}</strong>
31
+ <ol>
32
+ {% for group in collection_groups %}
33
+ {% assign collection_label_key = 'collection_' | append: current_lang %}
34
+ {% assign collection_label_source = group.items | first %}
35
+ {% assign collection_label = collection_label_source[collection_label_key] | default: collection_label_source.collection_name | default: collection_label_source.series | default: group.name | default: uncategorized_text %}
36
+ <li><a href="#reading-collection-{{ group.name | slugify }}">{{ collection_label }}</a></li>
37
+ {% endfor %}
38
+ </ol>
39
+ </nav>
40
+ {% endif %}
41
+
42
+ {% for group in collection_groups %}
43
+ {% assign collection_label_key = 'collection_' | append: current_lang %}
44
+ {% assign collection_label_source = group.items | first %}
45
+ {% assign collection_label = collection_label_source[collection_label_key] | default: collection_label_source.collection_name | default: collection_label_source.series | default: group.name | default: uncategorized_text %}
46
+ {% assign show_collection_heading = false %}
47
+ {% if collection_groups.size > 1 or collection_label != uncategorized_text %}
48
+ {% assign show_collection_heading = true %}
49
+ {% endif %}
50
+
51
+ <section class="reading-collection"{% if show_collection_heading %} aria-labelledby="reading-collection-{{ group.name | slugify }}"{% endif %}>
52
+ {% if show_collection_heading %}
53
+ <h2 id="reading-collection-{{ group.name | slugify }}" class="reading-collection-title">{{ collection_label }}</h2>
54
+ {% endif %}
55
+
56
+ <div class="reading-shelf">
57
+ {% for item in group.items %}
58
+ {% include reading-cover-card.liquid item=item current_lang=current_lang %}
59
+ {% endfor %}
60
+ </div>
61
+ </section>
62
+ {% endfor %}
63
+ {% else %}
64
+ <p>{{ empty_shelf_text | strip }}</p>
65
+ {% endif %}
66
+ {% endif %}
@@ -0,0 +1,127 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {% unless site.data.resume %}
5
+ <div class="post">
6
+ <header class="post-header">
7
+ <h1 class="post-title">
8
+ {{ page.title }}
9
+ {% if page.cv_pdf %}
10
+ <a
11
+ {% if page.cv_pdf contains '://' %}
12
+ href="{{ page.cv_pdf }}"
13
+ {% else %}
14
+ href="{{ page.cv_pdf | prepend: 'assets/pdf/' | relative_url }}"
15
+ {% endif %}
16
+ target="_blank"
17
+ rel="noopener noreferrer"
18
+ class="float-right"
19
+ >
20
+ <i class="fa-solid fa-file-pdf"></i>
21
+ </a>
22
+ {% endif %}
23
+ </h1>
24
+ {% if page.description %}
25
+ <p class="post-description">{{ page.description }}</p>
26
+ {% endif %}
27
+ </header>
28
+
29
+ <article>
30
+ <div class="cv">
31
+ {% for entry in site.data.cv %}
32
+ <a class="anchor" id="{{ entry.title }}"></a>
33
+ <div class="card mt-3 p-3">
34
+ <h3 class="card-title font-weight-medium">{{ entry.title }}</h3>
35
+ <div>
36
+ {% if entry.type == 'list' %}
37
+ {% include cv/list.liquid %}
38
+ {% elsif entry.type == 'map' %}
39
+ {% include cv/map.liquid %}
40
+ {% elsif entry.type == 'nested_list' %}
41
+ {% include cv/nested_list.liquid %}
42
+ {% elsif entry.type == 'time_table' %}
43
+ {% include cv/time_table.liquid %}
44
+ {% elsif entry.type == 'list_groups' %}
45
+ {% include cv/list_groups.liquid %}
46
+ {% else %}
47
+ {{ entry.contents }}
48
+ {% endif %}
49
+ </div>
50
+ </div>
51
+ {% endfor %}
52
+ </div>
53
+ </article>
54
+ </div>
55
+ {% else %}
56
+ <div class="post">
57
+ <header class="post-header">
58
+ <h1 class="post-title">
59
+ {{ page.title }}
60
+ {% if page.cv_pdf %}
61
+ <a
62
+ {% if page.cv_pdf contains '://' %}
63
+ href="{{ page.cv_pdf }}"
64
+ {% else %}
65
+ href="{{ page.cv_pdf | prepend: 'assets/pdf/' | relative_url }}"
66
+ {% endif %}
67
+ target="_blank"
68
+ rel="noopener noreferrer"
69
+ class="float-right"
70
+ >
71
+ <i class="fa-solid fa-file-pdf"></i>
72
+ </a>
73
+ {% endif %}
74
+ </h1>
75
+ {% if page.description %}
76
+ <p class="post-description">{{ page.description }}</p>
77
+ {% endif %}
78
+ </header>
79
+
80
+ <article>
81
+ <div class="cv">
82
+ {% for data in site.data.resume %}
83
+ {% if site.jsonresume and site.jsonresume.size > 0 %}
84
+ {% unless site.jsonresume contains data[0] %}
85
+ {% continue %}
86
+ {% endunless %}
87
+ {% endif %}
88
+ {% if data[0] == 'meta' or data[1].size == 0 %} {% continue %} {% endif %}
89
+ <a class="anchor" id="{{ data[0] }}"></a>
90
+ <div class="card mt-3 p-3">
91
+ <h3 class="card-title font-weight-medium">{{ data[0] | capitalize }}</h3>
92
+ <div>
93
+ {% case data[0] %}
94
+ {% when 'basics' %}
95
+ {% include resume/basics.liquid %}
96
+ {% when 'education' %}
97
+ {% include resume/education.liquid %}
98
+ {% when 'work' %}
99
+ {% include resume/work.liquid %}
100
+ {% when 'volunteer' %}
101
+ {% include resume/volunteer.liquid %}
102
+ {% when 'projects' %}
103
+ {% include resume/projects.liquid %}
104
+ {% when 'awards' %}
105
+ {% include resume/awards.liquid %}
106
+ {% when 'skills' %}
107
+ {% include resume/skills.liquid %}
108
+ {% when 'publications' %}
109
+ {% include resume/publications.liquid %}
110
+ {% when 'languages' %}
111
+ {% include resume/languages.liquid %}
112
+ {% when 'interests' %}
113
+ {% include resume/interests.liquid %}
114
+ {% when 'certificates' %}
115
+ {% include resume/certificates.liquid %}
116
+ {% when 'references' %}
117
+ {% include resume/references.liquid %}
118
+ {% else %}
119
+
120
+ {% endcase %}
121
+ </div>
122
+ </div>
123
+ {% endfor %}
124
+ </div>
125
+ </article>
126
+ </div>
127
+ {% endunless %}
@@ -0,0 +1,70 @@
1
+ {% assign unaltraweb_site_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
2
+ {% assign unaltraweb_developer_mode = site.developer_mode | default: site.unaltraweb.developer_mode %}
3
+ {% assign unaltraweb_navbar_fixed = site.navbar_fixed %}
4
+ <!doctype html>
5
+ <html lang="{{ page.lang | default: site.default_lang | default: site.lang }}" data-site-profile="{{ unaltraweb_site_profile }}">
6
+ <!-- Head -->
7
+ <head>
8
+ {% if page.redirect %}
9
+ {% assign redirect = nil %}
10
+ {% if page.redirect == true %}
11
+ {% assign redirect = site.baseurl | append: '/' %}
12
+ {% elsif page.redirect contains ':' %}
13
+ {% assign redirect_http_scheme = page.redirect | slice: 0, 7 | downcase %}
14
+ {% assign redirect_https_scheme = page.redirect | slice: 0, 8 | downcase %}
15
+ {% if redirect_http_scheme == 'http://' or redirect_https_scheme == 'https://' %}
16
+ {% assign redirect = page.redirect %}
17
+ {% endif %}
18
+ {% else %}
19
+ {% assign redirect = page.redirect | relative_url %}
20
+ {% endif %}
21
+ {% if redirect %}
22
+ <meta http-equiv="refresh" content="{{ page.redirect_delay | default: 0 }}; url={{ redirect | escape }}">
23
+ {% endif %}
24
+ {% endif %}
25
+ {% include head.liquid %}
26
+ </head>
27
+
28
+ <!-- Body -->
29
+ <body class="site-profile-{{ unaltraweb_site_profile }} {% if unaltraweb_navbar_fixed %}fixed-top-nav{% endif %} {% unless site.footer_fixed %}sticky-bottom-footer{% endunless %}">
30
+ <!-- Header -->
31
+ {% include header.liquid %}
32
+
33
+ <!-- Content -->
34
+ <div class="container mt-5" role="main" data-content-search-root>
35
+ {% if page.toc and page.toc.sidebar %}
36
+ {% if page.toc.sidebar == 'right' %}
37
+ <div class="row">
38
+ <!-- main content area -->
39
+ <div class="col-sm-9">{{ content }}</div>
40
+ <!-- sidebar, which will move to the top on a small screen -->
41
+ <div class="col-sm-3">
42
+ <nav id="toc-sidebar" class="sticky-top"></nav>
43
+ </div>
44
+ </div>
45
+ {% else %}
46
+ <div class="row">
47
+ <!-- sidebar, which will move to the top on a small screen -->
48
+ <div class="col-sm-3">
49
+ <nav id="toc-sidebar" class="sticky-top"></nav>
50
+ </div>
51
+ <!-- main content area -->
52
+ <div class="col-sm-9">{{ content }}</div>
53
+ </div>
54
+ {% endif %}
55
+ {% else %}
56
+ {{ content }}
57
+ {% endif %}
58
+ </div>
59
+
60
+ <!-- Footer -->
61
+ {% include footer.liquid %}
62
+
63
+ {% if unaltraweb_developer_mode and jekyll.environment != 'production' %}
64
+ {% include developer-mode-switcher.liquid current_profile=unaltraweb_site_profile %}
65
+ {% endif %}
66
+
67
+ <!-- JavaScripts -->
68
+ {% include scripts.liquid %}
69
+ </body>
70
+ </html>
@@ -0,0 +1,132 @@
1
+ {% assign unaltraweb_site_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
2
+ <!doctype html>
3
+ <html lang="{{ page.lang | default: site.default_lang | default: site.lang }}" data-site-profile="{{ unaltraweb_site_profile }}">
4
+ <head>
5
+ {% include head.liquid %}
6
+
7
+ <!-- Distill js -->
8
+ <script src="{{ '/assets/js/distillpub/template.v2.js' | relative_url }}"></script>
9
+ <script src="{{ '/assets/js/distillpub/transforms.v2.js' | relative_url }}"></script>
10
+ {% if page._styles %}
11
+ <!-- Page/Post style -->
12
+ <style type="text/css">
13
+ {{ page._styles }}
14
+ </style>
15
+ {% endif %}
16
+ </head>
17
+
18
+ <d-front-matter>
19
+ <script async type="text/json">
20
+ {
21
+ "title": "{{ page.title }}",
22
+ "description": "{{ page.description }}",
23
+ "published": "{{ page.date | date: '%B %d, %Y' }}",
24
+ "authors": [
25
+ {% for author in page.authors %}
26
+ {
27
+ "author": "{{ author.name }}",
28
+ "authorURL": "{{ author.url }}",
29
+ "affiliations": [
30
+ {
31
+ "name": "{{ author.affiliations.name }}",
32
+ "url": "{{ author.affiliations.url }}"
33
+ }
34
+ ]
35
+ }{% if forloop.last == false %},{% endif %}
36
+ {% endfor %}
37
+ ],
38
+ "katex": {
39
+ "delimiters": [
40
+ {
41
+ "left": "$",
42
+ "right": "$",
43
+ "display": false
44
+ },
45
+ {
46
+ "left": "$$",
47
+ "right": "$$",
48
+ "display": true
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ </script>
54
+ </d-front-matter>
55
+
56
+ <body class="site-profile-{{ unaltraweb_site_profile }} {% if site.navbar_fixed %}fixed-top-nav{% endif %} {% unless site.footer_fixed %}sticky-bottom-footer{% endunless %}">
57
+ <!-- Header -->
58
+ {% include header.liquid %}
59
+
60
+ <!-- Content -->
61
+ <div class="post distill" data-content-search-root>
62
+ <d-title>
63
+ <h1>{{ page.title }}</h1>
64
+ <p>{{ page.description }}</p>
65
+ </d-title>
66
+ {% if page.authors %}
67
+ <d-byline></d-byline>
68
+ {% endif %}
69
+
70
+ <d-article>
71
+ {% if page.toc and page.toc.size > 0 %}
72
+ <d-contents>
73
+ <nav class="l-text figcaption">
74
+ <h3>Contents</h3>
75
+ {% for section in page.toc %}
76
+ <div>
77
+ <a href="#{{ section.name | slugify }}">{{ section.name }}</a>
78
+ </div>
79
+ {% if section.subsections %}
80
+ <ul>
81
+ {% for subsection in section.subsections %}
82
+ <li>
83
+ <a href="#{{ subsection.name | slugify }}">{{ subsection.name }}</a>
84
+ </li>
85
+ {% endfor %}
86
+ </ul>
87
+ {% endif %}
88
+ {% endfor %}
89
+ </nav>
90
+ </d-contents>
91
+
92
+ {% elsif page.toc == true %}
93
+ <d-contents>
94
+ <nav class="l-text figcaption">
95
+ <h3>Contents</h3>
96
+ {% toc %}
97
+ </nav>
98
+ </d-contents>
99
+ {% endif %}
100
+
101
+ {{ content }}
102
+ </d-article>
103
+
104
+ <d-appendix>
105
+ <d-footnote-list></d-footnote-list>
106
+ <d-citation-list></d-citation-list>
107
+ </d-appendix>
108
+
109
+ <d-bibliography src="{{ page.bibliography | prepend: '/assets/bibliography/' | relative_url }}"></d-bibliography>
110
+
111
+ <d-article>
112
+ {% if site.related_blog_posts and site.related_blog_posts.enabled %}
113
+ {% if page.related_posts == null or page.related_posts %}
114
+ {% include related_posts.liquid %}
115
+ {% endif %}
116
+ {% endif %}
117
+ <br>
118
+ <br>
119
+ {% if site.disqus_shortname and page.disqus_comments %}{% include disqus.liquid %}{% endif %}
120
+ {% if site.giscus.repo and page.giscus_comments %}
121
+ {% include giscus.liquid %}
122
+ {% endif %}
123
+ </d-article>
124
+ </div>
125
+
126
+ <!-- Footer -->
127
+ {% include footer.liquid %}
128
+
129
+ <!-- JavaScripts -->
130
+ {% include distill_scripts.liquid %}
131
+ </body>
132
+ </html>
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: documentation-page
3
+ ---
4
+ {% include documentation-download-detail.liquid %}
5
+ {{ content }}