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,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Check Profile Features Before Publishing
|
|
3
|
+
description: What to check before choosing and publishing a profile.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: profile_checklist
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- github-publishers
|
|
10
|
+
- local-authors
|
|
11
|
+
- site-designers
|
|
12
|
+
- contributors
|
|
13
|
+
- core-developers
|
|
14
|
+
section: Build A Site
|
|
15
|
+
weight: 270
|
|
16
|
+
permalink: "/profiles/checklist/"
|
|
17
|
+
nav_title: Feature Checklist
|
|
18
|
+
---
|
|
19
|
+
Before publishing a child site, check the profile contract rather than only the visual layout.
|
|
20
|
+
|
|
21
|
+
## Configuration
|
|
22
|
+
|
|
23
|
+
- `unaltraweb.site_profile` is set to one profile.
|
|
24
|
+
- `unaltraweb.features` matches the sections you intend to publish.
|
|
25
|
+
- `url` and `baseurl` match the GitHub Pages target.
|
|
26
|
+
- `languages` includes only the languages you are actually maintaining.
|
|
27
|
+
|
|
28
|
+
## Content
|
|
29
|
+
|
|
30
|
+
- Every page has `lang`, `ref` and a stable `permalink`.
|
|
31
|
+
- Profile-specific pages use `profiles`.
|
|
32
|
+
- Collection entries use the fields expected by their layouts.
|
|
33
|
+
|
|
34
|
+
## Local Review
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
make build SITE_PROFILE=unaltredocs
|
|
38
|
+
make test SITE_PROFILE=unaltredocs
|
|
39
|
+
```
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Write Content With Markdown Extensions
|
|
3
|
+
description: unaltraweb syntax beyond standard Markdown.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: content_syntax
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- github-publishers
|
|
10
|
+
- local-authors
|
|
11
|
+
- site-designers
|
|
12
|
+
- contributors
|
|
13
|
+
section: Design And Customize
|
|
14
|
+
weight: 310
|
|
15
|
+
permalink: "/syntax/"
|
|
16
|
+
nav_title: Markdown Extensions
|
|
17
|
+
---
|
|
18
|
+
<p class="lede"><code>unaltraweb</code> keeps ordinary Markdown readable, then adds a small set of conventions for profiles, callouts, figures, diagrams, cards and static academic data.</p>
|
|
19
|
+
|
|
20
|
+
## Profile And Feature Front Matter
|
|
21
|
+
|
|
22
|
+
Use profile filters when a page should only exist in some site families:
|
|
23
|
+
|
|
24
|
+
```yaml
|
|
25
|
+
---
|
|
26
|
+
title: Projects
|
|
27
|
+
layout: page
|
|
28
|
+
profiles: [unaltreselfie]
|
|
29
|
+
feature: projects
|
|
30
|
+
nav: true
|
|
31
|
+
permalink: /en/projects/
|
|
32
|
+
---
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The page is written only for matching profiles. The `feature` key controls navigation visibility through `_config.yml`:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
unaltraweb:
|
|
39
|
+
features:
|
|
40
|
+
projects: true
|
|
41
|
+
publications: true
|
|
42
|
+
blog: false
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Callouts
|
|
46
|
+
|
|
47
|
+
Nested blockquotes become teaching callouts in manual-style content. A single `>` remains a normal quotation.
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
>> A note or tip.
|
|
51
|
+
|
|
52
|
+
>>> A worked example.
|
|
53
|
+
|
|
54
|
+
>>>> A warning.
|
|
55
|
+
|
|
56
|
+
>>>>> Learning objectives.
|
|
57
|
+
|
|
58
|
+
>>>>>> A caution or danger note.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Rendered by the same parser:
|
|
62
|
+
|
|
63
|
+
>> **Note.** Use this for a short conceptual pause.
|
|
64
|
+
|
|
65
|
+
>>> **Example.** Show the command, formula or reasoning step that makes the concept concrete.
|
|
66
|
+
|
|
67
|
+
>>>> **Warning.** Flag steps that can damage data, confuse students or break a build.
|
|
68
|
+
|
|
69
|
+
Use `>>>>>` learning objectives sparingly, normally once after a short chapter or major-section introduction. Do not put them before any orienting prose, and do not use them as repeated mid-section reminders; use prose, tables or ordinary notes for intermediate criteria.
|
|
70
|
+
|
|
71
|
+
## Manual Heading Levels
|
|
72
|
+
|
|
73
|
+
Manual chapters number three body levels:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
## Section
|
|
77
|
+
### Subsection
|
|
78
|
+
#### Fourth-level subsection
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The secondary page TOC includes `##` and `###`. A `####` heading remains numbered in the text but is intentionally omitted from that TOC. Use it for a cohesive minor subdivision, not as a formatting substitute for every short item. Do not write standalone fake headings such as `**Source.**`; use a real `####` heading or keep the bold run-in and its explanation in one paragraph.
|
|
82
|
+
|
|
83
|
+
## Definition Lists
|
|
84
|
+
|
|
85
|
+
Definition lists render compact terminology as dictionary-style entries on the web and in the manual PDF:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
Spatial reference system
|
|
89
|
+
: Rules and parameters used to interpret coordinates in a defined spatial framework.
|
|
90
|
+
|
|
91
|
+
Map projection
|
|
92
|
+
: Mathematical transformation used to represent a curved surface on a plane.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Use them for concise vocabulary. Develop concepts that need arguments, examples, discussion, or limitations in normal paragraphs.
|
|
96
|
+
|
|
97
|
+
## Figures And Captions
|
|
98
|
+
|
|
99
|
+
For pages with figure captions enabled, use the Markdown image title as the caption:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+

|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
To narrow the space assigned to one figure without changing its height, set a
|
|
106
|
+
CSS width with `data-figure-width`. The figure remains centred and cannot exceed
|
|
107
|
+
the available width. The PDF builder maps `rem` values against its 60-rem
|
|
108
|
+
reading column and caps the result at the printable width:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
{: data-figure-width="22rem"}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Multi-panel figures use a fenced subfigure block:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
::: subfigures a+b/c "Three views of the same exercise"
|
|
118
|
+

|
|
119
|
+

|
|
120
|
+

|
|
121
|
+
:::
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The layout string uses `/` for rows and `+` for columns. The example above renders panels `a`, `b` and `c` as one numbered figure on the web and in the PDF.
|
|
125
|
+
Use this component when juxtaposition is the teaching task: before/after states, controlled alternatives, a short sequence, or complementary views that need one shared caption. Prefer compact layouts such as `a+b` and `a+b/c`, and use them selectively. Images that merely share a topic should normally remain separate figures.
|
|
126
|
+
|
|
127
|
+
## Numbered Tables
|
|
128
|
+
|
|
129
|
+
Manual chapters can number teaching tables with localized labels:
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
::: table "Weekly work rhythm"
|
|
133
|
+
| Week | Focus | Output |
|
|
134
|
+
| --- | --- | --- |
|
|
135
|
+
| 1 | Orientation | Reading notes |
|
|
136
|
+
| 2 | Data setup | Working project folder |
|
|
137
|
+
:::
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Cells may contain inline code spans such as `` `=SUM(A2:A10)` ``. The manual renderer preserves these as inline `<code>` elements on the web; if a consumer project still shows literal backticks inside numbered tables, update its `unaltraweb` lock file or use explicit HTML `<code>` as a temporary compatibility fallback.
|
|
141
|
+
|
|
142
|
+
## Diagram Sources
|
|
143
|
+
|
|
144
|
+
Reference diagram source files as images. The Jekyll plugin rewrites Mermaid and
|
|
145
|
+
PlantUML text sources to SVG files, rendering them through `diavisuals` when the
|
|
146
|
+
shared renderer is available:
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+

|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
SVG is the preferred output because it remains editable. The lookup order
|
|
153
|
+
prefers edited diagrams first:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
vector-workflow.mmd.edited.svg
|
|
157
|
+
vector-workflow.mmd.svg
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
When `*.edited.svg` exists, the build keeps using it and does not overwrite it.
|
|
161
|
+
Agents changing the diagram source should ask whether to keep the edited SVG or
|
|
162
|
+
replace it with a regenerated version.
|
|
163
|
+
|
|
164
|
+
## Static Vega Sources
|
|
165
|
+
|
|
166
|
+
Reference a manifest-backed Vega-Lite (`*.vl.json`) or Vega (`*.vg.json`) specification as a captioned image:
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
{: data-figure-width="42rem"}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
`.vegavisuals.yml` must declare that source exactly once and name its generated output. A source referenced as a web image must produce SVG or PNG; PDF output is valid only for PDF-specific use and cannot be placed in an HTML `img`. Jekyll and the manual PDF builder replace only the image URL, preserving the title caption and Kramdown attributes. SVG is recommended for web/PDF parity. Run `make visualization-render` after source or data changes and `make visualization-check` before publication; rendering and freshness remain owned by the companion `vegavisuals` factory.
|
|
173
|
+
|
|
174
|
+
## Selector-Based Web Captures
|
|
175
|
+
|
|
176
|
+
Store a web capture recipe under `assets/` and reference the recipe as the image source:
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+

|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The recipe uses a local preview path and CSS selectors rather than arbitrary browser scripts:
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
version: 1
|
|
186
|
+
path: /manual/en/chapter/
|
|
187
|
+
viewport: {width: 1440, height: 900}
|
|
188
|
+
theme:
|
|
189
|
+
setting: cafe
|
|
190
|
+
waits:
|
|
191
|
+
selectors: [.manual-layout]
|
|
192
|
+
inputs:
|
|
193
|
+
- _chapters/en/chapter.md
|
|
194
|
+
annotations:
|
|
195
|
+
- id: chapter-navigation
|
|
196
|
+
selector: .manual-sidebar
|
|
197
|
+
kind: arrow
|
|
198
|
+
text: Chapter navigation
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
`web_capture_render` starts an ephemeral site and browser on an internal Docker network, keeps the untouched `*.capture.png`, and generates a self-contained `*.capture.svg` with editable vector layers. A manually reviewed `*.capture.edited.svg` wins over the generated SVG and is never overwritten. Commit the recipe, PNG, SVG, and `.unaltraweb/web-captures.lock.json` together. `web_capture_check` blocks stale output and stale edited overrides. Ordinary Jekyll and PDF builds consume only the selected SVG and do not run Chromium.
|
|
202
|
+
|
|
203
|
+
## Code Fences
|
|
204
|
+
|
|
205
|
+
Use language names for syntax highlighting. Rouge renders recognized languages on the web and the manual PDF renderer guarantees `listings` highlighting for `bash`, `shell`, `sh`, `sql`, `python`, and `r`. Use `url` for URLs or decomposed requests, `spreadsheet` for spreadsheet formulas, and `filetree` for file and directory listings; these semantic fences receive localized headers and dedicated highlighting on both outputs. Recognized blocks receive a compact language header and line numbers; web line numbers are hidden from assistive technology and excluded when copying code. A fence declared as `text`, `plaintext`, `plain`, or `txt`, a fence with no language, or a language unsupported by the renderer becomes an unnumbered verbatim panel without a header. Alternating line backgrounds aid tracking, and PDF lines wrap inside the printable page. Inline code uses single backticks and is styled separately from prose:
|
|
206
|
+
|
|
207
|
+
````markdown
|
|
208
|
+
```bash
|
|
209
|
+
ogrinfo data/raw/roads.gpkg -so roads
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
```sql
|
|
213
|
+
SELECT ST_Area(geom::geography) AS area_m2
|
|
214
|
+
FROM protected_areas;
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
```python
|
|
218
|
+
import geopandas as gpd
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
```r
|
|
222
|
+
library(sf)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
Generic output or a value copied from an application.
|
|
227
|
+
```
|
|
228
|
+
````
|
|
229
|
+
|
|
230
|
+
Wrap one fence in a `listing` block when it needs a descriptive caption and an index entry:
|
|
231
|
+
|
|
232
|
+
````markdown
|
|
233
|
+
::: listing "Inspect the roads layer"
|
|
234
|
+
```bash
|
|
235
|
+
ogrinfo data/raw/roads.gpkg -so roads
|
|
236
|
+
```
|
|
237
|
+
:::
|
|
238
|
+
````
|
|
239
|
+
|
|
240
|
+
The opening line requires a non-empty double-quoted caption and the wrapper must contain exactly one fenced block. Captioned code examples have localized, chapter-scoped numbers on the web and in the PDF. The printable manual emits lists of figures, tables, and code examples after the table of contents when those elements are present. Ordinary fences remain valid and do not enter the list of code examples.
|
|
241
|
+
|
|
242
|
+
## Links, Citations, And Equations
|
|
243
|
+
|
|
244
|
+
The web and manual PDF distinguish bibliographic citations, external URLs, and internal links by color. Use Jekyll Scholar for citations, ordinary Markdown for external links, and stable heading identifiers for internal links:
|
|
245
|
+
|
|
246
|
+
```markdown
|
|
247
|
+
{% raw %}{% cite sourceKey %}{% endraw %}
|
|
248
|
+
[OGC standards](https://www.ogc.org/)
|
|
249
|
+
|
|
250
|
+
## Normalization {#normalization}
|
|
251
|
+
See [the normalization criteria](#normalization).
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Inline mathematics uses `$...$`; displayed equations use `$$...$$` on separate lines and are numbered by default. Add a stable `eq:` label when the text refers to an equation; use `equation*` explicitly for an unnumbered display:
|
|
255
|
+
|
|
256
|
+
```markdown
|
|
257
|
+
\begin{equation}
|
|
258
|
+
\bar{x}_w = \frac{\sum_i w_i x_i}{\sum_i w_i}
|
|
259
|
+
\label{eq:weighted-mean}
|
|
260
|
+
\end{equation}
|
|
261
|
+
|
|
262
|
+
Equation $\eqref{eq:weighted-mean}$ defines the weighted mean.
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Hero Images
|
|
266
|
+
|
|
267
|
+
Pages can use a compact hero image:
|
|
268
|
+
|
|
269
|
+
```yaml
|
|
270
|
+
---
|
|
271
|
+
layout: page
|
|
272
|
+
title: Example Page
|
|
273
|
+
hero:
|
|
274
|
+
image: /assets/img/example-hero.jpg
|
|
275
|
+
alt: Short accessible description
|
|
276
|
+
caption: Optional caption
|
|
277
|
+
source: Optional source name
|
|
278
|
+
source_url: https://example.org/source
|
|
279
|
+
position: center
|
|
280
|
+
---
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Project entries can also define `hero` for cards and project pages.
|
|
284
|
+
|
|
285
|
+
## Project Resources
|
|
286
|
+
|
|
287
|
+
Project pages can expose datasets, repositories, papers and documentation as icon badges:
|
|
288
|
+
|
|
289
|
+
```yaml
|
|
290
|
+
---
|
|
291
|
+
layout: project
|
|
292
|
+
title: Example Project
|
|
293
|
+
resources:
|
|
294
|
+
- type: zenodo
|
|
295
|
+
label: Zenodo dataset
|
|
296
|
+
url: https://zenodo.org/records/1000001
|
|
297
|
+
doi: 10.5281/zenodo.1000001
|
|
298
|
+
- type: github
|
|
299
|
+
label: Source code
|
|
300
|
+
url: https://github.com/example/project
|
|
301
|
+
- type: documentation
|
|
302
|
+
label: Technical notes
|
|
303
|
+
url: https://example.org/docs/example
|
|
304
|
+
---
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Built-in resource types include `zenodo`, `doi`, `dataset`, `data`, `code`, `github`, `repository`, `documentation`, `docs`, `map`, `publication`, `paper`, `report`, `website` and `link`.
|
|
308
|
+
|
|
309
|
+
## CV Preview Cards
|
|
310
|
+
|
|
311
|
+
Use the CV preview include when a PDF is the source of truth:
|
|
312
|
+
|
|
313
|
+
```yaml
|
|
314
|
+
---
|
|
315
|
+
cv_pdf: /assets/pdf/cv.pdf
|
|
316
|
+
cv_preview: /assets/img/cv-preview.jpg
|
|
317
|
+
---
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
{% raw %}
|
|
321
|
+
```liquid
|
|
322
|
+
{% include cv-download-card.liquid pdf=page.cv_pdf preview=page.cv_preview title="CV" %}
|
|
323
|
+
```
|
|
324
|
+
{% endraw %}
|
|
325
|
+
|
|
326
|
+
Generate the preview locally:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
make cv-preview CV_PDF=assets/pdf/cv.pdf CV_PREVIEW=assets/img/cv-preview.jpg
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## Documentation Sections
|
|
333
|
+
|
|
334
|
+
The `unaltredocs` profile uses `_documentation` documents with front matter that drives the left index:
|
|
335
|
+
|
|
336
|
+
```yaml
|
|
337
|
+
---
|
|
338
|
+
title: Installation
|
|
339
|
+
section: Getting Started
|
|
340
|
+
subsection: Local workflow
|
|
341
|
+
weight: 20
|
|
342
|
+
documentation_profiles: [local-authors]
|
|
343
|
+
---
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Static Metrics
|
|
347
|
+
|
|
348
|
+
Publication metrics are updated before builds and written to local files. Jekyll builds do not call OpenAlex, Crossref, Scimago or Google Scholar.
|
|
349
|
+
|
|
350
|
+
```text
|
|
351
|
+
bibliometrics_update
|
|
352
|
+
bibliometrics_check
|
|
353
|
+
```
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Theme And Visual Design
|
|
3
|
+
description: Theme modes, local style overrides and JavaScript integration in unaltraweb.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: theme_modes
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- local-authors
|
|
10
|
+
- site-designers
|
|
11
|
+
- contributors
|
|
12
|
+
section: Design And Customize
|
|
13
|
+
weight: 320
|
|
14
|
+
permalink: "/themes/"
|
|
15
|
+
nav_title: Themes
|
|
16
|
+
---
|
|
17
|
+
<p class="lede"><code>unaltraweb</code> supports system, light, coffee and dark theme settings. The modes are part of the user interface and are covered by the template render smoke tests.</p>
|
|
18
|
+
|
|
19
|
+
## Modes
|
|
20
|
+
|
|
21
|
+
- **Light**: high-contrast default reading mode for normal pages and profile sites.
|
|
22
|
+
- **Coffee**: warm brown reading mode for manuals, long-form documentation and course material.
|
|
23
|
+
- **Dark**: dark mode with matching integration state for embedded libraries and generated diagrams.
|
|
24
|
+
|
|
25
|
+
The switch rotates through:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
system -> light -> coffee -> dark -> system
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`system` follows the browser preference and resolves to light or dark.
|
|
32
|
+
|
|
33
|
+
## Data Attributes
|
|
34
|
+
|
|
35
|
+
The active theme state is exposed on `<html>`:
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<html data-theme-setting="cafe" data-theme="cafe" data-theme-integration="light" data-site-profile="unaltremanual">
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Use these attributes for local CSS and automated checks. Do not infer the active profile from URLs.
|
|
42
|
+
|
|
43
|
+
## Local Sass Overrides
|
|
44
|
+
|
|
45
|
+
Create `_sass/_site-custom.scss` in the child site. It is imported after the core styles.
|
|
46
|
+
|
|
47
|
+
```scss
|
|
48
|
+
:root {
|
|
49
|
+
--global-theme-color: #2f6f5e;
|
|
50
|
+
--global-hover-color: #2f6f5e;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
html[data-theme="cafe"] {
|
|
54
|
+
--global-theme-color: #6f4e1f;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
html[data-site-profile="unaltremanual"] .manual-sidebar {
|
|
58
|
+
border-color: var(--global-theme-color);
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Custom Coffee Palette
|
|
63
|
+
|
|
64
|
+
Use CSS custom properties to customize a built-in mode without changing the theme switcher:
|
|
65
|
+
|
|
66
|
+
```scss
|
|
67
|
+
html[data-theme="cafe"] {
|
|
68
|
+
--global-bg-color: #2a1d16;
|
|
69
|
+
--global-card-bg-color: #34251d;
|
|
70
|
+
--global-text-color: #f4e8da;
|
|
71
|
+
--global-text-color-light: #c8ad94;
|
|
72
|
+
--global-theme-color: #d39a5f;
|
|
73
|
+
--global-hover-color: #d39a5f;
|
|
74
|
+
--global-divider-color: rgba(211, 154, 95, 0.28);
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Adding a fifth switcher mode is a core-theme change: extend `assets/js/theme.js`, the header toggle icons and the Sass selectors together. For normal child sites, override `light`, `cafe` or `dark` with `_sass/_site-custom.scss` instead.
|
|
79
|
+
|
|
80
|
+
## JavaScript Event
|
|
81
|
+
|
|
82
|
+
Local scripts can observe theme changes:
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
document.addEventListener("unaltraweb:themechange", (event) => {
|
|
86
|
+
console.log(event.detail.theme, event.detail.themeSetting);
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Diagram Surfaces
|
|
91
|
+
|
|
92
|
+
Manual Mermaid figures receive diagram surfaces tuned for light, coffee and dark modes. Keep source diagrams simple and let the render pipeline generate theme-compatible SVGs.
|
|
93
|
+
|
|
94
|
+
## Testing Themes
|
|
95
|
+
|
|
96
|
+
The template Playwright smoke test reloads pages with each theme in local storage and checks the resulting attributes and CSS variables.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
make test SITE_PROFILE=unaltreselfie
|
|
100
|
+
make screenshots
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Screenshots generated by `make screenshots` are copied into `assets/img/screenshots/` with `make docs-screenshots`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Feature Reference
|
|
3
|
+
description: Map of reusable unaltraweb features, syntax and examples.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: feature_reference
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- site-designers
|
|
10
|
+
- contributors
|
|
11
|
+
- core-developers
|
|
12
|
+
section: Design And Customize
|
|
13
|
+
weight: 340
|
|
14
|
+
permalink: "/features/"
|
|
15
|
+
nav_title: Feature Reference
|
|
16
|
+
---
|
|
17
|
+
<p class="lede">This page maps reusable <code>unaltraweb</code> features to the documentation pages and template examples that demonstrate them.</p>
|
|
18
|
+
|
|
19
|
+
The companion `unaltraweb-template` repository contains full-profile demos because it exercises the core as a real child site. This site is the `unaltraweb` reference: it explains the platform and shows the syntax users should copy.
|
|
20
|
+
|
|
21
|
+
## Covered Now
|
|
22
|
+
|
|
23
|
+
- **Profiles**: `unaltreselfie`, `unaltreprojecte`, `unaltremanual` and `unaltredocs` are documented conceptually.
|
|
24
|
+
- **Distribution**: gem, Docker image, template repository and reusable workflow responsibilities are documented.
|
|
25
|
+
- **Customization**: local Sass, layouts, feature gates, manual syntax, project resources, CV previews, theme modes and developer mode have starter examples.
|
|
26
|
+
|
|
27
|
+
## Feature Map
|
|
28
|
+
|
|
29
|
+
| Feature | Where documented | Where demonstrated |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| Profiles and feature flags | [Profiles]({{ '/profiles/' | relative_url }}), [Usage]({{ '/usage/' | relative_url }}) | Template home pages and localized navigation |
|
|
32
|
+
| Tools and local runtime | [Tools]({{ '/tools/' | relative_url }}), [Quick Start]({{ '/quick-start/' | relative_url }}) | Template Makefile and Docker Compose files |
|
|
33
|
+
| Callouts, figures, tables and Mermaid | [Syntax]({{ '/syntax/' | relative_url }}), [Customization]({{ '/customization/' | relative_url }}) | Template manual and project resource pages |
|
|
34
|
+
| Theme modes | [Themes]({{ '/themes/' | relative_url }}) | Template Playwright screenshots for light, coffee and dark modes |
|
|
35
|
+
| Bibliometrics | [Bibliometrics]({{ '/bibliometrics/' | relative_url }}) | Template publications pages and metrics workflow wrapper |
|
|
36
|
+
| Deployment and updates | [Distribution]({{ '/distribution/' | relative_url }}), [Development]({{ '/development/' | relative_url }}) | Reusable workflows and Dependabot configuration |
|
|
37
|
+
|
|
38
|
+
## Still To Complete
|
|
39
|
+
|
|
40
|
+
- Add rendered examples for every syntax item above inside this `unaltraweb` reference site.
|
|
41
|
+
- Add a compact front matter reference for pages, posts, projects, chapters, documentation pages, outputs, books, theses and bibliography entries.
|
|
42
|
+
- Add a data-file reference for `_data/` files used by team, repositories, metrics, readings and profile-specific pages.
|
|
43
|
+
- Add profile-specific checklists for creating real sites from the template.
|
|
44
|
+
- Add screenshots or visual examples for the four profiles without duplicating the full template demo.
|
|
45
|
+
- Keep future `keep`/`sync` behavior separate from the existing offline distribution `doctor`; document migrations only when those commands exist.
|
|
46
|
+
- Expand manual/PDF guidance once printable manual output becomes a first-class target.
|
|
47
|
+
|
|
48
|
+
## Where To Look Today
|
|
49
|
+
|
|
50
|
+
- [Customization](../customization/) contains most current syntax examples.
|
|
51
|
+
- [Content syntax](../syntax/) contains copyable examples for syntax beyond standard Markdown.
|
|
52
|
+
- [Themes](../themes/) documents theme modes and local CSS/JS integration.
|
|
53
|
+
- [Site profiles](../profiles/) documents the four prepared website families.
|
|
54
|
+
- [Quick start](../quick-start/) covers GitHub-only and local Docker workflows.
|
|
55
|
+
- [Distribution model](../distribution/) explains gem, Docker and template responsibilities.
|
|
56
|
+
- `unaltraweb-template` contains the current full-profile demo content and Playwright screenshots.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Front Matter Reference
|
|
3
|
+
description: Common front matter keys used by unaltraweb pages and collections.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: front_matter_reference
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- github-publishers
|
|
10
|
+
- local-authors
|
|
11
|
+
- site-designers
|
|
12
|
+
- contributors
|
|
13
|
+
- core-developers
|
|
14
|
+
section: Reference
|
|
15
|
+
weight: 900
|
|
16
|
+
permalink: "/front-matter/"
|
|
17
|
+
nav_title: Front Matter
|
|
18
|
+
---
|
|
19
|
+
Common keys:
|
|
20
|
+
|
|
21
|
+
| Key | Purpose |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `layout` | Selects the reusable layout. |
|
|
24
|
+
| `title` | Page or document title. |
|
|
25
|
+
| `description` | Summary used by cards, search and metadata. |
|
|
26
|
+
| `lang` | Content language. |
|
|
27
|
+
| `ref` | Stable cross-language identity. |
|
|
28
|
+
| `permalink` | Public URL. |
|
|
29
|
+
| `profiles` | Profiles where the item is rendered. |
|
|
30
|
+
| `feature` | Feature flag controlling navigation. |
|
|
31
|
+
| `nav`, `nav_order`, `nav_title` | Top navigation controls. |
|
|
32
|
+
| `section`, `weight` | Documentation sidebar controls. |
|
|
33
|
+
| `documentation_profiles` | Optional `unaltredocs` reader profiles that should include the page. |
|
|
34
|
+
| `introduced_in`, `changed_in`, `deprecated_in`, `removed_in` | Optional version annotations for documentation pages. |
|
|
35
|
+
| `hero` | Page or project hero image configuration. |
|
|
36
|
+
|
|
37
|
+
Example:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
---
|
|
41
|
+
title: Installation
|
|
42
|
+
description: Local Docker workflow for contributors.
|
|
43
|
+
lang: en
|
|
44
|
+
ref: installation
|
|
45
|
+
profiles: [unaltredocs]
|
|
46
|
+
section: User guides
|
|
47
|
+
weight: 30
|
|
48
|
+
documentation_profiles: [local-authors]
|
|
49
|
+
permalink: /installation/
|
|
50
|
+
---
|
|
51
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Data Files Reference
|
|
3
|
+
description: Structured data files commonly used by unaltraweb child sites.
|
|
4
|
+
lang: en
|
|
5
|
+
ref: data_files_reference
|
|
6
|
+
profiles:
|
|
7
|
+
- unaltredocs
|
|
8
|
+
documentation_profiles:
|
|
9
|
+
- local-authors
|
|
10
|
+
- site-designers
|
|
11
|
+
- contributors
|
|
12
|
+
- core-developers
|
|
13
|
+
section: Reference
|
|
14
|
+
weight: 910
|
|
15
|
+
permalink: "/data-files/"
|
|
16
|
+
nav_title: Data Files
|
|
17
|
+
---
|
|
18
|
+
Use `_data/` for structured content that should not live inside prose pages.
|
|
19
|
+
|
|
20
|
+
| File | Typical use |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `_data/i18n/*.yml` | Interface labels and local translations. |
|
|
23
|
+
| `_data/metrics.yml` | Generated publication metrics summary. |
|
|
24
|
+
| `_data/metrics-overrides.yml` | Manual metric corrections. |
|
|
25
|
+
| `_data/repositories.yml` | Repository cards and links. |
|
|
26
|
+
| `_data/team.yml` or local equivalents | Team members for project pages. |
|
|
27
|
+
|
|
28
|
+
Keep generated data reviewable. Metrics workflows should commit versionable outputs such as `_data/metrics.yml`, not local caches.
|