first commit
This commit is contained in:
commit
417e54da96
5696 changed files with 900003 additions and 0 deletions
|
@ -0,0 +1,393 @@
|
|||
# $Id: __init__.py 9539 2024-02-17 10:36:51Z milde $
|
||||
# :Author: Günter Milde <milde@users.sf.net>
|
||||
# Based on the html4css1 writer by David Goodger.
|
||||
# :Maintainer: docutils-develop@lists.sourceforge.net
|
||||
# :Copyright: © 2005, 2009, 2015 Günter Milde,
|
||||
# portions from html4css1 © David Goodger.
|
||||
# :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: https://opensource.org/licenses/BSD-2-Clause
|
||||
|
||||
# Use "best practice" as recommended by the W3C:
|
||||
# http://www.w3.org/2009/cheatsheet/
|
||||
|
||||
"""
|
||||
Plain HyperText Markup Language document tree Writer.
|
||||
|
||||
The output conforms to the `HTML 5` specification.
|
||||
|
||||
The cascading style sheet "minimal.css" is required for proper viewing,
|
||||
the style sheet "plain.css" improves reading experience.
|
||||
"""
|
||||
__docformat__ = 'reStructuredText'
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from docutils import frontend, nodes
|
||||
from docutils.writers import _html_base
|
||||
|
||||
|
||||
class Writer(_html_base.Writer):
|
||||
|
||||
supported = ('html5', 'xhtml', 'html')
|
||||
"""Formats this writer supports."""
|
||||
|
||||
default_stylesheets = ['minimal.css', 'plain.css']
|
||||
default_stylesheet_dirs = ['.', str(Path(__file__).parent)]
|
||||
default_template = Path(__file__).parent / 'template.txt'
|
||||
|
||||
# use a copy of the parent spec with some modifications
|
||||
settings_spec = frontend.filter_settings_spec(
|
||||
_html_base.Writer.settings_spec,
|
||||
template=(
|
||||
f'Template file. (UTF-8 encoded, default: "{default_template}")',
|
||||
['--template'],
|
||||
{'default': default_template, 'metavar': '<file>'}),
|
||||
stylesheet_path=(
|
||||
'Comma separated list of stylesheet paths. '
|
||||
'Relative paths are expanded if a matching file is found in '
|
||||
'the --stylesheet-dirs. With --link-stylesheet, '
|
||||
'the path is rewritten relative to the output HTML file. '
|
||||
'(default: "%s")' % ','.join(default_stylesheets),
|
||||
['--stylesheet-path'],
|
||||
{'metavar': '<file[,file,...]>', 'overrides': 'stylesheet',
|
||||
'validator': frontend.validate_comma_separated_list,
|
||||
'default': default_stylesheets}),
|
||||
stylesheet_dirs=(
|
||||
'Comma-separated list of directories where stylesheets are found. '
|
||||
'Used by --stylesheet-path when expanding relative path '
|
||||
'arguments. (default: "%s")' % ','.join(default_stylesheet_dirs),
|
||||
['--stylesheet-dirs'],
|
||||
{'metavar': '<dir[,dir,...]>',
|
||||
'validator': frontend.validate_comma_separated_list,
|
||||
'default': default_stylesheet_dirs}),
|
||||
initial_header_level=(
|
||||
'Specify the initial header level. Does not affect document '
|
||||
'title & subtitle (see --no-doc-title). (default: 2 for "<h2>")',
|
||||
['--initial-header-level'],
|
||||
{'choices': '1 2 3 4 5 6'.split(), 'default': '2',
|
||||
'metavar': '<level>'}),
|
||||
no_xml_declaration=(
|
||||
'Omit the XML declaration (default).',
|
||||
['--no-xml-declaration'],
|
||||
{'dest': 'xml_declaration', 'action': 'store_false'}),
|
||||
)
|
||||
settings_spec = settings_spec + (
|
||||
'HTML5 Writer Options',
|
||||
'',
|
||||
((frontend.SUPPRESS_HELP, # Obsoleted by "--image-loading"
|
||||
['--embed-images'],
|
||||
{'action': 'store_true',
|
||||
'validator': frontend.validate_boolean}),
|
||||
(frontend.SUPPRESS_HELP, # Obsoleted by "--image-loading"
|
||||
['--link-images'],
|
||||
{'dest': 'embed_images', 'action': 'store_false'}),
|
||||
('Suggest at which point images should be loaded: '
|
||||
'"embed", "link" (default), or "lazy".',
|
||||
['--image-loading'],
|
||||
{'choices': ('embed', 'link', 'lazy'),
|
||||
# 'default': 'link' # default set in _html_base.py
|
||||
}),
|
||||
('Append a self-link to section headings.',
|
||||
['--section-self-link'],
|
||||
{'default': False, 'action': 'store_true'}),
|
||||
('Do not append a self-link to section headings. (default)',
|
||||
['--no-section-self-link'],
|
||||
{'dest': 'section_self_link', 'action': 'store_false'}),
|
||||
)
|
||||
)
|
||||
|
||||
config_section = 'html5 writer'
|
||||
|
||||
def __init__(self):
|
||||
self.parts = {}
|
||||
self.translator_class = HTMLTranslator
|
||||
|
||||
|
||||
class HTMLTranslator(_html_base.HTMLTranslator):
|
||||
"""
|
||||
This writer generates `polyglot markup`: HTML5 that is also valid XML.
|
||||
|
||||
Safe subclassing: when overriding, treat ``visit_*`` and ``depart_*``
|
||||
methods as a unit to prevent breaks due to internal changes. See the
|
||||
docstring of docutils.writers._html_base.HTMLTranslator for details
|
||||
and examples.
|
||||
"""
|
||||
|
||||
# self.starttag() arguments for the main document
|
||||
documenttag_args = {'tagname': 'main'}
|
||||
|
||||
# add meta tag to fix rendering in mobile browsers
|
||||
def __init__(self, document):
|
||||
super().__init__(document)
|
||||
self.meta.append('<meta name="viewport" '
|
||||
'content="width=device-width, initial-scale=1" />\n')
|
||||
|
||||
# <acronym> tag obsolete in HTML5. Use the <abbr> tag instead.
|
||||
def visit_acronym(self, node):
|
||||
# @@@ implementation incomplete ("title" attribute)
|
||||
self.body.append(self.starttag(node, 'abbr', ''))
|
||||
|
||||
def depart_acronym(self, node):
|
||||
self.body.append('</abbr>')
|
||||
|
||||
# no standard meta tag name in HTML5, use separate "author" meta tags
|
||||
# https://www.w3.org/TR/html5/document-metadata.html#standard-metadata-names
|
||||
def visit_authors(self, node):
|
||||
self.visit_docinfo_item(node, 'authors', meta=False)
|
||||
for subnode in node:
|
||||
self.meta.append('<meta name="author" content='
|
||||
f'"{self.attval(subnode.astext())}" />\n')
|
||||
|
||||
def depart_authors(self, node):
|
||||
self.depart_docinfo_item()
|
||||
|
||||
# use the <figcaption> semantic tag.
|
||||
def visit_caption(self, node):
|
||||
if isinstance(node.parent, nodes.figure):
|
||||
self.body.append('<figcaption>\n')
|
||||
self.body.append(self.starttag(node, 'p', ''))
|
||||
|
||||
def depart_caption(self, node):
|
||||
self.body.append('</p>\n')
|
||||
# <figcaption> is closed in depart_figure(), as legend may follow.
|
||||
|
||||
# use HTML block-level tags if matching class value found
|
||||
supported_block_tags = {'ins', 'del'}
|
||||
|
||||
def visit_container(self, node):
|
||||
# If there is exactly one of the "supported block tags" in
|
||||
# the list of class values, use it as tag name:
|
||||
classes = node['classes']
|
||||
tags = [cls for cls in classes
|
||||
if cls in self.supported_block_tags]
|
||||
if len(tags) == 1:
|
||||
node.html5tagname = tags[0]
|
||||
classes.remove(tags[0])
|
||||
else:
|
||||
node.html5tagname = 'div'
|
||||
self.body.append(self.starttag(node, node.html5tagname,
|
||||
CLASS='docutils container'))
|
||||
|
||||
def depart_container(self, node):
|
||||
self.body.append(f'</{node.html5tagname}>\n')
|
||||
del node.html5tagname
|
||||
|
||||
# no standard meta tag name in HTML5, use dcterms.rights
|
||||
# see https://wiki.whatwg.org/wiki/MetaExtensions
|
||||
def visit_copyright(self, node):
|
||||
self.visit_docinfo_item(node, 'copyright', meta=False)
|
||||
self.meta.append('<meta name="dcterms.rights" '
|
||||
f'content="{self.attval(node.astext())}" />\n')
|
||||
|
||||
def depart_copyright(self, node):
|
||||
self.depart_docinfo_item()
|
||||
|
||||
# no standard meta tag name in HTML5, use dcterms.date
|
||||
def visit_date(self, node):
|
||||
self.visit_docinfo_item(node, 'date', meta=False)
|
||||
self.meta.append('<meta name="dcterms.date" '
|
||||
f'content="{self.attval(node.astext())}" />\n')
|
||||
|
||||
def depart_date(self, node):
|
||||
self.depart_docinfo_item()
|
||||
|
||||
# use new HTML5 <figure> and <figcaption> elements
|
||||
def visit_figure(self, node):
|
||||
atts = {}
|
||||
if node.get('width'):
|
||||
atts['style'] = f"width: {node['width']}"
|
||||
if node.get('align'):
|
||||
atts['class'] = f"align-{node['align']}"
|
||||
self.body.append(self.starttag(node, 'figure', **atts))
|
||||
|
||||
def depart_figure(self, node):
|
||||
if len(node) > 1:
|
||||
self.body.append('</figcaption>\n')
|
||||
self.body.append('</figure>\n')
|
||||
|
||||
# use HTML5 <footer> element
|
||||
def visit_footer(self, node):
|
||||
self.context.append(len(self.body))
|
||||
|
||||
def depart_footer(self, node):
|
||||
start = self.context.pop()
|
||||
footer = [self.starttag(node, 'footer')]
|
||||
footer.extend(self.body[start:])
|
||||
footer.append('</footer>\n')
|
||||
self.footer.extend(footer)
|
||||
self.body_suffix[:0] = footer
|
||||
del self.body[start:]
|
||||
|
||||
# use HTML5 <header> element
|
||||
def visit_header(self, node):
|
||||
self.context.append(len(self.body))
|
||||
|
||||
def depart_header(self, node):
|
||||
start = self.context.pop()
|
||||
header = [self.starttag(node, 'header')]
|
||||
header.extend(self.body[start:])
|
||||
header.append('</header>\n')
|
||||
self.body_prefix.extend(header)
|
||||
self.header.extend(header)
|
||||
del self.body[start:]
|
||||
|
||||
# use HTML text-level tags if matching class value found
|
||||
supported_inline_tags = {'code', 'kbd', 'dfn', 'samp', 'var',
|
||||
'bdi', 'del', 'ins', 'mark', 'small',
|
||||
'b', 'i', 'q', 's', 'u'}
|
||||
|
||||
# Use `supported_inline_tags` if found in class values
|
||||
def visit_inline(self, node):
|
||||
classes = node['classes']
|
||||
node.html5tagname = 'span'
|
||||
# Special handling for "code" directive content
|
||||
if (isinstance(node.parent, nodes.literal_block)
|
||||
and 'code' in node.parent.get('classes')
|
||||
or isinstance(node.parent, nodes.literal)
|
||||
and getattr(node.parent, 'html5tagname', None) == 'code'):
|
||||
if classes == ['ln']:
|
||||
# line numbers are not part of the "fragment of computer code"
|
||||
if self.body[-1] == '<code>':
|
||||
del self.body[-1]
|
||||
else:
|
||||
self.body.append('</code>')
|
||||
node.html5tagname = 'small'
|
||||
else:
|
||||
tags = [cls for cls in self.supported_inline_tags
|
||||
if cls in classes]
|
||||
if len(tags):
|
||||
node.html5tagname = tags[0]
|
||||
classes.remove(node.html5tagname)
|
||||
self.body.append(self.starttag(node, node.html5tagname, ''))
|
||||
|
||||
def depart_inline(self, node):
|
||||
self.body.append(f'</{node.html5tagname}>')
|
||||
if (node.html5tagname == 'small' and node.get('classes') == ['ln']
|
||||
and isinstance(node.parent, nodes.literal_block)):
|
||||
self.body.append(f'<code data-lineno="{node.astext()}">')
|
||||
del node.html5tagname
|
||||
|
||||
# place inside HTML5 <figcaption> element (together with caption)
|
||||
def visit_legend(self, node):
|
||||
if not isinstance(node.parent[1], nodes.caption):
|
||||
self.body.append('<figcaption>\n')
|
||||
self.body.append(self.starttag(node, 'div', CLASS='legend'))
|
||||
|
||||
def depart_legend(self, node):
|
||||
self.body.append('</div>\n')
|
||||
# <figcaption> closed in visit_figure()
|
||||
|
||||
# use HTML5 text-level tags if matching class value found
|
||||
def visit_literal(self, node):
|
||||
classes = node['classes']
|
||||
html5tagname = 'span'
|
||||
tags = [cls for cls in self.supported_inline_tags
|
||||
if cls in classes]
|
||||
if len(tags):
|
||||
html5tagname = tags[0]
|
||||
classes.remove(html5tagname)
|
||||
if html5tagname == 'code':
|
||||
node.html5tagname = html5tagname
|
||||
self.body.append(self.starttag(node, html5tagname, ''))
|
||||
return
|
||||
self.body.append(
|
||||
self.starttag(node, html5tagname, '', CLASS='docutils literal'))
|
||||
text = node.astext()
|
||||
# remove hard line breaks (except if in a parsed-literal block)
|
||||
if not isinstance(node.parent, nodes.literal_block):
|
||||
text = text.replace('\n', ' ')
|
||||
# Protect text like ``--an-option`` and the regular expression
|
||||
# ``[+]?(\d+(\.\d*)?|\.\d+)`` from bad line wrapping
|
||||
for token in self.words_and_spaces.findall(text):
|
||||
if token.strip() and self.in_word_wrap_point.search(token):
|
||||
self.body.append(
|
||||
f'<span class="pre">{self.encode(token)}</span>')
|
||||
else:
|
||||
self.body.append(self.encode(token))
|
||||
self.body.append(f'</{html5tagname}>')
|
||||
# Content already processed:
|
||||
raise nodes.SkipNode
|
||||
|
||||
def depart_literal(self, node):
|
||||
# skipped unless literal element is from "code" role:
|
||||
self.depart_inline(node)
|
||||
|
||||
# Meta tags: 'lang' attribute replaced by 'xml:lang' in XHTML 1.1
|
||||
# HTML5/polyglot recommends using both
|
||||
def visit_meta(self, node):
|
||||
if node.hasattr('lang'):
|
||||
node['xml:lang'] = node['lang']
|
||||
self.meta.append(self.emptytag(node, 'meta',
|
||||
**node.non_default_attributes()))
|
||||
|
||||
def depart_meta(self, node):
|
||||
pass
|
||||
|
||||
# no standard meta tag name in HTML5
|
||||
def visit_organization(self, node):
|
||||
self.visit_docinfo_item(node, 'organization', meta=False)
|
||||
|
||||
def depart_organization(self, node):
|
||||
self.depart_docinfo_item()
|
||||
|
||||
# use the new HTML5 element <section>
|
||||
def visit_section(self, node):
|
||||
self.section_level += 1
|
||||
self.body.append(
|
||||
self.starttag(node, 'section'))
|
||||
|
||||
def depart_section(self, node):
|
||||
self.section_level -= 1
|
||||
self.body.append('</section>\n')
|
||||
|
||||
# use the new HTML5 element <aside>
|
||||
def visit_sidebar(self, node):
|
||||
self.body.append(
|
||||
self.starttag(node, 'aside', CLASS='sidebar'))
|
||||
self.in_sidebar = True
|
||||
|
||||
def depart_sidebar(self, node):
|
||||
self.body.append('</aside>\n')
|
||||
self.in_sidebar = False
|
||||
|
||||
# Use new HTML5 element <aside> or <nav>
|
||||
# Add class value to <body>, if there is a ToC in the document
|
||||
# (see responsive.css how this is used for a navigation sidebar).
|
||||
def visit_topic(self, node):
|
||||
atts = {'classes': ['topic']}
|
||||
if 'contents' in node['classes']:
|
||||
node.html5tagname = 'nav'
|
||||
del atts['classes']
|
||||
if isinstance(node.parent, nodes.document):
|
||||
atts['role'] = 'doc-toc'
|
||||
self.body_prefix[0] = '</head>\n<body class="with-toc">\n'
|
||||
elif 'abstract' in node['classes']:
|
||||
node.html5tagname = 'div'
|
||||
atts['role'] = 'doc-abstract'
|
||||
elif 'dedication' in node['classes']:
|
||||
node.html5tagname = 'div'
|
||||
atts['role'] = 'doc-dedication'
|
||||
else:
|
||||
node.html5tagname = 'aside'
|
||||
self.body.append(self.starttag(node, node.html5tagname, **atts))
|
||||
|
||||
def depart_topic(self, node):
|
||||
self.body.append(f'</{node.html5tagname}>\n')
|
||||
del node.html5tagname
|
||||
|
||||
# append self-link
|
||||
def section_title_tags(self, node):
|
||||
start_tag, close_tag = super().section_title_tags(node)
|
||||
ids = node.parent['ids']
|
||||
if (ids and getattr(self.settings, 'section_self_link', None)
|
||||
and not isinstance(node.parent, nodes.document)):
|
||||
self_link = ('<a class="self-link" title="link to this section"'
|
||||
f' href="#{ids[0]}"></a>')
|
||||
close_tag = close_tag.replace('</h', self_link + '</h')
|
||||
return start_tag, close_tag
|
Binary file not shown.
|
@ -0,0 +1,26 @@
|
|||
/* italic-field-name.css: */
|
||||
/* Alternative style for Docutils field-lists */
|
||||
|
||||
/* :Copyright: © 2023 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 */
|
||||
|
||||
/* In many contexts, a **bold** field name is too heavy styling. */
|
||||
/* Use *italic* instead:: */
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
dl.field-list > dt > .colon {
|
||||
font-style: normal;
|
||||
padding-left: 0.05ex;
|
||||
}
|
|
@ -0,0 +1,332 @@
|
|||
/*
|
||||
* math2html: convert LaTeX equations to HTML output.
|
||||
*
|
||||
* Copyright (C) 2009,2010 Alex Fernández
|
||||
* 2021 Günter Milde
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Based on eLyXer: convert LyX source files to HTML output.
|
||||
* http://elyxer.nongnu.org/
|
||||
*
|
||||
*
|
||||
* CSS file for LaTeX formulas.
|
||||
*
|
||||
* References: http://www.zipcon.net/~swhite/docs/math/math.html
|
||||
* http://www.cs.tut.fi/~jkorpela/math/
|
||||
*/
|
||||
|
||||
/* Formulas */
|
||||
.formula {
|
||||
text-align: center;
|
||||
margin: 1.2em 0;
|
||||
line-height: 1.4;
|
||||
}
|
||||
span.formula {
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.formula {
|
||||
padding: 0.5ex;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* Basic features */
|
||||
a.eqnumber {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
clear: right;
|
||||
font-weight: bold;
|
||||
}
|
||||
span.unknown {
|
||||
color: #800000;
|
||||
}
|
||||
span.ignored, span.arraydef {
|
||||
display: none;
|
||||
}
|
||||
.phantom {
|
||||
visibility: hidden;
|
||||
}
|
||||
.formula i {
|
||||
letter-spacing: 0.1ex;
|
||||
}
|
||||
|
||||
/* Alignment */
|
||||
.align-l {
|
||||
text-align: left;
|
||||
}
|
||||
.align-r {
|
||||
text-align: right;
|
||||
}
|
||||
.align-c {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Structures */
|
||||
span.hspace {
|
||||
display: inline-block;
|
||||
}
|
||||
span.overline, span.bar {
|
||||
text-decoration: overline;
|
||||
}
|
||||
.fraction, .fullfraction, .textfraction {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
}
|
||||
span.formula .fraction,
|
||||
.textfraction,
|
||||
span.smallmatrix {
|
||||
font-size: 80%;
|
||||
line-height: 1;
|
||||
}
|
||||
span.numerator {
|
||||
display: block;
|
||||
line-height: 1;
|
||||
}
|
||||
span.denominator {
|
||||
display: block;
|
||||
line-height: 1;
|
||||
padding: 0ex;
|
||||
border-top: thin solid;
|
||||
}
|
||||
.formula sub, .formula sup {
|
||||
font-size: 80%;
|
||||
}
|
||||
sup.numerator, sup.unit {
|
||||
vertical-align: 80%;
|
||||
}
|
||||
sub.denominator, sub.unit {
|
||||
vertical-align: -20%;
|
||||
}
|
||||
span.smallsymbol {
|
||||
font-size: 75%;
|
||||
line-height: 75%;
|
||||
}
|
||||
span.boldsymbol {
|
||||
font-weight: bold;
|
||||
}
|
||||
span.sqrt {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 0.1ex;
|
||||
}
|
||||
sup.root {
|
||||
position: relative;
|
||||
left: 1.4ex;
|
||||
}
|
||||
span.radical {
|
||||
display: inline-block;
|
||||
padding: 0ex;
|
||||
/* font-size: 160%; for DejaVu, not required with STIX */
|
||||
line-height: 100%;
|
||||
vertical-align: top;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
span.root {
|
||||
display: inline-block;
|
||||
border-top: thin solid;
|
||||
padding: 0ex;
|
||||
vertical-align: middle;
|
||||
}
|
||||
div.formula .bigoperator,
|
||||
.displaystyle .bigoperator,
|
||||
.displaystyle .bigoperator {
|
||||
line-height: 120%;
|
||||
font-size: 140%;
|
||||
padding-right: 0.2ex;
|
||||
}
|
||||
span.fraction .bigoperator,
|
||||
span.scriptstyle .bigoperator {
|
||||
line-height: inherit;
|
||||
font-size: inherit;
|
||||
padding-right: 0;
|
||||
}
|
||||
span.bigdelimiter {
|
||||
display: inline-block;
|
||||
}
|
||||
span.bigdelimiter.size1 {
|
||||
transform: scale(1, 1.2);
|
||||
line-height: 1.2;
|
||||
}
|
||||
span.bigdelimiter.size2 {
|
||||
transform: scale(1, 1.62);
|
||||
line-height: 1.62%;
|
||||
|
||||
}
|
||||
span.bigdelimiter.size3 {
|
||||
transform: scale(1, 2.05);
|
||||
line-height: 2.05%;
|
||||
}
|
||||
span.bigdelimiter.size4 {
|
||||
transform: scale(1, 2.47);
|
||||
line-height: 2.47%;
|
||||
}
|
||||
/* vertically stacked sub and superscript */
|
||||
span.scripts {
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
padding-right: 0.2ex;
|
||||
}
|
||||
.script {
|
||||
display: table-row;
|
||||
text-align: left;
|
||||
line-height: 150%;
|
||||
}
|
||||
span.limits {
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.limit {
|
||||
display: table-row;
|
||||
line-height: 99%;
|
||||
}
|
||||
sup.limit, sub.limit {
|
||||
line-height: 100%;
|
||||
}
|
||||
span.embellished,
|
||||
span.embellished > .base {
|
||||
display: inline-block;
|
||||
}
|
||||
span.embellished > sup,
|
||||
span.embellished > sub {
|
||||
display: inline-block;
|
||||
font-size: 100%;
|
||||
position: relative;
|
||||
bottom: 0.3em;
|
||||
width: 0px;
|
||||
}
|
||||
span.embellished > sub {
|
||||
top: 0.4em;
|
||||
}
|
||||
|
||||
/* Environments */
|
||||
span.array, span.bracketcases, span.binomial, span.environment {
|
||||
display: inline-table;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
span.arrayrow, span.binomrow {
|
||||
display: table-row;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
span.arraycell, span.bracket, span.case, span.binomcell, span.environmentcell {
|
||||
display: table-cell;
|
||||
padding: 0ex 0.2ex;
|
||||
line-height: 1; /* 99%; */
|
||||
border: 0ex;
|
||||
}
|
||||
.environment.align > .arrayrow > .arraycell.align-l {
|
||||
padding-right: 2em;
|
||||
}
|
||||
|
||||
/* Inline binomials */
|
||||
span.binom {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
font-size: 80%;
|
||||
}
|
||||
span.binomstack {
|
||||
display: block;
|
||||
padding: 0em;
|
||||
}
|
||||
|
||||
/* Over- and underbraces */
|
||||
span.overbrace {
|
||||
border-top: 2pt solid;
|
||||
}
|
||||
span.underbrace {
|
||||
border-bottom: 2pt solid;
|
||||
}
|
||||
|
||||
/* Stackrel */
|
||||
span.stackrel {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
span.upstackrel {
|
||||
display: block;
|
||||
padding: 0em;
|
||||
font-size: 80%;
|
||||
line-height: 64%;
|
||||
position: relative;
|
||||
top: 0.15em;
|
||||
|
||||
}
|
||||
span.downstackrel {
|
||||
display: block;
|
||||
vertical-align: bottom;
|
||||
padding: 0em;
|
||||
}
|
||||
|
||||
/* Fonts */
|
||||
.formula {
|
||||
font-family: STIX, "DejaVu Serif", "DejaVu Math TeX Gyre", serif;
|
||||
}
|
||||
span.radical, /* ensure correct size of square-root sign */
|
||||
span.integral { /* upright integral signs for better alignment of indices */
|
||||
font-family: "STIXIntegralsUp", STIX;
|
||||
/* font-size: 115%; match apparent size with DejaVu */
|
||||
}
|
||||
span.bracket {
|
||||
/* some "STIX" and "DejaVu Math TeX Gyre" bracket pieces don't fit */
|
||||
font-family: "DejaVu Serif", serif;
|
||||
}
|
||||
span.mathsf, span.textsf {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
span.mathrm, span.textrm {
|
||||
font-family: STIX, "DejaVu Serif", "DejaVu Math TeX Gyre", serif;
|
||||
}
|
||||
span.mathtt, span.texttt {
|
||||
font-family: monospace;
|
||||
}
|
||||
span.text, span.textnormal,
|
||||
span.mathsf, span.mathtt, span.mathrm {
|
||||
font-style: normal;
|
||||
}
|
||||
span.fraktur {
|
||||
font-family: "Lucida Blackletter", eufm10, blackletter;
|
||||
}
|
||||
span.blackboard {
|
||||
font-family: Blackboard, msbm10, serif;
|
||||
}
|
||||
span.scriptfont {
|
||||
font-family: "Monotype Corsiva", "Apple Chancery", "URW Chancery L", cursive;
|
||||
font-style: italic;
|
||||
}
|
||||
span.mathscr {
|
||||
font-family: MathJax_Script, rsfs10, cursive;
|
||||
font-style: italic;
|
||||
}
|
||||
span.textsc {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
span.textsl {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
/* Colors */
|
||||
span.colorbox {
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
}
|
||||
span.fbox {
|
||||
display: inline-block;
|
||||
border: thin solid black;
|
||||
padding: 2px;
|
||||
}
|
||||
span.boxed, span.framebox {
|
||||
display: inline-block;
|
||||
border: thin solid black;
|
||||
padding: 5px;
|
||||
}
|
|
@ -0,0 +1,293 @@
|
|||
/* Minimal style sheet for the HTML output of Docutils. */
|
||||
/* */
|
||||
/* :Author: Günter Milde, based on html4css1.css by David Goodger */
|
||||
/* :Id: $Id: minimal.css 9545 2024-02-17 10:37: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,
|
||||
pre.problematic,
|
||||
span.problematic {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* Inline Literals */
|
||||
.docutils.literal {
|
||||
font-family: monospace;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
/* do not wrap at hyphens and similar: */
|
||||
.literal > span.pre { white-space: nowrap; }
|
||||
|
||||
/* keep line-breaks (\n) visible */
|
||||
.pre-wrap { white-space: pre-wrap; }
|
||||
|
||||
/* 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.25em;
|
||||
}
|
||||
/* 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; }
|
||||
|
||||
/* Code line numbers: dropped when copying text from the page */
|
||||
pre.code .ln { display: none; }
|
||||
pre.code code:before {
|
||||
content: attr(data-lineno); /* …, none) fallback not supported by any browser */
|
||||
color: gray;
|
||||
}
|
||||
|
||||
/* 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, figcaption {
|
||||
text-align: left;
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
table.captionbelow {
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
/* MathML (see "math.css" for --math-output=HTML) */
|
||||
math .boldsymbol { font-weight: bold; }
|
||||
math.boxed, math .boxed {padding: 0.25em; border: thin solid; }
|
||||
/* style table similar to AMS "align" or "aligned" environment: */
|
||||
mtable.cases > mtr > mtd { text-align: left; }
|
||||
mtable.ams-align > mtr > mtd { padding-left: 0; padding-right: 0; }
|
||||
mtable.ams-align > mtr > mtd:nth-child(2n) { text-align: left; }
|
||||
mtable.ams-align > mtr > mtd:nth-child(2n+1) { text-align: right; }
|
||||
mtable.ams-align > mtr > mtd:nth-child(2n+3) { padding-left: 2em; }
|
||||
.mathscr mi, mi.mathscr {
|
||||
font-family: STIX, XITSMathJax_Script, rsfs10,
|
||||
"Asana Math", Garamond, cursive;
|
||||
}
|
||||
|
||||
/* 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, svg, header, footer, main, aside, nav, section, figure, video, details {
|
||||
display: block;
|
||||
}
|
||||
svg { width: auto; height: auto; } /* enable scaling of SVG images */
|
||||
/* inline images */
|
||||
p img, p svg, p video { display: inline; }
|
|
@ -0,0 +1,307 @@
|
|||
/* 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 9615 2024-04-06 13:28:15Z 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;
|
||||
background-color: #dbdbdb;
|
||||
--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 <http://webtypography.net/2.1.2> */
|
||||
/* OTOH: lines should not be too short because of missing hyphenation, */
|
||||
max-width: 50rem;
|
||||
padding: 1px 2%; /* 1px on top avoids grey bar above title (mozilla) */
|
||||
margin: auto;
|
||||
}
|
||||
main {
|
||||
counter-reset: table figure;
|
||||
background-color: white;
|
||||
}
|
||||
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,
|
||||
.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: monospace;
|
||||
}
|
||||
|
||||
/* Block Quotes and Topics */
|
||||
bockquote { margin: 1em 2em; }
|
||||
blockquote p.attribution,
|
||||
.topic p.attribution {
|
||||
text-align: right;
|
||||
margin-left: 20%;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
/* ====== */
|
||||
|
||||
/* th { vertical-align: bottom; } */
|
||||
|
||||
table tr { text-align: left; }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.booktabs {
|
||||
border: 0;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.booktabs * {
|
||||
border: 0;
|
||||
}
|
||||
table.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
}
|
||||
|
||||
/* numbered tables (counter defined in div.document) */
|
||||
table.numbered > caption:before {
|
||||
counter-increment: table;
|
||||
content: "Table " counter(table) ": ";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Explicit Markup Blocks */
|
||||
/* ====================== */
|
||||
|
||||
/* Footnotes and Citations */
|
||||
/* ----------------------- */
|
||||
|
||||
/* line on the left */
|
||||
.footnote-list {
|
||||
border-left: solid thin;
|
||||
padding-left: 0.25em;
|
||||
}
|
||||
|
||||
/* Directives */
|
||||
/* ---------- */
|
||||
|
||||
/* Body Elements */
|
||||
/* ~~~~~~~~~~~~~ */
|
||||
|
||||
/* Images and Figures */
|
||||
|
||||
/* let content flow to the side of aligned images and figures */
|
||||
figure.align-left,
|
||||
img.align-left,
|
||||
svg.align-left,
|
||||
video.align-left,
|
||||
div.align-left,
|
||||
object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
figure.align-right,
|
||||
img.align-right,
|
||||
svg.align-right,
|
||||
video.align-right,
|
||||
div.align-right,
|
||||
object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
/* Stop floating sidebars, images and figures */
|
||||
h1, h2, h3, h4, footer, header { clear: both; }
|
||||
|
||||
/* Numbered figures */
|
||||
figure.numbered > figcaption > p:before {
|
||||
counter-increment: figure;
|
||||
content: "Figure " counter(figure) ": ";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Admonitions and System Messages */
|
||||
.caution p.admonition-title,
|
||||
.attention p.admonition-title,
|
||||
.danger p.admonition-title,
|
||||
.error p.admonition-title,
|
||||
.warning p.admonition-title,
|
||||
div.error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* Sidebar */
|
||||
/* Move right. In a layout with fixed margins, */
|
||||
/* it can be moved into the margin. */
|
||||
aside.sidebar {
|
||||
width: 30%;
|
||||
max-width: 26em;
|
||||
float: right;
|
||||
clear: right;
|
||||
margin-left: 1em;
|
||||
margin-right: -1%;
|
||||
background-color: #fffffa;
|
||||
}
|
||||
|
||||
|
||||
/* Code */
|
||||
pre.code { padding: 0.7ex }
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
/* basic highlighting: for a complete scheme, see */
|
||||
/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
|
||||
/* Epigraph */
|
||||
/* Highlights */
|
||||
/* Pull-Quote */
|
||||
/* Compound Paragraph */
|
||||
/* Container */
|
||||
|
||||
/* Inline Markup */
|
||||
/* ============= */
|
||||
|
||||
sup, sub { line-height: 0.8; } /* do not add leading for lines with sup/sub */
|
||||
|
||||
/* Inline Literals */
|
||||
/* possible values: normal, nowrap, pre, pre-wrap, pre-line */
|
||||
/* span.docutils.literal { white-space: pre-wrap; } */
|
||||
|
||||
/* Hyperlink References */
|
||||
a { text-decoration: none; }
|
||||
|
||||
/* External Targets */
|
||||
/* span.target.external */
|
||||
/* Internal Targets */
|
||||
/* span.target.internal */
|
||||
/* Footnote References */
|
||||
/* a[role="doc-noteref"] */
|
||||
/* Citation References */
|
||||
/* a.citation-reference */
|
|
@ -0,0 +1,486 @@
|
|||
/* CSS3_ style sheet for the output of Docutils HTML5 writer. */
|
||||
/* Generic responsive design for all screen sizes. */
|
||||
/* */
|
||||
/* :Author: Günter Milde */
|
||||
/* */
|
||||
/* :Id: $Id: responsive.css 9615 2024-04-06 13:28:15Z milde $ */
|
||||
/* :Copyright: © 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 */
|
||||
/* .. _CSS3: https://www.w3.org/Style/CSS/ */
|
||||
|
||||
/* Note: */
|
||||
/* This style sheet is provisional: */
|
||||
/* the API is not settled and may change with any minor Docutils version. */
|
||||
|
||||
|
||||
|
||||
/* General Settings */
|
||||
/* ================ */
|
||||
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
background-color: #fafaf6;
|
||||
margin: auto;
|
||||
--field-indent: 6.6em; /* indent of fields in field lists */
|
||||
--sidebar-margin-right: 0; /* adapted in media queries below */
|
||||
}
|
||||
main {
|
||||
counter-reset: figure table;
|
||||
}
|
||||
body > * {
|
||||
background-color: white;
|
||||
line-height: 1.6;
|
||||
padding: 0.5rem calc(29% - 7.2rem); /* go from 5% to 15% (8.15em/54em) */
|
||||
margin: auto;
|
||||
max-width: 100rem;
|
||||
}
|
||||
sup, sub { /* avoid additional inter-line space for lines with sup/sub */
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* Vertical Space (Parskip) */
|
||||
p, ol, ul, dl, li,
|
||||
.topic,
|
||||
.footnote, .citation,
|
||||
div > math,
|
||||
table {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
dl > dd, details > p:last-child {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Indented Blocks */
|
||||
blockquote, figure, .topic {
|
||||
margin: 1em 2%;
|
||||
padding-left: 1em;
|
||||
}
|
||||
div.line-block div.line-block,
|
||||
pre, dd, dl.option-list {
|
||||
margin-left: calc(2% + 1em);
|
||||
}
|
||||
|
||||
/* Object styling */
|
||||
/* ============== */
|
||||
|
||||
footer, header {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
/* Frontmatter */
|
||||
div.dedication {
|
||||
padding: 0;
|
||||
margin: 1.4em 0;
|
||||
font-style: italic;
|
||||
font-size: large;
|
||||
}
|
||||
.dedication p.topic-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
blockquote p.attribution,
|
||||
.topic p.attribution {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Table of Contents */
|
||||
nav.contents ul {
|
||||
padding-left: 1em;
|
||||
}
|
||||
ul.auto-toc > li > p { /* hanging indent */
|
||||
padding-left: 1em;
|
||||
text-indent: -1em;
|
||||
}
|
||||
main > nav.contents ul:not(.auto-toc) {
|
||||
list-style-type: square;
|
||||
}
|
||||
main > nav.contents ul ul:not(.auto-toc) {
|
||||
list-style-type: disc;
|
||||
}
|
||||
main > nav.contents ul ul ul:not(.auto-toc) {
|
||||
list-style-type: '\2B29\ ';
|
||||
}
|
||||
main > nav.contents ul ul ul ul:not(.auto-toc) {
|
||||
list-style-type: '\2B1D\ ';
|
||||
}
|
||||
main > nav.contents ul ul ul ul ul:not(.auto-toc) {
|
||||
list-style-type: '\2B2A\ ';
|
||||
}
|
||||
nav.contents ul > li::marker {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
/* Transitions */
|
||||
hr {
|
||||
margin: 1em 10%;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
|
||||
dl.field-list.narrow, dl.docinfo, dl.option-list {
|
||||
--field-indent: 2.4em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
padding-left: 1.1em; /* indent by bullet width (Firefox, DejaVu fonts) */
|
||||
}
|
||||
dl.field-list > dd,
|
||||
dl.docinfo > dd {
|
||||
margin-left: var(--field-indent); /* adapted in media queries or HTML */
|
||||
}
|
||||
dl.option-list > dd {
|
||||
margin-left: 20%;
|
||||
}
|
||||
/* run-in: start field-body on same line after long field names */
|
||||
dl.field-list.run-in > dd p {
|
||||
display: block;
|
||||
}
|
||||
/* "description style" like in most dictionaries, encyclopedias etc. */
|
||||
dl.description {
|
||||
display: flow-root;
|
||||
}
|
||||
dl.description > dt {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-right: 0.3em;
|
||||
font-weight: bold;
|
||||
}
|
||||
dl.description > dd:after {
|
||||
display: table;
|
||||
content: "";
|
||||
clear: left; /* clearfix for empty descriptions */
|
||||
}
|
||||
/* start lists nested in description/field lists on new line */
|
||||
dd > dl:first-child,
|
||||
dd > ul:first-child,
|
||||
dd > ol:first-child {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* disclosures */
|
||||
details { padding-left: 1em; }
|
||||
summary { margin-left: -1em; }
|
||||
|
||||
/* Footnotes and Citations */
|
||||
.footnote {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
/* Images, Figures, and Tables */
|
||||
figcaption,
|
||||
table > caption {
|
||||
/* font-size: small; */
|
||||
font-style: italic;
|
||||
}
|
||||
figcaption > .legend {
|
||||
font-size: small;
|
||||
font-style: initial;
|
||||
}
|
||||
figure.numbered > figcaption > p:before {
|
||||
counter-increment: figure;
|
||||
content: "Figure " counter(figure) ": ";
|
||||
font-weight: bold;
|
||||
font-style: initial;
|
||||
}
|
||||
|
||||
table tr {
|
||||
text-align: left;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
table.booktabs { /* "booktabs" style (no vertical lines) */
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
table.booktabs * {
|
||||
border: 0;
|
||||
}
|
||||
table.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
}
|
||||
table.numbered > caption:before {
|
||||
counter-increment: table;
|
||||
content: "Table " counter(table) ": ";
|
||||
font-weight: bold;
|
||||
font-style: initial;
|
||||
}
|
||||
|
||||
/* Admonitions and System Messages */
|
||||
.admonition,
|
||||
div.system-message {
|
||||
border: thin solid silver;
|
||||
margin: 1em 2%;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
.caution p.admonition-title,
|
||||
.attention p.admonition-title,
|
||||
.danger p.admonition-title,
|
||||
.warning p.admonition-title,
|
||||
div.error {
|
||||
color: maroon;
|
||||
}
|
||||
div.system-message > p > span.literal {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
/* Literal and Code */
|
||||
pre.literal-block, pre.doctest{
|
||||
padding: 0.2em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.literal-block, .doctest, span.literal {
|
||||
background-color: #f6f9f8;
|
||||
}
|
||||
.system-message span.literal {
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
/* basic highlighting: for a complete scheme, see */
|
||||
/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
/* Hyperlink References */
|
||||
a {
|
||||
text-decoration: none; /* for chromium */
|
||||
/* Wrap links at any place, if this is the only way to prevent overflow */
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.contents a, a.toc-backref, a.citation-reference {
|
||||
overflow-wrap: inherit;
|
||||
}
|
||||
/* Undecorated Links (see also minimal.css) */
|
||||
/* a.citation-reference, */
|
||||
.citation a.fn-backref {
|
||||
color: inherit;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
*:hover > a.toc-backref:after,
|
||||
.topic-title:hover > a:after {
|
||||
content: " \2191"; /* ↑ UPWARDS ARROW */
|
||||
color: grey;
|
||||
}
|
||||
*:hover > a.self-link:after {
|
||||
content: "\1F517"; /* LINK SYMBOL */
|
||||
color: grey;
|
||||
font-size: smaller;
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
/* highlight specific targets of the current URL */
|
||||
section:target > h2, section:target > h3, section:target > h4,
|
||||
section:target > h5, section:target > h6,
|
||||
span:target + h2, span:target + h3, span:target + h4,
|
||||
span:target + h5, span:target + h6,
|
||||
dt:target, span:target,
|
||||
.contents :target,
|
||||
.contents:target > .topic-title,
|
||||
[role="doc-biblioentry"]:target > .label,
|
||||
[role="doc-biblioref"]:target,
|
||||
[role="note"]:target, /* Docutils 0.18 ... 0.19 */
|
||||
[role="doc-footnote"]:target, /* Docutils >= 0.20 */
|
||||
[role="doc-noteref"]:target {
|
||||
background-color: #d2e6ec;
|
||||
}
|
||||
|
||||
/* Block Alignment */
|
||||
/* Let content flow to the side of aligned images and figures */
|
||||
|
||||
/* no floats around this elements */
|
||||
footer, header, hr,
|
||||
h1, h2, h3 {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
img.align-left,
|
||||
svg.align-left,
|
||||
video.align-left,
|
||||
figure.align-left,
|
||||
div.align-left,
|
||||
table.align-left {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
margin-right: 0.5em;
|
||||
clear: left;
|
||||
float: left;
|
||||
}
|
||||
img.align-right,
|
||||
svg.align-right,
|
||||
video.align-right,
|
||||
figure.align-right,
|
||||
div.align-right,
|
||||
table.align-right {
|
||||
margin-left: 0.5em;
|
||||
margin-right: 0;
|
||||
clear: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* Margin Elements */
|
||||
/* see below for screen size dependent rules */
|
||||
.sidebar,
|
||||
.marginal,
|
||||
.admonition.marginal {
|
||||
max-width: 40%;
|
||||
border: none;
|
||||
background-color: #efefea;
|
||||
margin: 0.5em var(--sidebar-margin-right) 0.5em 1em;
|
||||
padding: 0.5em;
|
||||
padding-left: 0.7em;
|
||||
clear: right;
|
||||
float: right;
|
||||
font-size: small;
|
||||
}
|
||||
.sidebar {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
/* Adaptive page layout */
|
||||
/* ==================== */
|
||||
|
||||
@media (max-width: 30em) {
|
||||
/* Smaller margins and no floating elements for small screens */
|
||||
/* (main text less than 40 characters/line) */
|
||||
body > * {
|
||||
padding: 0.5rem 5%;
|
||||
line-height: 1.4
|
||||
}
|
||||
.sidebar,
|
||||
.marginal,
|
||||
.admonition.marginal {
|
||||
width: auto;
|
||||
max-width: 100%;
|
||||
float: none;
|
||||
}
|
||||
dl.option-list,
|
||||
pre {
|
||||
margin-left: 0;
|
||||
}
|
||||
body {
|
||||
--field-indent: 4em;
|
||||
}
|
||||
pre, pre * {
|
||||
font-size: 0.9em;
|
||||
/* overflow: auto; */
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 54em) {
|
||||
/* Move ToC to the left */
|
||||
/* Main text width before: 70% ≙ 35em ≙ 75…95 chrs (Dejavu/Times) */
|
||||
/* after: ≳ 30em ≙ 54…70 chrs (Dejavu/Times) */
|
||||
body.with-toc {
|
||||
padding-left: 8%;
|
||||
}
|
||||
body.with-toc > * {
|
||||
margin-left: 0;
|
||||
padding-left: 22rem; /* fallback for webkit */
|
||||
padding-left: min(22%, 22rem);
|
||||
padding-right: 7%;
|
||||
}
|
||||
main > nav.contents { /* global ToC */
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: min(25%, 25em);
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
background-color: #fafaf6;
|
||||
padding: 1em 2% 0 2%;
|
||||
overflow: auto;
|
||||
}
|
||||
main > nav.contents > * {
|
||||
padding-left: 0;
|
||||
line-height: 1.4;
|
||||
}
|
||||
main > nav.contents a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 70em) {
|
||||
body {
|
||||
--field-indent: 9em;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 77em) {
|
||||
/* Move marginalia to 6rem from right border */
|
||||
/* .sidebar, */
|
||||
/* .marginal, */
|
||||
/* .admonition.marginal { */
|
||||
/* margin-right: calc(6rem - 15%); */
|
||||
/* } */
|
||||
/* BUG: margin is calculated for break point width */
|
||||
/* workaround: variable + many breakpoints */
|
||||
body > * {
|
||||
padding-left: 18%;
|
||||
padding-right: 28%; /* fallback for webkit */
|
||||
padding-right: min(28%, 28rem);
|
||||
--sidebar-margin-right: -20rem;
|
||||
}
|
||||
/* limit main text to ~ 50em ≙ 85…100 characters DejaVu rsp. …120 Times */
|
||||
body.with-toc > * {
|
||||
padding-left: min(22%, 22rem);
|
||||
padding-right: calc(78% - 50rem); /* fallback for webkit */
|
||||
padding-right: min(78% - 50rem, 28rem);
|
||||
--sidebar-margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 85em) {
|
||||
body.with-toc > * {
|
||||
--sidebar-margin-right: -9rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 90em) {
|
||||
/* move marginalia into the margin */
|
||||
body > * {
|
||||
padding-left: min(22%, 22rem);
|
||||
--sidebar-margin-right: -23rem;
|
||||
}
|
||||
body.with-toc > * {
|
||||
--sidebar-margin-right: -14rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 99em) {
|
||||
/* move marginalia out of main text area */
|
||||
body.with-toc > * {
|
||||
--sidebar-margin-right: -20rem;
|
||||
}
|
||||
body > *, body.with-toc > * { /* for webkit */
|
||||
padding-left: 22rem;
|
||||
padding-right: 28rem;
|
||||
}
|
||||
.admonition.marginal,
|
||||
.marginal {
|
||||
width: 40%; /* make marginal figures, ... "full width" */
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 104em) {
|
||||
body.with-toc > * {
|
||||
--sidebar-margin-right: -23rem;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
%(head_prefix)s
|
||||
%(head)s
|
||||
%(stylesheet)s
|
||||
%(body_prefix)s
|
||||
%(body_pre_docinfo)s
|
||||
%(docinfo)s
|
||||
%(body)s
|
||||
%(body_suffix)s
|
|
@ -0,0 +1,566 @@
|
|||
/* CSS3_ style sheet for the output of Docutils HTML writers. */
|
||||
/* Rules inspired by Edward Tufte's layout design. */
|
||||
/* */
|
||||
/* :Author: Günter Milde */
|
||||
/* based on tufte.css_ by Dave Liepmann */
|
||||
/* and the tufte-latex_ package. */
|
||||
/* */
|
||||
/* :Id: $Id: tuftig.css 9503 2023-12-16 22:37:59Z milde $ */
|
||||
/* :Copyright: © 2020 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/ */
|
||||
/* .. _tufte.css: https://edwardtufte.github.io/tufte-css/ */
|
||||
/* .. _tufte-latex_: https://www.ctan.org/pkg/tufte-latex */
|
||||
|
||||
|
||||
/* General Settings */
|
||||
/* ================ */
|
||||
|
||||
body {
|
||||
font-family: Georgia, serif;
|
||||
background-color: #fafaf6;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.4;
|
||||
margin: auto;
|
||||
}
|
||||
main {
|
||||
counter-reset: figure table;
|
||||
}
|
||||
main, header, footer {
|
||||
padding: 0.5em 5%;
|
||||
background-color: #fefef8;
|
||||
max-width: 100rem;
|
||||
}
|
||||
|
||||
/* Spacing */
|
||||
|
||||
/* vertical space (parskip) */
|
||||
p, ol, ul, dl, li,
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
div.line-block,
|
||||
.topic,
|
||||
.footnote, .citation,
|
||||
table {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
dl > dd {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
/* exceptions */
|
||||
p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Indented Blocks */
|
||||
blockquote,
|
||||
.topic {
|
||||
/* background-color: Honeydew; */
|
||||
margin: 0.5em 2%;
|
||||
padding-left: 1em;
|
||||
}
|
||||
div.line-block div.line-block,
|
||||
dl.option-list,
|
||||
figure > img,
|
||||
pre.literal-block, pre.math,
|
||||
pre.doctest-block, pre.code {
|
||||
/* background-color: LightCyan; */
|
||||
margin-left: calc(2% + 1em);
|
||||
}
|
||||
|
||||
/* Object styling */
|
||||
/* ============== */
|
||||
|
||||
footer, header {
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
/* Titles and Headings */
|
||||
|
||||
h2, h3, h4, p.subtitle, p.section-subtitle,
|
||||
p.topic-title, p.sidebar-title, p.sidebar-subtitle {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
text-align: left;
|
||||
}
|
||||
.sectnum {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
h1.title {
|
||||
text-align: left;
|
||||
margin-top: 2.4em;
|
||||
margin-bottom: 2em;
|
||||
font-size: 2.4em;
|
||||
}
|
||||
h1 + p.subtitle {
|
||||
margin-top: -2em;
|
||||
margin-bottom: 2em;
|
||||
font-size: 2.0em;
|
||||
}
|
||||
section {
|
||||
margin-top: 2em;
|
||||
}
|
||||
h2, .contents > p.topic-title {
|
||||
font-size: 2.2em;
|
||||
}
|
||||
h2 + p.section-subtitle {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
h3 + p.section-subtitle {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
h4 {
|
||||
font-size: 1em;
|
||||
}
|
||||
p.section-subtitle {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Dedication and Abstract */
|
||||
div.dedication {
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
font-style: italic;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
/* div.abstract p.topic-title, */
|
||||
div.dedication p.topic-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Attribution */
|
||||
blockquote p.attribution,
|
||||
.topic p.attribution {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Table of Contents */
|
||||
nav.contents {
|
||||
padding: 0;
|
||||
font-style: italic;
|
||||
}
|
||||
ul.auto-toc > li > p {
|
||||
padding-left: 1em;
|
||||
text-indent: -1em;
|
||||
}
|
||||
nav.contents ul {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
|
||||
/* Transitions */
|
||||
hr {
|
||||
border: 0;
|
||||
border-top: 1px solid #ccc;
|
||||
margin: 1em 10%;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
/* Less indent per level */
|
||||
ul, ol {
|
||||
padding-left: 1.1em;
|
||||
}
|
||||
dd {
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
dd > dl:first-child,
|
||||
dd > ul:first-child,
|
||||
dd > ol:first-child {
|
||||
/* lists nested in definition/description/field lists */
|
||||
clear: left;
|
||||
}
|
||||
|
||||
dl.field-list > dd,
|
||||
dl.docinfo > dd,
|
||||
dl.option-list > dd {
|
||||
margin-left: 4em;
|
||||
}
|
||||
/* example for custom field-name width */
|
||||
dl.field-list.narrow > dd {
|
||||
margin-left: 3em;
|
||||
}
|
||||
/* run-in: start field-body on same line after long field names */
|
||||
dl.field-list.run-in > dd p {
|
||||
display: block;
|
||||
}
|
||||
/* italic field name */
|
||||
dl.description > dt,
|
||||
dl.field-list > dt,
|
||||
dl.docinfo > dt {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* "description style" like in most dictionaries, encyclopedias etc. */
|
||||
dl.description > dt {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
dl.description > dd:after {
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* Citation list (style as description list) */
|
||||
.citation-list,
|
||||
.footnote-list {
|
||||
display: contents;
|
||||
}
|
||||
.citation {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
.citation .label {
|
||||
margin-left: -1.5em;
|
||||
}
|
||||
|
||||
/* Images and Figures */
|
||||
/* Caption to the left (if there is space) or below: */
|
||||
figure {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-start;
|
||||
margin: 0.5em 2%;
|
||||
padding-left: 1em;
|
||||
}
|
||||
figure > img,
|
||||
figure.fullwidth > img {
|
||||
margin: 0 0.5em 0.5em 0;
|
||||
padding: 0;
|
||||
}
|
||||
figcaption {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.fullwidth > figcaption {
|
||||
font-size: inherit;
|
||||
}
|
||||
figure.numbered > figcaption > p:before {
|
||||
counter-increment: figure;
|
||||
content: "Figure " counter(figure) ": ";
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table tr {
|
||||
text-align: left;
|
||||
}
|
||||
/* th { vertical-align: bottom; } */
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.booktabs {
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
table.booktabs * {
|
||||
border: 0;
|
||||
}
|
||||
table.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
}
|
||||
table.numbered > caption:before {
|
||||
counter-increment: table;
|
||||
content: "Table " counter(table) ": ";
|
||||
}
|
||||
|
||||
/* Admonitions and System Messages */
|
||||
.admonition, .system-message {
|
||||
border-style: solid;
|
||||
border-color: silver;
|
||||
border-width: thin;
|
||||
margin: 1em 0;
|
||||
padding: 0.5em;
|
||||
}
|
||||
.caution p.admonition-title,
|
||||
.attention p.admonition-title,
|
||||
.danger p.admonition-title,
|
||||
.warning p.admonition-title,
|
||||
div.error {
|
||||
color: maroon;
|
||||
}
|
||||
|
||||
/* Literal and Code */
|
||||
pre.literal-block, pre.doctest-block,
|
||||
pre.math, pre.code {
|
||||
/* font-family: Consolas, "Liberation Mono", Menlo, monospace; */
|
||||
/* font-size: 0.9em; */
|
||||
overflow: auto;
|
||||
}
|
||||
/* basic highlighting: for a complete scheme, see */
|
||||
/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
.sans {
|
||||
font-family: "Gill Sans", "Gill Sans MT", Calibri, "Lucida Sans", "Noto Sans", sans-serif;
|
||||
letter-spacing: .02em;
|
||||
}
|
||||
|
||||
/* Hyperlink References */
|
||||
/* underline that clears descenders */
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
a:link {
|
||||
text-decoration: underline;
|
||||
/* text-decoration-skip-ink: auto; nonstandard selector */
|
||||
}
|
||||
/* undecorated links */
|
||||
.contents a:link, a.toc-backref:link, a.image-reference:link,
|
||||
a[role="doc-noteref"]:link, a[role="doc-backlink"]:link, .backrefs a:link,
|
||||
a.citation-reference:link,
|
||||
a[href^="#system-message"] {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Block Alignment */
|
||||
/* Let content flow to the side of aligned images and figures */
|
||||
/* (does not work if the image/figure is a grid element). */
|
||||
|
||||
/* no floats around this elements */
|
||||
footer, header,
|
||||
hr.docutils,
|
||||
h1, h2, h3, .contents > p.topic-title,
|
||||
.fullwidth {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
img.align-left,
|
||||
svg.align-left,
|
||||
video.align-left,
|
||||
figure.align-left,
|
||||
div.align-left,
|
||||
table.align-left {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0.5em;
|
||||
clear: left;
|
||||
float: left;
|
||||
}
|
||||
figure.align-left > img {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
img.align-right,
|
||||
svg.align-right,
|
||||
video.align-right,
|
||||
div.align-right {
|
||||
padding-left: 0.5em;
|
||||
clear: right;
|
||||
float: right;
|
||||
}
|
||||
figure.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
}
|
||||
figure.align-right > img {
|
||||
justify-self: right;
|
||||
padding: 0;
|
||||
}
|
||||
table.align-right {
|
||||
margin-right: 2.5%;
|
||||
}
|
||||
|
||||
figure.align-center {
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
figure.align-center > img {
|
||||
padding-left: 0;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
/* Margin Elements */
|
||||
/* see below for screen size dependent rules */
|
||||
aside.sidebar,
|
||||
.marginal,
|
||||
.admonition.marginal,
|
||||
.topic.marginal {
|
||||
background-color: #efefea;
|
||||
box-sizing: border-box;
|
||||
margin-left: 2%;
|
||||
margin-right: 0;
|
||||
padding: 0.5em;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
aside.sidebar {
|
||||
background-color: inherit;
|
||||
}
|
||||
figure.marginal > figcaption {
|
||||
font-size: 1em;
|
||||
}
|
||||
.footnote {
|
||||
font-size: smaller;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* Adaptive page layout */
|
||||
|
||||
/* no floating for very small Screens */
|
||||
/* (main text up to ca. 40 characters/line) */
|
||||
@media (min-width: 35em) {
|
||||
main, header, footer {
|
||||
padding: 0.5em calc(15% - 3rem);
|
||||
line-height: 1.6
|
||||
}
|
||||
aside.sidebar,
|
||||
.marginal,
|
||||
.admonition.marginal,
|
||||
.topic.marginal {
|
||||
max-width: 45%;
|
||||
float: right;
|
||||
clear: right;
|
||||
}
|
||||
dl.field-list > dd,
|
||||
dl.docinfo > dd {
|
||||
margin-left: 6em;
|
||||
}
|
||||
dl.option-list > dd {
|
||||
margin-left: 6em;
|
||||
}
|
||||
}
|
||||
|
||||
/* 2 column layout with wide margin */
|
||||
@media (min-width: 65em) {
|
||||
/* use the same grid for main, all sections, and figures */
|
||||
main, section {
|
||||
display: grid;
|
||||
grid-template-columns: [content] minmax(0, 6fr)
|
||||
[margin] 3fr [end];
|
||||
grid-column-gap: calc(3em + 1%);
|
||||
}
|
||||
main > section, section > section {
|
||||
grid-column: 1 / end;
|
||||
}
|
||||
main, header, footer {
|
||||
padding-right: 5%; /* less padding right of margin-column */
|
||||
}
|
||||
section > figure {
|
||||
display: contents; /* to place caption in the margin */
|
||||
}
|
||||
/* Main text elements */
|
||||
main > *, section > *,
|
||||
figure > img,
|
||||
.footnote.align-left, /* override the placement in the margin */
|
||||
.citation.align-left {
|
||||
grid-column: content;
|
||||
}
|
||||
.citation.align-left {
|
||||
font-size: 1em;
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
.citation.align-left .label {
|
||||
margin-left: -1.5em;
|
||||
}
|
||||
figure > img { /* indent */
|
||||
margin: 0.5em 2%;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
/* Margin Elements */
|
||||
/* Sidebar, Footnotes, Citations, Captions */
|
||||
aside.sidebar,
|
||||
.citation,
|
||||
.footnote,
|
||||
figcaption,
|
||||
/* table > caption, does not work :(*/
|
||||
.marginal,
|
||||
.admonition.marginal,
|
||||
.topic.marginal {
|
||||
/* color: red; */
|
||||
grid-column: margin;
|
||||
width: auto;
|
||||
max-width: 55em;
|
||||
margin: 0.5em 0;
|
||||
border: none;
|
||||
padding: 0;
|
||||
font-size: 0.8em;
|
||||
text-align: initial; /* overwrite align-* */
|
||||
background-color: inherit;
|
||||
}
|
||||
.admonition.marginal {
|
||||
padding: 0.5em;
|
||||
}
|
||||
figure.marginal {
|
||||
display: block;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
.citation,
|
||||
.footnote {
|
||||
padding-left: 0;
|
||||
}
|
||||
.citation .label,
|
||||
.footnote .label {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* Fullwidth Elements */
|
||||
h1.title, p.subtitle,
|
||||
dl.docinfo,
|
||||
div.abstract,
|
||||
div.dedication,
|
||||
nav.contents,
|
||||
aside.system-message,
|
||||
pre,
|
||||
.fullwidth,
|
||||
.fullwidth img,
|
||||
.fullwidth figcaption {
|
||||
/* background-color: Linen; */
|
||||
grid-column: content / end;
|
||||
margin-right: calc(10% - 3rem);
|
||||
max-width: 55em;
|
||||
}
|
||||
}
|
||||
|
||||
/* 3 column layout */
|
||||
|
||||
@media (min-width: 100em) {
|
||||
main, header, footer {
|
||||
padding-left: 30%;
|
||||
}
|
||||
main > nav.contents {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
box-sizing: border-box;
|
||||
width: 25%;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
background-color: #fafaf6;
|
||||
padding: 5.5em 2%;
|
||||
overflow: auto;
|
||||
}
|
||||
main > nav.contents > * {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* wrap URLs */
|
||||
/* a:link { */
|
||||
/* white-space: normal; */
|
||||
/* hyphens: none; */
|
||||
/* } */
|
Loading…
Add table
Add a link
Reference in a new issue