first commit

This commit is contained in:
Yura 2024-09-15 15:12:16 +03:00
commit 417e54da96
5696 changed files with 900003 additions and 0 deletions

View file

@ -0,0 +1,353 @@
# $Id: __init__.py 9542 2024-02-17 10:37:23Z milde $
# Authors: Chris Liechti <cliechti@gmx.net>;
# David Goodger <goodger@python.org>
# Copyright: This module has been placed in the public domain.
"""
S5/HTML Slideshow Writer.
"""
__docformat__ = 'reStructuredText'
import sys
import os
import re
import docutils
from docutils import frontend, nodes, utils
from docutils.writers import html4css1
themes_dir_path = utils.relative_path(
os.path.join(os.getcwd(), 'dummy'),
os.path.join(os.path.dirname(__file__), 'themes'))
def find_theme(name):
# Where else to look for a theme?
# Check working dir? Destination dir? Config dir? Plugins dir?
path = os.path.join(themes_dir_path, name)
if not os.path.isdir(path):
raise docutils.ApplicationError(
'Theme directory not found: %r (path: %r)' % (name, path))
return path
class Writer(html4css1.Writer):
settings_spec = html4css1.Writer.settings_spec + (
'S5 Slideshow Specific Options',
'For the S5/HTML writer, the --no-toc-backlinks option '
'(defined in General Docutils Options above) is the default, '
'and should not be changed.',
(('Specify an installed S5 theme by name. Overrides --theme-url. '
'The default theme name is "default". The theme files will be '
'copied into a "ui/<theme>" directory, in the same directory as the '
'destination file (output HTML). Note that existing theme files '
'will not be overwritten (unless --overwrite-theme-files is used).',
['--theme'],
{'default': 'default', 'metavar': '<name>',
'overrides': 'theme_url'}),
('Specify an S5 theme URL. The destination file (output HTML) will '
'link to this theme; nothing will be copied. Overrides --theme.',
['--theme-url'],
{'metavar': '<URL>', 'overrides': 'theme'}),
('Allow existing theme files in the ``ui/<theme>`` directory to be '
'overwritten. The default is not to overwrite theme files.',
['--overwrite-theme-files'],
{'action': 'store_true', 'validator': frontend.validate_boolean}),
('Keep existing theme files in the ``ui/<theme>`` directory; do not '
'overwrite any. This is the default.',
['--keep-theme-files'],
{'dest': 'overwrite_theme_files', 'action': 'store_false'}),
('Set the initial view mode to "slideshow" [default] or "outline".',
['--view-mode'],
{'choices': ['slideshow', 'outline'], 'default': 'slideshow',
'metavar': '<mode>'}),
('Normally hide the presentation controls in slideshow mode. '
'This is the default.',
['--hidden-controls'],
{'action': 'store_true', 'default': True,
'validator': frontend.validate_boolean}),
('Always show the presentation controls in slideshow mode. '
'The default is to hide the controls.',
['--visible-controls'],
{'dest': 'hidden_controls', 'action': 'store_false'}),
('Enable the current slide indicator ("1 / 15"). '
'The default is to disable it.',
['--current-slide'],
{'action': 'store_true', 'validator': frontend.validate_boolean}),
('Disable the current slide indicator. This is the default.',
['--no-current-slide'],
{'dest': 'current_slide', 'action': 'store_false'}),))
settings_default_overrides = {'toc_backlinks': 0}
config_section = 's5_html writer'
config_section_dependencies = ('writers', 'html writers',
'html4css1 writer')
def __init__(self):
html4css1.Writer.__init__(self)
self.translator_class = S5HTMLTranslator
class S5HTMLTranslator(html4css1.HTMLTranslator):
s5_stylesheet_template = """\
<!-- configuration parameters -->
<meta name="defaultView" content="%(view_mode)s" />
<meta name="controlVis" content="%(control_visibility)s" />
<!-- style sheet links -->
<script src="%(path)s/slides.js" type="text/javascript"></script>
<link rel="stylesheet" href="%(path)s/slides.css"
type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="%(path)s/outline.css"
type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="%(path)s/print.css"
type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="%(path)s/opera.css"
type="text/css" media="projection" id="operaFix" />\n"""
# The script element must go in front of the link elements to
# avoid a flash of unstyled content (FOUC), reproducible with
# Firefox.
disable_current_slide = """
<style type="text/css">
#currentSlide {display: none;}
</style>\n"""
layout_template = """\
<div class="layout">
<div id="controls"></div>
<div id="currentSlide"></div>
<div id="header">
%(header)s
</div>
<div id="footer">
%(title)s%(footer)s
</div>
</div>\n"""
# <div class="topleft"></div>
# <div class="topright"></div>
# <div class="bottomleft"></div>
# <div class="bottomright"></div>
default_theme = 'default'
"""Name of the default theme."""
base_theme_file = '__base__'
"""Name of the file containing the name of the base theme."""
direct_theme_files = (
'slides.css', 'outline.css', 'print.css', 'opera.css', 'slides.js')
"""Names of theme files directly linked to in the output HTML"""
indirect_theme_files = (
's5-core.css', 'framing.css', 'pretty.css')
"""Names of files used indirectly; imported or used by files in
`direct_theme_files`."""
required_theme_files = indirect_theme_files + direct_theme_files
"""Names of mandatory theme files."""
def __init__(self, *args):
html4css1.HTMLTranslator.__init__(self, *args)
# insert S5-specific stylesheet and script stuff:
self.theme_file_path = None
try:
self.setup_theme()
except docutils.ApplicationError as e:
self.document.reporter.warning(e)
view_mode = self.document.settings.view_mode
control_visibility = ('visible', 'hidden')[self.document.settings
.hidden_controls]
self.stylesheet.append(self.s5_stylesheet_template
% {'path': self.theme_file_path,
'view_mode': view_mode,
'control_visibility': control_visibility})
if not self.document.settings.current_slide:
self.stylesheet.append(self.disable_current_slide)
self.meta.append('<meta name="version" content="S5 1.1" />\n')
self.s5_footer = []
self.s5_header = []
self.section_count = 0
self.theme_files_copied = None
def setup_theme(self):
if self.document.settings.theme:
self.copy_theme()
elif self.document.settings.theme_url:
self.theme_file_path = self.document.settings.theme_url
else:
raise docutils.ApplicationError(
'No theme specified for S5/HTML writer.')
def copy_theme(self):
"""
Locate & copy theme files.
A theme may be explicitly based on another theme via a '__base__'
file. The default base theme is 'default'. Files are accumulated
from the specified theme, any base themes, and 'default'.
"""
settings = self.document.settings
path = find_theme(settings.theme)
theme_paths = [path]
self.theme_files_copied = {}
required_files_copied = {}
# This is a link (URL) in HTML, so we use "/", not os.sep:
self.theme_file_path = 'ui/%s' % settings.theme
if not settings.output:
raise docutils.ApplicationError(
'Output path not specified, you may need to copy'
' the S5 theme files "by hand" or set the "--output" option.')
dest = os.path.join(
os.path.dirname(settings.output), 'ui', settings.theme)
if not os.path.isdir(dest):
os.makedirs(dest)
default = False
while path:
for f in os.listdir(path): # copy all files from each theme
if f == self.base_theme_file:
continue # ... except the "__base__" file
if (self.copy_file(f, path, dest)
and f in self.required_theme_files):
required_files_copied[f] = True
if default:
break # "default" theme has no base theme
# Find the "__base__" file in theme directory:
base_theme_file = os.path.join(path, self.base_theme_file)
# If it exists, read it and record the theme path:
if os.path.isfile(base_theme_file):
with open(base_theme_file, encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
line = line.strip()
if line and not line.startswith('#'):
path = find_theme(line)
if path in theme_paths: # check for duplicates/cycles
path = None # if found, use default base
else:
theme_paths.append(path)
break
else: # no theme name found
path = None # use default base
else: # no base theme file found
path = None # use default base
if not path:
path = find_theme(self.default_theme)
theme_paths.append(path)
default = True
if len(required_files_copied) != len(self.required_theme_files):
# Some required files weren't found & couldn't be copied.
required = list(self.required_theme_files)
for f in required_files_copied.keys():
required.remove(f)
raise docutils.ApplicationError(
'Theme files not found: %s'
% ', '.join('%r' % f for f in required))
files_to_skip_pattern = re.compile(r'~$|\.bak$|#$|\.cvsignore$')
def copy_file(self, name, source_dir, dest_dir):
"""
Copy file `name` from `source_dir` to `dest_dir`.
Return True if the file exists in either `source_dir` or `dest_dir`.
"""
source = os.path.join(source_dir, name)
dest = os.path.join(dest_dir, name)
if dest in self.theme_files_copied:
return True
else:
self.theme_files_copied[dest] = True
if os.path.isfile(source):
if self.files_to_skip_pattern.search(source):
return None
settings = self.document.settings
if os.path.exists(dest) and not settings.overwrite_theme_files:
settings.record_dependencies.add(dest)
else:
with open(source, 'rb') as src_file:
src_data = src_file.read()
with open(dest, 'wb') as dest_file:
dest_dir = dest_dir.replace(os.sep, '/')
dest_file.write(src_data.replace(
b'ui/default',
dest_dir[dest_dir.rfind('ui/'):].encode(
sys.getfilesystemencoding())))
settings.record_dependencies.add(source)
return True
if os.path.isfile(dest):
return True
def depart_document(self, node):
self.head_prefix.extend([self.doctype,
self.head_prefix_template %
{'lang': self.settings.language_code}])
self.html_prolog.append(self.doctype)
self.head = self.meta[:] + self.head
if self.math_header:
if self.math_output == 'mathjax':
self.head.extend(self.math_header)
else:
self.stylesheet.extend(self.math_header)
# skip content-type meta tag with interpolated charset value:
self.html_head.extend(self.head[1:])
self.fragment.extend(self.body)
# special S5 code up to the next comment line
header = ''.join(self.s5_header)
footer = ''.join(self.s5_footer)
title = ''.join(self.html_title).replace('<h1 class="title">', '<h1>')
layout = self.layout_template % {'header': header,
'title': title,
'footer': footer}
self.body_prefix.extend(layout)
self.body_prefix.append('<div class="presentation">\n')
self.body_prefix.append(
self.starttag({'classes': ['slide'], 'ids': ['slide0']}, 'div'))
if not self.section_count:
self.body.append('</div>\n')
#
self.body_suffix.insert(0, '</div>\n')
self.html_body.extend(self.body_prefix[1:] + self.body_pre_docinfo
+ self.docinfo + self.body
+ self.body_suffix[:-1])
def depart_footer(self, node):
start = self.context.pop()
self.s5_footer.append('<h2>')
self.s5_footer.extend(self.body[start:])
self.s5_footer.append('</h2>')
del self.body[start:]
def depart_header(self, node):
start = self.context.pop()
header = ['<div id="header">\n']
header.extend(self.body[start:])
header.append('\n</div>\n')
del self.body[start:]
self.s5_header.extend(header)
def visit_section(self, node):
if not self.section_count:
self.body.append('\n</div>\n')
self.section_count += 1
self.section_level += 1
if self.section_level > 1:
# dummy for matching div's
self.body.append(self.starttag(node, 'div', CLASS='section'))
else:
self.body.append(self.starttag(node, 'div', CLASS='slide'))
def visit_subtitle(self, node):
if isinstance(node.parent, nodes.section):
level = self.section_level + self.initial_header_level - 1
if level == 1:
level = 2
tag = 'h%s' % level
self.body.append(self.starttag(node, tag, ''))
self.context.append('</%s>\n' % tag)
else:
html4css1.HTMLTranslator.visit_subtitle(self, node)
def visit_title(self, node):
html4css1.HTMLTranslator.visit_title(self, node)

View file

@ -0,0 +1,6 @@
Except where otherwise noted, all files in this
directory have been released into the Public Domain.
These files are based on files from S5 1.1, released into the Public
Domain by Eric Meyer. For further details, please see
http://www.meyerweb.com/eric/tools/s5/credits.html.

View file

@ -0,0 +1,2 @@
# base theme of this theme:
big-white

View file

@ -0,0 +1,25 @@
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#header {top: 0; z-index: 1;}
div#footer {display:none;}
.slide {top: 0; width: 92%; padding: 0.1em 4% 4%; z-index: 2;}
/* list-style: none;} */
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em;
z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/

View file

@ -0,0 +1,109 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: black; color: white;}
:link, :visited {text-decoration: none; color: cyan;}
#controls :active {color: #888 !important;}
#controls :focus {outline: 1px dotted #CCC;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
.slide {font-size: 3em; font-family: sans-serif; font-weight: bold;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font-size: 120%;}
.slide h2 {font-size: 110%;}
.slide h3 {font-size: 105%;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #888; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: black; color: #CCC;}
#currentSlide {text-align: center; font-size: 0.5em; color: #AAA;
font-family: sans-serif; font-weight: bold;}
#slide0 h1 {position: static; margin: 0 0 0.5em; padding-top: 0.3em; top: 0;
font-size: 150%; white-space: normal; background: transparent;}
#slide0 h2 {font: 110%; font-style: italic; color: gray;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #FCC;}
.incremental, .incremental *, .incremental *:after {
color: black; visibility: visible; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: lime;}
.slide-display {display: inline ! important;}
.huge {font-size: 150%;}
.big {font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 0.5em 0 0.5em 1em;}
div.sidebar {background-color: black;}
pre.literal-block, pre.doctest-block {background-color: black;}
tt.docutils {background-color: black;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,24 @@
/* This file has been placed in the public domain. */
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#footer {display:none;}
.slide {top: 0; width: 92%; padding: 0.25em 4% 4%; z-index: 2;}
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em;
z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/

View file

@ -0,0 +1,107 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: white; color: black;}
:link, :visited {text-decoration: none; color: #00C;}
#controls :active {color: #88A !important;}
#controls :focus {outline: 1px dotted #227;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
.slide {font-size: 3em; font-family: sans-serif; font-weight: bold;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font-size: 120%;}
.slide h2 {font-size: 110%;}
.slide h3 {font-size: 105%;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #005; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: #DDD; color: #227;}
#currentSlide {text-align: center; font-size: 0.5em; color: #444;
font-family: sans-serif; font-weight: bold;}
#slide0 h1 {position: static; margin: 0 0 0.5em; padding-top: 0.3em; top: 0;
font-size: 150%; white-space: normal; background: transparent;}
#slide0 h2 {font: 110%; font-style: italic; color: gray;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #77B;}
.incremental, .incremental *, .incremental *:after {
color: white; visibility: visible; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: green;}
.slide-display {display: inline ! important;}
.huge {font-size: 150%;}
.big {font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 0.5em 0 0.5em 1em;}
pre.literal-block, pre.doctest-block {background-color: white;}
tt.docutils {background-color: white;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,25 @@
/* This file has been placed in the public domain. */
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#header {position: fixed; top: 0; height: 3em; z-index: 1;}
div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
.slide {top: 0; width: 92%; padding: 2.5em 4% 4%; z-index: 2;}
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em;
z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/

View file

@ -0,0 +1,8 @@
/* This file has been placed in the public domain. */
/* DO NOT CHANGE THESE unless you really want to break Opera Show */
.slide {
visibility: visible !important;
position: static !important;
page-break-before: always;
}
#slide0 {page-break-before: avoid;}

View file

@ -0,0 +1,16 @@
/* This file has been placed in the public domain. */
/* Don't change this unless you want the layout stuff to show up in the
outline view! */
.layout div, #footer *, #controlForm * {display: none;}
#footer, #controls, #controlForm, #navLinks, #toggle {
display: block; visibility: visible; margin: 0; padding: 0;}
#toggle {float: right; padding: 0.5em;}
html>body #toggle {position: fixed; top: 0; right: 0;}
/* making the outline look pretty-ish */
#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
.outline {display: inline ! important;}

View file

@ -0,0 +1,120 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: white; color: black;}
/* Replace the background style above with the style below (and again for
div#header) for a graphic: */
/* background: white url(bodybg.gif) -16px 0 no-repeat; */
:link, :visited {text-decoration: none; color: #00C;}
#controls :active {color: #88A !important;}
#controls :focus {outline: 1px dotted #227;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
div#header, div#footer {background: #005; color: #AAB; font-family: sans-serif;}
/* background: #005 url(bodybg.gif) -16px 0 no-repeat; */
div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
#footer h1 {display: block; padding: 0 1em;}
#footer h2 {display: block; padding: 0.8em 1em 0;}
.slide {font-size: 1.2em;}
.slide h1 {position: absolute; top: 0.45em; z-index: 1;
margin: 0; padding-left: 0.7em; white-space: nowrap;
font: bold 150% sans-serif; color: #DDE; background: #005;}
.slide h2 {font: bold 120%/1em sans-serif; padding-top: 0.5em;}
.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
background: #005; border: none; color: #779; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: #DDD; color: #227;}
#currentSlide {text-align: center; font-size: 0.5em; color: #449;
font-family: sans-serif; font-weight: bold;}
#slide0 {padding-top: 1.5em}
#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; color: #000;
font: bold 2em sans-serif; white-space: normal; background: transparent;}
#slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #77B;}
.incremental, .incremental *, .incremental *:after {visibility: visible;
color: white; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: green;}
.slide-display {display: inline ! important;}
.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;}
.big {font-family: sans-serif; font-weight: bold; font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 1em 0 0.5em 2em;}
pre.literal-block, pre.doctest-block {background-color: white;}
tt.docutils {background-color: white;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,24 @@
/* This file has been placed in the public domain. */
/* The following rule is necessary to have all slides appear in print!
DO NOT REMOVE IT! */
.slide, ul {page-break-inside: avoid; visibility: visible !important;}
h1 {page-break-after: avoid;}
body {font-size: 12pt; background: white;}
* {color: black;}
#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
#slide0 h3 {margin: 0; padding: 0;}
#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
#slide0 {margin-bottom: 3em;}
#header {display: none;}
#footer h1 {margin: 0; border-bottom: 1px solid; color: gray;
font-style: italic;}
#footer h2, #controls {display: none;}
.print {display: inline ! important;}
/* The following rule keeps the layout stuff out of print.
Remove at your own risk! */
.layout, .layout * {display: none !important;}

View file

@ -0,0 +1,11 @@
/* This file has been placed in the public domain. */
/* Do not edit or override these styles!
The system will likely break if you do. */
div#header, div#footer, div#controls, .slide {position: absolute;}
html>body div#header, html>body div#footer,
html>body div#controls, html>body .slide {position: fixed;}
.handout {display: none;}
.layout {display: block;}
.slide, .hideme, .incremental {visibility: hidden;}
#slide0 {visibility: visible;}

View file

@ -0,0 +1,10 @@
/* This file has been placed in the public domain. */
/* required to make the slide show run at all */
@import url(s5-core.css);
/* sets basic placement and size of slide components */
@import url(framing.css);
/* styles that make the slides look good */
@import url(pretty.css);

View file

@ -0,0 +1,558 @@
// S5 v1.1 slides.js -- released into the Public Domain
// Modified for Docutils (https://docutils.sourceforge.io) by David Goodger
//
// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for
// information about all the wonderful and talented contributors to this code!
var undef;
var slideCSS = '';
var snum = 0;
var smax = 1;
var slideIDs = new Array();
var incpos = 0;
var number = undef;
var s5mode = true;
var defaultView = 'slideshow';
var controlVis = 'visible';
var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0;
var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
function hasClass(object, className) {
if (!object.className) return false;
return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
}
function hasValue(object, value) {
if (!object) return false;
return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
}
function removeClass(object,className) {
if (!object) return;
object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
}
function addClass(object,className) {
if (!object || hasClass(object, className)) return;
if (object.className) {
object.className += ' '+className;
} else {
object.className = className;
}
}
function GetElementsWithClassName(elementName,className) {
var allElements = document.getElementsByTagName(elementName);
var elemColl = new Array();
for (var i = 0; i< allElements.length; i++) {
if (hasClass(allElements[i], className)) {
elemColl[elemColl.length] = allElements[i];
}
}
return elemColl;
}
function isParentOrSelf(element, id) {
if (element == null || element.nodeName=='BODY') return false;
else if (element.id == id) return true;
else return isParentOrSelf(element.parentNode, id);
}
function nodeValue(node) {
var result = "";
if (node.nodeType == 1) {
var children = node.childNodes;
for (var i = 0; i < children.length; ++i) {
result += nodeValue(children[i]);
}
}
else if (node.nodeType == 3) {
result = node.nodeValue;
}
return(result);
}
function slideLabel() {
var slideColl = GetElementsWithClassName('*','slide');
var list = document.getElementById('jumplist');
smax = slideColl.length;
for (var n = 0; n < smax; n++) {
var obj = slideColl[n];
var did = 'slide' + n.toString();
if (obj.getAttribute('id')) {
slideIDs[n] = obj.getAttribute('id');
}
else {
obj.setAttribute('id',did);
slideIDs[n] = did;
}
if (isOp) continue;
var otext = '';
var menu = obj.firstChild;
if (!menu) continue; // to cope with empty slides
while (menu && menu.nodeType == 3) {
menu = menu.nextSibling;
}
if (!menu) continue; // to cope with slides with only text nodes
var menunodes = menu.childNodes;
for (var o = 0; o < menunodes.length; o++) {
otext += nodeValue(menunodes[o]);
}
list.options[list.length] = new Option(n + ' : ' + otext, n);
}
}
function currentSlide() {
var cs;
var footer_nodes;
var vis = 'visible';
if (document.getElementById) {
cs = document.getElementById('currentSlide');
footer_nodes = document.getElementById('footer').childNodes;
} else {
cs = document.currentSlide;
footer = document.footer.childNodes;
}
cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +
'<span id="csSep">\/<\/span> ' +
'<span id="csTotal">' + (smax-1) + '<\/span>';
if (snum == 0) {
vis = 'hidden';
}
cs.style.visibility = vis;
for (var i = 0; i < footer_nodes.length; i++) {
if (footer_nodes[i].nodeType == 1) {
footer_nodes[i].style.visibility = vis;
}
}
}
function go(step) {
if (document.getElementById('slideProj').disabled || step == 0) return;
var jl = document.getElementById('jumplist');
var cid = slideIDs[snum];
var ce = document.getElementById(cid);
if (incrementals[snum].length > 0) {
for (var i = 0; i < incrementals[snum].length; i++) {
removeClass(incrementals[snum][i], 'current');
removeClass(incrementals[snum][i], 'incremental');
}
}
if (step != 'j') {
snum += step;
lmax = smax - 1;
if (snum > lmax) snum = lmax;
if (snum < 0) snum = 0;
} else
snum = parseInt(jl.value);
var nid = slideIDs[snum];
var ne = document.getElementById(nid);
if (!ne) {
ne = document.getElementById(slideIDs[0]);
snum = 0;
}
if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
if (incrementals[snum].length > 0 && incpos == 0) {
for (var i = 0; i < incrementals[snum].length; i++) {
if (hasClass(incrementals[snum][i], 'current'))
incpos = i + 1;
else
addClass(incrementals[snum][i], 'incremental');
}
}
if (incrementals[snum].length > 0 && incpos > 0)
addClass(incrementals[snum][incpos - 1], 'current');
ce.style.visibility = 'hidden';
ne.style.visibility = 'visible';
jl.selectedIndex = snum;
currentSlide();
number = 0;
}
function goTo(target) {
if (target >= smax || target == snum) return;
go(target - snum);
}
function subgo(step) {
if (step > 0) {
removeClass(incrementals[snum][incpos - 1],'current');
removeClass(incrementals[snum][incpos], 'incremental');
addClass(incrementals[snum][incpos],'current');
incpos++;
} else {
incpos--;
removeClass(incrementals[snum][incpos],'current');
addClass(incrementals[snum][incpos], 'incremental');
addClass(incrementals[snum][incpos - 1],'current');
}
}
function toggle() {
var slideColl = GetElementsWithClassName('*','slide');
var slides = document.getElementById('slideProj');
var outline = document.getElementById('outlineStyle');
if (!slides.disabled) {
slides.disabled = true;
outline.disabled = false;
s5mode = false;
fontSize('1em');
for (var n = 0; n < smax; n++) {
var slide = slideColl[n];
slide.style.visibility = 'visible';
}
} else {
slides.disabled = false;
outline.disabled = true;
s5mode = true;
fontScale();
for (var n = 0; n < smax; n++) {
var slide = slideColl[n];
slide.style.visibility = 'hidden';
}
slideColl[snum].style.visibility = 'visible';
}
}
function showHide(action) {
var obj = GetElementsWithClassName('*','hideme')[0];
switch (action) {
case 's': obj.style.visibility = 'visible'; break;
case 'h': obj.style.visibility = 'hidden'; break;
case 'k':
if (obj.style.visibility != 'visible') {
obj.style.visibility = 'visible';
} else {
obj.style.visibility = 'hidden';
}
break;
}
}
// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
function keys(key) {
if (!key) {
key = event;
key.which = key.keyCode;
}
if (key.which == 84) {
toggle();
return;
}
if (s5mode) {
switch (key.which) {
case 10: // return
case 13: // enter
if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
if (key.target && isParentOrSelf(key.target, 'controls')) return;
if(number != undef) {
goTo(number);
break;
}
case 32: // spacebar
case 34: // page down
case 39: // rightkey
case 40: // downkey
if(number != undef) {
go(number);
} else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
go(1);
} else {
subgo(1);
}
break;
case 33: // page up
case 37: // leftkey
case 38: // upkey
if(number != undef) {
go(-1 * number);
} else if (!incrementals[snum] || incpos <= 0) {
go(-1);
} else {
subgo(-1);
}
break;
case 36: // home
goTo(0);
break;
case 35: // end
goTo(smax-1);
break;
case 67: // c
showHide('k');
break;
}
if (key.which < 48 || key.which > 57) {
number = undef;
} else {
if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
if (key.target && isParentOrSelf(key.target, 'controls')) return;
number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
}
}
return false;
}
function clicker(e) {
number = undef;
var target;
if (window.event) {
target = window.event.srcElement;
e = window.event;
} else target = e.target;
if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target, 'object')) return true;
if (!e.which || e.which == 1) {
if (!incrementals[snum] || incpos >= incrementals[snum].length) {
go(1);
} else {
subgo(1);
}
}
}
function findSlide(hash) {
var target = document.getElementById(hash);
if (target) {
for (var i = 0; i < slideIDs.length; i++) {
if (target.id == slideIDs[i]) return i;
}
}
return null;
}
function slideJump() {
if (window.location.hash == null || window.location.hash == '') {
currentSlide();
return;
}
if (window.location.hash == null) return;
var dest = null;
dest = findSlide(window.location.hash.slice(1));
if (dest == null) {
dest = 0;
}
go(dest - snum);
}
function fixLinks() {
var thisUri = window.location.href;
thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
var aelements = document.getElementsByTagName('A');
for (var i = 0; i < aelements.length; i++) {
var a = aelements[i].href;
var slideID = a.match('\#.+');
if ((slideID) && (slideID[0].slice(0,1) == '#')) {
var dest = findSlide(slideID[0].slice(1));
if (dest != null) {
if (aelements[i].addEventListener) {
aelements[i].addEventListener("click", new Function("e",
"if (document.getElementById('slideProj').disabled) return;" +
"go("+dest+" - snum); " +
"if (e.preventDefault) e.preventDefault();"), true);
} else if (aelements[i].attachEvent) {
aelements[i].attachEvent("onclick", new Function("",
"if (document.getElementById('slideProj').disabled) return;" +
"go("+dest+" - snum); " +
"event.returnValue = false;"));
}
}
}
}
}
function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName('a');
for (var i=0; i<anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
anchor.target = '_blank';
addClass(anchor,'external');
}
}
}
function createControls() {
var controlsDiv = document.getElementById("controls");
if (!controlsDiv) return;
var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
var hideDiv, hideList = '';
if (controlVis == 'hidden') {
hideDiv = hider;
} else {
hideList = hider;
}
controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
'<div id="navLinks">' +
'<a accesskey="t" id="toggle" href="javascript:toggle();">&#216;<\/a>' +
'<a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;<\/a>' +
'<a accesskey="x" id="next" href="javascript:go(1);">&raquo;<\/a>' +
'<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
'<\/div><\/form>';
if (controlVis == 'hidden') {
var hidden = document.getElementById('navLinks');
} else {
var hidden = document.getElementById('jumplist');
}
addClass(hidden,'hideme');
}
function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
if (!s5mode) return false;
var vScale = 22; // both yield 32 (after rounding) at 1024x768
var hScale = 32; // perhaps should auto-calculate based on theme's declared value?
if (window.innerHeight) {
var vSize = window.innerHeight;
var hSize = window.innerWidth;
} else if (document.documentElement.clientHeight) {
var vSize = document.documentElement.clientHeight;
var hSize = document.documentElement.clientWidth;
} else if (document.body.clientHeight) {
var vSize = document.body.clientHeight;
var hSize = document.body.clientWidth;
} else {
var vSize = 700; // assuming 1024x768, minus chrome and such
var hSize = 1024; // these do not account for kiosk mode or Opera Show
}
var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
fontSize(newSize + 'px');
if (isGe) { // hack to counter incremental reflow bugs
var obj = document.getElementsByTagName('body')[0];
obj.style.display = 'none';
obj.style.display = 'block';
}
}
function fontSize(value) {
if (!(s5ss = document.getElementById('s5ss'))) {
if (!isIE) {
document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
s5ss.setAttribute('media','screen, projection');
s5ss.setAttribute('id','s5ss');
} else {
document.createStyleSheet();
document.s5ss = document.styleSheets[document.styleSheets.length - 1];
}
}
if (!isIE) {
while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));
} else {
document.s5ss.addRule('body','font-size: ' + value + ' !important;');
}
}
function notOperaFix() {
slideCSS = document.getElementById('slideProj').href;
var slides = document.getElementById('slideProj');
var outline = document.getElementById('outlineStyle');
slides.setAttribute('media','screen');
outline.disabled = true;
if (isGe) {
slides.setAttribute('href','null'); // Gecko fix
slides.setAttribute('href',slideCSS); // Gecko fix
}
if (isIE && document.styleSheets && document.styleSheets[0]) {
document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
}
}
function getIncrementals(obj) {
var incrementals = new Array();
if (!obj)
return incrementals;
var children = obj.childNodes;
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (hasClass(child, 'incremental')) {
if (child.nodeName == 'OL' || child.nodeName == 'UL') {
removeClass(child, 'incremental');
for (var j = 0; j < child.childNodes.length; j++) {
if (child.childNodes[j].nodeType == 1) {
addClass(child.childNodes[j], 'incremental');
}
}
} else {
incrementals[incrementals.length] = child;
removeClass(child,'incremental');
}
}
if (hasClass(child, 'show-first')) {
if (child.nodeName == 'OL' || child.nodeName == 'UL') {
removeClass(child, 'show-first');
if (child.childNodes[isGe].nodeType == 1) {
removeClass(child.childNodes[isGe], 'incremental');
}
} else {
incrementals[incrementals.length] = child;
}
}
incrementals = incrementals.concat(getIncrementals(child));
}
return incrementals;
}
function createIncrementals() {
var incrementals = new Array();
for (var i = 0; i < smax; i++) {
incrementals[i] = getIncrementals(document.getElementById(slideIDs[i]));
}
return incrementals;
}
function defaultCheck() {
var allMetas = document.getElementsByTagName('meta');
for (var i = 0; i< allMetas.length; i++) {
if (allMetas[i].name == 'defaultView') {
defaultView = allMetas[i].content;
}
if (allMetas[i].name == 'controlVis') {
controlVis = allMetas[i].content;
}
}
}
// Key trap fix, new function body for trap()
function trap(e) {
if (!e) {
e = event;
e.which = e.keyCode;
}
try {
modifierKey = e.ctrlKey || e.altKey || e.metaKey;
}
catch(e) {
modifierKey = false;
}
return modifierKey || e.which == 0;
}
function startup() {
defaultCheck();
if (!isOp) createControls();
slideLabel();
fixLinks();
externalLinks();
fontScale();
if (!isOp) {
notOperaFix();
incrementals = createIncrementals();
slideJump();
if (defaultView == 'outline') {
toggle();
}
document.onkeyup = keys;
document.onkeypress = trap;
document.onclick = clicker;
}
}
window.onload = startup;
window.onresize = function(){setTimeout('fontScale()', 50);}

View file

@ -0,0 +1,2 @@
# base theme of this theme:
medium-white

View file

@ -0,0 +1,115 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: black; color: white;}
:link, :visited {text-decoration: none; color: cyan;}
#controls :active {color: #888 !important;}
#controls :focus {outline: 1px dotted #CCC;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
div#footer {font-family: sans-serif; color: #AAA;
font-size: 0.5em; font-weight: bold; padding: 1em 0;}
#footer h1 {display: block; padding: 0 1em;}
#footer h2 {display: block; padding: 0.8em 1em 0;}
.slide {font-size: 1.75em;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font: bold 150% sans-serif;}
.slide h2 {font: bold 125% sans-serif; padding-top: 0.5em;}
.slide h3 {font: bold 110% sans-serif; padding-top: 0.5em;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #888; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: black; color: #CCC;}
#currentSlide {text-align: center; font-size: 0.5em; color: #AAA;
font-family: sans-serif; font-weight: bold;}
#slide0 h1 {position: static; margin: 0 0 0.5em; padding-top: 1em; top: 0;
font: bold 150% sans-serif; white-space: normal; background: transparent;}
#slide0 h2 {font: bold italic 125% sans-serif; color: gray;}
#slide0 h3 {margin-top: 1.5em; font: bold 110% sans-serif;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #FCC;}
.incremental, .incremental *, .incremental *:after {
color: black; visibility: visible; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: lime;}
.slide-display {display: inline ! important;}
.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;}
.big {font-family: sans-serif; font-weight: bold; font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 0.5em 0 0.5em 1em;}
div.sidebar {background-color: black;}
pre.literal-block, pre.doctest-block {background-color: black;}
tt.docutils {background-color: black;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,24 @@
/* This file has been placed in the public domain. */
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
.slide {top: 0; width: 92%; padding: 0.75em 4% 0 4%; z-index: 2;}
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em;
z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/

View file

@ -0,0 +1,113 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: white; color: black;}
:link, :visited {text-decoration: none; color: #00C;}
#controls :active {color: #888 !important;}
#controls :focus {outline: 1px dotted #222;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
div#footer {font-family: sans-serif; color: #444;
font-size: 0.5em; font-weight: bold; padding: 1em 0;}
#footer h1 {display: block; padding: 0 1em;}
#footer h2 {display: block; padding: 0.8em 1em 0;}
.slide {font-size: 1.75em;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font: bold 150% sans-serif;}
.slide h2 {font: bold 125% sans-serif; padding-top: 0.5em;}
.slide h3 {font: bold 110% sans-serif; padding-top: 0.5em;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #888; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: #DDD; color: #222;}
#currentSlide {text-align: center; font-size: 0.5em; color: #444;
font-family: sans-serif; font-weight: bold;}
#slide0 h1 {position: static; margin: 0 0 0.5em; padding-top: 1em; top: 0;
font: bold 150% sans-serif; white-space: normal; background: transparent;}
#slide0 h2 {font: bold italic 125% sans-serif; color: gray;}
#slide0 h3 {margin-top: 1.5em; font: bold 110% sans-serif;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #77B;}
.incremental, .incremental *, .incremental *:after {
color: white; visibility: visible; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: green;}
.slide-display {display: inline ! important;}
.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;}
.big {font-family: sans-serif; font-weight: bold; font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 0.5em 0 0.5em 1em;}
pre.literal-block, pre.doctest-block {background-color: white;}
tt.docutils {background-color: white;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,2 @@
# base theme of this theme:
small-white

View file

@ -0,0 +1,116 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: black; color: white;}
:link, :visited {text-decoration: none; color: cyan;}
#controls :active {color: #888 !important;}
#controls :focus {outline: 1px dotted #CCC;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
div#footer {font-family: sans-serif; color: #AAA;
font-size: 0.5em; font-weight: bold; padding: 1em 0;}
#footer h1 {display: block; padding: 0 1em;}
#footer h2 {display: block; padding: 0.8em 1em 0;}
.slide {font-size: 1.2em;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font: bold 150% sans-serif;}
.slide h2 {font: bold 120% sans-serif; padding-top: 0.5em;}
.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #888; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: black; color: #CCC;}
#currentSlide {text-align: center; font-size: 0.5em; color: #AAA;
font-family: sans-serif; font-weight: bold;}
#slide0 {padding-top: 0em}
#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
font: bold 2em sans-serif; white-space: normal; background: transparent;}
#slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #FCC;}
.incremental, .incremental *, .incremental *:after {
color: black; visibility: visible; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: lime;}
.slide-display {display: inline ! important;}
.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;}
.big {font-family: sans-serif; font-weight: bold; font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 1em 0 0.5em 2em;}
div.sidebar {background-color: black;}
pre.literal-block, pre.doctest-block {background-color: black;}
tt.docutils {background-color: black;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/

View file

@ -0,0 +1,24 @@
/* This file has been placed in the public domain. */
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
.slide {top: 0; width: 92%; padding: 1em 4% 0 4%; z-index: 2;}
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em;
z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/

View file

@ -0,0 +1,114 @@
/* This file has been placed in the public domain. */
/* Following are the presentation styles -- edit away! */
html, body {margin: 0; padding: 0;}
body {background: white; color: black;}
:link, :visited {text-decoration: none; color: #00C;}
#controls :active {color: #888 !important;}
#controls :focus {outline: 1px dotted #222;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;}
blockquote p {margin: 0;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;}
.slide ul ul li {list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
.slide tt {font-size: 90%;}
div#footer {font-family: sans-serif; color: #444;
font-size: 0.5em; font-weight: bold; padding: 1em 0;}
#footer h1 {display: block; padding: 0 1em;}
#footer h2 {display: block; padding: 0.8em 1em 0;}
.slide {font-size: 1.2em;}
.slide h1 {padding-top: 0; z-index: 1; margin: 0; font: bold 150% sans-serif;}
.slide h2 {font: bold 120% sans-serif; padding-top: 0.5em;}
.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%; text-align: right; font: bold 0.9em sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
border: none; color: #888; cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0;
background: #DDD; color: #222;}
#currentSlide {text-align: center; font-size: 0.5em; color: #444;
font-family: sans-serif; font-weight: bold;}
#slide0 {padding-top: 0em}
#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
font: bold 2em sans-serif; white-space: normal; background: transparent;}
#slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
.external:after {content: " \274F"; font-size: smaller; color: #77B;}
.incremental, .incremental *, .incremental *:after {
color: white; visibility: visible; border: 0; border: 0;}
img.incremental {visibility: hidden;}
.slide .current {color: green;}
.slide-display {display: inline ! important;}
.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;}
.big {font-family: sans-serif; font-weight: bold; font-size: 120%;}
.small {font-size: 75%;}
.tiny {font-size: 50%;}
.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;}
.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;}
.maroon {color: maroon;}
.red {color: red;}
.magenta {color: magenta;}
.fuchsia {color: fuchsia;}
.pink {color: #FAA;}
.orange {color: orange;}
.yellow {color: yellow;}
.lime {color: lime;}
.green {color: green;}
.olive {color: olive;}
.teal {color: teal;}
.cyan {color: cyan;}
.aqua {color: aqua;}
.blue {color: blue;}
.navy {color: navy;}
.purple {color: purple;}
.black {color: black;}
.gray {color: gray;}
.silver {color: silver;}
.white {color: white;}
.left {text-align: left ! important;}
.center {text-align: center ! important;}
.right {text-align: right ! important;}
.animation {position: relative; margin: 1em 0; padding: 0;}
.animation img {position: absolute;}
/* Docutils-specific overrides */
.slide table.docinfo {margin: 1em 0 0.5em 2em;}
pre.literal-block, pre.doctest-block {background-color: white;}
tt.docutils {background-color: white;}
/* diagnostics */
/*
li:after {content: " [" attr(class) "]"; color: #F88;}
div:before {content: "[" attr(class) "]"; color: #F88;}
*/