Website and Documentation

On this page you will find all the information you need to contribute to VOTCA’s website and documentation.

The website is build with Sphinx and uses a slightly modified version of the Read the Docs theme. Parts of the documentation is automatically generated based on the source code of VOTCA and jupyter notebooks, other parts are written by hand. The markup language of Sphinx is reStructuredText, think of it as Markdown on steroids.

To start working on the website and documentation you will first need to be able to build it, this is discussed first. Next, a brief overview of how to edit existing pages and adding new ones is given. Finally, we discuss how to change the theme and publish the changes.

Building the documentation and website locally

To be able to see and test changes you make to the website, you will need to build it locally. You will first need to install and build VOTCA. Once you have installed VOTCA, navigate to its build folder (if you followed the install instructions, it will be called builddir). In the build folder, run

make sphinx

This will probably output errors on the first few tries, read them carefully since they will almost always be missing python packages. Find which package/module is missing in the error message and simply install it with pip3 install <packagename>.

A short list of packages you probably need to install manually:

  • cma

  • recommonmark

  • nbsphinx

  • sphinx_rtd_theme

Once the errors are gone, the documentation is build and a static html website is generated in the sphinx.html folder within the build folder. You can view and test the website in any browser simply by navigating to the index.html file within the sphinx.html folder.

Rebuilding the website after changes

After you updated files you will need to rebuild the website to see your changes.

If you simply changed the contents of a .rst file you can rerun make sphinx to propagate the changes. If you refresh the browser, the changes will have taken effect.

If you, however, changed the theme or added (deleted) a file to the website you will need to reconfigure the website build. To make sure you start with a clean slate, remove the two sphinx folders in the build folder (i.e. sphinx and sphinx.html), next rerun the cmake configuration of votca and rerun make sphinx.

Editing existing pages

To edit existing pages, you only need limited knowledge of the reStructuredText markup. You can find quick introductions here and here. All pages are stored as .rst files in the share/sphinx folder.

Writing a new page

To add a new page to the website, you will first need to decide where it belongs, in the xtp, csg or votca repo. Once you have decided that, navigate to the corresponding folder in share/sphinx. There will be either an index.rst file or something like XTP-MANUAL.rst. This file is the main page of that repo on the website. If you look at the index.rst file in the votca repo you will find all the subpages listed here, you need to make sure that your new page can be found starting from this file.

As an example, suppose we want to add a test page, called text.rst to the developers section of the website. In votca/share/sphinx, we would create the new file. Next, we would update the file votca/share/sphinx/index.rst, we need to add our file to the table of contents of the site. Look for the table of contents of the development section and add the test page. It will look something like this

.. toctree::
 :maxdepth: 2
 :caption: Development


After you have added content to the test.rst file, rebuild VOTCA and run make sphinx to rebuild the website.

Changing the theme

To change the theme, navigate to votca/share/sphinx/_themes, there you will find the theme.css file which you can modify to change the look and feel of the website.

Publishing your changes

All the changes so far are local, to get them published simply make a pull request in the desired repo. Once the PR is accepted, the site will automatically be updated.

More Advanced Stuff

Except for the automatically generated pages, this website is a basic Sphinx website, all the information you can find about Sphinx and reStructuredText on the web is applicable here. So if you need something advanced, simply google it.