├── _templates ├── sidebar_links.html ├── sidebar_news.html └── navbar.html ├── logos ├── banner.png └── banner.svg ├── UTMOST_original_proposal.pdf ├── .gitignore ├── UTMOST_proposal_supplement.pdf ├── contact.rst ├── citing.rst ├── themes └── agogo │ ├── theme.conf │ ├── layout.html │ └── static │ └── agogo.css_t ├── .htaccess ├── Makefile ├── index.rst ├── materials.rst ├── about.rst ├── othernews.rst ├── _scripts ├── copy_trees.py └── gh-pages.py ├── conf.py └── news.rst /_templates/sidebar_links.html: -------------------------------------------------------------------------------- 1 | {%- block sidebarlinks %} 2 | {%- endblock %} 3 | -------------------------------------------------------------------------------- /logos/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sagemath/utmost-website/master/logos/banner.png -------------------------------------------------------------------------------- /UTMOST_original_proposal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sagemath/utmost-website/master/UTMOST_original_proposal.pdf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _build 2 | gh-pages 3 | sphinxext 4 | 5 | *.pdf 6 | *.ppt 7 | *.odp 8 | 9 | *~ 10 | .build/* 11 | -------------------------------------------------------------------------------- /UTMOST_proposal_supplement.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sagemath/utmost-website/master/UTMOST_proposal_supplement.pdf -------------------------------------------------------------------------------- /_templates/sidebar_news.html: -------------------------------------------------------------------------------- 1 | {%- block sidebarnews %} 2 | 3 | {%- endblock %} 4 | -------------------------------------------------------------------------------- /contact.rst: -------------------------------------------------------------------------------- 1 | 2 | ============ 3 | Contact Us 4 | ============ 5 | 6 | .. after-header 7 | 8 | To contact the UTMOST team, email utmost@aimath.org. 9 | 10 | -------------------------------------------------------------------------------- /citing.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Citing UTMOST 3 | ============= 4 | 5 | If UTMOST has been significant to a project, please acknowledge that 6 | fact by citing the UTMOST project. 7 | 8 | .. todo:: Put in citation information 9 | -------------------------------------------------------------------------------- /_templates/navbar.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /themes/agogo/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = agogo.css 4 | pygments_style = tango 5 | 6 | [options] 7 | bodyfont = "Verdana", Arial, sans-serif 8 | pagewidth = 70em 9 | documentwidth = 55em 10 | sidebarwidth = 14em 11 | bgcolor = white 12 | headerbg = url(bgtop.png) top left repeat-x 13 | footerbg = url(bgfooter.png) top left repeat-x 14 | linkcolor = #ce5c00 15 | headercolor1 = #001873 16 | headercolor2 = #3465a4 17 | headerlinkcolor = #fcaf3e 18 | textalign = justify 19 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | # By default, Dreamhost will treat .py files as cgi scripts, whereas I'm not 2 | # running any python CGI code here. It's therefore OK to set .py to be plain 3 | # text everywhere, by making this the site top-level .htaccess file. 4 | # 5 | # If I ever start using .py cgi scripts, I can always make a directory-specific 6 | # .htaccess file that makes the .py handler be the cgi one. 7 | 8 | # This sets up the *server* side handler for python files. 9 | AddHandler default-handler .py 10 | # This tells the *clients* to treat python files as plain text (MIME type) 11 | AddType text/plain .py 12 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #h Makefile for building a website using sphinx. 2 | # This Makefile has been heavily modified from the original that 3 | # sphinx-quickstart automatically creates 4 | 5 | # You can set these variables from the command line. 6 | SPHINXOPTS = 7 | SPHINXBUILD = sphinx-build 8 | BUILDDIR = _build 9 | SOURCEDIR = . 10 | 11 | # Other variables for site management, css updating, etc. 12 | STATICDIR = _static 13 | STATIC_CSS = themes/agogo/static 14 | 15 | # Internal variables. 16 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) $(SOURCEDIR) 17 | 18 | .PHONY: help clean html site linkcheck doctest upload dist 19 | 20 | default: site 21 | 22 | help: 23 | @echo "Please use \`make ' where is one of" 24 | @echo " html : make standalone HTML files" 25 | @echo " linkcheck: check all external links for integrity" 26 | @echo " doctest : run all doctests embedded in the documentation (if enabled)" 27 | @echo " upload : push the local site build to its public location" 28 | @echo " dist : create a tarball (no .git dir) of site" 29 | 30 | clean: 31 | -rm -rf $(BUILDDIR)/* 32 | -rm -f *~ 33 | 34 | html: 35 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 36 | @echo 37 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 38 | 39 | 40 | linkcheck: site 41 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 42 | @echo 43 | @echo "Link check complete; look for any errors in the above output " \ 44 | "or in $(BUILDDIR)/linkcheck/output.txt." 45 | 46 | doctest: 47 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 48 | @echo "Testing of doctests in the sources finished, look at the " \ 49 | "results in $(BUILDDIR)/doctest/output.txt." 50 | 51 | # fperez - new targets I've added after sphinx-quickstart 52 | site: html 53 | python _scripts/copy_trees.py 54 | 55 | # Copy changes to the repo from which they are served 56 | gh-pages: site 57 | python _scripts/gh-pages.py 58 | 59 | uploadscp: site 60 | scp -r _build/html utmost@aimath.org:www/utmost.aimath.org/htdocs 61 | 62 | upload: site 63 | rsync -zrave ssh --delete _build/html/ utmost@aimath.org:www/utmost.aimath.org/htdocs/ 64 | -------------------------------------------------------------------------------- /themes/agogo/layout.html: -------------------------------------------------------------------------------- 1 | {# 2 | agogo/layout.html 3 | ~~~~~~~~~~~~~~~~~ 4 | 5 | Sphinx layout template for the agogo theme, originally written 6 | by Andi Albrecht. 7 | 8 | :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. 9 | :license: BSD, see LICENSE for details. 10 | #} 11 | {% extends "basic/layout.html" %} 12 | 13 | 14 | {% block header %} 15 |
16 | 26 |
27 | {%- block headertitle %} 28 | 29 | {%- if logo %} 30 | 33 | {%- endif %} 34 | {#

{{ shorttitle|e }}

#} 35 | {%- endblock %} 36 |
37 | {% include 'navbar.html' %} 38 |
39 |
40 |
41 | {% endblock %} 42 | 43 | 44 | 45 | {% block content %} 46 |
47 |
48 | {%- block sidebar2 %} 49 | 57 | {% endblock %} 58 |
59 | {%- block document %} 60 | {{ super() }} 61 | {%- endblock %} 62 |
63 |
64 |
65 |
66 | {% endblock %} 67 | 68 | {% block footer %} 69 | 72 | {% endblock %} 73 | 74 | {% block relbar1 %}{% endblock %} 75 | 76 | {% block relbar2 %}{% endblock %} 77 | -------------------------------------------------------------------------------- /index.rst: -------------------------------------------------------------------------------- 1 | .. toctree:: 2 | :hidden: 3 | :maxdepth: 2 4 | 5 | Home 6 | news 7 | About Us 8 | materials 9 | citing 10 | Contact Us 11 | othernews 12 | 13 | ======= 14 | Welcome 15 | ======= 16 | 17 | The UTMOST project is a CCLI Type 2 grant that promotes open-source 18 | software and open-source curriculum in the undergraduate mathematics classroom. For more details and the proposal, see the :doc:`About Us ` page. 19 | 20 | Components 21 | ---------- 22 | 23 | * `SageMathCloud `_: a comprehensive cloud 24 | computing environment for education and scientific computing 25 | * `Sage Cell Server `_: embed live 26 | computations into any webpage 27 | * `MathBook XML `_: a framework for 28 | writing mathematical material to publish in a variety 29 | of formats 30 | * `Sage Education Workshops 31 | `_: workshops for 32 | learning how to use Sage in education 33 | * `AIM Open Textbook Initiative `_: 34 | quality open-source textbooks 35 | 36 | 37 | Freely-available open software, open textbooks, and other open 38 | curricular materials can allow teachers everywhere to transform the 39 | undergraduate mathematics curriculum by tightly and seamlessly 40 | integrating mathematics software with more traditional curricular 41 | materials. 42 | 43 | 44 | .. raw:: html 45 | 46 |
47 | 48 | Open Software 49 | ------------- 50 | 51 | We integrate `Sage `_ directly into open course materials. 52 | 53 | * costly and time-consuming commercial licenses avoided 54 | * curriculum steers software development 55 | * usable anytime, anywhere, with just a web browser 56 | 57 | .. raw:: html 58 | 59 | 60 | 61 | Open Textbooks 62 | -------------- 63 | 64 | Open course materials are freely available to anyone, anywhere. 65 | 66 | * freely change and adapt course textbooks and materials 67 | * freely distribute original or adapted textbooks and materials 68 | * integrate technology easily 69 | 70 | .. raw:: html 71 | 72 |
73 | 74 | News 75 | ---- 76 | 77 | .. include:: news.rst 78 | :start-after: begin-recent-news 79 | :end-before: end-recent-news 80 | 81 | :doc:`More news... ` 82 | 83 | 84 | Contact Us 85 | ---------- 86 | .. include:: contact.rst 87 | :start-after: after-header 88 | 89 | .. possibilities for images: http://en.wikipedia.org/wiki/File:Big_Book_blue.svg 90 | 91 | -------------------------------------------------------------------------------- /materials.rst: -------------------------------------------------------------------------------- 1 | 2 | 3 | ==================== 4 | Curricular Materials 5 | ==================== 6 | 7 | Website 8 | ------- 9 | 10 | The `Sage Interact `_ website provides 11 | an easy way to share Sage interacts and files with the Sage community. 12 | Comments, personal bookmarks, tags, and ratings help organize the 13 | resources. Feel free to create an account and upload your favorite 14 | Sage examples! 15 | 16 | 17 | Textbooks 18 | --------- 19 | 20 | `Abstract Algebra: Theory and Applications `_ by Tom Judson 21 | Abstract Algebra: Theory and Applications is an open-source textbook 22 | written by Tom Judson that is designed to teach the principles and 23 | theory of abstract algebra to college juniors and seniors in a 24 | rigorous manner. Its strengths include a wide range of exercises, both 25 | computational and theoretical, plus many nontrivial applications. 26 | 27 | The first half of the book presents group theory, through the Sylow 28 | theorems, with enough material for a semester-long course. The 29 | second-half is suitable for a second semester and presents rings, 30 | integral domains, Boolean algebras, vector spaces, and fields, 31 | concluding with Galois Theory. 32 | 33 | 34 | `A First Course in Linear Algebra `_ by Rob Beezer 35 | :t:`A First Course in Linear Algebra` is an introductory textbook 36 | designed for university sophomores and juniors. Typically such a 37 | student will have taken calculus, but this is not a prerequisite. 38 | The book begins with systems of linear equations, then covers matrix 39 | algebra, before taking up finite-dimensional vector spaces in full 40 | generality. The final chapter covers matrix representations of linear 41 | transformations, through diagonalization, change of basis and Jordan 42 | canonical form. Along the way, determinants and eigenvalues get fair 43 | time. 44 | 45 | 46 | `Elementary Number Theory: Primes, Congruences, and Secrets `_ by William Stein 47 | This is a textbook about classical elementary number theory and 48 | elliptic curves. The first part discusses elementary topics such as 49 | primes, factorization, continued fractions, and quadratic forms, in 50 | the context of cryptography, computation, and deep open research 51 | problems. The second part is about elliptic curves, their applications 52 | to algorithmic problems, and their connections with problems in number 53 | theory such as Fermats Last Theorem, the Congruent Number Problem, and 54 | the Conjecture of Birch and Swinnerton-Dyer. The intended audience of 55 | this book is an undergraduate with some familiarity with basic 56 | abstract algebra, e.g. rings, fields, and finite abelian groups. 57 | 58 | Sage Worksheets 59 | --------------- 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /about.rst: -------------------------------------------------------------------------------- 1 | ======== 2 | About Us 3 | ======== 4 | 5 | The UTMOST grant is a collaborative 3-year `CCLI Type 2 `_ grant which is funded during September 2010--September 2013. 6 | 7 | Objectives 8 | ---------- 9 | 10 | #. We will create a system that makes it easy for authors to convert 11 | open textbooks and other curricular materials to Sage worksheets, 12 | interspersing runnable interactive demonstrations and exercises and 13 | live Sage code with publication-quality typeset mathematics. 14 | 15 | #. We will convert existing mature open textbooks to this format and 16 | create new curricular materials targeting this format, as 17 | demonstrations and tests of both the technical and pedagogical 18 | aspects of this new approach. 19 | 20 | #. We will partner with eight diverse institutions to test these 21 | materials in a wide variety of courses, and provide support for their 22 | use and assistance for the creation of new materials. 23 | 24 | #. We will evaluate the effectiveness of our model for making it easy 25 | to adopt open mathematics software and textbooks and making it easy 26 | to create integrated open curricular materials, and we will measure 27 | the resulting impact on teaching practices and the learning of 28 | mathematics with the expert assistance of professional evaluators. 29 | 30 | #. We will improve the Sage library and its surrounding infrastructure 31 | (e.g., server design, notebook usability, and collaboration tools) 32 | where the improvements have a direct and obvious benefit for 33 | undergraduate education. 34 | 35 | 36 | Details 37 | ------- 38 | 39 | Read our `original proposal `_ or the 40 | updated `supplement `_ for more 41 | details. Collaborative award numbers are `DUE-1022574`_ (AIM), 42 | `DUE-1022036`_ (Drake U.), `DUE-1020957`_ (Stephen F. Austin State 43 | U.), `DUE-1020687`_ (U. Colorado at Boulder), and `DUE-1020378`_ (U. Washington). 44 | 45 | .. _DUE-1022574: http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1022574 46 | .. _DUE-1022036: http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1022036 47 | .. _DUE-1020957: http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1020957 48 | .. _DUE-1020687: http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1020687 49 | .. _DUE-1020378: http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1020378 50 | 51 | (The CCLI program is now known as the `TUES `_ program.) 52 | 53 | Principal Investigators 54 | ----------------------- 55 | 56 | * `Rob Beezer `_, University of Puget Sound--Software, Curriculum, Test 57 | Site Mentor 58 | * `Jason Grout `_, Drake 59 | University--Software, Curriculum, Test Site Mentor 60 | * Marja-Liisa Hassi, University of Colorado at Boulder--Assessment 61 | * `Tom Judson `_, Stephen F. Austin State University--Curriculum, 62 | Assessment, Test Site Mentor 63 | * Kiran Kedlaya, MIT and UC San Diego--Test Site Mentor 64 | * Sandra Laursen, University of Colorado at Boulder--Assessment 65 | * William Stein, University of Washington--Software, Curriculum, Test 66 | Site Mentor 67 | 68 | 69 | Contact Us 70 | ---------- 71 | .. include:: contact.rst 72 | :start-after: after-header 73 | 74 | -------------------------------------------------------------------------------- /othernews.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | Other News 3 | ========== 4 | 5 | Here are a few articles and news items dealing with open-source 6 | software and curricular materials in academics. 7 | 8 | 9 | September 2012 10 | ^^^^^^^^^^^^^^ 11 | 12 | Finnish teachers create open-source mathematics textbook in 3 days 13 | 29 September 2012---A group of Finnish teachers created an 14 | open-source mathematics textbook for secondary school in a 3-day 15 | sprint. While the book is in Finnish, it is a very interesting 16 | experiment in creating textbooks. See the `blog post 17 | `__ 18 | for more. 19 | 20 | 21 | California will create 50 free digital textbooks 22 | 27 September 2012---California has passed a law to create 50 free 23 | digital textbooks targeting lower-division college courses. 24 | California also passed a law to create the California Digital Open 25 | Source Library. See 26 | the `Los Angeles Times article 27 | `__ 28 | for more details. 29 | 30 | Particle Physics taking all journals to open-access 31 | 24 September 2012---"After six years of negotiation, the 32 | Sponsoring Consortium for Open Access Publishing in Particle 33 | Physics is now close to ensuring that nearly all 34 | particle-physics articles — about 7,000 publications last year — 35 | are made immediately free on journal websites. Upfront payments 36 | from libraries will fund the access." See the `Nature article 37 | `__ 38 | for more. 39 | 40 | June 2012 41 | ^^^^^^^^^ 42 | 43 | PeerJ Journal adopts "flat fee, all you can publish" model 44 | 12 June 2012---The `PeerJ `__ journal explores a model where authors pay a one-time fee to publish all the scientific papers they want. A `Nature article `__ talks about this and other models to reduce cost to access publications. 45 | 46 | MLA Journals switch to "author retains copyright" 47 | 05 June 2012---The journals of the Modern Language Association have adopted a policy that authors will retain copyright to their articles. This means that authors will have no trouble posting their articles to open-access websites. See more at the `MLA Press Release `__. 48 | 49 | May 2012 50 | ^^^^^^^^ 51 | 52 | UCSF Mandates Open Access 53 | 23 May 2012---University of California, San Francisco faculty 54 | senate voted unanimously for a policy requiring UCSF faculty to 55 | make each of their articles freely available immediately through 56 | an open-access repository. See more at the `UCSF news article 57 | `__. 58 | 59 | Fair use and e-reserves 60 | 12 May 2012---A judge just ruled on a case between publishers and Georgia State 61 | regarding fair use of materials in an e-reserve system. Most of 62 | the judgements came in favor of the university. Read more at 63 | `Inside Higher Ed 64 | `__ 65 | and `Kevin Smith's blog 66 | `__. 67 | Having open-source curricular material makes these sorts of 68 | complications moot, since copying and distribution of material is encouraged. 69 | 70 | -------------------------------------------------------------------------------- /_scripts/copy_trees.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2.6 2 | """Copy data files to final html directory. 3 | """ 4 | 5 | #----------------------------------------------------------------------------- 6 | # Imports 7 | #----------------------------------------------------------------------------- 8 | from __future__ import print_function 9 | 10 | import __builtin__ 11 | import os 12 | import sys 13 | 14 | from os.path import join as pjoin 15 | 16 | #----------------------------------------------------------------------------- 17 | # Config 18 | #----------------------------------------------------------------------------- 19 | 20 | # From sphinx conf.py 21 | sphinx_conf = {} 22 | execfile('conf.py',{},sphinx_conf) 23 | 24 | # Local 25 | verbose = False 26 | #verbose = True 27 | 28 | # Directory with source files 29 | src_dir = '.' 30 | # Directory where final html tree is built 31 | out_dir = '_build/html' 32 | 33 | # Prefix of directories to skip (set when sphinx-quickstart was run) 34 | skip_prefix = '_' 35 | skip_extensions = set(['.rst']) 36 | # Other directory trees to skip 37 | skip_trees = set(['.git','sphinxext', 'gh-pages', 'logos', 'themes']) 38 | 39 | # Always skip source files, since shpinx already copies those 40 | skip_extensions.add(sphinx_conf.get('source_suffix','.rst')) 41 | 42 | # Any top-level files that may need to be copied as well 43 | top_files = ['links.txt'] 44 | 45 | #----------------------------------------------------------------------------- 46 | # Functions 47 | #----------------------------------------------------------------------------- 48 | 49 | def print(*args, **kw): 50 | verb = kw.pop('verbose', verbose) 51 | if verb: 52 | __builtin__.print(*args, **kw) 53 | 54 | 55 | def keep_filename(f, skip_ext=skip_extensions): 56 | """Return whether to keep a file based on a list of extensions. 57 | 58 | Note that filenames ending in ~ are always excluded.""" 59 | 60 | if f.endswith('~'): 61 | return False 62 | 63 | return os.path.splitext(f)[1] not in skip_ext 64 | 65 | 66 | def copy_files(root, files): 67 | did_copy = False 68 | for fname in files: 69 | target = pjoin(out_dir, root, fname) 70 | if not (os.path.isfile(target) or os.path.islink(target)): 71 | print(target, end='') 72 | os.link(pjoin(root, fname), target) 73 | did_copy = True 74 | if did_copy: 75 | print() 76 | 77 | 78 | def main(): 79 | if not os.path.isdir(out_dir): 80 | err = 'ERROR: Output directory {0} not found.'.format(out_dir) 81 | print(err, file=sys.stderr, verbose=True) 82 | sys.exit(1) 83 | 84 | skip_base = pjoin(src_dir, skip_prefix) 85 | 86 | for root, dirs, files in os.walk(src_dir, followlinks=True): 87 | dirs.sort() 88 | print('root', root) 89 | 90 | if root==src_dir: 91 | # Only from the top, remove subdirs starting with skip prefix 92 | dirs[:] = [d for d in dirs if not 93 | (d.startswith(skip_prefix) or d in skip_trees )] 94 | print('top-level dirs:', dirs) 95 | #continue 96 | 97 | files = filter(keep_filename, files) 98 | print(' dirs:', dirs) 99 | print(' files:', files) 100 | # Now, create the list of subdirs and files in the output 101 | for subdir in dirs: 102 | new_dir = pjoin(out_dir, root, subdir) 103 | if not os.path.isdir(new_dir): 104 | print("Making dir:",new_dir) 105 | os.mkdir(new_dir) 106 | 107 | if root == src_dir: 108 | # Only copy files for subdirs, not for the top-level (so we don't 109 | # copy makefiles and stuff like that) 110 | copy_files(root, set(top_files) & set(files)) 111 | 112 | copy_files(root, files) 113 | 114 | #----------------------------------------------------------------------------- 115 | # Execute as a script 116 | #----------------------------------------------------------------------------- 117 | if __name__ == '__main__': 118 | main() 119 | -------------------------------------------------------------------------------- /_scripts/gh-pages.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Script to commit the doc build outputs into the github-pages repo. 3 | 4 | Use: 5 | 6 | gh-pages.py [tag] 7 | 8 | If no tag is given, the current output of 'git describe' is used. If given, 9 | that is how the resulting directory will be named. 10 | 11 | In practice, you should use either actual clean tags from a current build or 12 | something like 'current' as a stable URL for the most current version of the """ 13 | 14 | #----------------------------------------------------------------------------- 15 | # Imports 16 | #----------------------------------------------------------------------------- 17 | import os 18 | import re 19 | import shutil 20 | import sys 21 | from os import chdir as cd 22 | from os.path import join as pjoin 23 | 24 | from subprocess import Popen, PIPE, CalledProcessError, check_call 25 | 26 | #----------------------------------------------------------------------------- 27 | # Globals 28 | #----------------------------------------------------------------------------- 29 | 30 | pages_dir = 'gh-pages' 31 | html_dir = '_build/html' 32 | pages_repo = 'git@github.com:ipython/ipython.github.com.git' 33 | 34 | #----------------------------------------------------------------------------- 35 | # Functions 36 | #----------------------------------------------------------------------------- 37 | def sh(cmd): 38 | """Execute command in a subshell, return status code.""" 39 | return check_call(cmd, shell=True) 40 | 41 | 42 | def sh2(cmd): 43 | """Execute command in a subshell, return stdout. 44 | 45 | Stderr is unbuffered from the subshell.x""" 46 | p = Popen(cmd, stdout=PIPE, shell=True) 47 | out = p.communicate()[0] 48 | retcode = p.returncode 49 | if retcode: 50 | raise CalledProcessError(retcode, cmd) 51 | else: 52 | return out.rstrip() 53 | 54 | 55 | def sh3(cmd): 56 | """Execute command in a subshell, return stdout, stderr 57 | 58 | If anything appears in stderr, print it out to sys.stderr""" 59 | p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True) 60 | out, err = p.communicate() 61 | retcode = p.returncode 62 | if retcode: 63 | raise CalledProcessError(retcode, cmd) 64 | else: 65 | return out.rstrip(), err.rstrip() 66 | 67 | 68 | def init_repo(path): 69 | """clone the gh-pages repo if we haven't already.""" 70 | sh("git clone %s %s"%(pages_repo, path)) 71 | # For an .github.com site, the pages go in master, so we don't need 72 | # to checkout gh-pages. 73 | 74 | #----------------------------------------------------------------------------- 75 | # Script starts 76 | #----------------------------------------------------------------------------- 77 | if __name__ == '__main__': 78 | startdir = os.getcwd() 79 | if not os.path.exists(pages_dir): 80 | # init the repo 81 | init_repo(pages_dir) 82 | else: 83 | # ensure up-to-date before operating 84 | cd(pages_dir) 85 | sh('git checkout master') 86 | sh('git pull') 87 | cd(startdir) 88 | 89 | # don't `make html` here, because gh-pages already depends on html in Makefile 90 | # sh('make html') 91 | 92 | # This is pretty unforgiving: we unconditionally nuke the destination 93 | # directory, and then copy the html tree in there 94 | sh('rm -r %s/*' % pages_dir) 95 | 96 | sh('cp -r %s/* %s/' % (html_dir, pages_dir)) 97 | 98 | try: 99 | cd(pages_dir) 100 | status = sh2('git status | head -1') 101 | branch = re.match('\# On branch (.*)$', status).group(1) 102 | if branch != 'master': 103 | e = 'On %r, git branch is %r, MUST be "master"' % (pages_dir, 104 | branch) 105 | raise RuntimeError(e) 106 | 107 | sh('git add .') 108 | sh('git commit -m"Updated website (automated commit)"') 109 | print 110 | print 'Most recent 3 commits:' 111 | sys.stdout.flush() 112 | sh('git --no-pager log --oneline HEAD~3..') 113 | finally: 114 | cd(startdir) 115 | 116 | print 117 | print 'Now verify the build in: %r' % pages_dir 118 | print "If everything looks good, 'git push'" 119 | -------------------------------------------------------------------------------- /conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ipythonscipy.org documentation build configuration file, created by 4 | # sphinx-quickstart on Sat Dec 18 17:03 2010. 5 | # 6 | # This file is execfile()d with the current directory set to its containing dir. 7 | # 8 | # Note that not all possible configuration values are present in this 9 | # autogenerated file. 10 | # 11 | # All configuration values have a default; values that are commented out 12 | # serve to show the default. 13 | 14 | import sys, os 15 | 16 | # If extensions (or modules to document with autodoc) are in another directory, 17 | # add these directories to sys.path here. If the directory is relative to the 18 | # documentation root, use os.path.abspath to make it absolute, like shown here. 19 | sys.path.append(os.path.abspath('sphinxext')) 20 | 21 | # -- General configuration ----------------------------------------------------- 22 | 23 | # Add any Sphinx extension module names here, as strings. They can be extensions 24 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 25 | extensions = ['sphinx.ext.doctest', 26 | 'sphinx.ext.todo', 27 | 'sphinx.ext.pngmath', 28 | 'sphinx.ext.ifconfig', 29 | 30 | #'ipython_console_highlighting', 31 | ] 32 | 33 | # Add any paths that contain templates here, relative to this directory. 34 | templates_path = ['_templates'] 35 | 36 | # The suffix of source filenames. 37 | source_suffix = '.rst' 38 | 39 | # The encoding of source files. 40 | #source_encoding = 'utf-8-sig' 41 | 42 | # The master toctree document. 43 | master_doc = 'index' 44 | 45 | # General information about the project. 46 | project = u'UTMOST' 47 | copyright = u'UTMOST team. This material is based upon work supported by the National Science Foundation under Grant No. DUE-1022574. Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF)' 48 | 49 | # The version info for the project you're documenting, acts as replacement for 50 | # |version| and |release|, also used in various other places throughout the 51 | # built documents. 52 | # 53 | # The short X.Y version. 54 | version = '' 55 | # The full version, including alpha/beta/rc tags. 56 | release = '' 57 | 58 | # The language for content autogenerated by Sphinx. Refer to documentation 59 | # for a list of supported languages. 60 | #language = None 61 | 62 | # There are two options for replacing |today|: either, you set today to some 63 | # non-false value, then it is used: 64 | #today = '' 65 | # Else, today_fmt is used as the format for a strftime call. 66 | #today_fmt = '%B %d, %Y' 67 | 68 | # List of documents that shouldn't be included in the build. 69 | unused_docs = [] 70 | 71 | # List of directories, relative to source directory, that shouldn't be searched 72 | # for source files. 73 | exclude_trees = ['_build','.git','s','resources','attic','blog', 74 | 'code/lyxport/dist'] 75 | 76 | # The reST default role (used for this markup: `text`) to use for all documents. 77 | #default_role = None 78 | 79 | # If true, '()' will be appended to :func: etc. cross-reference text. 80 | #add_function_parentheses = True 81 | 82 | # If true, the current module name will be prepended to all description 83 | # unit titles (such as .. function::). 84 | #add_module_names = True 85 | 86 | # If true, sectionauthor and moduleauthor directives will be shown in the 87 | # output. They are ignored by default. 88 | #show_authors = False 89 | 90 | # The name of the Pygments (syntax highlighting) style to use. 91 | pygments_style = 'sphinx' 92 | 93 | # A list of ignored prefixes for module index sorting. 94 | #modindex_common_prefix = [] 95 | 96 | 97 | # -- Options for HTML output --------------------------------------------------- 98 | 99 | # The theme to use for HTML and HTML Help pages. Major themes that come with 100 | # Sphinx are currently 'default' and 'sphinxdoc'. 101 | #html_theme = 'default' 102 | #html_theme = 'sphinxdoc' 103 | html_theme = 'agogo' # inherits from sphinxdoc and modifies it a little 104 | 105 | # The style sheet to use for HTML and HTML Help pages. A file of that name 106 | # must exist either in Sphinx' static/ path, or in one of the custom paths 107 | # given in html_static_path. 108 | html_style = 'agogo.css' 109 | 110 | # Theme options are theme-specific and customize the look and feel of a theme 111 | # further. For a list of options available for each theme, see the 112 | # documentation. 113 | html_theme_options = {} 114 | 115 | # Only works with the default theme, makes the sidebar not scroll: 116 | #html_theme_options = { "stickysidebar": "true" } 117 | 118 | # Add any paths that contain custom themes here, relative to this directory. 119 | html_theme_path = ['themes'] 120 | 121 | # The name for this set of Sphinx documents. If None, it defaults to 122 | # " v documentation".ke 123 | html_title = u"UTMOST" 124 | 125 | # A shorter title for the navigation bar. Default is the same as html_title. 126 | html_short_title = "UTMOST" 127 | 128 | # The name of an image file (relative to this directory) to place at the top 129 | # of the sidebar. 130 | html_logo = "logos/banner.png" 131 | 132 | # The name of an image file (within the static path) to use as favicon of the 133 | # pixels large. 134 | #html_favicon = "favicon.ico" 135 | 136 | # Add any paths that contain custom static files (such as style sheets) here, 137 | # relative to this directory. They are copied after the builtin static files, 138 | # so a file named "default.css" will overwrite the builtin "default.css". 139 | #html_static_path = ['_static'] 140 | 141 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 142 | # using the given strftime format. 143 | #html_last_updated_fmt = '%b %d, %Y' 144 | 145 | # If true, SmartyPants will be used to convert quotes and dashes to 146 | # typographically correct entities. 147 | #html_use_smartypants = True 148 | 149 | html_no_sidebar=True 150 | 151 | # Custom sidebar templates, maps document names to template names. 152 | # TODO: split this up into several chunks 153 | html_sidebars = { 154 | '**': ['globaltoc.html'], 155 | } 156 | 157 | # Additional templates that should be rendered to pages, maps page names to 158 | # template names. 159 | #html_additional_pages = {} 160 | 161 | # If false, no module index is generated. 162 | html_use_modindex = False 163 | 164 | # If false, no index is generated. 165 | html_use_index = False 166 | 167 | # If true, the index is split into individual pages for each letter. 168 | #html_split_index = False 169 | 170 | # If true, links to the reST sources are added to the pages. 171 | html_show_sourcelink = False 172 | 173 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 174 | html_show_sphinx = False # not enough space at the bottom 175 | 176 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 177 | #html_show_copyright = True 178 | 179 | # If true, an OpenSearch description file will be output, and all pages will 180 | # contain a tag referring to it. The value of this option must be the 181 | # base URL from which the finished HTML is served. 182 | #html_use_opensearch = '' 183 | 184 | # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). 185 | #html_file_suffix = '' 186 | 187 | # -- Other options -------------------- 188 | todo_include_todos=True 189 | -------------------------------------------------------------------------------- /news.rst: -------------------------------------------------------------------------------- 1 | ==== 2 | News 3 | ==== 4 | 5 | .. begin-recent-news 6 | 7 | June 2014 8 | ^^^^^^^^^ 9 | 10 | Sage Education Days, June 16--18 11 | `Sage Edu Days 6 `__ will be 12 | held June 16--18 at the University of Washington in Seattle. See 13 | the website for schedule and videos of talks. 14 | 15 | Anyone with an interest in the use of Sage in educational settings 16 | is welcome to attend. The focus will primarily be on undergraduate 17 | mathematics, but will not be limited to just that area. 18 | 19 | There will also be a `developer conference 20 | `__ happening that whole week. 21 | 22 | March 2014 23 | ^^^^^^^^^^ 24 | 25 | Sage Cell Server 26 | In March 2014, the Sage Cell Server had an average of 1986 27 | computations per day, about 100 more computations per day than in 28 | February 2014. The service was visited by users in 158 countries 29 | (about half coming from United States, 25% from Europe, and 30 | 10% from Asia). The top city accessing the service was Tacoma, WA 31 | (no doubt due to Rob Beezer's online linear algebra textbook using 32 | it), followed by Omaha, NE, Ottawa, Hartford, CN, and Fargo, ND. 33 | 34 | SageMathCloud 35 | In March 2014, about 40,000 projects were modified. At the end of 36 | March, there were around 28,500 accounts (with about 150 accounts being 37 | created each day) and around 43,500 total projects. See `this page 38 | `__ 39 | for more graphs and statistics. 40 | 41 | January 2014 42 | ^^^^^^^^^^^^ 43 | 44 | Joint Mathematics Meetings, January 15--18 45 | The UTMOST team presented a poster on this project at the NSF 46 | UTMOST poster session 47 | 48 | Several UTMOST collaborators talked in sessions, including the 49 | MAA Open Textbook session (Tom Judson/Rob Beezer) and in the MAA 50 | Online Resources session (Jason Grout). 51 | 52 | The Sage project also had a successful booth in the exhibit hall, which introduced 53 | many people to both the SageMathCloud and the Sage Cell Server 54 | 55 | 56 | June 2013 57 | ^^^^^^^^^ 58 | 59 | Sage Education Days, June 19--21 60 | `Sage Edu Days 5 `__ will be 61 | held June 19--21 at the University of Washington in Seattle. See 62 | the website for schedule and videos of talks. 63 | 64 | Anyone with an interest in the use of Sage in educational settings 65 | is welcome to attend. The focus will primarily be on undergraduate 66 | mathematics, but will not be limited to just that area. 67 | 68 | There will also be a `developer conference 69 | `__ happening that whole week, 70 | with the Sage Cloud as the theme. 71 | 72 | .. end-recent-news 73 | 74 | June 2012 75 | ^^^^^^^^^ 76 | 77 | Sage Education Days, June 13--21 78 | `Sage Edu Days 5 `__ will be 79 | held June 13-15 at the University of Washington in Seattle. 80 | 81 | Anyone with an interest in the use of Sage in educational settings 82 | is welcome to attend. The focus will primarily be on undergraduate 83 | mathematics, but will not be limited to just that area. 84 | 85 | There will also be a `developer conference 86 | `__ happening that whole week, 87 | with the Sage notebook as the theme. 88 | 89 | January 2012 90 | ^^^^^^^^^^^^ 91 | 92 | Joint Meetings 93 | We had a booth in the TUES poster session, and the Sage booth in the 94 | conference hall was a big hit as well. 95 | 96 | August 2011 97 | ^^^^^^^^^^^ 98 | 99 | Mathfest 100 | We had a very successful booth that we shared with the `Webwork `__ folks. 101 | 102 | AIM Open Textbook Initiative 103 | American Institute of Mathematics has launched its `Open Textbook 104 | Initiative `__. This initiative will 105 | review and provide links to high-quality open-source textbooks. 106 | This initiative is supported in part by UTMOST. 107 | 108 | Sage-Enhanced Textbooks 109 | Rob Beezer `announced 110 | `__ 111 | his work on enhancing his `linear algebra textbook 112 | `__ and also `announced `__ 113 | his work on enhancing Judson's `abstract algebra textbook `__. Both 114 | of these projects involved work sponsored by UTMOST. 115 | 116 | Embedding Sage in a webpage (beta) 117 | You can now embed Sage into any webpage! A beta version of the 118 | Sage Cell server was released. See the `documentation 119 | `__ 120 | for embedding a computation. 121 | 122 | As an example, click the button below to explore a Taylor 123 | polynomial 124 | 125 | .. raw:: html 126 | 127 | 128 | 129 | 130 | .. raw:: html 131 | 132 |
145 | 151 | 152 | or generate graph paper (including a pdf) 153 | 154 | .. raw:: html 155 | 156 |
179 | 185 | 186 | 187 | or try whatever Sage computation you want below. 188 | 189 | .. raw:: html 190 | 191 |
factorial(30) # edit me
192 | 193 | 198 | 199 | 200 | 201 | June 2011 202 | ^^^^^^^^^ 203 | 204 | Sage Education Days 3, 16--18 Jun 2011 205 | We had our first UTMOST conference in Seattle with the test site 206 | teacher-authors for the 2011-2012 academic year. See the 207 | `conference homepage `__ for 208 | details, links to videos of the talks, etc. 209 | 210 | 211 | July 2010 212 | ^^^^^^^^^ 213 | 214 | Grant awarded 215 | The UTMOST proposal was awarded a grant! 216 | 217 | -------------------------------------------------------------------------------- /themes/agogo/static/agogo.css_t: -------------------------------------------------------------------------------- 1 | /* 2 | * agogo.css_t 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- agogo theme. 6 | * 7 | * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | * { 13 | margin: 0px; 14 | padding: 0px; 15 | } 16 | 17 | 18 | div.header-wrapper { 19 | border-top: 0px solid #babdb6; 20 | padding: 1em 1em 0; 21 | min-height: 0px; 22 | } 23 | 24 | body { 25 | font-family: {{ theme_bodyfont }}; 26 | line-height: 1.4em; 27 | color: black; 28 | background-color: {{ theme_bgcolor }}; 29 | } 30 | 31 | 32 | /* Page layout */ 33 | 34 | div.header, div.content, div.footer { 35 | max-width: {{ theme_pagewidth }}; 36 | margin-left: auto; 37 | margin-right: auto; 38 | } 39 | 40 | div.header-wrapper { 41 | border-bottom: 0px solid #2e3436; 42 | } 43 | 44 | 45 | /* Default body styles */ 46 | a { 47 | color: {{ theme_linkcolor }}; 48 | } 49 | 50 | div.bodywrapper a, div.footer a { 51 | text-decoration: underline; 52 | } 53 | 54 | .clearer { 55 | clear: both; 56 | } 57 | 58 | .left { 59 | float: left; 60 | } 61 | 62 | .right { 63 | float: right; 64 | } 65 | 66 | .line-block { 67 | display: block; 68 | margin-top: 1em; 69 | margin-bottom: 1em; 70 | } 71 | 72 | .line-block .line-block { 73 | margin-top: 0; 74 | margin-bottom: 0; 75 | margin-left: 1.5em; 76 | } 77 | 78 | h1, h2, h3, h4 { 79 | font-weight: normal; 80 | color: {{ theme_headercolor2 }}; 81 | margin-bottom: .8em; 82 | } 83 | 84 | h1 { 85 | color: {{ theme_headercolor1 }}; 86 | line-height: 1.1em; 87 | text-align: left; 88 | border-bottom: 1px solid {{ theme_headercolor1 }}; 89 | } 90 | 91 | h2 { 92 | padding-bottom: .5em; 93 | } 94 | 95 | a.headerlink { 96 | visibility: hidden; 97 | color: #dddddd; 98 | padding-left: .3em; 99 | } 100 | 101 | h1:hover > a.headerlink, 102 | h2:hover > a.headerlink, 103 | h3:hover > a.headerlink, 104 | h4:hover > a.headerlink, 105 | h5:hover > a.headerlink, 106 | h6:hover > a.headerlink, 107 | dt:hover > a.headerlink { 108 | visibility: visible; 109 | } 110 | 111 | img { 112 | border: 0; 113 | } 114 | 115 | pre { 116 | background-color: #EEE; 117 | padding: 0.5em; 118 | } 119 | 120 | div.admonition { 121 | margin-top: 10px; 122 | margin-bottom: 10px; 123 | padding: 2px 7px 1px 7px; 124 | border-left: 0.2em solid black; 125 | } 126 | 127 | p.admonition-title { 128 | margin: 0px 10px 5px 0px; 129 | font-weight: bold; 130 | } 131 | 132 | dt:target, .highlighted { 133 | background-color: #fbe54e; 134 | } 135 | 136 | /* Header */ 137 | 138 | div.header {} 139 | 140 | div.header h1 { 141 | font-family: "Trebuchet MS", Helvetica, sans-serif; 142 | font-weight: normal; 143 | font-size: 250%; 144 | letter-spacing: .08em; 145 | line-height: 70px; 146 | margin-bottom: 0; 147 | } 148 | 149 | div.header h1 a { 150 | color: white; 151 | } 152 | 153 | div.header h1 a:hover { 154 | text-decoration: none; 155 | } 156 | 157 | div.header div.rel { 158 | margin-top: 1em; 159 | border-top: 1px solid #AAA; 160 | border-bottom: 1px solid #AAA; 161 | border-radius: 5px; 162 | padding: 3px 1em; 163 | } 164 | 165 | div.header div.rel a { 166 | color: {{ theme_linkcolor }}; 167 | letter-spacing: .05em; 168 | font-weight: bold; 169 | } 170 | 171 | div.logo {} 172 | 173 | img.logo { 174 | border: 0; 175 | } 176 | 177 | 178 | /* Content */ 179 | div.content-wrapper { 180 | background-color: white; 181 | padding: 1em; 182 | } 183 | 184 | div.document { 185 | max-width: {{ theme_documentwidth }}; 186 | } 187 | 188 | div.body { 189 | padding-right: 2em; 190 | text-align: {{ theme_textalign }}; 191 | } 192 | 193 | div.document ul { 194 | margin: 1.5em; 195 | list-style-type: square; 196 | } 197 | 198 | div.document dd { 199 | margin-left: 1.2em; 200 | margin-top: .4em; 201 | margin-bottom: 1em; 202 | } 203 | 204 | div.document .section { 205 | margin-top: 1.7em; 206 | } 207 | div.document .section:first-child { 208 | margin-top: 0px; 209 | } 210 | 211 | div.document div.highlight { 212 | padding: 3px; 213 | background-color: #eeeeec; 214 | border-top: 2px solid #dddddd; 215 | border-bottom: 2px solid #dddddd; 216 | margin-top: .8em; 217 | margin-bottom: .8em; 218 | } 219 | 220 | div.document h2 { 221 | margin-top: .7em; 222 | } 223 | 224 | div.document p { 225 | margin-bottom: .5em; 226 | } 227 | 228 | div.document li.toctree-l1 { 229 | margin-bottom: 1em; 230 | } 231 | 232 | div.document .descname { 233 | font-weight: bold; 234 | } 235 | 236 | div.document .docutils.literal { 237 | background-color: #eeeeec; 238 | padding: 1px; 239 | } 240 | 241 | div.document .docutils.xref.literal { 242 | background-color: transparent; 243 | padding: 0px; 244 | } 245 | 246 | div.document blockquote { 247 | margin: 1em; 248 | } 249 | 250 | div.document ol { 251 | margin: 1.5em; 252 | } 253 | 254 | 255 | /* Sidebar */ 256 | 257 | div.sphinxsidebar { 258 | width: {{ theme_sidebarwidth }}; 259 | padding: 0 1em; 260 | float: right; 261 | font-size: .93em; 262 | background-color: white; 263 | } 264 | 265 | div.sphinxsidebar a, div.header a { 266 | text-decoration: none; 267 | } 268 | 269 | div.sphinxsidebar a:hover, div.header a:hover { 270 | text-decoration: underline; 271 | } 272 | 273 | div.sphinxsidebar h3 { 274 | color: #2e3436; 275 | text-transform: uppercase; 276 | font-size: 130%; 277 | letter-spacing: .1em; 278 | margin-bottom: .4em; 279 | } 280 | 281 | div.sphinxsidebar h4 { 282 | margin-bottom: 0; 283 | font-weight: bold; 284 | } 285 | 286 | div.sphinxsidebar .tile { 287 | border: 1px solid #D1DDE2; 288 | border-radius: 10px; 289 | background-color: #E1E8EC; 290 | padding-left: 0.5em; 291 | margin: 1em 0; 292 | } 293 | 294 | div.sphinxsidebar ul { 295 | list-style-type: none; 296 | } 297 | 298 | div.sphinxsidebar li.toctree-l1 a { 299 | display: block; 300 | padding: 1px; 301 | border: 1px solid #dddddd; 302 | background-color: #eeeeec; 303 | margin-bottom: .4em; 304 | padding-left: 3px; 305 | color: #2e3436; 306 | } 307 | 308 | div.sphinxsidebar li.toctree-l2 a { 309 | background-color: transparent; 310 | border: none; 311 | margin-left: 1em; 312 | border-bottom: 1px solid #dddddd; 313 | } 314 | 315 | div.sphinxsidebar li.toctree-l3 a { 316 | background-color: transparent; 317 | border: none; 318 | margin-left: 2em; 319 | border-bottom: 1px solid #dddddd; 320 | } 321 | 322 | div.sphinxsidebar li.toctree-l2:last-child a { 323 | border-bottom: none; 324 | } 325 | 326 | div.sphinxsidebar li.toctree-l1.current a { 327 | border-right: 5px solid {{ theme_headerlinkcolor }}; 328 | } 329 | 330 | div.sphinxsidebar li.toctree-l1.current li.toctree-l2 a { 331 | border-right: none; 332 | } 333 | 334 | div.sidebarblock { 335 | padding-bottom: .4em; 336 | border-bottom: 1px solid #AAA; 337 | margin-bottom: .8em; 338 | } 339 | 340 | 341 | /* Footer */ 342 | 343 | div.footer-wrapper { 344 | padding-top: 10px; 345 | padding-bottom: 10px; 346 | } 347 | 348 | div.footer { 349 | border-top: 2px solid #aaa; 350 | text-align: right; 351 | } 352 | 353 | div.footer, div.footer a { 354 | color: #888a85; 355 | } 356 | 357 | 358 | /* Styles copied from basic theme */ 359 | 360 | img.align-left, .figure.align-left, object.align-left { 361 | clear: left; 362 | float: left; 363 | margin-right: 1em; 364 | } 365 | 366 | img.align-right, .figure.align-right, object.align-right { 367 | clear: right; 368 | float: right; 369 | margin-left: 1em; 370 | } 371 | 372 | img.align-center, .figure.align-center, object.align-center { 373 | display: block; 374 | margin-left: auto; 375 | margin-right: auto; 376 | } 377 | 378 | .align-left { 379 | text-align: left; 380 | } 381 | 382 | .align-center { 383 | clear: both; 384 | text-align: center; 385 | } 386 | 387 | .align-right { 388 | text-align: right; 389 | } 390 | 391 | /* -- search page ----------------------------------------------------------- */ 392 | 393 | ul.search { 394 | margin: 10px 0 0 20px; 395 | padding: 0; 396 | } 397 | 398 | ul.search li { 399 | padding: 5px 0 5px 20px; 400 | background-image: url(file.png); 401 | background-repeat: no-repeat; 402 | background-position: 0 7px; 403 | } 404 | 405 | ul.search li a { 406 | font-weight: bold; 407 | } 408 | 409 | ul.search li div.context { 410 | color: #888; 411 | margin: 2px 0 0 30px; 412 | text-align: left; 413 | } 414 | 415 | ul.keywordmatches li.goodmatch a { 416 | font-weight: bold; 417 | } 418 | 419 | /* -- index page ------------------------------------------------------------ */ 420 | 421 | table.contentstable { 422 | width: 90%; 423 | } 424 | 425 | table.contentstable p.biglink { 426 | line-height: 150%; 427 | } 428 | 429 | a.biglink { 430 | font-size: 1.3em; 431 | } 432 | 433 | span.linkdescr { 434 | font-style: italic; 435 | padding-top: 5px; 436 | font-size: 90%; 437 | } 438 | 439 | /* -- general index --------------------------------------------------------- */ 440 | 441 | table.indextable td { 442 | text-align: left; 443 | vertical-align: top; 444 | } 445 | 446 | table.indextable dl, table.indextable dd { 447 | margin-top: 0; 448 | margin-bottom: 0; 449 | } 450 | 451 | table.indextable tr.pcap { 452 | height: 10px; 453 | } 454 | 455 | table.indextable tr.cap { 456 | margin-top: 10px; 457 | background-color: #f2f2f2; 458 | } 459 | 460 | img.toggler { 461 | margin-right: 3px; 462 | margin-top: 3px; 463 | cursor: pointer; 464 | } 465 | 466 | /* -- viewcode extension ---------------------------------------------------- */ 467 | 468 | .viewcode-link { 469 | float: right; 470 | } 471 | 472 | .viewcode-back { 473 | float: right; 474 | font-family:: {{ theme_bodyfont }}; 475 | } 476 | 477 | div.viewcode-block:target { 478 | margin: -1px -3px; 479 | padding: 0 3px; 480 | background-color: #f4debf; 481 | border-top: 1px solid #ac9; 482 | border-bottom: 1px solid #ac9; 483 | } 484 | 485 | /* ---- other customizations --- */ 486 | 487 | dl.docutils dt { 488 | font-weight: bold; 489 | font-size: larger; 490 | } 491 | 492 | .sagecell button { 493 | background-color: white; 494 | border: outset 2px; 495 | padding: 0.1em 0.5em; 496 | } 497 | 498 | .sagecell button.sagecell_evalButton { 499 | margin: 0.3em; 500 | border-radius: 4px; 501 | font-size: 120%; 502 | } 503 | 504 | .sagecell button:active { 505 | border-style: inset; 506 | } 507 | 508 | .CodeMirror-scroll { 509 | height: auto; 510 | overflow-y: auto; 511 | overflow-x: auto; 512 | min-height: 12ex; 513 | max-height: 45ex; 514 | } 515 | 516 | 517 | /* 518 | Local Variables: *** 519 | mode:css *** 520 | End: *** 521 | */ 522 | 523 | 524 | -------------------------------------------------------------------------------- /logos/banner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 31 | 34 | 38 | 42 | 46 | 50 | 54 | 58 | 59 | 60 | 67 | 72 | 73 | 76 | 80 | 81 | 88 | 95 | 96 | 116 | 118 | 119 | 121 | image/svg+xml 122 | 124 | 125 | 126 | 127 | 128 | 133 | 136 | 142 | 148 | 154 | 160 | 166 | 167 | UTMOST 179 | Undergraduate Teaching in Mathematics with Open Software and Textbooks 197 | 201 | 208 | 213 | 219 | 227 | 235 | 241 | 251 | 255 | 258 | 263 | 264 | 267 | 270 | 275 | 276 | 279 | 281 | 283 | 289 | 290 | 291 | 297 | 298 | 301 | 304 | 307 | 309 | 313 | 314 | 317 | 325 | 326 | 327 | 328 | 331 | 334 | 337 | 345 | 346 | 347 | 348 | 351 | 354 | 357 | 365 | 366 | 367 | 368 | 371 | 374 | 377 | 385 | 386 | 387 | 388 | 391 | 394 | 397 | 405 | 406 | 407 | 408 | 411 | 414 | 417 | 425 | 426 | 427 | 428 | 431 | 434 | 437 | 445 | 446 | 447 | 448 | 451 | 454 | 456 | 460 | 461 | 464 | 472 | 473 | 474 | 475 | 478 | 481 | 484 | 492 | 493 | 494 | 495 | 498 | 501 | 504 | 512 | 513 | 514 | 515 | 518 | 521 | 524 | 532 | 533 | 534 | 535 | 538 | 541 | 544 | 552 | 553 | 554 | 555 | 558 | 561 | 564 | 572 | 573 | 574 | 575 | 578 | 581 | 584 | 592 | 593 | 594 | 595 | 598 | 601 | 604 | 612 | 613 | 614 | 615 | 618 | 621 | 624 | 632 | 633 | 634 | 635 | 638 | 641 | 644 | 652 | 653 | 654 | 655 | 658 | 661 | 664 | 672 | 673 | 674 | 675 | 678 | 681 | 684 | 692 | 693 | 694 | 695 | 698 | 701 | 704 | 712 | 713 | 714 | 715 | 718 | 721 | 724 | 732 | 733 | 734 | 735 | 738 | 741 | 744 | 752 | 753 | 754 | 755 | 758 | 761 | 764 | 772 | 773 | 774 | 775 | 778 | 781 | 784 | 792 | 793 | 794 | 795 | 798 | 801 | 804 | 812 | 813 | 814 | 815 | 818 | 821 | 824 | 832 | 833 | 834 | 835 | 836 | 839 | 842 | 845 | 847 | 851 | 852 | 855 | 863 | 864 | 865 | 866 | 869 | 872 | 875 | 883 | 884 | 885 | 888 | 890 | 894 | 898 | 899 | 900 | 901 | 904 | 907 | 910 | 918 | 919 | 920 | 921 | 924 | 927 | 930 | 938 | 939 | 940 | 941 | 944 | 947 | 950 | 958 | 959 | 960 | 961 | 964 | 967 | 969 | 973 | 974 | 977 | 985 | 986 | 987 | 988 | 991 | 994 | 997 | 1005 | 1006 | 1007 | 1008 | 1011 | 1014 | 1017 | 1025 | 1026 | 1027 | 1028 | 1031 | 1034 | 1037 | 1045 | 1046 | 1047 | 1048 | 1051 | 1054 | 1057 | 1065 | 1066 | 1067 | 1068 | 1071 | 1074 | 1077 | 1085 | 1086 | 1087 | 1088 | 1091 | 1094 | 1097 | 1105 | 1106 | 1107 | 1108 | 1111 | 1114 | 1117 | 1125 | 1126 | 1127 | 1128 | 1131 | 1134 | 1137 | 1145 | 1146 | 1147 | 1148 | 1151 | 1154 | 1157 | 1165 | 1166 | 1167 | 1168 | 1171 | 1174 | 1177 | 1185 | 1186 | 1187 | 1188 | 1191 | 1194 | 1197 | 1205 | 1206 | 1207 | 1208 | 1211 | 1214 | 1217 | 1225 | 1226 | 1227 | 1228 | 1231 | 1234 | 1237 | 1245 | 1246 | 1247 | 1248 | 1251 | 1254 | 1257 | 1265 | 1266 | 1267 | 1268 | 1271 | 1274 | 1277 | 1285 | 1286 | 1287 | 1288 | 1289 | 1292 | 1297 | 1298 | 1301 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | --------------------------------------------------------------------------------