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.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/Makefile +412 -0
- data/README.md +226 -0
- data/_config.yml +842 -0
- data/_data/i18n/ca.yml +278 -0
- data/_data/i18n/en.yml +278 -0
- data/_data/i18n/es.yml +278 -0
- data/_includes/audio.liquid +30 -0
- data/_includes/bib_search.liquid +5 -0
- data/_includes/blog-list.liquid +66 -0
- data/_includes/book-citation.liquid +33 -0
- data/_includes/citation.liquid +26 -0
- data/_includes/custom_head.liquid +3 -0
- data/_includes/custom_scripts.liquid +5 -0
- data/_includes/cv/list.liquid +5 -0
- data/_includes/cv/list_groups.liquid +51 -0
- data/_includes/cv/map.liquid +29 -0
- data/_includes/cv/nested_list.liquid +16 -0
- data/_includes/cv/time_table.liquid +118 -0
- data/_includes/cv-download-card.liquid +26 -0
- data/_includes/developer-mode-switcher.liquid +24 -0
- data/_includes/disqus.liquid +13 -0
- data/_includes/distill_scripts.liquid +298 -0
- data/_includes/documentation-download-detail.liquid +76 -0
- data/_includes/documentation-downloads.liquid +71 -0
- data/_includes/documentation-profile-attributes.liquid +4 -0
- data/_includes/documentation-section-toc.liquid +9 -0
- data/_includes/documentation-sidebar.liquid +112 -0
- data/_includes/figure.liquid +87 -0
- data/_includes/footer.liquid +66 -0
- data/_includes/giscus.liquid +25 -0
- data/_includes/head.liquid +220 -0
- data/_includes/header.liquid +544 -0
- data/_includes/latest_posts.liquid +61 -0
- data/_includes/localized-date.liquid +5 -0
- data/_includes/manual-bibliography.liquid +2 -0
- data/_includes/manual-featured-readings.liquid +12 -0
- data/_includes/manual-other-readings.liquid +12 -0
- data/_includes/manual-page-toc.liquid +11 -0
- data/_includes/manual-sidebar.liquid +58 -0
- data/_includes/manual-teachers.liquid +74 -0
- data/_includes/metadata.liquid +278 -0
- data/_includes/news.liquid +48 -0
- data/_includes/newsletter.liquid +68 -0
- data/_includes/page-hero.liquid +96 -0
- data/_includes/page-link.liquid +8 -0
- data/_includes/pagination.liquid +22 -0
- data/_includes/post-reading-time.liquid +29 -0
- data/_includes/previous-next.liquid +37 -0
- data/_includes/profile-card.liquid +49 -0
- data/_includes/profile-feature-matrix.liquid +75 -0
- data/_includes/profile-highlights.liquid +122 -0
- data/_includes/project-grid.liquid +26 -0
- data/_includes/project-resource-link.liquid +45 -0
- data/_includes/project-resources.liquid +21 -0
- data/_includes/projects.liquid +38 -0
- data/_includes/projects_horizontal.liquid +37 -0
- data/_includes/publications-metrics-summary.liquid +69 -0
- data/_includes/publications-summary.liquid +127 -0
- data/_includes/reading-biblio-controls.liquid +65 -0
- data/_includes/reading-cover-card.liquid +93 -0
- data/_includes/reading-rating.liquid +11 -0
- data/_includes/recommended-readings.liquid +30 -0
- data/_includes/related_posts.liquid +39 -0
- data/_includes/repository/repo.liquid +48 -0
- data/_includes/repository/repo_trophies.liquid +44 -0
- data/_includes/repository/repo_user.liquid +35 -0
- data/_includes/resume/awards.liquid +19 -0
- data/_includes/resume/basics.liquid +28 -0
- data/_includes/resume/certificates.liquid +35 -0
- data/_includes/resume/education.liquid +54 -0
- data/_includes/resume/interests.liquid +34 -0
- data/_includes/resume/languages.liquid +31 -0
- data/_includes/resume/projects.liquid +32 -0
- data/_includes/resume/publications.liquid +28 -0
- data/_includes/resume/references.liquid +31 -0
- data/_includes/resume/skills.liquid +33 -0
- data/_includes/resume/volunteer.liquid +52 -0
- data/_includes/resume/work.liquid +52 -0
- data/_includes/scripts.liquid +364 -0
- data/_includes/search-data.js.liquid +341 -0
- data/_includes/selected_papers.liquid +3 -0
- data/_includes/t.liquid +31 -0
- data/_includes/team-grid.liquid +172 -0
- data/_includes/video.liquid +97 -0
- data/_layouts/about.liquid +93 -0
- data/_layouts/archive.liquid +45 -0
- data/_layouts/bib.liquid +677 -0
- data/_layouts/book-review.liquid +225 -0
- data/_layouts/book-shelf.liquid +66 -0
- data/_layouts/cv.liquid +127 -0
- data/_layouts/default.liquid +70 -0
- data/_layouts/distill.liquid +132 -0
- data/_layouts/documentation-download-detail.liquid +5 -0
- data/_layouts/documentation-home.liquid +100 -0
- data/_layouts/documentation-page.liquid +45 -0
- data/_layouts/manual-bib.liquid +73 -0
- data/_layouts/manual-chapter.liquid +99 -0
- data/_layouts/manual-featured-bib.liquid +100 -0
- data/_layouts/manual-home.liquid +120 -0
- data/_layouts/none.liquid +1 -0
- data/_layouts/outputs.liquid +29 -0
- data/_layouts/page.liquid +52 -0
- data/_layouts/post.liquid +95 -0
- data/_layouts/profile.liquid +36 -0
- data/_layouts/profiles.liquid +36 -0
- data/_layouts/project.liquid +7 -0
- data/_layouts/repositories.liquid +58 -0
- data/_layouts/theses.liquid +126 -0
- data/_plugins/bibliography_profiles.rb +164 -0
- data/_plugins/callouts.rb +104 -0
- data/_plugins/code_blocks.rb +277 -0
- data/_plugins/computation_figure_images.rb +266 -0
- data/_plugins/computation_sources.rb +42 -0
- data/_plugins/content_search_index.rb +210 -0
- data/_plugins/details.rb +23 -0
- data/_plugins/external-posts.rb +124 -0
- data/_plugins/figure_captions.rb +800 -0
- data/_plugins/file-exists.rb +22 -0
- data/_plugins/google-scholar-citations.rb +86 -0
- data/_plugins/hide-custom-bibtex.rb +18 -0
- data/_plugins/inspirehep-citations.rb +57 -0
- data/_plugins/localized_visual_sources.rb +145 -0
- data/_plugins/manual_release_metadata.rb +47 -0
- data/_plugins/mermaid_mmd_images.rb +233 -0
- data/_plugins/profile-pages.rb +28 -0
- data/_plugins/remove-accents.rb +32 -0
- data/_plugins/reproducible_build_time.rb +55 -0
- data/_plugins/search-data.rb +83 -0
- data/_plugins/theme-cache-bust.rb +56 -0
- data/_plugins/vega_visual_images.rb +290 -0
- data/_plugins/web_capture_images.rb +154 -0
- data/_sass/_base.scss +2133 -0
- data/_sass/_blog.scss +67 -0
- data/_sass/_callouts.scss +100 -0
- data/_sass/_custom.scss +437 -0
- data/_sass/_cv.scss +274 -0
- data/_sass/_developer.scss +97 -0
- data/_sass/_distill.scss +185 -0
- data/_sass/_documentation.scss +2220 -0
- data/_sass/_layout.scss +218 -0
- data/_sass/_manual.scss +2691 -0
- data/_sass/_profile.scss +323 -0
- data/_sass/_projects.scss +163 -0
- data/_sass/_reading.scss +465 -0
- data/_sass/_site-custom.scss +3 -0
- data/_sass/_tabs.scss +48 -0
- data/_sass/_team.scss +230 -0
- data/_sass/_themes.scss +254 -0
- data/_sass/_typograms.scss +132 -0
- data/_sass/_variables.scss +52 -0
- data/_sass/font-awesome/_animated.scss +152 -0
- data/_sass/font-awesome/_bordered-pulled.scss +20 -0
- data/_sass/font-awesome/_core.scss +49 -0
- data/_sass/font-awesome/_fixed-width.scss +7 -0
- data/_sass/font-awesome/_functions.scss +57 -0
- data/_sass/font-awesome/_icons.scss +13 -0
- data/_sass/font-awesome/_list.scss +18 -0
- data/_sass/font-awesome/_mixins.scss +65 -0
- data/_sass/font-awesome/_rotated-flipped.scss +31 -0
- data/_sass/font-awesome/_screen-reader.scss +14 -0
- data/_sass/font-awesome/_shims.scss +1578 -0
- data/_sass/font-awesome/_sizing.scss +16 -0
- data/_sass/font-awesome/_stacked.scss +32 -0
- data/_sass/font-awesome/_variables.scss +5044 -0
- data/_sass/font-awesome/brands.scss +30 -0
- data/_sass/font-awesome/fontawesome.scss +21 -0
- data/_sass/font-awesome/regular.scss +27 -0
- data/_sass/font-awesome/solid.scss +27 -0
- data/_sass/font-awesome/v4-shims.scss +11 -0
- data/_sass/tabler-icons/tabler-icons-filled.scss +1646 -0
- data/_sass/tabler-icons/tabler-icons-outline.scss +9859 -0
- data/_sass/tabler-icons/tabler-icons.scss +11463 -0
- data/_scripts/cronitor-analytics-setup.js +9 -0
- data/_scripts/giscus-setup.js +48 -0
- data/_scripts/google-analytics-setup.js +9 -0
- data/_scripts/open-panel-analytics-setup.js +14 -0
- data/_scripts/photoswipe-setup.js +11 -0
- data/assets/audio/epicaly-short-113909.mp3 +0 -0
- data/assets/bibliography/2018-12-22-distill.bib +7 -0
- data/assets/css/academicons.min.css +1 -0
- data/assets/css/bootstrap-toc.min.css +4 -0
- data/assets/css/bootstrap.min.css +7 -0
- data/assets/css/bootstrap.min.css.map +1 -0
- data/assets/css/jekyll-pygments-themes-github.css +209 -0
- data/assets/css/jekyll-pygments-themes-native.css +232 -0
- data/assets/css/jupyter-grade3.css +3758 -0
- data/assets/css/jupyter-monokai.css +3758 -0
- data/assets/css/jupyter.css +383 -0
- data/assets/css/main.scss +36 -0
- data/assets/css/mdb.min.css +48 -0
- data/assets/css/mdb.min.css.map +1 -0
- data/assets/css/scholar-icons.css +386 -0
- data/assets/fonts/academicons.ttf +0 -0
- data/assets/fonts/academicons.woff +0 -0
- data/assets/fonts/scholar-icons.ttf +0 -0
- data/assets/fonts/scholar-icons.woff +0 -0
- data/assets/fonts/tabler-icons-filled.ttf +0 -0
- data/assets/fonts/tabler-icons-filled.woff +0 -0
- data/assets/fonts/tabler-icons-filled.woff2 +0 -0
- data/assets/fonts/tabler-icons-outline.ttf +0 -0
- data/assets/fonts/tabler-icons-outline.woff +0 -0
- data/assets/fonts/tabler-icons-outline.woff2 +0 -0
- data/assets/fonts/tabler-icons.ttf +0 -0
- data/assets/fonts/tabler-icons.woff +0 -0
- data/assets/fonts/tabler-icons.woff2 +0 -0
- data/assets/html/relativity.html +15 -0
- data/assets/img/1.jpg +0 -0
- data/assets/img/10.jpg +0 -0
- data/assets/img/11.jpg +0 -0
- data/assets/img/12.jpg +0 -0
- data/assets/img/2.jpg +0 -0
- data/assets/img/3.jpg +0 -0
- data/assets/img/4.jpg +0 -0
- data/assets/img/5.jpg +0 -0
- data/assets/img/6.jpg +0 -0
- data/assets/img/7.jpg +0 -0
- data/assets/img/8.jpg +0 -0
- data/assets/img/9.jpg +0 -0
- data/assets/img/book_covers/the_godfather.jpg +0 -0
- data/assets/img/brand/dosquartsdedocs-logo-cafe.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo-footer-cafe.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo-white.svg +31 -0
- data/assets/img/brand/dosquartsdedocs-logo.svg +31 -0
- data/assets/img/prof_pic.jpg +0 -0
- data/assets/img/prof_pic_color.png +0 -0
- data/assets/img/profile-placeholder.svg +8 -0
- data/assets/img/publication_preview/brownian-motion.gif +0 -0
- data/assets/img/publication_preview/goodchild1992-gis-cover.jpg +0 -0
- data/assets/img/publication_preview/gutierrez2020-jtrg-preview.jpg +0 -0
- data/assets/img/publication_preview/harvey1989-postmodernity-cover.jpg +0 -0
- data/assets/img/publication_preview/tobler1970-economic-geography-cover.jpg +0 -0
- data/assets/img/publication_preview/tuan1977-space-place-cover.jpg +0 -0
- data/assets/img/publication_preview/wave-mechanics.gif +0 -0
- data/assets/img/publication_preview/zaragozi2025-rooftop-pv-preview.jpg +0 -0
- data/assets/img/rhino.png +0 -0
- data/assets/img/team/aaron-gutierrez.png +0 -0
- data/assets/img/team/alba-font.png +0 -0
- data/assets/img/team/alba-viana.png +0 -0
- data/assets/img/team/alejandro-gonzalez.png +0 -0
- data/assets/img/team/ana-pastor.png +0 -0
- data/assets/img/team/antoni-domenech.png +0 -0
- data/assets/img/team/benito-zaragozi.png +0 -0
- data/assets/img/team/cinta-sanz.png +0 -0
- data/assets/img/team/daniel-miravet.png +0 -0
- data/assets/img/team/eugenia-altamirano.png +0 -0
- data/assets/img/team/fiammetta-brandajs.png +0 -0
- data/assets/img/team/francesc-gonzalez.png +0 -0
- data/assets/img/team/isabel-paulino.png +0 -0
- data/assets/img/team/joan-borras.png +0 -0
- data/assets/img/team/julie-wilson.png +0 -0
- data/assets/img/team/liliana-sole.png +0 -0
- data/assets/img/team/maria-casado.png +0 -0
- data/assets/img/team/maria-medina.png +0 -0
- data/assets/img/team/marta-nello.png +0 -0
- data/assets/img/team/mogrify +1 -0
- data/assets/img/team/oscar-saladie.png +0 -0
- data/assets/img/team/paolo-russo.png +0 -0
- data/assets/img/team/raquel-santos.png +0 -0
- data/assets/img/team/salvador-anton.png +0 -0
- data/assets/img/team/sunsi-huertas.png +0 -0
- data/assets/img/team/user-placeholder.png +0 -0
- data/assets/img/team/wilbert-den-hoed.png +0 -0
- data/assets/img/team/xavier-delclos.png +0 -0
- data/assets/img/template_error.png +0 -0
- data/assets/js/bibsearch.js +70 -0
- data/assets/js/bootstrap-toc.min.js +5 -0
- data/assets/js/bootstrap.bundle.min.js +7 -0
- data/assets/js/bootstrap.bundle.min.js.map +1 -0
- data/assets/js/callouts.js +115 -0
- data/assets/js/chartjs-setup.js +14 -0
- data/assets/js/common.js +117 -0
- data/assets/js/content-search-match.js +159 -0
- data/assets/js/content-search.js +441 -0
- data/assets/js/copy_code.js +60 -0
- data/assets/js/custom.js +6 -0
- data/assets/js/developer-mode.js +103 -0
- data/assets/js/diff2html-setup.js +20 -0
- data/assets/js/distillpub/overrides.js +27 -0
- data/assets/js/distillpub/template.v2.js +9616 -0
- data/assets/js/distillpub/template.v2.js.map +1 -0
- data/assets/js/distillpub/transforms.v2.js +14557 -0
- data/assets/js/distillpub/transforms.v2.js.map +1 -0
- data/assets/js/documentation.js +435 -0
- data/assets/js/echarts-setup.js +29 -0
- data/assets/js/highlight-search-term.js +110 -0
- data/assets/js/jupyter_new_tab.js +18 -0
- data/assets/js/leaflet-setup.js +22 -0
- data/assets/js/manual.js +308 -0
- data/assets/js/masonry.js +12 -0
- data/assets/js/mathjax-setup.js +46 -0
- data/assets/js/mermaid-setup.js +37 -0
- data/assets/js/newsletter.js +105 -0
- data/assets/js/no_defer.js +24 -0
- data/assets/js/plotly-setup.js +52 -0
- data/assets/js/profile-nav.js +92 -0
- data/assets/js/progress-bar.js +73 -0
- data/assets/js/pseudocode-setup.js +18 -0
- data/assets/js/search/base-styles.min.js +286 -0
- data/assets/js/search/command-score.min.js +7 -0
- data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +18 -0
- data/assets/js/search/lit/decorators.min.js +7 -0
- data/assets/js/search/lit/directives/class-map.min.js +7 -0
- data/assets/js/search/lit/directives/join.min.js +7 -0
- data/assets/js/search/lit/directives/live.min.js +7 -0
- data/assets/js/search/lit/directives/ref.min.js +7 -0
- data/assets/js/search/lit/directives/repeat.min.js +7 -0
- data/assets/js/search/lit/directives/unsafe-html.min.js +7 -0
- data/assets/js/search/lit/index.min.js +7 -0
- data/assets/js/search/lit-element/lit-element.min.js +12 -0
- data/assets/js/search/lit-html/directives/class-map.min.js +22 -0
- data/assets/js/search/lit-html/directives/join.min.js +12 -0
- data/assets/js/search/lit-html/directives/live.min.js +28 -0
- data/assets/js/search/lit-html/directives/ref.min.js +32 -0
- data/assets/js/search/lit-html/directives/repeat.min.js +27 -0
- data/assets/js/search/lit-html/directives/unsafe-html.min.js +22 -0
- data/assets/js/search/lit-html/is-server.min.js +12 -0
- data/assets/js/search/lit-html/lit-html.min.js +12 -0
- data/assets/js/search/ninja-action.min.js +101 -0
- data/assets/js/search/ninja-footer.min.js +62 -0
- data/assets/js/search/ninja-header.min.js +78 -0
- data/assets/js/search/ninja-keys.min.js +39 -0
- data/assets/js/search/reactive-element/decorators/custom-element.min.js +12 -0
- data/assets/js/search/reactive-element/decorators/event-options.min.js +12 -0
- data/assets/js/search/reactive-element/decorators/property.min.js +22 -0
- data/assets/js/search/reactive-element/decorators/query-all.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query-async.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/query.min.js +17 -0
- data/assets/js/search/reactive-element/decorators/state.min.js +27 -0
- data/assets/js/search/reactive-element/reactive-element.min.js +17 -0
- data/assets/js/search-setup.js +17 -0
- data/assets/js/shortcut-key.js +11 -0
- data/assets/js/tabs.min.js +5 -0
- data/assets/js/theme.js +314 -0
- data/assets/js/tooltips-setup.js +3 -0
- data/assets/js/typograms.js +1341 -0
- data/assets/js/vanilla-back-to-top.min.js +1 -0
- data/assets/js/vega-setup.js +24 -0
- data/assets/js/venobox-setup.js +5 -0
- data/assets/js/wechat.js +14 -0
- data/assets/js/zoom.js +15 -0
- data/assets/json/resume.json +98 -0
- data/assets/json/table_data.json +128 -0
- data/assets/jupyter/blog.ipynb +48 -0
- data/assets/pdf/example_pdf.pdf +0 -0
- data/assets/plotly/demo.html +72 -0
- data/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 +0 -0
- data/assets/webfonts/fa-brands-400.ttf +0 -0
- data/assets/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/webfonts/fa-regular-400.ttf +0 -0
- data/assets/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/webfonts/fa-solid-900.ttf +0 -0
- data/assets/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/webfonts/fa-v4compatibility.ttf +0 -0
- data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
- data/docs/Gemfile +5 -0
- data/docs/_config.yml +83 -0
- data/docs/_documentation/en/01-quick-start.md +115 -0
- data/docs/_documentation/en/02-tools.md +146 -0
- data/docs/_documentation/en/03-usage.md +107 -0
- data/docs/_documentation/en/04-jekyll-basics.md +51 -0
- data/docs/_documentation/en/05-pages-collections.md +68 -0
- data/docs/_documentation/en/06-github-web-editing.md +92 -0
- data/docs/_documentation/en/10-profiles.md +125 -0
- data/docs/_documentation/en/11-unaltreselfie.md +39 -0
- data/docs/_documentation/en/12-unaltreprojecte.md +38 -0
- data/docs/_documentation/en/13-unaltremanual.md +237 -0
- data/docs/_documentation/en/14-unaltredocs.md +92 -0
- data/docs/_documentation/en/15-profile-checklist.md +39 -0
- data/docs/_documentation/en/20-syntax.md +353 -0
- data/docs/_documentation/en/21-themes.md +103 -0
- data/docs/_documentation/en/22-feature-reference.md +56 -0
- data/docs/_documentation/en/23-front-matter.md +51 -0
- data/docs/_documentation/en/24-data-files.md +28 -0
- data/docs/_documentation/en/30-customization.md +448 -0
- data/docs/_documentation/en/31-template.md +55 -0
- data/docs/_documentation/en/32-development.md +108 -0
- data/docs/_documentation/en/33-reusable-workflows.md +136 -0
- data/docs/_documentation/en/40-distribution.md +164 -0
- data/docs/_documentation/en/41-bibliometrics.md +137 -0
- data/docs/_documentation/en/42-docker-image.md +185 -0
- data/docs/_documentation/en/50-faq.md +33 -0
- data/docs/_pages/ca/index.md +35 -0
- data/docs/_pages/en/index.md +35 -0
- data/docs/_pages/es/index.md +35 -0
- data/docs/agents/action-prompts/00-start-site-session.txt +10 -0
- data/docs/agents/action-prompts/05-create-new-web.txt +5 -0
- data/docs/agents/action-prompts/10-content-update.txt +9 -0
- data/docs/agents/action-prompts/15-edit-default-content.txt +8 -0
- data/docs/agents/action-prompts/20-manual-teaching-materials.txt +18 -0
- data/docs/agents/action-prompts/22-manual-style-audit.txt +14 -0
- data/docs/agents/action-prompts/23-manual-structure-audit.txt +17 -0
- data/docs/agents/action-prompts/25-translation-prepublish.txt +8 -0
- data/docs/agents/action-prompts/30-project-site-update.txt +7 -0
- data/docs/agents/action-prompts/40-documentation-update.txt +7 -0
- data/docs/agents/action-prompts/50-bibliography-entry.txt +7 -0
- data/docs/agents/action-prompts/60-bibliometrics-refresh.txt +7 -0
- data/docs/agents/action-prompts/70-build-and-review.txt +12 -0
- data/docs/agents/manual-authoring-components.md +255 -0
- data/docs/agents/mcp-contract.md +162 -0
- data/docs/agents/quarto-computation-adoption.md +102 -0
- data/docs/assets/img/unaltraweb-docs-hero.svg +36 -0
- data/lib/unaltraweb/version.rb +8 -0
- data/lib/unaltraweb.rb +31 -0
- data/requirements.txt +5 -0
- data/scripts/biblio/fetch_scimago_csv.sh +126 -0
- data/scripts/biblio/metrics_common.py +154 -0
- data/scripts/biblio/metrics_merge_meta.py +73 -0
- data/scripts/biblio/metrics_update.py +826 -0
- data/scripts/computations/python/Dockerfile +37 -0
- data/scripts/computations/r/Dockerfile +31 -0
- data/scripts/computations/render.py +1267 -0
- data/scripts/cv/render_pdf_preview.sh +36 -0
- data/scripts/deploy/publish_branch.sh +80 -0
- data/scripts/generate_logo_variants.py +47 -0
- data/scripts/manual/Dockerfile +31 -0
- data/scripts/manual/build_pdf.py +1780 -0
- data/scripts/manual/filters/bibliography.lua +164 -0
- data/scripts/manual/filters/code-blocks.lua +102 -0
- data/scripts/manual/filters/figure-captions.lua +35 -0
- data/scripts/manual/publish_release.sh +281 -0
- data/scripts/manual/templates/manual.tex +494 -0
- data/scripts/manual/verify_release_assets.py +650 -0
- data/scripts/test_gem_build.py +128 -0
- data/scripts/test_reproducible_jekyll_build.py +191 -0
- data/scripts/test_wheel_install.py +282 -0
- data/scripts/unaltraweb-docker-mount.sh +36 -0
- data/scripts/unaltraweb-mcp-bootstrap.sh +105 -0
- data/scripts/unaltraweb-mcp-cleanup.sh +73 -0
- data/scripts/unaltraweb-mcp-project-id.sh +34 -0
- data/scripts/validate_distribution.py +563 -0
- data/scripts/validate_workflows.py +1285 -0
- data/scripts/web_captures/Dockerfile +31 -0
- data/scripts/web_captures/capture.mjs +157 -0
- data/scripts/web_captures/package-lock.json +56 -0
- data/scripts/web_captures/package.json +9 -0
- data/scripts/web_captures/render.py +867 -0
- data/src/unaltraweb_mcp/component-contract.json +153 -0
- data/src/unaltraweb_mcp/component-contract.schema.json +87 -0
- data/src/unaltraweb_mcp/docker_mount.py +19 -0
- metadata +861 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
---
|
|
4
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
5
|
+
{% assign documentation_config = site.unaltraweb.documentation %}
|
|
6
|
+
{% assign documentation_collection_name = documentation_config.collection | default: 'documentation' %}
|
|
7
|
+
{% assign documentation_collection = site[documentation_collection_name] %}
|
|
8
|
+
{% assign current_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
|
|
9
|
+
{% assign documentation_docs = documentation_collection | where: 'lang', current_lang | where_exp: 'doc', 'doc.profiles == nil or doc.profiles contains current_profile' | sort: 'weight' %}
|
|
10
|
+
{% if documentation_docs.size == 0 and current_lang != site.default_lang %}
|
|
11
|
+
{% assign documentation_docs = documentation_collection | where: 'lang', site.default_lang | where_exp: 'doc', 'doc.profiles == nil or doc.profiles contains current_profile' | sort: 'weight' %}
|
|
12
|
+
{% endif %}
|
|
13
|
+
{% capture documentation_label_text %}{% include t.liquid key='documentation.title' default='Documentation' %}{% endcapture %}
|
|
14
|
+
{% capture documentation_contents_text %}{% include t.liquid key='documentation.contents' default='Documentation' %}{% endcapture %}
|
|
15
|
+
{% capture documentation_read_more_text %}{% include t.liquid key='documentation.read_more' default='Read more' %}{% endcapture %}
|
|
16
|
+
<script>
|
|
17
|
+
window.unaltrawebContentSearchUrl = {{ '/assets/js/content-search-index.json' | relative_url | jsonify }};
|
|
18
|
+
window.unaltrawebContentSearchTarget = ".documentation-main";
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<div class="documentation-layout documentation-home-layout">
|
|
22
|
+
{% include documentation-sidebar.liquid docs=documentation_docs %}
|
|
23
|
+
|
|
24
|
+
<article class="documentation-main documentation-home">
|
|
25
|
+
<header class="documentation-hero">
|
|
26
|
+
<div class="documentation-hero-copy">
|
|
27
|
+
<p class="documentation-kicker">{{ documentation_label_text | strip }}</p>
|
|
28
|
+
<h1>{{ page.title }}</h1>
|
|
29
|
+
{% if page.description %}<p class="documentation-subtitle">{{ page.description }}</p>{% endif %}
|
|
30
|
+
{% assign documentation_hero_cta_label = page.hero.cta_label | default: page.hero_cta_label %}
|
|
31
|
+
{% assign documentation_hero_cta_url = page.hero.cta_url | default: page.hero_cta_url %}
|
|
32
|
+
{% assign documentation_hero_secondary_cta_label = page.hero.secondary_cta_label | default: page.hero_secondary_cta_label %}
|
|
33
|
+
{% assign documentation_hero_secondary_cta_url = page.hero.secondary_cta_url | default: page.hero_secondary_cta_url %}
|
|
34
|
+
{% if documentation_hero_cta_label and documentation_hero_cta_url or documentation_hero_secondary_cta_label and documentation_hero_secondary_cta_url %}
|
|
35
|
+
<div class="documentation-hero-actions">
|
|
36
|
+
{% if documentation_hero_cta_label and documentation_hero_cta_url %}
|
|
37
|
+
<a class="documentation-hero-cta" href="{% if documentation_hero_cta_url contains '://' %}{{ documentation_hero_cta_url }}{% else %}{{ documentation_hero_cta_url | relative_url }}{% endif %}">
|
|
38
|
+
{{ documentation_hero_cta_label }}
|
|
39
|
+
<i class="ti ti-arrow-right" aria-hidden="true"></i>
|
|
40
|
+
</a>
|
|
41
|
+
{% endif %}
|
|
42
|
+
{% if documentation_hero_secondary_cta_label and documentation_hero_secondary_cta_url %}
|
|
43
|
+
<a class="documentation-hero-cta documentation-hero-cta--secondary" href="{% if documentation_hero_secondary_cta_url contains '://' %}{{ documentation_hero_secondary_cta_url }}{% else %}{{ documentation_hero_secondary_cta_url | relative_url }}{% endif %}">
|
|
44
|
+
<i class="ti ti-download" aria-hidden="true"></i>
|
|
45
|
+
{{ documentation_hero_secondary_cta_label }}
|
|
46
|
+
</a>
|
|
47
|
+
{% endif %}
|
|
48
|
+
</div>
|
|
49
|
+
{% endif %}
|
|
50
|
+
</div>
|
|
51
|
+
{% assign documentation_hero_image = page.hero.image | default: page.hero_image %}
|
|
52
|
+
{% if documentation_hero_image %}
|
|
53
|
+
<div class="documentation-hero-visual">
|
|
54
|
+
<img src="{{ documentation_hero_image | relative_url }}" alt="{{ page.hero.alt | default: page.title | escape }}">
|
|
55
|
+
</div>
|
|
56
|
+
{% endif %}
|
|
57
|
+
</header>
|
|
58
|
+
|
|
59
|
+
<div class="documentation-content">
|
|
60
|
+
{{ content }}
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
{% if documentation_docs.size > 0 %}
|
|
64
|
+
<section class="documentation-index" aria-labelledby="documentation-index-title">
|
|
65
|
+
<div class="documentation-index-header">
|
|
66
|
+
<p class="documentation-kicker">{{ documentation_contents_text | strip }}</p>
|
|
67
|
+
<h2 id="documentation-index-title">{{ documentation_contents_text | strip }}</h2>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="documentation-index-sections">
|
|
70
|
+
{% assign current_index_section = '' %}
|
|
71
|
+
{% for doc in documentation_docs %}
|
|
72
|
+
{% assign doc_section = doc.section | default: documentation_contents_text | strip %}
|
|
73
|
+
{% if doc_section != current_index_section %}
|
|
74
|
+
{% unless forloop.first %}
|
|
75
|
+
</div>
|
|
76
|
+
</section>
|
|
77
|
+
{% endunless %}
|
|
78
|
+
{% assign current_index_section = doc_section %}
|
|
79
|
+
{% assign section_slug = doc_section | slugify %}
|
|
80
|
+
<section class="documentation-index-section">
|
|
81
|
+
<header class="documentation-index-section-header">
|
|
82
|
+
<span class="documentation-index-section-mark" aria-hidden="true"></span>
|
|
83
|
+
<h3>{{ doc_section }}</h3>
|
|
84
|
+
</header>
|
|
85
|
+
<div class="documentation-card-grid">
|
|
86
|
+
{% endif %}
|
|
87
|
+
<a class="documentation-card documentation-card--{{ section_slug }}" href="{{ doc.url | relative_url }}"{% include documentation-profile-attributes.liquid doc=doc %}>
|
|
88
|
+
{% if doc.subsection %}<span>{{ doc.subsection }}</span>{% endif %}
|
|
89
|
+
<strong>{{ doc.title }}</strong>
|
|
90
|
+
{% if doc.description %}<small>{{ doc.description }}</small>{% endif %}
|
|
91
|
+
<em>{{ documentation_read_more_text | strip }} <i class="ti ti-arrow-right" aria-hidden="true"></i></em>
|
|
92
|
+
</a>
|
|
93
|
+
{% endfor %}
|
|
94
|
+
</div>
|
|
95
|
+
</section>
|
|
96
|
+
</div>
|
|
97
|
+
</section>
|
|
98
|
+
{% endif %}
|
|
99
|
+
</article>
|
|
100
|
+
</div>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
---
|
|
4
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
5
|
+
{% assign documentation_config = site.unaltraweb.documentation %}
|
|
6
|
+
{% assign documentation_collection_name = documentation_config.collection | default: 'documentation' %}
|
|
7
|
+
{% assign documentation_collection = site[documentation_collection_name] %}
|
|
8
|
+
{% assign current_profile = site.unaltraweb.site_profile | default: 'unaltreprojecte' | slugify %}
|
|
9
|
+
{% assign documentation_docs = documentation_collection | where: 'lang', current_lang | where_exp: 'doc', 'doc.profiles == nil or doc.profiles contains current_profile' | sort: 'weight' %}
|
|
10
|
+
{% if documentation_docs.size == 0 and current_lang != site.default_lang %}
|
|
11
|
+
{% assign documentation_docs = documentation_collection | where: 'lang', site.default_lang | where_exp: 'doc', 'doc.profiles == nil or doc.profiles contains current_profile' | sort: 'weight' %}
|
|
12
|
+
{% endif %}
|
|
13
|
+
{% assign documentation_previous_next = documentation_config.previous_next | default: false %}
|
|
14
|
+
{% capture documentation_profile_notice_text %}{% include t.liquid key='documentation.profile_page_notice' default='This page is outside the active documentation profile, but direct links remain available.' %}{% endcapture %}
|
|
15
|
+
<script>
|
|
16
|
+
window.unaltrawebContentSearchUrl = {{ '/assets/js/content-search-index.json' | relative_url | jsonify }};
|
|
17
|
+
window.unaltrawebContentSearchTarget = ".documentation-main";
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<div class="documentation-layout">
|
|
21
|
+
{% include documentation-sidebar.liquid docs=documentation_docs %}
|
|
22
|
+
{% include documentation-section-toc.liquid docs=documentation_docs section=page.section %}
|
|
23
|
+
|
|
24
|
+
<article class="documentation-main documentation-page" data-documentation-current-page{% include documentation-profile-attributes.liquid doc=page item=false %}>
|
|
25
|
+
<header class="documentation-page-header">
|
|
26
|
+
{% if page.section %}
|
|
27
|
+
<nav class="documentation-breadcrumb" aria-label="Documentation location">
|
|
28
|
+
<span class="documentation-breadcrumb-item">{{ page.section }}</span>
|
|
29
|
+
{% if page.subsection %}<span class="documentation-breadcrumb-item">{{ page.subsection }}</span>{% endif %}
|
|
30
|
+
</nav>
|
|
31
|
+
{% endif %}
|
|
32
|
+
<h1>{{ page.title }}</h1>
|
|
33
|
+
{% if page.description %}<p class="documentation-subtitle">{{ page.description }}</p>{% endif %}
|
|
34
|
+
<div class="documentation-profile-notice" data-documentation-profile-notice hidden>{{ documentation_profile_notice_text | strip }}</div>
|
|
35
|
+
</header>
|
|
36
|
+
|
|
37
|
+
<div class="documentation-content">
|
|
38
|
+
{{ content }}
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
{% if documentation_previous_next %}
|
|
42
|
+
{% include previous-next.liquid items=documentation_docs class='documentation-page-nav' aria_label='Documentation navigation' %}
|
|
43
|
+
{% endif %}
|
|
44
|
+
</article>
|
|
45
|
+
</div>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
4
|
+
{% assign comment_key = 'manual_comment_' | append: current_lang %}
|
|
5
|
+
{% assign kind_key = 'manual_kind_' | append: current_lang %}
|
|
6
|
+
{% assign show_manual_reference_extras = false %}
|
|
7
|
+
{% if page.ref == 'manual-bibliography' %}
|
|
8
|
+
{% assign show_manual_reference_extras = true %}
|
|
9
|
+
{% endif %}
|
|
10
|
+
{% assign reference_comment = entry[comment_key] | default: entry.manual_comment | default: entry.comment %}
|
|
11
|
+
{% assign reference_kind = entry[kind_key] | default: entry.manual_kind | default: entry.type %}
|
|
12
|
+
{% assign reference_rating = entry.manual_rating | default: entry.rating %}
|
|
13
|
+
{% assign reference_preview = entry.preview | default: entry.image | default: entry.thumbnail %}
|
|
14
|
+
{% unless show_manual_reference_extras %}
|
|
15
|
+
{% assign reference_comment = nil %}
|
|
16
|
+
{% assign reference_kind = nil %}
|
|
17
|
+
{% assign reference_rating = nil %}
|
|
18
|
+
{% assign reference_preview = nil %}
|
|
19
|
+
{% endunless %}
|
|
20
|
+
{% assign reference_url = entry.manual_url | default: entry.website | default: entry.url %}
|
|
21
|
+
{% assign reference_url_label_key = 'manual_url_label_' | append: current_lang %}
|
|
22
|
+
{% assign reference_url_label = entry[reference_url_label_key] | default: entry.manual_url_label %}
|
|
23
|
+
{% assign reference_without_ids = reference | stripBibliographyIds %}
|
|
24
|
+
{% assign reference_without_access = reference_without_ids | stripBibliographyAccess: entry.doi, entry.url, entry.website, entry.manual_url %}
|
|
25
|
+
<div id="{{ entry.key }}" class="manual-reference{% if reference_preview %} manual-reference--with-preview{% endif %}">
|
|
26
|
+
{% if reference_preview %}
|
|
27
|
+
<div class="manual-reference-preview">
|
|
28
|
+
{% if reference_preview contains '://' %}
|
|
29
|
+
<img src="{{ reference_preview }}" alt="" data-zoomable>
|
|
30
|
+
{% else %}
|
|
31
|
+
{% assign reference_preview_path = reference_preview %}
|
|
32
|
+
{% unless reference_preview_path contains '/' %}
|
|
33
|
+
{% assign reference_preview_path = reference_preview_path | prepend: '/assets/img/publication_preview/' %}
|
|
34
|
+
{% endunless %}
|
|
35
|
+
{%
|
|
36
|
+
include figure.liquid
|
|
37
|
+
loading="eager"
|
|
38
|
+
path=reference_preview_path
|
|
39
|
+
sizes="160px"
|
|
40
|
+
class="manual-reference-preview-image"
|
|
41
|
+
zoomable=true
|
|
42
|
+
avoid_scaling=true
|
|
43
|
+
alt=reference_preview
|
|
44
|
+
%}
|
|
45
|
+
{% endif %}
|
|
46
|
+
</div>
|
|
47
|
+
{% endif %}
|
|
48
|
+
<div class="manual-reference-body">
|
|
49
|
+
{% if reference_kind or reference_rating %}
|
|
50
|
+
<div class="manual-reference-meta">
|
|
51
|
+
{% if reference_kind %}<span>{{ reference_kind }}</span>{% endif %}
|
|
52
|
+
{% if reference_rating %}<span class="reading-rating"><i class="fa-solid fa-star" aria-hidden="true"></i>{{ reference_rating }}/5</span>{% endif %}
|
|
53
|
+
</div>
|
|
54
|
+
{% endif %}
|
|
55
|
+
<div class="manual-reference-text">{{ reference_without_access | replace: "\Textperiodcentered", "·" }}</div>
|
|
56
|
+
{% if reference_comment %}<div class="manual-reference-comment">{{ reference_comment | markdownify }}</div>{% endif %}
|
|
57
|
+
{%
|
|
58
|
+
include reading-biblio-controls.liquid
|
|
59
|
+
item=entry
|
|
60
|
+
id=entry.key
|
|
61
|
+
citation=reference_without_access
|
|
62
|
+
bibtex=entry.bibtex
|
|
63
|
+
abstract=entry.abstract
|
|
64
|
+
doi=entry.doi
|
|
65
|
+
url=reference_url
|
|
66
|
+
url_label=reference_url_label
|
|
67
|
+
wrap_class='manual-reference-citation-wrap'
|
|
68
|
+
actions_class='manual-reference-links'
|
|
69
|
+
panel_class='manual-reference-panel'
|
|
70
|
+
hide_citation_access=true
|
|
71
|
+
%}
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
---
|
|
4
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
5
|
+
{% assign manual_config = site.unaltraweb.manual %}
|
|
6
|
+
{% assign manual_collection_name = manual_config.collection | default: 'chapters' %}
|
|
7
|
+
{% assign manual_collection = site[manual_collection_name] %}
|
|
8
|
+
{% assign manual_pages = manual_collection | where: 'lang', current_lang | sort: 'weight' %}
|
|
9
|
+
{% if manual_pages.size == 0 and current_lang != site.default_lang %}
|
|
10
|
+
{% assign manual_pages = manual_collection | where: 'lang', site.default_lang | sort: 'weight' %}
|
|
11
|
+
{% endif %}
|
|
12
|
+
{% assign manual_chapters = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered != false' %}
|
|
13
|
+
{% assign manual_reference_pages = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered == false' %}
|
|
14
|
+
{% assign current_is_numbered = true %}
|
|
15
|
+
{% if page.manual_numbered == false %}
|
|
16
|
+
{% assign current_is_numbered = false %}
|
|
17
|
+
{% endif %}
|
|
18
|
+
{% assign show_manual_page_toc = true %}
|
|
19
|
+
{% if page.manual_toc == false or page.manual_page_toc == false %}
|
|
20
|
+
{% assign show_manual_page_toc = false %}
|
|
21
|
+
{% endif %}
|
|
22
|
+
{% assign previous_chapter = nil %}
|
|
23
|
+
{% assign next_chapter = nil %}
|
|
24
|
+
{% assign current_seen = false %}
|
|
25
|
+
{% assign current_chapter_number = 0 %}
|
|
26
|
+
{% if current_is_numbered %}
|
|
27
|
+
{% for chapter in manual_chapters %}
|
|
28
|
+
{% if chapter.url == page.url %}
|
|
29
|
+
{% assign current_chapter_number = forloop.index %}
|
|
30
|
+
{% endif %}
|
|
31
|
+
{% endfor %}
|
|
32
|
+
{% for chapter in manual_chapters %}
|
|
33
|
+
{% if current_seen and next_chapter == nil %}
|
|
34
|
+
{% assign next_chapter = chapter %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
{% if chapter.url == page.url %}
|
|
37
|
+
{% assign current_seen = true %}
|
|
38
|
+
{% elsif current_seen == false %}
|
|
39
|
+
{% assign previous_chapter = chapter %}
|
|
40
|
+
{% endif %}
|
|
41
|
+
{% endfor %}
|
|
42
|
+
{% endif %}
|
|
43
|
+
{% capture manual_contents_text %}{% include t.liquid key='manual.contents' default='Contents' %}{% endcapture %}
|
|
44
|
+
{% capture manual_toggle_text %}{% include t.liquid key='manual.toggle_sidebar' default='Toggle contents' %}{% endcapture %}
|
|
45
|
+
{% capture manual_previous_text %}{% include t.liquid key='manual.previous' default='Previous' %}{% endcapture %}
|
|
46
|
+
{% capture manual_next_text %}{% include t.liquid key='manual.next' default='Next' %}{% endcapture %}
|
|
47
|
+
{% capture manual_references_text %}{% include t.liquid key='manual.references' default='References' %}{% endcapture %}
|
|
48
|
+
<script>
|
|
49
|
+
window.unaltrawebContentSearchUrl = {{ '/assets/js/content-search-index.json' | relative_url | jsonify }};
|
|
50
|
+
window.unaltrawebContentSearchTarget = ".manual-main";
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<div class="manual-layout manual-chapter-layout{% unless show_manual_page_toc %} manual-layout--without-page-toc{% endunless %}">
|
|
54
|
+
<div class="manual-toc-panel">
|
|
55
|
+
{% include manual-sidebar.liquid chapters=manual_chapters reference_pages=manual_reference_pages %}
|
|
56
|
+
{% if show_manual_page_toc %}
|
|
57
|
+
{% include manual-page-toc.liquid %}
|
|
58
|
+
{% endif %}
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<article class="manual-main manual-chapter{% unless current_is_numbered %} manual-reference-page{% endunless %}" data-chapter="{% if current_is_numbered %}{{ current_chapter_number | default: page.weight | default: 0 }}{% endif %}" data-manual-numbered="{{ current_is_numbered }}" data-lang="{{ current_lang }}">
|
|
62
|
+
<header class="manual-chapter-header">
|
|
63
|
+
<h1>{{ page.title }}</h1>
|
|
64
|
+
{% if page.description %}<p class="manual-subtitle">{{ page.description }}</p>{% endif %}
|
|
65
|
+
</header>
|
|
66
|
+
|
|
67
|
+
<div class="manual-content">
|
|
68
|
+
{{ content }}
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
{% if page.related_publications or page.manual_references or page.references %}
|
|
72
|
+
<section class="manual-references" aria-labelledby="manual-references-title">
|
|
73
|
+
<h2 id="manual-references-title">{{ manual_references_text | strip }}</h2>
|
|
74
|
+
<div class="manual-bibliography publications">
|
|
75
|
+
{% bibliography --cited --template manual-bib --group_by none %}
|
|
76
|
+
</div>
|
|
77
|
+
</section>
|
|
78
|
+
{% endif %}
|
|
79
|
+
|
|
80
|
+
{% if current_is_numbered %}
|
|
81
|
+
<nav class="manual-chapter-nav" aria-label="{{ manual_contents_text | strip }}">
|
|
82
|
+
{% if previous_chapter %}
|
|
83
|
+
<a class="manual-chapter-nav-link previous" href="{{ previous_chapter.url | relative_url }}">
|
|
84
|
+
<span>{{ manual_previous_text | strip }}</span>
|
|
85
|
+
<strong>{{ previous_chapter.title }}</strong>
|
|
86
|
+
</a>
|
|
87
|
+
{% else %}
|
|
88
|
+
<span></span>
|
|
89
|
+
{% endif %}
|
|
90
|
+
{% if next_chapter %}
|
|
91
|
+
<a class="manual-chapter-nav-link next" href="{{ next_chapter.url | relative_url }}">
|
|
92
|
+
<span>{{ manual_next_text | strip }}</span>
|
|
93
|
+
<strong>{{ next_chapter.title }}</strong>
|
|
94
|
+
</a>
|
|
95
|
+
{% endif %}
|
|
96
|
+
</nav>
|
|
97
|
+
{% endif %}
|
|
98
|
+
</article>
|
|
99
|
+
</div>
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
4
|
+
{% assign comment_key = 'manual_comment_' | append: current_lang %}
|
|
5
|
+
{% assign manual_badge_key = 'manual_badge_' | append: current_lang %}
|
|
6
|
+
{% assign badge_label_key = 'badge_label_' | append: current_lang %}
|
|
7
|
+
{% assign ribbon_label_key = 'ribbon_label_' | append: current_lang %}
|
|
8
|
+
{% assign kind_key = 'manual_kind_' | append: current_lang %}
|
|
9
|
+
{% assign featured_comment = entry[comment_key] | default: entry.manual_comment | default: entry.comment %}
|
|
10
|
+
{% assign featured_badge_key = entry.badge | default: entry.badge_key | default: entry.ribbon_key | default: entry.ribbon_slug %}
|
|
11
|
+
{% assign configured_badge = nil %}
|
|
12
|
+
{% if featured_badge_key and site.unaltraweb.readings and site.unaltraweb.readings.badges %}
|
|
13
|
+
{% assign configured_badge = site.unaltraweb.readings.badges[featured_badge_key] %}
|
|
14
|
+
{% endif %}
|
|
15
|
+
{% assign configured_badge_label_key = 'label_' | append: current_lang %}
|
|
16
|
+
{% assign configured_badge_label = configured_badge[configured_badge_label_key] | default: configured_badge.label %}
|
|
17
|
+
{% assign featured_badge = entry[manual_badge_key] | default: entry[badge_label_key] | default: entry[ribbon_label_key] | default: entry.manual_badge | default: entry.badge_label | default: entry.ribbon_label | default: configured_badge_label | default: featured_badge_key %}
|
|
18
|
+
{% assign featured_kind = entry[kind_key] | default: entry.manual_kind | default: entry.type %}
|
|
19
|
+
{% assign featured_preview = entry.preview | default: entry.image | default: entry.thumbnail %}
|
|
20
|
+
{% assign featured_rating = entry.manual_rating | default: entry.rating %}
|
|
21
|
+
{% assign featured_badge_slug = entry.ribbon_class | default: featured_badge_key | default: featured_badge | default: featured_kind | slugify %}
|
|
22
|
+
{% assign featured_badge_color = entry.badge_color | default: entry.ribbon_color | default: configured_badge.color %}
|
|
23
|
+
{% assign featured_badge_text_color = entry.badge_text_color | default: entry.ribbon_text_color | default: configured_badge.text_color %}
|
|
24
|
+
{% capture featured_badge_style %}{% if featured_badge_color %}--reading-ribbon-bg: {{ featured_badge_color }};{% endif %}{% if featured_badge_text_color %} --reading-ribbon-color: {{ featured_badge_text_color }};{% endif %}{% endcapture %}
|
|
25
|
+
{% assign featured_badge_style = featured_badge_style | strip %}
|
|
26
|
+
{% assign featured_url = entry.manual_url | default: entry.website | default: entry.url %}
|
|
27
|
+
{% assign featured_review_ref = entry.review_ref | default: entry.book_ref | default: entry.reading_ref %}
|
|
28
|
+
{% assign featured_review_url = entry.review_url %}
|
|
29
|
+
{% if featured_review_url == nil and featured_review_ref %}
|
|
30
|
+
{% assign review_candidates = site.books | where: 'ref', featured_review_ref | where: 'lang', current_lang %}
|
|
31
|
+
{% assign review_doc = review_candidates | first %}
|
|
32
|
+
{% if review_doc == nil and current_lang != site.default_lang %}
|
|
33
|
+
{% assign default_review_candidates = site.books | where: 'ref', featured_review_ref | where: 'lang', site.default_lang %}
|
|
34
|
+
{% assign review_doc = default_review_candidates | first %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
{% if review_doc %}{% assign featured_review_url = review_doc.url %}{% endif %}
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% assign featured_url_label_key = 'manual_url_label_' | append: current_lang %}
|
|
39
|
+
{% assign featured_url_label = entry[featured_url_label_key] | default: entry.manual_url_label %}
|
|
40
|
+
{% assign reference_without_ids = reference | stripBibliographyIds %}
|
|
41
|
+
{% assign reference_without_access = reference_without_ids | stripBibliographyAccess: entry.doi, entry.url, entry.website, entry.manual_url %}
|
|
42
|
+
{% capture featured_authors %}
|
|
43
|
+
{%- for author in entry.author_array -%}
|
|
44
|
+
{{- author.first }} {{ author.last -}}{% unless forloop.last %}, {% endunless %}
|
|
45
|
+
{%- endfor -%}
|
|
46
|
+
{% endcapture %}
|
|
47
|
+
{% assign featured_authors = featured_authors | strip | default: entry.author %}
|
|
48
|
+
<article id="{{ entry.key }}" class="manual-featured-reference{% if featured_preview %} manual-featured-reference--with-preview{% endif %}">
|
|
49
|
+
{% if featured_preview %}
|
|
50
|
+
<figure class="cover reading-cover manual-featured-cover">
|
|
51
|
+
{% if featured_review_url %}
|
|
52
|
+
<a class="cover-link" href="{{ featured_review_url | relative_url }}">
|
|
53
|
+
{% else %}
|
|
54
|
+
<div class="cover-link reading-cover-static" aria-label="{{ entry.title | escape }}">
|
|
55
|
+
{% endif %}
|
|
56
|
+
{% if featured_preview contains '://' %}
|
|
57
|
+
<img src="{{ featured_preview }}" alt="{{ entry.title | escape }}"{% if featured_review_url %} data-no-zoom{% else %} data-zoomable{% endif %}>
|
|
58
|
+
{% else %}
|
|
59
|
+
{% assign featured_preview_path = featured_preview %}
|
|
60
|
+
{% unless featured_preview_path contains '/' %}
|
|
61
|
+
{% assign featured_preview_path = featured_preview_path | prepend: '/assets/img/publication_preview/' %}
|
|
62
|
+
{% endunless %}
|
|
63
|
+
<img src="{{ featured_preview_path | relative_url }}" alt="{{ entry.title | escape }}"{% if featured_review_url %} data-no-zoom{% else %} data-zoomable{% endif %}>
|
|
64
|
+
{% endif %}
|
|
65
|
+
{% if featured_badge %}<figcaption class="reading-ribbon custom {{ featured_badge_slug }}"{% if featured_badge_style != '' %} style="{{ featured_badge_style }}"{% endif %}>{{ featured_badge }}</figcaption>{% endif %}
|
|
66
|
+
{% if featured_review_url %}
|
|
67
|
+
</a>
|
|
68
|
+
{% else %}
|
|
69
|
+
</div>
|
|
70
|
+
{% endif %}
|
|
71
|
+
</figure>
|
|
72
|
+
{% endif %}
|
|
73
|
+
<div class="manual-featured-reference-body">
|
|
74
|
+
{% if featured_kind or featured_rating %}
|
|
75
|
+
<p class="manual-featured-kind">
|
|
76
|
+
{% if featured_kind %}<span>{{ featured_kind }}</span>{% endif %}
|
|
77
|
+
{% if featured_rating %}<span class="reading-rating"><i class="fa-solid fa-star" aria-hidden="true"></i>{{ featured_rating }}/5</span>{% endif %}
|
|
78
|
+
</p>
|
|
79
|
+
{% endif %}
|
|
80
|
+
<h3>{% if featured_review_url %}<a href="{{ featured_review_url | relative_url }}">{{ entry.title }}</a>{% else %}{{ entry.title }}{% endif %}</h3>
|
|
81
|
+
{% if featured_authors %}<p class="manual-featured-authors">{{ featured_authors }}</p>{% endif %}
|
|
82
|
+
{% if entry.year %}<p class="manual-featured-meta"><span>{{ entry.year }}</span></p>{% endif %}
|
|
83
|
+
{% if featured_comment and featured_review_url == nil %}<div class="manual-featured-comment">{{ featured_comment | markdownify }}</div>{% endif %}
|
|
84
|
+
{%
|
|
85
|
+
include reading-biblio-controls.liquid
|
|
86
|
+
item=entry
|
|
87
|
+
id=entry.key
|
|
88
|
+
citation=reference_without_access
|
|
89
|
+
bibtex=entry.bibtex
|
|
90
|
+
abstract=entry.abstract
|
|
91
|
+
doi=entry.doi
|
|
92
|
+
url=featured_url
|
|
93
|
+
url_label=featured_url_label
|
|
94
|
+
wrap_class='manual-reference-citation-wrap'
|
|
95
|
+
actions_class='manual-reference-links'
|
|
96
|
+
panel_class='manual-reference-panel'
|
|
97
|
+
hide_citation_access=true
|
|
98
|
+
%}
|
|
99
|
+
</div>
|
|
100
|
+
</article>
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
---
|
|
4
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
5
|
+
{% assign manual_config = site.unaltraweb.manual %}
|
|
6
|
+
{% assign manual_collection_name = manual_config.collection | default: 'chapters' %}
|
|
7
|
+
{% assign manual_collection = site[manual_collection_name] %}
|
|
8
|
+
{% assign manual_pages = manual_collection | where: 'lang', current_lang | sort: 'weight' %}
|
|
9
|
+
{% if manual_pages.size == 0 and current_lang != site.default_lang %}
|
|
10
|
+
{% assign manual_pages = manual_collection | where: 'lang', site.default_lang | sort: 'weight' %}
|
|
11
|
+
{% endif %}
|
|
12
|
+
{% assign manual_chapters = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered != false' %}
|
|
13
|
+
{% assign manual_reference_pages = manual_pages | where_exp: 'chapter', 'chapter.manual_numbered == false' %}
|
|
14
|
+
{% assign manual_show_chapter_index = true %}
|
|
15
|
+
{% if manual_config.show_chapter_index == false %}{% assign manual_show_chapter_index = false %}{% endif %}
|
|
16
|
+
{% if page.show_chapter_index == false %}{% assign manual_show_chapter_index = false %}{% endif %}
|
|
17
|
+
{% if page.show_chapter_index == true %}{% assign manual_show_chapter_index = true %}{% endif %}
|
|
18
|
+
{% assign manual_pdf_config = manual_config.pdf %}
|
|
19
|
+
{% assign manual_pdf_url = manual_pdf_config.output | replace: '{lang}', current_lang %}
|
|
20
|
+
{% assign manual_pdf_cover_url = manual_pdf_config.cover_output | replace: '{lang}', current_lang %}
|
|
21
|
+
{% assign manual_pdf_path = manual_pdf_url %}
|
|
22
|
+
{% assign manual_pdf_cover_path = manual_pdf_cover_url %}
|
|
23
|
+
{% assign manual_pdf_path_prefix = manual_pdf_path | slice: 0 %}
|
|
24
|
+
{% assign manual_pdf_cover_path_prefix = manual_pdf_cover_path | slice: 0 %}
|
|
25
|
+
{% unless manual_pdf_path_prefix == '/' %}
|
|
26
|
+
{% assign manual_pdf_path = manual_pdf_path | prepend: '/' %}
|
|
27
|
+
{% endunless %}
|
|
28
|
+
{% unless manual_pdf_cover_path_prefix == '/' %}
|
|
29
|
+
{% assign manual_pdf_cover_path = manual_pdf_cover_path | prepend: '/' %}
|
|
30
|
+
{% endunless %}
|
|
31
|
+
{% assign manual_pdf_asset = site.static_files | where: 'path', manual_pdf_path | first %}
|
|
32
|
+
{% assign manual_pdf_cover_asset = site.static_files | where: 'path', manual_pdf_cover_path | first %}
|
|
33
|
+
{% if manual_pdf_config.enabled and manual_pdf_cover_asset %}
|
|
34
|
+
{% assign manual_cover_image = manual_pdf_cover_url %}
|
|
35
|
+
{% else %}
|
|
36
|
+
{% assign manual_cover_image = page.cover_image | default: page.cover.image | default: manual_config.cover_image %}
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% assign manual_cover_alt = page.cover_alt | default: page.cover.alt | default: page.title %}
|
|
39
|
+
{% assign manual_subtitle = page.subtitle | default: page.description | default: site.description %}
|
|
40
|
+
{% assign manual_kicker = page.kicker | default: manual_config.kicker | default: manual_config.nav_title | default: manual_config.short_title | default: site.short_title | default: site.acronym | default: site.title %}
|
|
41
|
+
{% assign manual_release = manual_config.release %}
|
|
42
|
+
{% capture manual_contents_text %}{% include t.liquid key='manual.contents' default='Contents' %}{% endcapture %}
|
|
43
|
+
{% capture manual_toggle_text %}{% include t.liquid key='manual.toggle_sidebar' default='Toggle contents' %}{% endcapture %}
|
|
44
|
+
{% capture manual_no_chapters_text %}{% include t.liquid key='manual.no_chapters' default='No chapters available yet.' %}{% endcapture %}
|
|
45
|
+
{% capture manual_download_text %}{% include t.liquid key='manual.download_pdf' default='Download PDF' %}{% endcapture %}
|
|
46
|
+
{% capture manual_release_channel_text %}{% include t.liquid key='manual.release_channel' default='Publication channel' %}{% endcapture %}
|
|
47
|
+
{% capture manual_release_version_text %}{% include t.liquid key='manual.release_version' default='Published version' %}{% endcapture %}
|
|
48
|
+
<script>
|
|
49
|
+
window.unaltrawebContentSearchUrl = {{ '/assets/js/content-search-index.json' | relative_url | jsonify }};
|
|
50
|
+
window.unaltrawebContentSearchTarget = ".manual-main";
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<div class="manual-layout manual-home-layout">
|
|
54
|
+
<div class="manual-toc-panel">
|
|
55
|
+
{% include manual-sidebar.liquid chapters=manual_chapters reference_pages=manual_reference_pages %}
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<article class="manual-main manual-home" data-chapter="0" data-manual-numbered="true" data-lang="{{ current_lang }}">
|
|
59
|
+
<header class="manual-cover">
|
|
60
|
+
<div class="manual-cover-copy">
|
|
61
|
+
{% if manual_kicker %}<p class="manual-kicker">{{ manual_kicker }}</p>{% endif %}
|
|
62
|
+
<h1>{{ page.title }}</h1>
|
|
63
|
+
{% if manual_subtitle %}<p class="manual-subtitle">{{ manual_subtitle }}</p>{% endif %}
|
|
64
|
+
{% if manual_release.selector %}
|
|
65
|
+
<p class="manual-release-metadata" data-release-channel="{{ manual_release.channel | escape }}" data-release-selector="{{ manual_release.selector | escape }}">
|
|
66
|
+
<span><strong>{{ manual_release_channel_text | strip }}:</strong> {{ manual_release.channel }}</span>
|
|
67
|
+
<span><strong>{{ manual_release_version_text | strip }}:</strong> {{ manual_release.selector }}</span>
|
|
68
|
+
</p>
|
|
69
|
+
{% endif %}
|
|
70
|
+
</div>
|
|
71
|
+
{% if manual_cover_image or manual_pdf_asset %}
|
|
72
|
+
<div class="manual-cover-art">
|
|
73
|
+
{% if manual_cover_image %}<img src="{{ manual_cover_image | relative_url }}" alt="{{ manual_cover_alt | escape }}">{% endif %}
|
|
74
|
+
{% if manual_pdf_config.enabled and manual_pdf_asset %}
|
|
75
|
+
<a class="manual-download" href="{{ manual_pdf_url | relative_url }}" download>
|
|
76
|
+
<i class="fa-solid fa-file-pdf" aria-hidden="true"></i>
|
|
77
|
+
<span>{{ manual_download_text | strip }}</span>
|
|
78
|
+
</a>
|
|
79
|
+
{% endif %}
|
|
80
|
+
</div>
|
|
81
|
+
{% endif %}
|
|
82
|
+
</header>
|
|
83
|
+
|
|
84
|
+
<div class="manual-content">
|
|
85
|
+
{{ content }}
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
{% include manual-teachers.liquid %}
|
|
89
|
+
|
|
90
|
+
{% if manual_show_chapter_index %}
|
|
91
|
+
<section class="manual-chapter-index" aria-labelledby="manual-chapter-index-title">
|
|
92
|
+
<h2 id="manual-chapter-index-title">{{ manual_contents_text | strip }}</h2>
|
|
93
|
+
{% if manual_chapters.size > 0 or manual_reference_pages.size > 0 %}
|
|
94
|
+
<ol class="manual-chapter-cards">
|
|
95
|
+
{% for chapter in manual_chapters %}
|
|
96
|
+
<li>
|
|
97
|
+
<a href="{{ chapter.url | relative_url }}">
|
|
98
|
+
<span class="manual-chapter-card-number">{{ forloop.index }}</span>
|
|
99
|
+
<span class="manual-chapter-card-title">{{ chapter.title }}</span>
|
|
100
|
+
{% if chapter.description %}<span class="manual-chapter-card-description">{{ chapter.description }}</span>{% endif %}
|
|
101
|
+
</a>
|
|
102
|
+
</li>
|
|
103
|
+
{% endfor %}
|
|
104
|
+
{% for reference_page in manual_reference_pages %}
|
|
105
|
+
<li>
|
|
106
|
+
<a href="{{ reference_page.url | relative_url }}">
|
|
107
|
+
<span class="manual-chapter-card-number manual-chapter-card-number--blank" aria-hidden="true"></span>
|
|
108
|
+
<span class="manual-chapter-card-title">{{ reference_page.title }}</span>
|
|
109
|
+
{% if reference_page.description %}<span class="manual-chapter-card-description">{{ reference_page.description }}</span>{% endif %}
|
|
110
|
+
</a>
|
|
111
|
+
</li>
|
|
112
|
+
{% endfor %}
|
|
113
|
+
</ol>
|
|
114
|
+
{% else %}
|
|
115
|
+
<p>{{ manual_no_chapters_text | strip }}</p>
|
|
116
|
+
{% endif %}
|
|
117
|
+
</section>
|
|
118
|
+
{% endif %}
|
|
119
|
+
</article>
|
|
120
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{ content }}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: page
|
|
3
|
+
---
|
|
4
|
+
{{ content }}
|
|
5
|
+
|
|
6
|
+
{% assign current_lang = page.lang | default: site.default_lang %}
|
|
7
|
+
{% assign localized_outputs = site.outputs | where: 'lang', current_lang %}
|
|
8
|
+
{% if localized_outputs.size == 0 and current_lang != site.default_lang %}
|
|
9
|
+
{% assign localized_outputs = site.outputs | where: 'lang', site.default_lang %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% if current_lang == site.default_lang %}
|
|
12
|
+
{% assign fallback_outputs = site.outputs | where_exp: 'output', 'output.lang == nil' %}
|
|
13
|
+
{% assign localized_outputs = localized_outputs | concat: fallback_outputs %}
|
|
14
|
+
{% endif %}
|
|
15
|
+
{% assign sorted_outputs = localized_outputs | sort: 'importance' %}
|
|
16
|
+
|
|
17
|
+
{% capture empty_outputs_text %}{% include t.liquid key='outputs.empty' default='Add output cards in the `_outputs` collection to populate this section.' %}{% endcapture %}
|
|
18
|
+
|
|
19
|
+
<div class="projects">
|
|
20
|
+
{% if sorted_outputs.size > 0 %}
|
|
21
|
+
<div class="row row-cols-1 row-cols-md-3">
|
|
22
|
+
{% for project in sorted_outputs %}
|
|
23
|
+
{% include projects.liquid %}
|
|
24
|
+
{% endfor %}
|
|
25
|
+
</div>
|
|
26
|
+
{% else %}
|
|
27
|
+
<p>{{ empty_outputs_text | strip }}</p>
|
|
28
|
+
{% endif %}
|
|
29
|
+
</div>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
---
|
|
4
|
+
{% assign page_hero_image = page.hero_image %}
|
|
5
|
+
{% if page.hero and page.hero.image %}
|
|
6
|
+
{% assign page_hero_image = page.hero.image %}
|
|
7
|
+
{% endif %}
|
|
8
|
+
|
|
9
|
+
{% if page._styles %}
|
|
10
|
+
<!-- Page/Post style -->
|
|
11
|
+
<style type="text/css">
|
|
12
|
+
{{ page._styles }}
|
|
13
|
+
</style>
|
|
14
|
+
{% endif %}
|
|
15
|
+
|
|
16
|
+
{% if page_hero_image %}
|
|
17
|
+
{% include page-hero.liquid title=page.title %}
|
|
18
|
+
{% endif %}
|
|
19
|
+
|
|
20
|
+
<div class="post{% if page_hero_image %} post-page-hero{% endif %}">
|
|
21
|
+
{% unless page_hero_image %}
|
|
22
|
+
<header class="post-header">
|
|
23
|
+
<h1 class="post-title">{{ page.title }}</h1>
|
|
24
|
+
<p class="post-description">{{ page.description }}</p>
|
|
25
|
+
</header>
|
|
26
|
+
{% endunless %}
|
|
27
|
+
|
|
28
|
+
<article>
|
|
29
|
+
{{ content }}
|
|
30
|
+
</article>
|
|
31
|
+
|
|
32
|
+
{% if page.related_publications %}
|
|
33
|
+
<h2>{% include t.liquid key='page.references' default='References' %}</h2>
|
|
34
|
+
<div class="publications">
|
|
35
|
+
{% bibliography --cited %}
|
|
36
|
+
</div>
|
|
37
|
+
{% endif %}
|
|
38
|
+
|
|
39
|
+
{% if site.giscus and page.giscus_comments %}
|
|
40
|
+
{% include giscus.liquid %}
|
|
41
|
+
{% endif %}
|
|
42
|
+
|
|
43
|
+
{% if page.previous_next or page.prev_next %}
|
|
44
|
+
{% assign current_lang = page.lang | default: site.default_lang | default: site.lang %}
|
|
45
|
+
{% assign previous_next_items = site.pages | where: 'lang', current_lang | where_exp: 'candidate', 'candidate.previous_next or candidate.prev_next' | sort: 'nav_order' %}
|
|
46
|
+
{% if page.previous_next_group or page.prev_next_group %}
|
|
47
|
+
{% assign previous_next_group = page.previous_next_group | default: page.prev_next_group %}
|
|
48
|
+
{% assign previous_next_items = previous_next_items | where_exp: 'candidate', 'candidate.previous_next_group == previous_next_group or candidate.prev_next_group == previous_next_group' %}
|
|
49
|
+
{% endif %}
|
|
50
|
+
{% include previous-next.liquid items=previous_next_items class='post-page-nav' %}
|
|
51
|
+
{% endif %}
|
|
52
|
+
</div>
|