Documentación de uso de Sphinx, RTD, RST

Links útiles para Sphinx, RTD, RST:

Primeros pasos

Instalaciones

  1. Teniendo Python instalado, instalar Sphinx con pip:
pip install sphinx
  1. Instalar sphinx-rtd-theme con pip:
pip install sphinx-rtd-theme

Requisitos previos

Trabajaremos con un repositorio en Github al cual le deseemos crear una documentación. Seguiremos los siguientes pasos:

  1. Crear o usar un repositorio en Github y clonarlo localmente:
git clone https://github.com/mogago/mydocproject

Generando documentación con Sphinx

Sphinx será la herramienta usada para la creación de documentación. Otra alternativa compatible con Read The Docs es MkDocs.

  1. Dentro del repositorio clonado, crear un directorio llamado docs donde se encontrará toda nuestra documentación y movernos a ese directorio:
mkdir docs
cd docs
  1. Inicializar el directorio docs como directorio de documentación de Sphinx:
sphinx-quickstart

Note

Equivalentemente al anterior y a este paso podemos usar un solo comando los comprende: sphinx-quickstart docs

Aparecerá un wizard con mútiples opciones de Sphinx:

Welcome to the Sphinx 1.8.5 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Selected root path: .

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: y

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]:

The project name will occur in several places in the built documentation.
> Project name: mydocproject
> Author name(s): Gabriel
> Project release []:

If the documents are to be written in a language other than English,
you can select a language here by its language code. Sphinx will then
translate text that it generates into that language.

For a list of supported codes, see
http://sphinx-doc.org/config.html#confval-language.
> Project language [en]: es

The file name suffix for source files. Commonly, this is either ".txt"
or ".rst".  Only files with this suffix are considered documents.
> Source file suffix [.rst]:

One document is special in that it is considered the top node of the
"contents tree", that is, it is the root of the hierarchical structure
of the documents. Normally, this is "index", but if your "index"
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]:
Indicate which of the following Sphinx extensions should be enabled:
> autodoc: automatically insert docstrings from modules (y/n) [n]:
> doctest: automatically test code snippets in doctest blocks (y/n) [n]:
> intersphinx: link between Sphinx documentation of different projects (y/n) [n]:
> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]:
> coverage: checks for documentation coverage (y/n) [n]:
> imgmath: include math, rendered as PNG or SVG images (y/n) [n]:
> mathjax: include math, rendered in the browser by MathJax (y/n) [n]:
> ifconfig: conditional inclusion of content based on config values (y/n) [n]:
> viewcode: include links to the source code of documented Python objects (y/n) [n]:
> githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:

A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html` instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]:
> Create Windows command file? (y/n) [y]:

Creating file ./source/conf.py.
Creating file ./source/index.rst.
Creating file ./Makefile.
Creating file ./make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file ./source/index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

Important

Se generará un archivo docs/source/conf.py con la configuración aplicada en el wizard.

  1. Desde el directorio docs/ crearemos los archivos html:
make html
Running Sphinx v1.8.5
loading translations [es]... done
making output directory...
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in Spanish (code: es) ... done
dumping object inventory... done
build succeeded.

The HTML pages are in build/html.
  1. Abrir el archivo docs/build/index.html para comprobar que se haya generado la documentación correctamente:
firefox build/html/index.html
_images/1_starting-site.png

Página index.html inicial con el tema Alabaster

Important

  • Todos los archivos .rst generados bajo el directorio docs/source tendrán su correspondiente archivo .html bajo el directorio docs/build.
  • Los archivos .rst serán llamados desde el archivo index.rst usando elementos toctree, indicando la ruta y el nombre del archivo.

Publicando documentación en RTD

Read the Docs simplifica la documentación de software, mediante la automatización del building, versionamiento y hosting de nuestros docs.

  1. Primero debemos subir la documentación generada con Sphinx a nuestro repositorio en Github. Ejecutar los comandos desde la carpeta raíz del repositorio:
git add .
git commit -m "Primer commit para creacion de Documentacion"
git push
  1. Entrar a nuestro dashboard de la página de RTD , y teniendo nuestra cuenta de Github asociada, importaremos el proyecto haciendo clic en Importar un proyecto:
_images/2_importar-proyecto-rtd.png

Dashboard de RTD - Botón Importar un proyecto

En la siguiente pantalla, actualizar la lista de repositorios con el botón de un símbolo de Actualizar. Seleccionar el repositorio de Github que vamos a importar haciendo clic en el botón +:

_images/3_importar-repo.png

Dashboard de RTD - Importar un repositorio

Luego revisar la opciones del proyecto como el nombre que tendrá la URL y clic en Siguiente:

_images/4_import-options.png

Dashboard de RTD - Opciones para importar

  1. Para hacer un build del repositorio desde RTD, clic en Build version:
_images/5_build-version.png

Dashboard de RTD - Build de repositorio

_images/6_compilacion-completada.png

Dashboard de RTD - Compilación completada

_images/7_compilacion-log.png

Dashboard de RTD - Log de compilación

  1. Ahora nuestra documentación se encuentra pública, estando hosteada por RTD bajo el dominio readthedocs.io. Podremos verla haciendo clic en el botón Ver documentación de la anterior pantalla:

Página web de ejemplo: https://mydocproject1.readthedocs.io/en/latest/

_images/8_web-resultado.png

Página de documentación hosteada bajo el dominio readthedocs.io

  1. Para cambiar el tema de la página web actual (Alabaster) al que usa RTD por defecto editar el archivo docs/source/conf.py comentando la línea de html_theme = 'alabaster':
1
2
3
4
5
6
 # -- Options for HTML output -------------------------------------------------

 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
 #html_theme = 'alabaster'

Warning

El cambio de tema solo se está aplicando para la página pública, el tema no se aplica a los archivos locales.

Luego actualizar el repositorio de Github:

git add .
git commit -m "Deshabilitando tema por defecto de Sphinx"
git push

La página pública de la documentación ahora tendrá el tema de Read the Docs:

_images/10_rtd-theme.png

Tema de Read the Docs en página pública

Usando el tema RTD localmente

Para usar el tema de Read the Docs de forma local debemos seguir los pasos descritos en cualquiera de los siguientes dos enlaces:

  1. Habiendo instalado sphinx-rtd-theme, agregar al archivo docs/source/conf.py la extensión sphinx_rtd_theme:
import sphinx_rtd_theme

extensions = [
    ...
    "sphinx_rtd_theme",
]

html_theme = "sphinx_rtd_theme"
  1. Desde el directorio docs/ actualizar los archivos html:
make html
  1. Abrir la página index.html para comprobar que se haya actualizado el tema localmente:
_images/11_rtd-theme-local.png

Tema de Read the Docs locamente

Structural Elements 1

Basado en: https://sphinx-rtd-theme.readthedocs.io/en/latest/demo/structure.html

Agregar una tabla de contenidos con:

.. contents:: Table of Contents

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique.


Document Section

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique.

Document Subsection

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique.

Document Subsubsection

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique.

Document Subsubsubsection

Desde esta sección (Nivel 5 = 1.2.3.4.5) ya no aparece en la barra lateral de navegación.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique.

Structural Elements 2

Imagen envuelta por texto con caption:

.. figure:: ../images/sample.jpg
:align: right
:figwidth: 200px

This is a caption for a figure. Text should wrap around the caption.
_images/sample.jpg

This is a caption for a figure. Text should wrap around the caption.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur in eros et blandit. Nunc maximus, nisl at auctor vestibulum, justo ex sollicitudin ligula, id faucibus urna orci tristique nisl. Duis auctor rutrum orci, in ornare lacus condimentum quis. Quisque arcu velit, facilisis quis interdum ac, hendrerit auctor mauris. Curabitur urna nibh, porttitor at ante sit amet, vestibulum interdum dolor. Duis dictum elit orci, tincidunt imperdiet sem pellentesque et. In vehicula pellentesque varius. Phasellus a turpis sollicitudin, bibendum massa et, imperdiet neque. Integer quis sapien in magna rutrum bibendum. Integer cursus ex sed magna vehicula finibus. Proin tempus orci quis dolor tempus, nec condimentum odio vestibulum. Etiam efficitur sollicitudin libero, tincidunt volutpat ligula interdum sed. Praesent congue sagittis nisl et suscipit. Vivamus sagittis risus et egestas commodo.Cras venenatis arcu in pharetra interdum. Donec quis metus porttitor tellus cursus lobortis. Quisque et orci magna. Fusce rhoncus mi mi, at vehicula massa rhoncus quis. Mauris augue leo, pretium eget molestie vitae, efficitur nec nulla. In hac habitasse platea dictumst. Sed sit amet imperdiet purus.

Paragraph Level Markup

Basado en: https://sphinx-rtd-theme.readthedocs.io/en/latest/demo/demo.html

Inline Markup

Paragraphs contain text and may contain inline markup:

  • emphasis
  • strong emphasis
  • inline literals
  • Standalone hyperlinks: http://www.python.org
  • External hyperlinks (Python [4])
  • Internal cross-references (example)
  • External hyperlinks with embedded URIs (Python web site)
  • Footnote references (manually numbered [1], anonymous auto-numbered [3], or symbolic [*]).
  • Citation references ([12]), substitution references (EXAMPLE), and inline hyperlink targets (see Targets below for a reference back to here)
  • Character-level inline markup is also possible (although exceedingly ugly!) in reStructuredText.
  • The default role for interpreted text is Title Reference.
  • Here are some explicit interpreted text roles: a PEP reference (PEP 287); a RFC reference (RFC 2822).
  • A subscript; A superscript.
  • Explicit roles for standard inline markup.
  • GUI labels are a useful way to indicate that Some action is to be taken by the user.
  • The GUI label should not run over line-height so as not to interfere with text from adjacent lines.
  • Key-bindings indicate that the read is to press a button on the keyboard or mouse, for example MMB (Middle Mouse Button) and Shift-MMB.
  • Another useful markup to indicate a user action is to use menuselection this can be used to show short and long menus in software.
  • For example, and menuselection can be seen here that breaks is too long to fit on this line.
  • My ‣ Software ‣ Some menu ‣ Some sub menu 1 ‣ sub menu 2.
  • Link a otro archivo .rst del mismo proyecto (main header del archivo): Structural Elements 1
  • Link a una sección de otro archivo .rst del mismo proyecto (subsección del archivo): Document Subsection

Let’s test wrapping and whitespace significance in inline literals: This is an example of --inline-literal --text, --including some-- strangely--hyphenated-words.  Adjust-the-width-of-your-browser-window to see how the text is wrapped.  -- ---- --------  Now note    the spacing    between the    words of    this sentence    (words should    be grouped    in pairs).

If the --pep-references option was supplied, there should be a live link to PEP 258 here.

Math

This is a test. Here is an equation using :math:: \(X_{0:5} = (X_0, X_1, X_2, X_3, X_4)\). Here is another:

(1)\[\nabla^2 f = \frac{1}{r^2} \frac{\partial}{\partial r} \left( r^2 \frac{\partial f}{\partial r} \right) + \frac{1}{r^2 \sin \theta} \frac{\partial f}{\partial \theta} \left( \sin \theta \, \frac{\partial f}{\partial \theta} \right) + \frac{1}{r^2 \sin^2\theta} \frac{\partial^2 f}{\partial \phi^2}\]

You can add a link to equations like the one above (1) by using :eq:.

Meta

.. meta::
    :keywords: reStructuredText, demonstration, demo, parser
    :description lang=en: A demonstration of the reStructuredText markup language, containing examples of all basic constructs and many advanced constructs.

Blocks

Literal Blocks

Literal blocks are indicated with a double-colon (“::”) at the end of the preceding paragraph (over there -->). They can be indented:

if literal_block:
    text = 'is left as-is'
    spaces_and_linebreaks = 'are preserved'
    markup_processing = None

Or they can be quoted without indentation:

>> Great idea!
>
> Why didn't I think of that?

Line Blocks

This is a line block. It ends with a blank line.
Each new line begins with a vertical bar (“|”).
Line breaks and initial indents are preserved.
Continuation lines are wrapped portions of long lines; they begin with a space in place of the vertical bar.
The left edge of a continuation line need not be aligned with the left edge of the text above it.
This is a second line block.

Blank lines are permitted internally, but they must begin with a “|”.

Take it away, Eric the Orchestra Leader!

A one, two, a one two three four

Half a bee, philosophically,
must, ipso facto, half not be.
But half the bee has got to be,
vis a vis its entity. D’you see?

But can a bee be said to be
or not to be an entire bee,
when half the bee is not a bee,
due to some ancient injury?

Singing…

Block Quotes

Block quotes consist of indented body elements:

My theory by A. Elk. Brackets Miss, brackets. This theory goes as follows and begins now. All brontosauruses are thin at one end, much much thicker in the middle and then thin again at the far end. That is my theory, it is mine, and belongs to me and I own it, and what it is too.

—Anne Elk (Miss)

Doctest Blocks

>>> print 'Python-specific usage examples; begun with ">>>"'
Python-specific usage examples; begun with ">>>"
>>> print '(cut and pasted from interactive Python sessions)'
(cut and pasted from interactive Python sessions)

Code Blocks

.. parsed-literal::
# parsed-literal test
curl -O http://someurl/release-.tar-gz
.. code-block:: json
    :caption: Code Blocks can have captions.
Code Blocks can have captions.
{
"windows": [
    {
    "panes": [
        {
        "shell_command": [
            "echo 'did you know'",
            "echo 'you can inline'"
        ]
        },
        {
        "shell_command": "echo 'single commands'"
        },
        "echo 'for panes'"
    ],
    "window_name": "long form"
    }
],
"session_name": "shorthands"
}
Emphasized lines with line numbers
.. code-block:: python
    :linenos:
    :emphasize-lines: 3,5
1
2
3
4
5
def some_function():
    interesting = False
    print 'This line is highlighted.'
    print 'This one is not...'
    print '...but this one is.'

References

Footnotes

[1](1, 2)

A footnote contains body elements, consistently indented by at least 3 spaces.

This is the footnote’s second paragraph.

[2]Footnotes may be numbered, either manually (as in [1]) or automatically using a “#”-prefixed label. This footnote has a label so it can be referred to from multiple places, both as a footnote reference ([2]) and as a hyperlink reference (label).
[3]This footnote is numbered automatically and anonymously using a label of “#” only.
[*]Footnotes may also use symbols, specified with a “*” label. Here’s a reference to the next footnote: [†].
[†]This footnote shows the next symbol in the sequence.

Citations

[12](1, 2) This citation has some code blocks in it, maybe some bold and italics too. Heck, lets put a link to a meta citation [13] too.
[13]This citation will have two backlinks.

Here’s a reference to the above, [12].

Here is another type of citation: citation

Glossary

.. glossary::

This is a glossary with definition terms for thing like Writing:

Documentation
Provides users with the knowledge they need to use something.
Reading
The process of taking information into ones mind through the use of eyes.
Writing
The process of putting thoughts into a medium for other people to read.

Targets

This paragraph is pointed to by the explicit “example” target.

Explicit external targets are interpolated into references such as “Python [4]”.

Targets may be indirect and anonymous. Thus this phrase may also refer to the Targets section.

Directives

Contents

.. contents:: :local:

These are just a sample of the many reStructuredText Directives. For others, please see: http://docutils.sourceforge.net/docs/ref/rst/directives.html.

Centered text

You can create a statement with centered text with .. centered::

.. centered:: This is centered text!

This is centered text!

Images & Figures

Images

An image directive (also clickable – a hyperlink reference):

.. image:: ../images/sample.jpg
    :target: directives_
_images/sample.jpg
Figures
.. figure:: ../images/sample.jpg
    :alt: reStructuredText, the markup syntax

    A figure is an image with a caption and/or a legend:
reStructuredText, the markup syntax

A figure is an image with a caption and/or a legend:

re Revised, revisited, based on ‘re’ module.
Structured Structure-enhanced text, structuredtext.
Text Well it is, isn’t it?

This paragraph is also part of the legend.

A figure directive with center alignment

.. figure:: ../images/sample.jpg
    :align: center

    This caption should be centered.
_images/sample.jpg

This caption should be centered.

Admonitions

.. Attention:: Colocar el texto deseado aquí

Attention

Attention (Atención)

Caution

Caution (Prudencia)

Danger

Danger (Peligro)

Error

Error (Error)

Hint

Hint (Consejo)

Important

Important (Importante) - Wash behind your ears. - Clean up your room.

  • Including the closet.
  • The bathroom too.
  • Take the trash out of the bathroom.
  • Clean the sink.
  • Call your mother.
  • Back up your data.

Note

Note (Nota). Equations within a note: \(G_{\mu\nu} = 8 \pi G (T_{\mu\nu} + \rho_\Lambda g_{\mu\nu})\).

Tip

Tip (Truco)

Example
Thing1
Thing2
Thing3

Warning

Warning (Advertencia)

And, by the way…

You can make up your own admonition too.

Topics, Sidebars, and Rubrics

.. sidebar:: Sidebar Title
    :subtitle: Optional Subtitle

    This is a sidebar.  It is for text outside the flow of the main text.

    .. rubric:: This is a rubric inside a sidebar

    Sidebars often appears beside the main text with a border and background color.
.. topic:: Topic Title

Topic Title

This is a topic.

.. rubric:: This is a rubric

This is a rubric

Target Footnotes

.. target-notes::
[4](1, 2, 3) http://www.python.org/

Replacement Text

I recommend you try Python, the best language around [4].

Compound Paragraph

This paragraph contains a literal block:

Connecting... OK
Transmitting data... OK
Disconnecting... OK

and thus consists of a simple paragraph, a literal block, and another simple paragraph. Nonetheless it is semantically one paragraph.

This construct is called a compound paragraph and can be produced with the “compound” directive.

Listas y Tablas

Basado en: https://sphinx-rtd-theme.readthedocs.io/en/latest/demo/lists_tables.html

Lists

Enumerated Lists

  1. Arabic numerals.

    1. lower alpha)
      1. (lower roman)
        1. upper alpha.
          1. upper roman)
  2. Lists that don’t start at 1:

    1. Three
    2. Four
    1. C
    2. D
    1. iii
    2. iv
  3. List items may also be auto-enumerated.

Definition Lists

Term
Definition
Term : classifier

Definition paragraph 1.

Definition paragraph 2.

Term
Definition

Option Lists

For listing command-line options:

-a command-line option “a”
-b file options can have arguments and long descriptions
--long options can be long also
--input=file long options can also have arguments
--very-long-option
 

The description can also start on the next line.

The description may contain multiple body elements, regardless of where it starts.

-x, -y, -z Multiple options are an “option group”.
-v, --verbose Commonly-seen: short & long options.
-1 file, --one=file, --two file
 Multiple options with arguments.
/V DOS/VMS-style options too

There must be at least two spaces between the option and the description.

Field list

Author:

David Goodger

Address:

123 Example Street Example, EX Canada A1B 2C3

Contact:

docutils-develop@lists.sourceforge.net

Authors:

Me; Myself; I

organization:

humankind

date:

$Date: 2012-01-03 19:23:53 +0000 (Tue, 03 Jan 2012) $

status:

This is a “work in progress”

revision:

$Revision: 7302 $

version:

1

copyright:

This document has been placed in the public domain. You may do with it as you wish. You may copy, modify, redistribute, reattribute, sell, buy, rent, lease, destroy, or improve it, quote it at length, excerpt, incorporate, collate, fold, staple, or mutilate it, or do anything else to it that your or anyone else’s heart desires.

field name:

This is a generic bibliographic field.

field name 2:

Generic bibliographic fields may contain multiple body elements.

Like this.

Dedication:

For Docutils users & co-developers.

abstract:

This document is a demonstration of the reStructuredText markup language, containing examples of all basic reStructuredText constructs and many advanced constructs.

Bullet Lists

  • A bullet list

    • Nested bullet list.
    • Nested item 2.
  • Item 2.

    Paragraph 2 of item 2.

    • Nested bullet list.
    • Nested item 2.
      • Third level.
      • Item 2.
    • Nested item 3.
  • inline literall

  • inline literall

  • inline literall

Second list level
  • here is a list in a second-level section.

  • yahoo

  • yahoo

    • yahoo

    • here is an inner bullet oh

      • one more with an inline literally. yahoo

        heh heh. child. try to beat this embed:

         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        # -*- coding: utf-8 -*-
        """Test Module for sphinx_rtd_theme."""
        
        
        class Foo:
        
            """Docstring for class Foo.
        
            This text tests for the formatting of docstrings generated from output
            ``sphinx.ext.autodoc``. Which contain reST, but sphinx nests it in the
        
    • and another. yahoo

    • yahoo

    • hi

  • and hehe

But deeper down the rabbit hole
  • I kept saying that, “deeper down the rabbit hole”. yahoo
    • I cackle at night yahoo.
  • I’m so lonely here in GZ guangzhou
  • A man of python destiny, hopes and dreams. yahoo

Hlists

  • First item
  • Second item
  • Third item
  • Forth item
  • Fifth item
  • Sixths item

Hlist with images

  • _images/sample.jpg

    This is a short caption for a figure.

  • _images/sample.jpg

    This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.

Numbered List

  1. One,
  2. Two.
  3. Three with long text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed feugiat sagittis neque quis eleifend. Duis rutrum lectus sit amet mattis suscipit.
    1. Using bullets and letters. (A)
    1. Using bullets and letters. (B)
    1. Using bullets and letters. (C)

Tables

Grid Tables

Here’s a grid table followed by a simple table:

Header row, column 1 (header rows optional) Header 2 Header 3 Header 4
body row 1, column 1 column 2 column 3 column 4
body row 2 Cells may span columns.
body row 3 Cells may span rows.
  • Table cells
  • contain
  • body elements.
body row 4
body row 5 Cells may also be empty: -->  
Inputs Output
A B A or B
False False False
True False True
False True True
True True True
Giant Tables
Header 1 Header 2 Header 3 Header 1 Header 2 Header 3 Header 1 Header 2 Header 3 Header 1 Header 2 Header 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3

List Tables

List tables can have captions like this one.
List table Header 1 Header 2 Header 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 1 Row 1 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 2 Row 2 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 3 Row 3 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
This is a list table with images in it.
_images/sample.jpg

This is a short caption for a figure.

_images/sample.jpg

This is a short caption for a figure.