#+TITLE: Sphinx layer

#+TAGS: layer|tool

[[file:img/sphinx.png]]

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#configuration][Configuration]]
  - [[#sphinx-target][Sphinx target]]
  - [[#web-browser][Web browser]]
- [[#key-bindings][Key bindings]]

* Description
The layer adds support for the documentation generation system =Sphinx= to
the =restructuredtext= layer.

** Features:
- Support for =Sphinx= project compilation
- Support for opening =Sphinx= project target
- Support for opening =Sphinx= config file

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =sphinx= to the existing =dotspacemacs-configuration-layers= list
in this file.

* Configuration
** Sphinx target
To use the layer's Sphinx feature, the following variables should be set.

A parent directory is needed for all your Sphinx project builds:

#+BEGIN_SRC emacs-lisp
  (sphinx :variables
          rst-sphinx-target-parent "~/MyProjects/")
#+END_SRC

Create a directory in the parent directory for each Sphinx project.
This will be used as the project name for the layer. In addition
you need to define where the output folder should be for each project.

#+BEGIN_SRC emacs-lisp
  (sphinx :variables
          rst-sphinx-target-parent "~/MyProjects/"
          rst-sphinx-target-projects
          '(("project1" . (latex "project1/_build"))
            ("project2" . (html  "project2/_build"))))
#+END_SRC

** Web browser
Set the browser for viewing the HTML page of current rst file. This one
is optional. If not set, the default browser will be used.

#+BEGIN_SRC emacs-lisp
  (sphinx :variables
          rst-slides-program "chromium")
#+END_SRC

* Key bindings

| Key binding | Description                             |
|-------------+-----------------------------------------|
| ~SPC m c c~ | compile projects                        |
| ~SPC m c C~ | clean projects                          |
| ~SPC m c r~ | rebuild projects                        |
| ~SPC m g c~ | open =conf.py= of current project       |
| ~SPC m o~   | open compiled HTML page of current page |
