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
data/_layouts/bib.liquid
ADDED
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="row">
|
|
4
|
+
{% if site.enable_publication_thumbnails %}
|
|
5
|
+
<div class="col col-sm-2 abbr">
|
|
6
|
+
{%- if entry.abbr -%}
|
|
7
|
+
{%- if site.data.venues[entry.abbr] -%}
|
|
8
|
+
{% assign venue_style = null %}
|
|
9
|
+
{% if site.data.venues[entry.abbr].color != blank %}
|
|
10
|
+
{% assign venue_style = site.data.venues[entry.abbr].color | prepend: 'style="background-color:' | append: '"' %}
|
|
11
|
+
{%- endif -%}
|
|
12
|
+
<abbr
|
|
13
|
+
class="badge rounded w-100"
|
|
14
|
+
{% if venue_style %}
|
|
15
|
+
{{ venue_style }}
|
|
16
|
+
{% endif -%}
|
|
17
|
+
>
|
|
18
|
+
{% if site.data.venues[entry.abbr].url %}
|
|
19
|
+
<a href="{{ site.data.venues[entry.abbr].url }}">{{ entry.abbr }}</a>
|
|
20
|
+
{% else %}
|
|
21
|
+
<div>{{- entry.abbr -}}</div>
|
|
22
|
+
{% endif %}
|
|
23
|
+
</abbr>
|
|
24
|
+
{% else %}
|
|
25
|
+
<abbr class="badge rounded w-100">{{ entry.abbr }}</abbr>
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% if entry.preview %}
|
|
29
|
+
{% if entry.preview contains '://' %}
|
|
30
|
+
<img class="preview z-depth-1 rounded" src="{{ entry.preview }}">
|
|
31
|
+
{% else %}
|
|
32
|
+
{% assign entry_path = entry.preview | prepend: '/assets/img/publication_preview/' %}
|
|
33
|
+
{%
|
|
34
|
+
include figure.liquid
|
|
35
|
+
loading="eager"
|
|
36
|
+
path=entry_path
|
|
37
|
+
sizes = "200px"
|
|
38
|
+
class="preview z-depth-1 rounded"
|
|
39
|
+
zoomable=true
|
|
40
|
+
avoid_scaling=true
|
|
41
|
+
alt=entry.preview
|
|
42
|
+
%}
|
|
43
|
+
{% endif %}
|
|
44
|
+
{% endif %}
|
|
45
|
+
</div>
|
|
46
|
+
{% endif %}
|
|
47
|
+
|
|
48
|
+
<!-- Entry bib key -->
|
|
49
|
+
<div id="{{ entry.key }}" class="{% if site.enable_publication_thumbnails %}col-sm-8{% else %}col-sm-10{% endif %}">
|
|
50
|
+
{% capture bib_and_text %}{% include t.liquid key='bib.and' default='and' %}{% endcapture %}
|
|
51
|
+
{% capture bib_in_prefix_text %}{% include t.liquid key='bib.in_prefix' default='In' %}{% endcapture %}
|
|
52
|
+
{% capture bib_awarded_text %}{% include t.liquid key='bib.buttons.awarded' default='Awarded' %}{% endcapture %}
|
|
53
|
+
{% capture bib_abstract_text %}{% include t.liquid key='bib.buttons.abstract' default='Abs' %}{% endcapture %}
|
|
54
|
+
{% capture bib_bib_text %}{% include t.liquid key='bib.buttons.bib' default='Bib' %}{% endcapture %}
|
|
55
|
+
{% capture bib_supp_text %}{% include t.liquid key='bib.buttons.supp' default='Supp' %}{% endcapture %}
|
|
56
|
+
{% capture bib_video_text %}{% include t.liquid key='bib.buttons.video' default='Video' %}{% endcapture %}
|
|
57
|
+
{% capture bib_blog_text %}{% include t.liquid key='bib.buttons.blog' default='Blog' %}{% endcapture %}
|
|
58
|
+
{% capture bib_code_text %}{% include t.liquid key='bib.buttons.code' default='Code' %}{% endcapture %}
|
|
59
|
+
{% capture bib_poster_text %}{% include t.liquid key='bib.buttons.poster' default='Poster' %}{% endcapture %}
|
|
60
|
+
{% capture bib_slides_text %}{% include t.liquid key='bib.buttons.slides' default='Slides' %}{% endcapture %}
|
|
61
|
+
{% capture bib_website_text %}{% include t.liquid key='bib.buttons.website' default='Website' %}{% endcapture %}
|
|
62
|
+
|
|
63
|
+
<!-- Title -->
|
|
64
|
+
<div class="title">{{ entry.title }}</div>
|
|
65
|
+
<!-- Author -->
|
|
66
|
+
<div class="author">
|
|
67
|
+
{% assign author_array_size = entry.author_array | size %}
|
|
68
|
+
|
|
69
|
+
{% assign author_array_limit = author_array_size %}
|
|
70
|
+
{% if site.max_author_limit and author_array_size > site.max_author_limit %}
|
|
71
|
+
{% assign author_array_limit = site.max_author_limit %}
|
|
72
|
+
{% endif %}
|
|
73
|
+
|
|
74
|
+
{%- for author in entry.author_array limit: author_array_limit -%}
|
|
75
|
+
{% assign author_is_self = false %}
|
|
76
|
+
{%- assign author_last_name = author.last | regex_replace: '[*∗†‡§¶‖&^]', '' -%}
|
|
77
|
+
{%- assign author_last_html = author.last | regex_replace: '([*∗†‡§¶‖&^]+)', '<sup>\1</sup>' -%}
|
|
78
|
+
{% if site.scholar.last_name contains author_last_name %}
|
|
79
|
+
{% if site.scholar.first_name contains author.first %}
|
|
80
|
+
{% assign author_is_self = true %}
|
|
81
|
+
{% endif %}
|
|
82
|
+
{%- endif -%}
|
|
83
|
+
{% assign coauthor_url = null %}
|
|
84
|
+
{%- assign clean_last_name = author_last_name | downcase | remove_accents -%}
|
|
85
|
+
{% if site.data.coauthors[clean_last_name] %}
|
|
86
|
+
{%- for coauthor in site.data.coauthors[clean_last_name] -%}
|
|
87
|
+
{% if coauthor.firstname contains author.first %}
|
|
88
|
+
{%- assign coauthor_url = coauthor.url -%}
|
|
89
|
+
{% break %}
|
|
90
|
+
{%- endif -%}
|
|
91
|
+
{% endfor %}
|
|
92
|
+
{%- endif -%}
|
|
93
|
+
|
|
94
|
+
{%- if forloop.length > 1 -%}
|
|
95
|
+
{% if forloop.first == false -%}
|
|
96
|
+
{%- if forloop.length > 2 %}, {% elsif forloop.length == 2 %} {% endif %}
|
|
97
|
+
{%- endif %}
|
|
98
|
+
{%- if forloop.last and author_array_limit == author_array_size %}{{ bib_and_text | strip }} {% endif -%}
|
|
99
|
+
{% endif %}
|
|
100
|
+
{%- if author_is_self -%}
|
|
101
|
+
<em>
|
|
102
|
+
{{- author.first }}
|
|
103
|
+
{{ author_last_html -}}
|
|
104
|
+
</em>
|
|
105
|
+
{%- else -%}
|
|
106
|
+
{%- if coauthor_url -%}
|
|
107
|
+
<a href="{{ coauthor_url }}">
|
|
108
|
+
{{- author.first }}
|
|
109
|
+
{{ author_last_html -}}
|
|
110
|
+
</a>
|
|
111
|
+
{%- else -%}
|
|
112
|
+
{{- author.first }}
|
|
113
|
+
{{ author_last_html -}}
|
|
114
|
+
{% endif %}
|
|
115
|
+
{%- endif -%}
|
|
116
|
+
{% endfor %}
|
|
117
|
+
{%- assign more_authors = author_array_size | minus: author_array_limit -%}
|
|
118
|
+
|
|
119
|
+
{%- assign more_authors_hide = more_authors | append: ' more author' -%}
|
|
120
|
+
{% if more_authors > 0 %}
|
|
121
|
+
{%- if more_authors > 1 -%}
|
|
122
|
+
{% assign more_authors_hide = more_authors_hide | append: 's' %}
|
|
123
|
+
{%- endif -%}
|
|
124
|
+
{% assign more_authors_show = '' %}
|
|
125
|
+
{%- for author in entry.author_array offset: author_array_limit -%}
|
|
126
|
+
{% assign more_authors_show = more_authors_show | append: author.first | append: ' ' | append: author.last %}
|
|
127
|
+
{% unless forloop.last %}
|
|
128
|
+
{% assign more_authors_show = more_authors_show | append: ', ' %}
|
|
129
|
+
{% endunless %}
|
|
130
|
+
{%- endfor -%}
|
|
131
|
+
{%- assign more_authors_show = more_authors_show | regex_replace: '([*∗†‡§¶‖&^]+)', '<sup>\1</sup>' -%}
|
|
132
|
+
, and
|
|
133
|
+
<span
|
|
134
|
+
class="more-authors"
|
|
135
|
+
title="click to view {{ more_authors_hide }}"
|
|
136
|
+
onclick="
|
|
137
|
+
var element = $(this);
|
|
138
|
+
element.attr('title', '');
|
|
139
|
+
var more_authors_text = element.text() == '{{ more_authors_hide }}' ? '{{ more_authors_show }}' : '{{ more_authors_hide }}';
|
|
140
|
+
var cursorPosition = 0;
|
|
141
|
+
var textAdder = setInterval(function(){
|
|
142
|
+
element.html(more_authors_text.substring(0, cursorPosition + 1));
|
|
143
|
+
if (++cursorPosition == more_authors_text.length){
|
|
144
|
+
clearInterval(textAdder);
|
|
145
|
+
}
|
|
146
|
+
}, '{{ site.more_authors_animation_delay }}');
|
|
147
|
+
"
|
|
148
|
+
>
|
|
149
|
+
{{- more_authors_hide -}}
|
|
150
|
+
</span>
|
|
151
|
+
{% endif %}
|
|
152
|
+
{% if entry.annotation %}
|
|
153
|
+
<i
|
|
154
|
+
class="fa-solid fa-circle-info ml-1"
|
|
155
|
+
data-toggle="popover"
|
|
156
|
+
data-placement="top"
|
|
157
|
+
data-html="true"
|
|
158
|
+
data-content="{{ entry.annotation | escape }}"
|
|
159
|
+
>
|
|
160
|
+
</i>
|
|
161
|
+
{% endif %}
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<!-- Journal/Book title and date -->
|
|
165
|
+
{% assign proceedings = 'inproceedings,incollection' | split: ',' %}
|
|
166
|
+
{% assign thesis = 'thesis,mastersthesis,phdthesis' | split: ',' %}
|
|
167
|
+
{% if entry.type == 'article' %}
|
|
168
|
+
{% capture entrytype %}<em>{{ entry.journal }}</em>{% endcapture %}
|
|
169
|
+
{% elsif proceedings contains entry.type %}
|
|
170
|
+
{% capture entrytype %}<em>{{ bib_in_prefix_text | strip }} {{ entry.booktitle }}</em>{% endcapture %}
|
|
171
|
+
{% elsif thesis contains entry.type %}
|
|
172
|
+
{% capture entrytype %}<em>{{ entry.school }}</em>{% endcapture %}
|
|
173
|
+
{% else %}
|
|
174
|
+
{% capture entrytype %}{% endcapture %}
|
|
175
|
+
{% endif %}
|
|
176
|
+
{% assign entrymonth = '' %}
|
|
177
|
+
{% if entry.month %}
|
|
178
|
+
{% capture entrymonth %}{{ " " }}{{ entry.month | capitalize }}{% endcapture %}
|
|
179
|
+
{% endif %}
|
|
180
|
+
{% assign entryyear = '' %}
|
|
181
|
+
{% if entry.year %}
|
|
182
|
+
{% capture entryyear %}{{ " " }}{{ entry.year }}{% endcapture %}
|
|
183
|
+
{% endif %}
|
|
184
|
+
{% if entry.location %}
|
|
185
|
+
{% capture entrytype %}{{ entrytype }}{{ ", " }}{{ entry.location }}{% endcapture %}
|
|
186
|
+
{% endif -%}
|
|
187
|
+
{% if entry.additional_info %}
|
|
188
|
+
{% capture entrytype %}{{ entrytype }}{{ entry.additional_info | markdownify | remove: '<p>' | remove: '</p>' }}{% endcapture %}
|
|
189
|
+
{% endif %}
|
|
190
|
+
{% capture hook_exists %}{% file_exists _includes/hook/bib.liquid %}{% endcapture %}
|
|
191
|
+
{% if hook_exists == 'true' %}
|
|
192
|
+
{% include hook/bib.liquid %}
|
|
193
|
+
{% endif %}
|
|
194
|
+
{% assign entrytype_text = entrytype | strip_html | strip %}
|
|
195
|
+
{% capture periodical %}{{ entrytype }}{% if entrytype_text != "" and entryyear != "" %}, {% endif %}{{ entrymonth }}{{ entryyear }}{% endcapture %}
|
|
196
|
+
<div class="periodical">
|
|
197
|
+
{{ periodical | strip }}
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
{% assign cite_oa = entry.x_openalex_cited_by | default: '' | strip | plus: 0 %}
|
|
201
|
+
{% assign cite_cr = entry.x_crossref_cited_by | default: '' | strip | plus: 0 %}
|
|
202
|
+
{% assign cite_gs = entry.x_gs_cited_by | default: '' | strip | plus: 0 %}
|
|
203
|
+
{% assign fwci_val = entry.x_openalex_fwci | default: '' | strip %}
|
|
204
|
+
{% assign fwci_num = fwci_val | plus: 0 %}
|
|
205
|
+
{% assign cnp_val = entry.x_openalex_citation_normalized_percentile | default: '' | strip %}
|
|
206
|
+
{% assign cnp_num = cnp_val | plus: 0 %}
|
|
207
|
+
{% assign oa_cited_2y_val = entry.x_openalex_cited_by_2y | default: '' | strip %}
|
|
208
|
+
{% assign oa_cited_2y_num = oa_cited_2y_val | plus: 0 %}
|
|
209
|
+
{% assign oa_cited_5y_val = entry.x_openalex_cited_by_5y | default: '' | strip %}
|
|
210
|
+
{% assign oa_cited_5y_num = oa_cited_5y_val | plus: 0 %}
|
|
211
|
+
{% assign oa_topic = entry.x_openalex_topic | default: '' | strip %}
|
|
212
|
+
{% assign oa_subfield = entry.x_openalex_subfield | default: '' | strip %}
|
|
213
|
+
{% assign oa_field = entry.x_openalex_field | default: '' | strip %}
|
|
214
|
+
{% assign oa_domain = entry.x_openalex_domain | default: '' | strip %}
|
|
215
|
+
{% assign oa_funders = entry.x_openalex_funders | default: '' | strip %}
|
|
216
|
+
{% assign oa_source_id = entry.x_openalex_source_id | default: '' | strip %}
|
|
217
|
+
{% assign oa_source_display_name = entry.x_openalex_source_display_name | default: '' | strip %}
|
|
218
|
+
{% assign oa_source_works_count = entry.x_openalex_source_works_count | default: '' | strip %}
|
|
219
|
+
{% assign oa_source_cited_by_count = entry.x_openalex_source_cited_by_count | default: '' | strip %}
|
|
220
|
+
{% assign oa_source_is_oa = entry.x_openalex_source_is_oa | default: '' | strip | downcase %}
|
|
221
|
+
{% assign oa_source_h_index = entry.x_openalex_source_h_index | default: '' | strip %}
|
|
222
|
+
{% assign oa_source_i10_index = entry.x_openalex_source_i10_index | default: '' | strip %}
|
|
223
|
+
{% assign oa_source_2yr_mean_citedness = entry.x_openalex_source_2yr_mean_citedness | default: '' | strip %}
|
|
224
|
+
{% assign oa_source_is_core = entry.x_openalex_source_is_core | default: '' | strip | downcase %}
|
|
225
|
+
{% assign oa_source_is_in_doaj = entry.x_openalex_source_is_in_doaj | default: '' | strip | downcase %}
|
|
226
|
+
{% assign sc_q = entry.x_scimago_quartile | default: '' | strip %}
|
|
227
|
+
{% assign sc_sjr = entry.x_scimago_sjr | default: '' | strip %}
|
|
228
|
+
{% assign sc_year = entry.x_scimago_year | default: '' | strip %}
|
|
229
|
+
{% assign sc_categories = entry.x_scimago_categories | default: '' | strip %}
|
|
230
|
+
{% assign sc_h_index = entry.x_scimago_h_index | default: '' | strip %}
|
|
231
|
+
{% assign sc_cites_per_doc_2y = entry.x_scimago_cites_per_doc_2y | default: '' | strip %}
|
|
232
|
+
{% assign sc_total_docs_3y = entry.x_scimago_total_docs_3y | default: '' | strip %}
|
|
233
|
+
{% assign sc_total_cites_3y = entry.x_scimago_total_cites_3y | default: '' | strip %}
|
|
234
|
+
{% assign sc_country = entry.x_scimago_country | default: '' | strip %}
|
|
235
|
+
{% assign sc_type = entry.x_scimago_type | default: '' | strip %}
|
|
236
|
+
{% assign sc_coverage = entry.x_scimago_coverage | default: '' | strip %}
|
|
237
|
+
{% assign sc_has_categories = false %}
|
|
238
|
+
{% assign sc_count = 0 %}
|
|
239
|
+
{% capture sc_all_items %}{% endcapture %}
|
|
240
|
+
{% if sc_categories != '' %}
|
|
241
|
+
{% assign sc_items_raw = sc_categories | replace: '|', ';' | split: ';' %}
|
|
242
|
+
{% for sc_item_raw in sc_items_raw %}
|
|
243
|
+
{% assign sc_item = sc_item_raw | strip %}
|
|
244
|
+
{% if sc_item != '' %}
|
|
245
|
+
{% assign sc_has_categories = true %}
|
|
246
|
+
{% assign sc_count = sc_count | plus: 1 %}
|
|
247
|
+
{% capture sc_all_items %}{{ sc_all_items }}{% if sc_count > 1 %}; {% endif %}{{ sc_item }}{% endcapture %}
|
|
248
|
+
{% endif %}
|
|
249
|
+
{% endfor %}
|
|
250
|
+
{% endif %}
|
|
251
|
+
|
|
252
|
+
{% assign oa_has_funders = false %}
|
|
253
|
+
{% assign oa_funders_count = 0 %}
|
|
254
|
+
{% capture oa_funders_items %}{% endcapture %}
|
|
255
|
+
{% if oa_funders != '' %}
|
|
256
|
+
{% assign oa_funders_raw = oa_funders | replace: '|', ';' | split: ';' %}
|
|
257
|
+
{% for oa_funder_raw in oa_funders_raw %}
|
|
258
|
+
{% assign oa_funder = oa_funder_raw | strip %}
|
|
259
|
+
{% if oa_funder != '' %}
|
|
260
|
+
{% assign oa_has_funders = true %}
|
|
261
|
+
{% assign oa_funders_count = oa_funders_count | plus: 1 %}
|
|
262
|
+
{% capture oa_funders_items %}{{ oa_funders_items }}{% if oa_funders_count > 1 %}; {% endif %}{{ oa_funder }}{% endcapture %}
|
|
263
|
+
{% endif %}
|
|
264
|
+
{% endfor %}
|
|
265
|
+
{% endif %}
|
|
266
|
+
{% assign oa_has_paper_meta = false %}
|
|
267
|
+
{% if oa_topic != '' or oa_subfield != '' or oa_field != '' or oa_domain != '' or oa_has_funders %}
|
|
268
|
+
{% assign oa_has_paper_meta = true %}
|
|
269
|
+
{% endif %}
|
|
270
|
+
|
|
271
|
+
{% assign oa_has_journal_details = false %}
|
|
272
|
+
{% if oa_source_id != '' or oa_source_display_name != '' or oa_source_works_count != '' or oa_source_cited_by_count != '' or oa_source_h_index != '' or oa_source_i10_index != '' or oa_source_2yr_mean_citedness != '' or oa_source_is_oa != '' or oa_source_is_core != '' or oa_source_is_in_doaj != '' %}
|
|
273
|
+
{% assign oa_has_journal_details = true %}
|
|
274
|
+
{% endif %}
|
|
275
|
+
|
|
276
|
+
{% assign sc_has_details = false %}
|
|
277
|
+
{% if sc_q != '' or sc_sjr != '' or sc_year != '' or sc_has_categories or sc_h_index != '' or sc_cites_per_doc_2y != '' or sc_total_docs_3y != '' or sc_total_cites_3y != '' or sc_country != '' or sc_type != '' or sc_coverage != '' %}
|
|
278
|
+
{% assign sc_has_details = true %}
|
|
279
|
+
{% endif %}
|
|
280
|
+
|
|
281
|
+
{% assign entry_note = entry.note | default: '' | strip %}
|
|
282
|
+
{% assign note_prefix = entry_note | slice: 0, 8 %}
|
|
283
|
+
{% if entry_note != '' and note_prefix != 'Metrics:' %}
|
|
284
|
+
<div class="periodical">
|
|
285
|
+
{{ entry_note }}
|
|
286
|
+
</div>
|
|
287
|
+
{% endif %}
|
|
288
|
+
|
|
289
|
+
{% if site.enable_publication_badges %}
|
|
290
|
+
{% assign entry_has_altmetric_badge = false %}
|
|
291
|
+
{% if entry.altmetric and entry.altmetric != 'false' %}
|
|
292
|
+
{% assign entry_has_altmetric_badge = true %}
|
|
293
|
+
{% endif %}
|
|
294
|
+
|
|
295
|
+
{% assign entry_has_dimensions_badge = false %}
|
|
296
|
+
{% if entry.dimensions and entry.dimensions != 'false' %}
|
|
297
|
+
{% assign entry_has_dimensions_badge = true %}
|
|
298
|
+
{% endif %}
|
|
299
|
+
|
|
300
|
+
{% assign entry_has_google_scholar_badge = false %}
|
|
301
|
+
{% if entry.x_gs_id and cite_gs > 0 %}
|
|
302
|
+
{% assign entry_has_google_scholar_badge = true %}
|
|
303
|
+
{% endif %}
|
|
304
|
+
|
|
305
|
+
{% assign entry_has_openalex_badge = false %}
|
|
306
|
+
{% if cite_oa > 0 %}
|
|
307
|
+
{% assign entry_has_openalex_badge = true %}
|
|
308
|
+
{% endif %}
|
|
309
|
+
|
|
310
|
+
{% assign entry_has_fwci_badge = false %}
|
|
311
|
+
{% if fwci_num > 0 %}
|
|
312
|
+
{% assign entry_has_fwci_badge = true %}
|
|
313
|
+
{% endif %}
|
|
314
|
+
|
|
315
|
+
{% assign entry_has_cnp_badge = false %}
|
|
316
|
+
{% if cnp_num > 0 %}
|
|
317
|
+
{% assign entry_has_cnp_badge = true %}
|
|
318
|
+
{% endif %}
|
|
319
|
+
|
|
320
|
+
{% assign entry_has_openalex_cited_2y_badge = false %}
|
|
321
|
+
{% if oa_cited_2y_num > 0 %}
|
|
322
|
+
{% assign entry_has_openalex_cited_2y_badge = true %}
|
|
323
|
+
{% endif %}
|
|
324
|
+
|
|
325
|
+
{% assign entry_has_openalex_cited_5y_badge = false %}
|
|
326
|
+
{% if oa_cited_5y_num > 0 %}
|
|
327
|
+
{% assign entry_has_openalex_cited_5y_badge = true %}
|
|
328
|
+
{% endif %}
|
|
329
|
+
|
|
330
|
+
{% assign entry_has_openalex_funders_badge = false %}
|
|
331
|
+
{% if oa_has_funders %}
|
|
332
|
+
{% assign entry_has_openalex_funders_badge = true %}
|
|
333
|
+
{% endif %}
|
|
334
|
+
|
|
335
|
+
{% assign entry_has_crossref_badge = false %}
|
|
336
|
+
{% if cite_cr > 0 %}
|
|
337
|
+
{% assign entry_has_crossref_badge = true %}
|
|
338
|
+
{% endif %}
|
|
339
|
+
|
|
340
|
+
{% assign entry_has_inspirehep_badge = false %}
|
|
341
|
+
{% if entry.inspirehep_id %}
|
|
342
|
+
{% assign entry_has_inspirehep_badge = true %}
|
|
343
|
+
{% endif %}
|
|
344
|
+
|
|
345
|
+
{% assign entry_has_citation_badges = false %}
|
|
346
|
+
{% if entry_has_google_scholar_badge or entry_has_openalex_badge or entry_has_crossref_badge %}
|
|
347
|
+
{% assign entry_has_citation_badges = true %}
|
|
348
|
+
{% endif %}
|
|
349
|
+
|
|
350
|
+
{% assign entry_has_openalex_metrics_badges = false %}
|
|
351
|
+
{% if entry_has_fwci_badge or entry_has_cnp_badge or entry_has_openalex_cited_2y_badge or entry_has_openalex_cited_5y_badge or entry_has_openalex_funders_badge %}
|
|
352
|
+
{% assign entry_has_openalex_metrics_badges = true %}
|
|
353
|
+
{% endif %}
|
|
354
|
+
|
|
355
|
+
{% assign entry_has_other_badges = false %}
|
|
356
|
+
{% if entry_has_altmetric_badge or entry_has_dimensions_badge or entry_has_inspirehep_badge %}
|
|
357
|
+
{% assign entry_has_other_badges = true %}
|
|
358
|
+
{% endif %}
|
|
359
|
+
|
|
360
|
+
{% if entry_has_citation_badges or entry_has_openalex_metrics_badges or entry_has_other_badges %}
|
|
361
|
+
<div class="badges">
|
|
362
|
+
{% if entry_has_citation_badges %}
|
|
363
|
+
<div class="badges-row badges-row-citations">
|
|
364
|
+
{% if site.enable_publication_badges.google_scholar and entry_has_google_scholar_badge %}
|
|
365
|
+
{% assign scholar_entry_id = entry.x_gs_id | strip %}
|
|
366
|
+
{% assign scholar_cites_id = scholar_entry_id | remove: 'cites:' | strip %}
|
|
367
|
+
<a
|
|
368
|
+
href="https://scholar.google.com/scholar?cites={{ scholar_cites_id }}"
|
|
369
|
+
aria-label="Google Scholar link"
|
|
370
|
+
role="button"
|
|
371
|
+
>
|
|
372
|
+
<span class="metrics-badge metrics-badge-scholar" aria-label="{{ cite_gs }} Google Scholar citations">
|
|
373
|
+
<span class="metrics-badge-label">Google Scholar</span>
|
|
374
|
+
<span class="metrics-badge-value">{{ cite_gs }}</span>
|
|
375
|
+
</span>
|
|
376
|
+
</a>
|
|
377
|
+
{% endif %}
|
|
378
|
+
|
|
379
|
+
{% if entry_has_openalex_badge %}
|
|
380
|
+
<a href="{{ entry.x_openalex_id | default: 'https://openalex.org' }}" aria-label="OpenAlex citations" role="button">
|
|
381
|
+
<span class="metrics-badge" aria-label="{{ cite_oa }} OpenAlex citations">
|
|
382
|
+
<span class="metrics-badge-label">OpenAlex</span>
|
|
383
|
+
<span class="metrics-badge-value">{{ cite_oa }}</span>
|
|
384
|
+
</span>
|
|
385
|
+
</a>
|
|
386
|
+
{% endif %}
|
|
387
|
+
|
|
388
|
+
{% if entry_has_crossref_badge %}
|
|
389
|
+
<a href="https://www.crossref.org" aria-label="Crossref citations" role="button">
|
|
390
|
+
<span class="metrics-badge" aria-label="{{ cite_cr }} Crossref citations">
|
|
391
|
+
<span class="metrics-badge-label">Crossref</span>
|
|
392
|
+
<span class="metrics-badge-value">{{ cite_cr }}</span>
|
|
393
|
+
</span>
|
|
394
|
+
</a>
|
|
395
|
+
{% endif %}
|
|
396
|
+
</div>
|
|
397
|
+
{% endif %}
|
|
398
|
+
|
|
399
|
+
{% if entry_has_openalex_metrics_badges %}
|
|
400
|
+
<div class="badges-row badges-row-openalex-metrics">
|
|
401
|
+
{% if entry_has_fwci_badge %}
|
|
402
|
+
<span class="metrics-badge" aria-label="FWCI {{ fwci_val }}">
|
|
403
|
+
<span class="metrics-badge-label">FWCI</span>
|
|
404
|
+
<span class="metrics-badge-value">{{ fwci_val }}</span>
|
|
405
|
+
</span>
|
|
406
|
+
{% endif %}
|
|
407
|
+
|
|
408
|
+
{% if entry_has_cnp_badge %}
|
|
409
|
+
<span class="metrics-badge" aria-label="CNP {{ cnp_val }}">
|
|
410
|
+
<span class="metrics-badge-label">CNP</span>
|
|
411
|
+
<span class="metrics-badge-value">{{ cnp_val }}</span>
|
|
412
|
+
</span>
|
|
413
|
+
{% endif %}
|
|
414
|
+
|
|
415
|
+
{% if entry_has_openalex_cited_2y_badge %}
|
|
416
|
+
<span class="metrics-badge" aria-label="OpenAlex citations in 2 years {{ oa_cited_2y_val }}">
|
|
417
|
+
<span class="metrics-badge-label">OA cites 2y</span>
|
|
418
|
+
<span class="metrics-badge-value">{{ oa_cited_2y_val }}</span>
|
|
419
|
+
</span>
|
|
420
|
+
{% endif %}
|
|
421
|
+
|
|
422
|
+
{% if entry_has_openalex_cited_5y_badge %}
|
|
423
|
+
<span class="metrics-badge" aria-label="OpenAlex citations in 5 years {{ oa_cited_5y_val }}">
|
|
424
|
+
<span class="metrics-badge-label">OA cites 5y</span>
|
|
425
|
+
<span class="metrics-badge-value">{{ oa_cited_5y_val }}</span>
|
|
426
|
+
</span>
|
|
427
|
+
{% endif %}
|
|
428
|
+
|
|
429
|
+
{% if entry_has_openalex_funders_badge %}
|
|
430
|
+
<span class="metrics-badge" aria-label="OpenAlex funders {{ oa_funders_count }}">
|
|
431
|
+
<span class="metrics-badge-label">Funders</span>
|
|
432
|
+
<span class="metrics-badge-value">{{ oa_funders_count }}</span>
|
|
433
|
+
</span>
|
|
434
|
+
{% endif %}
|
|
435
|
+
</div>
|
|
436
|
+
{% endif %}
|
|
437
|
+
|
|
438
|
+
{% if entry_has_other_badges %}
|
|
439
|
+
<div class="badges-row badges-row-other">
|
|
440
|
+
{% if site.enable_publication_badges.altmetric and entry_has_altmetric_badge %}
|
|
441
|
+
<span
|
|
442
|
+
class="altmetric-embed"
|
|
443
|
+
data-badge-type="2"
|
|
444
|
+
data-badge-popover="right"
|
|
445
|
+
{% if entry.altmetric != blank and entry.altmetric != 'true' %}
|
|
446
|
+
data-altmetric-id="{{ entry.altmetric }}"
|
|
447
|
+
{% elsif entry.arxiv %}
|
|
448
|
+
data-arxiv-id="{{ entry.arxiv }}"
|
|
449
|
+
{% elsif entry.eprint %}
|
|
450
|
+
data-arxiv-id="{{ entry.eprint }}"
|
|
451
|
+
{% elsif entry.doi %}
|
|
452
|
+
data-doi="{{ entry.doi }}"
|
|
453
|
+
{% elsif entry.pmid %}
|
|
454
|
+
data-pmid="{{ entry.pmid }}"
|
|
455
|
+
{% elsif entry.isbn %}
|
|
456
|
+
data-isbn="{{ entry.isbn }}"
|
|
457
|
+
{% endif %}
|
|
458
|
+
></span>
|
|
459
|
+
{% endif %}
|
|
460
|
+
|
|
461
|
+
{% if site.enable_publication_badges.dimensions and entry_has_dimensions_badge %}
|
|
462
|
+
<span
|
|
463
|
+
class="__dimensions_badge_embed__"
|
|
464
|
+
{% if entry.dimensions != blank and entry.dimensions != 'true' %}
|
|
465
|
+
data-id="{{ entry.dimensions }}"
|
|
466
|
+
{% elsif entry.doi %}
|
|
467
|
+
data-doi="{{ entry.doi }}"
|
|
468
|
+
{% else %}
|
|
469
|
+
data-pmid="{{ entry.pmid }}"
|
|
470
|
+
{% endif %}
|
|
471
|
+
data-style="small_rectangle"
|
|
472
|
+
data-legend="hover-right"
|
|
473
|
+
style="margin-bottom: 3px;"
|
|
474
|
+
></span>
|
|
475
|
+
{% endif %}
|
|
476
|
+
|
|
477
|
+
{% if site.enable_publication_badges.inspirehep and entry_has_inspirehep_badge %}
|
|
478
|
+
<a
|
|
479
|
+
href="https://inspirehep.net/literature/{{ entry.inspirehep_id }}"
|
|
480
|
+
aria-label="Inspirehep link"
|
|
481
|
+
role="button"
|
|
482
|
+
>
|
|
483
|
+
<img
|
|
484
|
+
src="https://img.shields.io/badge/inspire-{% inspirehep_citations entry.inspirehep_id %}-001628?logo=inspire&logoColor=001628&labelColor=beige"
|
|
485
|
+
alt="{% inspirehep_citations entry.inspirehep_id %} InspireHEP citations"
|
|
486
|
+
>
|
|
487
|
+
</a>
|
|
488
|
+
{% endif %}
|
|
489
|
+
</div>
|
|
490
|
+
{% endif %}
|
|
491
|
+
</div>
|
|
492
|
+
{% endif %}
|
|
493
|
+
{% endif %}
|
|
494
|
+
|
|
495
|
+
<!-- Links/Buttons -->
|
|
496
|
+
<div class="links">
|
|
497
|
+
{% if entry.doi %}
|
|
498
|
+
<a href="https://doi.org/{{ entry.doi }}" class="btn btn-sm z-depth-0" role="button">DOI</a>
|
|
499
|
+
{% endif %}
|
|
500
|
+
{% if entry.website %}
|
|
501
|
+
<a href="{{ entry.website }}" class="btn btn-sm z-depth-0" role="button">LINK</a>
|
|
502
|
+
{% endif %}
|
|
503
|
+
|
|
504
|
+
{% if entry.abstract %}
|
|
505
|
+
<a class="abstract btn btn-sm z-depth-0" role="button">{{ bib_abstract_text | strip }}</a>
|
|
506
|
+
{% endif %}
|
|
507
|
+
{% if entry.bibtex_show %}
|
|
508
|
+
<a class="bibtex btn btn-sm z-depth-0" role="button">{{ bib_bib_text | strip }}</a>
|
|
509
|
+
{% endif %}
|
|
510
|
+
{% if oa_has_journal_details %}
|
|
511
|
+
<a class="openalex btn btn-sm z-depth-0" role="button">OPENALEX</a>
|
|
512
|
+
{% endif %}
|
|
513
|
+
{% if sc_has_details %}
|
|
514
|
+
<a class="scimago btn btn-sm z-depth-0" role="button">SCIMAGO</a>
|
|
515
|
+
{% endif %}
|
|
516
|
+
{% if entry.award %}
|
|
517
|
+
<a class="award btn btn-sm z-depth-0" role="button">
|
|
518
|
+
{%- if entry.award_name %}{{ entry.award_name }}{% else %}{{ bib_awarded_text | strip }}{% endif -%}
|
|
519
|
+
</a>
|
|
520
|
+
{% endif %}
|
|
521
|
+
|
|
522
|
+
{% if entry.arxiv %}
|
|
523
|
+
<a href="http://arxiv.org/abs/{{ entry.arxiv }}" class="btn btn-sm z-depth-0" role="button">arXiv</a>
|
|
524
|
+
{% endif %}
|
|
525
|
+
{% if entry.hal %}
|
|
526
|
+
<a href="https://hal.science/{{ entry.hal }}" class="btn btn-sm z-depth-0" role="button">HAL</a>
|
|
527
|
+
{% endif %}
|
|
528
|
+
{% if entry.html %}
|
|
529
|
+
{% if entry.html contains '://' %}
|
|
530
|
+
<a href="{{ entry.html }}" class="btn btn-sm z-depth-0" role="button">HTML</a>
|
|
531
|
+
{% else %}
|
|
532
|
+
<a href="{{ entry.html | prepend: '/assets/html/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">HTML</a>
|
|
533
|
+
{% endif %}
|
|
534
|
+
{% endif %}
|
|
535
|
+
{% if entry.pdf %}
|
|
536
|
+
{% if entry.pdf contains '://' %}
|
|
537
|
+
<a href="{{ entry.pdf }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
|
|
538
|
+
{% else %}
|
|
539
|
+
<a href="{{ entry.pdf | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
|
|
540
|
+
{% endif %}
|
|
541
|
+
{% endif %}
|
|
542
|
+
{% if entry.supp %}
|
|
543
|
+
{% if entry.supp contains '://' %}
|
|
544
|
+
<a href="{{ entry.supp }}" class="btn btn-sm z-depth-0" role="button">{{ bib_supp_text | strip }}</a>
|
|
545
|
+
{% else %}
|
|
546
|
+
<a href="{{ entry.supp | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">{{ bib_supp_text | strip }}</a>
|
|
547
|
+
{% endif %}
|
|
548
|
+
{% endif %}
|
|
549
|
+
{% if entry.video and site.enable_video_embedding %}
|
|
550
|
+
<a class="abstract btn btn-sm z-depth-0" role="button">{{ bib_video_text | strip }}</a>
|
|
551
|
+
{% elsif entry.video %}
|
|
552
|
+
<a href="{{ entry.video }}" class="btn btn-sm z-depth-0" role="button">{{ bib_video_text | strip }}</a>
|
|
553
|
+
{% endif %}
|
|
554
|
+
{% if entry.blog %}
|
|
555
|
+
<a href="{{ entry.blog }}" class="btn btn-sm z-depth-0" role="button">{{ bib_blog_text | strip }}</a>
|
|
556
|
+
{% endif %}
|
|
557
|
+
{% if entry.code %}
|
|
558
|
+
<a href="{{ entry.code }}" class="btn btn-sm z-depth-0" role="button">{{ bib_code_text | strip }}</a>
|
|
559
|
+
{% endif %}
|
|
560
|
+
{% if entry.poster %}
|
|
561
|
+
{% if entry.poster contains '://' %}
|
|
562
|
+
<a href="{{ entry.poster }}" class="btn btn-sm z-depth-0" role="button">{{ bib_poster_text | strip }}</a>
|
|
563
|
+
{% else %}
|
|
564
|
+
<a href="{{ entry.poster | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">{{ bib_poster_text | strip }}</a>
|
|
565
|
+
{% endif %}
|
|
566
|
+
{% endif %}
|
|
567
|
+
{% if entry.slides %}
|
|
568
|
+
{% if entry.slides contains '://' %}
|
|
569
|
+
<a href="{{ entry.slides }}" class="btn btn-sm z-depth-0" role="button">{{ bib_slides_text | strip }}</a>
|
|
570
|
+
{% else %}
|
|
571
|
+
<a href="{{ entry.slides | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">{{ bib_slides_text | strip }}</a>
|
|
572
|
+
{% endif %}
|
|
573
|
+
{% endif %}
|
|
574
|
+
</div>
|
|
575
|
+
|
|
576
|
+
{% if oa_has_paper_meta %}
|
|
577
|
+
<div class="paper-metrics-meta">
|
|
578
|
+
{% if oa_topic != '' or oa_subfield != '' or oa_field != '' or oa_domain != '' %}
|
|
579
|
+
<p>
|
|
580
|
+
{% if oa_topic != '' %}<strong>Topic:</strong> {{ oa_topic }}{% endif %}
|
|
581
|
+
{% if oa_subfield != '' %} · <strong>Subfield:</strong> {{ oa_subfield }}{% endif %}
|
|
582
|
+
{% if oa_field != '' %} · <strong>Field:</strong> {{ oa_field }}{% endif %}
|
|
583
|
+
{% if oa_domain != '' %} · <strong>Domain:</strong> {{ oa_domain }}{% endif %}
|
|
584
|
+
</p>
|
|
585
|
+
{% endif %}
|
|
586
|
+
{% if oa_has_funders %}
|
|
587
|
+
<p><strong>Funders:</strong> {{ oa_funders_items }}</p>
|
|
588
|
+
{% endif %}
|
|
589
|
+
</div>
|
|
590
|
+
{% endif %}
|
|
591
|
+
|
|
592
|
+
{% if oa_has_journal_details %}
|
|
593
|
+
<div class="openalex hidden">
|
|
594
|
+
{% if oa_source_display_name != '' %}
|
|
595
|
+
<p>
|
|
596
|
+
<strong>Source:</strong>
|
|
597
|
+
{% if oa_source_id != '' %}
|
|
598
|
+
<a href="{{ oa_source_id }}">{{ oa_source_display_name }}</a>
|
|
599
|
+
{% else %}
|
|
600
|
+
{{ oa_source_display_name }}
|
|
601
|
+
{% endif %}
|
|
602
|
+
</p>
|
|
603
|
+
{% endif %}
|
|
604
|
+
{% if oa_source_works_count != '' or oa_source_cited_by_count != '' %}
|
|
605
|
+
<p>
|
|
606
|
+
{% if oa_source_works_count != '' %}<strong>Works:</strong> {{ oa_source_works_count }}{% endif %}
|
|
607
|
+
{% if oa_source_cited_by_count != '' %} · <strong>Cited by:</strong> {{ oa_source_cited_by_count }}{% endif %}
|
|
608
|
+
</p>
|
|
609
|
+
{% endif %}
|
|
610
|
+
{% if oa_source_h_index != '' or oa_source_i10_index != '' or oa_source_2yr_mean_citedness != '' or oa_source_is_oa != '' or oa_source_is_core != '' or oa_source_is_in_doaj != '' %}
|
|
611
|
+
<p>
|
|
612
|
+
{% if oa_source_h_index != '' %}<strong>Source h-index:</strong> {{ oa_source_h_index }}{% endif %}
|
|
613
|
+
{% if oa_source_i10_index != '' %} · <strong>Source i10-index:</strong> {{ oa_source_i10_index }}{% endif %}
|
|
614
|
+
{% if oa_source_2yr_mean_citedness != '' %} · <strong>Source 2yr mean citedness:</strong> {{ oa_source_2yr_mean_citedness }}{% endif %}
|
|
615
|
+
{% if oa_source_is_oa != '' %} · <strong>OA:</strong> {% if oa_source_is_oa == 'true' %}yes{% else %}no{% endif %}{% endif %}
|
|
616
|
+
{% if oa_source_is_core != '' %} · <strong>Core:</strong> {% if oa_source_is_core == 'true' %}yes{% else %}no{% endif %}{% endif %}
|
|
617
|
+
{% if oa_source_is_in_doaj != '' %} · <strong>DOAJ:</strong> {% if oa_source_is_in_doaj == 'true' %}yes{% else %}no{% endif %}{% endif %}
|
|
618
|
+
</p>
|
|
619
|
+
{% endif %}
|
|
620
|
+
</div>
|
|
621
|
+
{% endif %}
|
|
622
|
+
|
|
623
|
+
{% if sc_has_details %}
|
|
624
|
+
<div class="scimago hidden">
|
|
625
|
+
<p>
|
|
626
|
+
{% if sc_q != '' %}<strong>Best quartile:</strong> {{ sc_q }}{% endif %}
|
|
627
|
+
{% if sc_sjr != '' %} · <strong>SJR:</strong> {{ sc_sjr }}{% endif %}
|
|
628
|
+
{% if sc_h_index != '' %} · <strong>H-index:</strong> {{ sc_h_index }}{% endif %}
|
|
629
|
+
{% if sc_cites_per_doc_2y != '' %} · <strong>Cites/doc (2y):</strong> {{ sc_cites_per_doc_2y }}{% endif %}
|
|
630
|
+
{% if sc_total_docs_3y != '' %} · <strong>Total docs (3y):</strong> {{ sc_total_docs_3y }}{% endif %}
|
|
631
|
+
{% if sc_total_cites_3y != '' %} · <strong>Total cites (3y):</strong> {{ sc_total_cites_3y }}{% endif %}
|
|
632
|
+
{% if sc_year != '' %} · <strong>Year:</strong> {{ sc_year }}{% endif %}
|
|
633
|
+
</p>
|
|
634
|
+
{% if sc_country != '' or sc_type != '' or sc_coverage != '' %}
|
|
635
|
+
<p>
|
|
636
|
+
{% if sc_country != '' %}<strong>Country:</strong> {{ sc_country }}{% endif %}
|
|
637
|
+
{% if sc_type != '' %} · <strong>Type:</strong> {{ sc_type }}{% endif %}
|
|
638
|
+
{% if sc_coverage != '' %} · <strong>Coverage:</strong> {{ sc_coverage }}{% endif %}
|
|
639
|
+
</p>
|
|
640
|
+
{% endif %}
|
|
641
|
+
{% if sc_all_items != '' %}
|
|
642
|
+
<p>{{ sc_all_items }}</p>
|
|
643
|
+
{% endif %}
|
|
644
|
+
</div>
|
|
645
|
+
{% endif %}
|
|
646
|
+
|
|
647
|
+
{% if entry.award %}
|
|
648
|
+
<!-- Hidden Award block -->
|
|
649
|
+
<div class="award hidden d-print-inline">
|
|
650
|
+
<p>{{ entry.award | markdownify }}</p>
|
|
651
|
+
</div>
|
|
652
|
+
{% endif %}
|
|
653
|
+
|
|
654
|
+
{% if entry.abstract %}
|
|
655
|
+
<!-- Hidden abstract block -->
|
|
656
|
+
<div class="abstract hidden">
|
|
657
|
+
<p>{{ entry.abstract }}</p>
|
|
658
|
+
</div>
|
|
659
|
+
{% endif %}
|
|
660
|
+
|
|
661
|
+
{% if entry.bibtex_show %}
|
|
662
|
+
<!-- Hidden bibtex block -->
|
|
663
|
+
<div class="bibtex hidden">
|
|
664
|
+
{% highlight bibtex %}
|
|
665
|
+
{{- entry.bibtex | hideCustomBibtex -}}
|
|
666
|
+
{% endhighlight %}
|
|
667
|
+
</div>
|
|
668
|
+
{% endif %}
|
|
669
|
+
|
|
670
|
+
{% if entry.video and site.enable_video_embedding %}
|
|
671
|
+
<!-- Hidden video block -->
|
|
672
|
+
<div class="abstract hidden">
|
|
673
|
+
<div style="text-align: center;">{% include video.liquid path=entry.video class="img-fluid rounded z-depth-1" controls=true %}</div>
|
|
674
|
+
</div>
|
|
675
|
+
{% endif %}
|
|
676
|
+
</div>
|
|
677
|
+
</div>
|