# Bootstrap Theme
[theme]
inherit = basic
stylesheet = basic.css
pygments_style = tango

# Configurable options.
[options]
# Navigation bar title. (Default: ``project`` value)
navbar_title =

# Tab name for entire site. (Default: "Site")
navbar_site_name = Site

# A list of tuples containting pages to link to.  The value should be
# in the form [(name, page), ..]
navbar_links =

# Render the next and previous page links in navbar. (Default: true)
navbar_sidebarrel = true

# Render the current pages TOC in the navbar. (Default: true)
navbar_pagenav = false

# Tab name for the current pages TOC. (Default: "Page")
navbar_pagenav_name = Page

# Global TOC depth for "site" navbar tab. (Default: 1)
# Switching to -1 shows all levels.
globaltoc_depth = 1

# Include hidden TOCs in Site navbar?
#
# Note: If this is "false", you cannot have mixed ``:hidden:`` and
# non-hidden ``toctree`` directives in the same page, or else the build
# will break.
#
# Values: "true" (default) or "false"
globaltoc_includehidden = true

# HTML navbar class (Default: "navbar") to attach to <div> element.
# For black navbar, do "navbar navbar-inverse"
navbar_class = navbar

# Fix navigation bar to top of page?
# Values: "true" (default) or "false"
navbar_fixed_top = true

# Location of link to source.
# Options are "nav" (default), "footer" or anything else to exclude.
source_link_position = nav

# Bootswatch (http://bootswatch.com/) theme.
#
# Options are nothing (default) or the name of a valid theme such as
# "amelia" or "cosmo".
bootswatch_theme =

# Switch Bootstrap version?
# Values: "3" (default) or "2"
bootstrap_version = 3
