diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 000000000..ea0be6e90 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,51 @@ +name: Build GitHub pages + +on: + push: + branches: + - develop + +jobs: + + build_html: + runs-on: ubuntu-latest + + env: + COMMIT_AUTHOR: OPTIMADE developers + COMMIT_AUTHOR_EMAIL: dev@optimade.org + + steps: + + - uses: actions/checkout@v2 + + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: pip install docutils + + - name: Run rst2html + run: make html + + - name: Configure git + run: | + git config --global user.name "${COMMIT_AUTHOR}" + git config --global user.email "${COMMIT_AUTHOR_EMAIL}" + + - name: Commit to gh-pages + run: | + git branch -D gh-pages || true + git checkout -b gh-pages + git add optimade.html + git commit -m "Deploy to GitHub Pages: ${SHA}" + if git diff --cached --quiet; then + exit 0 + fi + + - name: Push changes + uses: ad-m/github-push-action@v0.6.0 + with: + branch: gh-pages + force: true + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/tests/makefiles/Makelocal-output b/tests/makefiles/Makelocal-output index 45c0b69b9..a6ae35cc3 100644 --- a/tests/makefiles/Makelocal-output +++ b/tests/makefiles/Makelocal-output @@ -17,6 +17,5 @@ HTML_FILES = ${RST_FILES:%.rst=%.html} html: ${HTML_FILES} -%.html: %.rst - rst2html --syntax-highlight=none $< $@ - +%.html: %.rst ./tests/makefiles/style.css + $(shell which rst2html5.py || which rst2html5 || echo "rst2html5.py") -d --syntax-highlight=none --stylesheet=$(word 2, $^) $< $@ diff --git a/tests/makefiles/style.css b/tests/makefiles/style.css new file mode 100644 index 000000000..ba3d5c071 --- /dev/null +++ b/tests/makefiles/style.css @@ -0,0 +1,549 @@ +@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap'); + +:root { + --bg-color: white; + --fg-color: #000000; + --code-bg-color: #F0F0F0; + --code-fg-color: #282828; + --primary: #007bff; + --secondary: #50fa7b; + --tertiary: #ff414d; + --quaternary: #7a2dd0; + --external-refs: var(--secondary); + --inline-refs: var(--primary); + --monospace-font-family: "JetBrains Mono", monospace; + --sans-serif-font-family: Roboto, Arial, Helvetica, 'Liberation Sans', sans-serif; +} + +@media (prefers-color-scheme: dark) { + :root { + --bg-color: #161625; + --fg-color: #dcdcdc; + --code-fg-color: #f8f8f8; + --code-bg-color: #3a3d4d; + --primary: #007bff; + --secondary: #50fa7b; + --tertiary: #ff414d; + --quaternary: #7a2dd0; + --external-refs: var(--secondary); + --inline-refs: var(--tertiary); + --monospace-font-family: "JetBrains Mono", monospace; + --sans-serif-font-family: Roboto, Arial, Helvetica, 'Liberation Sans', sans-serif; + + } +} + +body { + font-family: var(--sans-serif-font-family); + font-size: 16px; + color: var(--fg-color); +} + +div.document { + margin: 0 auto; + margin-left: auto; + margin-right: auto; + max-width: 900px; + background-color: var(--bg-color); +} + +.reference.internal { + text-decoration: dotted underline; + text-decoration-thickness: 2px; + text-decoration-color: var(--inline-refs); + text-decoration-skip-ink: none; + text-underline-offset: 2px; + color: var(--fg-color); +} + +.auto-toc .reference.internal { + text-decoration: none; +} + +.auto-toc .reference.internal .sectnum { + text-decoration: dotted underline; + text-decoration-thickness: 2px; + text-decoration-color: var(--inline-refs); +} + + +.reference.external { + text-decoration: dotted underline; + text-decoration-thickness: 2px; + text-underline-offset: 2px; + text-decoration-color: var(--external-refs); + color: var(--fg-color); +} + + + +/* Minimal style sheet for the HTML output of Docutils. */ +/* */ +/* :Author: Günter Milde, based on html4css1.css by David Goodger */ +/* :Id: $Id: minimal.css 9079 2022-06-19 14:00:56Z milde $ */ +/* :Copyright: © 2015, 2021 Günter Milde. */ +/* :License: Released under the terms of the `2-Clause BSD license`_, */ +/* in short: */ +/* */ +/* Copying and distribution of this file, with or without modification, */ +/* are permitted in any medium without royalty provided the copyright */ +/* notice and this notice are preserved. */ +/* */ +/* This file is offered as-is, without any warranty. */ +/* */ +/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */ + +/* This CSS3 stylesheet defines rules for Docutils elements without */ +/* HTML equivalent. It is required to make the document semantics visible. */ +/* */ +/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link */ + +/* titles */ +p.topic-title, +p.admonition-title, +p.system-message-title { + font-weight: bold; +} +p.sidebar-title, +p.rubric { + font-weight: bold; + font-size: larger; +} +p.rubric { + color: maroon; +} +p.subtitle, +p.section-subtitle, +p.sidebar-subtitle { + font-weight: bold; + margin-top: -0.5em; +} +h1 + p.subtitle { + font-size: 1.6em; +} +a.toc-backref { + color: inherit; + text-decoration: none; +} + +/* Warnings, Errors */ +.system-messages h2, +.system-message-title, +span.problematic { + color: red; +} + +/* Inline Literals */ +.docutils.literal { + font-family: var(--monospace-font-family); + white-space: pre-wrap; + color: var(--code-fg-color); + background-color: var(--code-bg-color); + border-radius: 0.2em; + overflow-wrap: anywhere; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; +} +/* do not wrap at hyphens and similar: */ +/*.literal > span.pre { white-space: nowrap; }*/ + +/* Lists */ + +/* compact and simple lists: no margin between items */ +.simple li, .simple ul, .simple ol, +.compact li, .compact ul, .compact ol, +.simple > li p, dl.simple > dd, +.compact > li p, dl.compact > dd { + margin-top: 0; + margin-bottom: 0; +} +/* Nested Paragraphs */ +p:first-child { margin-top: 0; } +p:last-child { margin-bottom: 0; } +details > p:last-child { margin-bottom: 1em; } + +/* Table of Contents */ +.contents ul.auto-toc { /* section numbers present */ + list-style-type: none; +} + +/* Enumerated Lists */ +ol.arabic { list-style: decimal } +ol.loweralpha { list-style: lower-alpha } +ol.upperalpha { list-style: upper-alpha } +ol.lowerroman { list-style: lower-roman } +ol.upperroman { list-style: upper-roman } + +/* Definition Lists and Derivatives */ +dt .classifier { font-style: italic } +dt .classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} +/* Field Lists and similar */ +/* bold field name, content starts on the same line */ +dl.field-list, +dl.option-list, +dl.docinfo { + display: flow-root; +} +dl.field-list > dt, +dl.option-list > dt, +dl.docinfo > dt { + font-weight: bold; + clear: left; + float: left; + margin: 0; + padding: 0; + padding-right: 0.2em; +} +/* Offset for field content (corresponds to the --field-name-limit option) */ +dl.field-list > dd, +dl.option-list > dd, +dl.docinfo > dd { + margin-left: 9em; /* ca. 14 chars in the test examples, fit all Docinfo fields */ +} +/* start nested lists on new line */ +dd > dl:first-child, +dd > ul:first-child, +dd > ol:first-child { + clear: left; +} +/* start field-body on a new line after long field names */ +dl.field-list > dd > *:first-child, +dl.option-list > dd > *:first-child +{ + display: inline-block; + width: 100%; + margin: 0; +} + +/* Bibliographic Fields (docinfo) */ +dl.docinfo pre.address { + font: inherit; + margin: 0.5em 0; +} +dl.docinfo > dd.authors > p { margin: 0; } + +/* Option Lists */ +dl.option-list > dt { font-weight: normal; } +span.option { white-space: nowrap; } + +/* Footnotes and Citations */ + +.footnote, .citation { margin: 1em 0; } /* default paragraph skip (Firefox) */ +/* hanging indent */ +.citation { padding-left: 2em; } +.footnote { padding-left: 1.7em; } +.footnote.superscript { padding-left: 1.0em; } +.citation > .label { margin-left: -2em; } +.footnote > .label { margin-left: -1.7em; } +.footnote.superscript > .label { margin-left: -1.0em; } + +.footnote > .label + *, +.citation > .label + * { + display: inline-block; + margin-top: 0; + vertical-align: top; +} +.footnote > .backrefs + *, +.citation > .backrefs + * { + margin-top: 0; +} +.footnote > .label + p, .footnote > .backrefs + p, +.citation > .label + p, .citation > .backrefs + p { + display: inline; + vertical-align: inherit; +} + +.backrefs { user-select: none; } +.backrefs > a { font-style: italic; } + +/* superscript footnotes */ +a[role="doc-noteref"].superscript, +.footnote.superscript > .label, +.footnote.superscript > .backrefs { + vertical-align: super; + font-size: smaller; + line-height: 1; +} +a[role="doc-noteref"].superscript > .fn-bracket, +.footnote.superscript > .label > .fn-bracket { + /* hide brackets in display but leave for copy/paste */ + display: inline-block; + width: 0; + overflow: hidden; +} +[role="doc-noteref"].superscript + [role="doc-noteref"].superscript { + padding-left: 0.15em; /* separate consecutive footnote references */ + /* TODO: unfortunately, "+" also selects with text between the references. */ +} + +/* Alignment */ +.align-left { + text-align: left; + margin-right: auto; +} +.align-center { + text-align: center; + margin-left: auto; + margin-right: auto; +} +.align-right { + text-align: right; + margin-left: auto; +} +.align-top { vertical-align: top; } +.align-middle { vertical-align: middle; } +.align-bottom { vertical-align: bottom; } + +/* reset inner alignment in figures and tables */ +figure.align-left, figure.align-right, +table.align-left, table.align-center, table.align-right { + text-align: inherit; +} + +/* Text Blocks */ +.topic { margin: 1em 2em; } +.sidebar, +.admonition, +.system-message { + margin: 1em 2em; + border: thin solid; + padding: 0.5em 1em; +} +div.line-block { display: block; } +div.line-block div.line-block, pre { margin-left: 2em; } + +/* Tables */ +table { + border-collapse: collapse; +} +td, th { + border: thin solid silver; + padding: 0 1ex; +} +.borderless td, .borderless th { + border: 0; + padding: 0; + padding-right: 0.5em /* separate table cells */ +} + +table > caption { + text-align: left; + margin-top: 0.2em; + margin-bottom: 0.2em; +} +table.captionbelow { + caption-side: bottom; +} + +/* Document Header and Footer */ +header { border-bottom: 1px solid black; } +footer { border-top: 1px solid black; } + +/* Images are block-level by default in Docutils */ +/* New HTML5 block elements: set display for older browsers */ +img, header, footer, main, aside, nav, section, figure, video, details { + display: block; +} +/* inline images */ +p img, p video, figure img, figure video { + display: inline; +} + + +/* CSS31_ style sheet for the output of Docutils HTML writers. */ +/* Rules for easy reading and pre-defined style variants. */ +/* */ +/* :Author: Günter Milde, based on html4css1.css by David Goodger */ +/* :Id: $Id: plain.css 9338 2023-04-08 21:08:47Z milde $ */ +/* :Copyright: © 2015 Günter Milde. */ +/* :License: Released under the terms of the `2-Clause BSD license`_, */ +/* in short: */ +/* */ +/* Copying and distribution of this file, with or without modification, */ +/* are permitted in any medium without royalty provided the copyright */ +/* notice and this notice are preserved. */ +/* */ +/* This file is offered as-is, without any warranty. */ +/* */ +/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */ +/* .. _CSS3: https://www.w3.org/Style/CSS/ */ + + +/* Document Structure */ +/* ****************** */ + +/* "page layout" */ +body { + margin: 0; + max-width: 900px; + background-color: var(--bg-color); + --field-indent: 9em; /* default indent of fields in field lists */ +} +main, footer, header { + line-height:1.6; + /* avoid long lines --> better reading */ + /* optimum is 45…75 characters/line */ + /* OTOH: lines should not be too short because of missing hyphenation, */ + max-width: 60rem; + padding: 1px 2%; /* 1px on top avoids grey bar above title (mozilla) */ + margin: auto; +} +main { + counter-reset: table figure; + background-color: var(--bg-color); +} +footer, header { + font-size: smaller; + padding: 0.5em 2%; + border: none; +} + +/* Table of Contents */ +ul.auto-toc > li > p { + padding-left: 1em; + text-indent: -1em; +} +nav.contents ul { + padding-left: 1em; +} +main > nav.contents ul ul ul ul:not(.auto-toc) { + list-style-type: '\2B29\ '; +} +main > nav.contents ul ul ul ul ul:not(.auto-toc) { + list-style-type: '\2B1D\ '; +} + +/* Transitions */ +hr.docutils { + width: 80%; + margin-top: 1em; + margin-bottom: 1em; + clear: both; +} + +/* Paragraphs */ + +/* vertical space (parskip) */ +p, ol, ul, dl, li, +div.line-block, +.footnote, .citation, +div > math, +table { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +h1, h2, h3, h4, h5, h6, +dd, details > p:last-child { + margin-bottom: 0.5em; +} + +/* Lists */ +/* ===== */ + +/* Definition Lists */ +/* Indent lists nested in definition lists */ +dd > ul:only-child, dd > ol:only-child { padding-left: 1em; } + +/* Description Lists */ +/* styled like in most dictionaries, encyclopedias etc. */ +dl.description { + display: flow-root; +} +dl.description > dt { + font-weight: bold; + clear: left; + float: left; + margin: 0; + padding: 0; + padding-right: 0.3em; +} +dl.description > dd:after { + display: table; + content: ""; + clear: left; /* clearfix for empty descriptions */ +} + +/* Field Lists */ + +dl.field-list > dd, +dl.docinfo > dd { + margin-left: var(--field-indent); /* adapted in media queries or HTML */ +} + +/* example for custom field-name width */ +dl.field-list.narrow > dd { + --field-indent: 5em; +} +/* run-in: start field-body on same line after long field names */ +dl.field-list.run-in > dd p { + display: block; +} + +/* Bibliographic Fields */ + +/* generally, bibliographic fields use dl.docinfo */ +/* but dedication and abstract are placed into divs */ +div.abstract p.topic-title { + text-align: center; +} +div.dedication { + margin: 2em 5em; + text-align: center; + font-style: italic; +} +div.dedication p.topic-title { + font-style: normal; +} + +/* disclosures */ +details { padding-left: 1em; } +summary { margin-left: -1em; } + +/* Text Blocks */ +/* =========== */ + +/* Literal Blocks */ +pre.literal-block, pre.doctest-block, +pre.math, pre.code { + font-family: var(--monospace-font-family); + background-color: var(--code-bg-color); + border: thin solid var(--fg-color); + color: var(--code-fg-color); + border-radius: 0.2em; + padding-left: 0.5em; +overflow: auto; +} + +/* Block Quotes and Topics */ +blockquote { + background-color: var(--code-bg-color); + color: var(--fg-color); + border: thin solid var(--fg-color); + border-radius: 0.2em; + padding: 0.5em 1em; +} +blockquote p.attribution, +.topic p.attribution { + text-align: right; + margin-left: 20%; +} + +/* Code */ +pre.code { padding: 0.7ex } +pre.code, code { + background-color: var(--code-bg-color); + font-family: var(--monospace-font-family); + color: var(--code-fg-color); +} + +sup, sub { line-height: 0.8; } /* do not add leading for lines with sup/sub */ +/* Hyperlink References */ +a { text-decoration: none; }