ZC EM API: Provide user control to not de-register buffers after completion
[charm.git] / doc / README.rst
blobbc9ea2754a83cb504b5912c3c83fdba56a253c7e
1 ========================================
2 Editing and building the Charm++ manuals
3 ========================================
5 The Charm++ manuals in this directory are written in reStructuredText (RST,
6 http://docutils.sourceforge.net/rst.html) and meant to be built with the
7 sphinx documentation generator (http://www.sphinx-doc.org/). Pre-built
8 versions are available on readthedocs.io (https://charm.readthedocs.io).
10 This file describes how the documentation can be edited and built locally.
12 Building the manual
13 ===================
15 Sphinx supports building HTML and PDF versions of the manual. For the HTML
16 version, only Sphinx is required. Creating the PDF manual also requires pdflatex.
18 Building the HTML manual:
20 .. code-block:: bash
22   $ pip install sphinx
23   $ cd charm/doc
24   $ sphinx-build . html/
25   $ firefox html/index.html
28 Building the PDF manual:
30 .. code-block:: bash
32   $ pip install sphinx
33   $ cd charm/doc
34   $ sphinx-build -b latex . latex/
35   $ cd latex
36   $ make
37   $ evince charm.pdf
40 RST primer
41 ==========
43 This section gives a brief overview of reStructuredText (RST) with the most
44 important items for the Charm++ manual. A more comprehensive manual is
45 available here: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html.
47 This file itself is written in RST -- take a look at the source if something is unclear.
49 Lists
50 -----
52 - Itemized:
54   .. code-block:: none
56     - Item 1
57     - Item 2
58     ...
60 - Enumerated:
62   .. code-block:: none
64     #. Item 1
65     #. Item 2
66     ...
68 Sections
69 --------
71 Sections get defined by underlining their title:
73 .. code-block:: none
75   Section name
76   ============
78 - First level:  ``======``
79 - Second level: ``-----``
80 - Third level:  ``~~~~~~``
81 - Fourth level: ``^^^^^``
82 - Fifth level:  ``'''''``
84 The underline has to have the same length as the title itself.
87 Code
88 ----
90 - Inline code (similar to ``\texttt{}``):  \`\`int foo()\`\`: ``int foo();``
92   - Inline code is not syntax-highlighted.
94 - Code blocks (similar to ``\begin{alltt} .. \end{alltt}``):
96   - Code blocks have syntax highlighting via the pygments
97     (http://pygments.org) library.
99   - Do not use the default ``::`` highlighting mode, but specify the
100     language explicitly: ``.. code-block:: fortran`` (or ``c++``, ``none``, ...)
102     .. code-block:: none
104       .. code-block:: fortran
106         call foo()
107         call bar()
109   Versions of pygments newer than 2.3.1 will allow specifying ``charmci`` as the
110   language for ci-files (instead of using C++).
112 Figures
113 -------
115 .. code-block:: none
117   .. figure:: figures/detailedsim_newer.png
118     :name: BigNetSim1
119     :width: 3.2in
121     Figure caption goes here.
124 Tables
125 ------
127 Code:
129 .. code-block:: none
131   .. table:: Table caption goes here.
132     :name: tableref
134     ============= ==================== ========================================================
135     C Field Name  Fortran Field Offset Use
136     ============= ==================== ========================================================
137     maxResidual   1                    If nonzero, termination criteria: magnitude of residual.
138     maxIterations 2                    If nonzero, termination criteria: number of iterations.
139     solverIn[8]   3-10                 Solver-specific input parameters.
140     ============= ==================== ========================================================
142 Rendered as:
144 .. table:: Table caption goes here.
145   :name: tableref
147   ============= ==================== ========================================================
148   C Field Name  Fortran Field Offset Use
149   ============= ==================== ========================================================
150   maxResidual   1                    If nonzero, termination criteria: magnitude of residual.
151   maxIterations 2                    If nonzero, termination criteria: number of iterations.
152   solverIn[8]   3-10                 Solver-specific input parameters.
153   ============= ==================== ========================================================
155 References
156 ----------
158 Adding reference labels
159 ~~~~~~~~~~~~~~~~~~~~~~~
161 Labels to refer to tables and figures are created by the ``:name:`` property above.
162 Create labels for sections like this:
164 .. code-block:: none
166   .. _my-label:
167   Section ABCD
168   ============
170 Section ABCD can now be referenced with ``my-label`` (note the missing ``_``
171 and ``:`` in the reference).
174 Referencing labels
175 ~~~~~~~~~~~~~~~~~~
177 - With number (best for figures & tables): ``:numref:`reference_name```
178 - With text: ``:ref:`reference_name``` (text will be taken from referenced item automatically)
179 - With custom text: ``:ref:`Custom text here <reference_name>```
181 Links
182 -----
184 URLs get parsed and displayed as links automatically. For example: https://charm.cs.illinois.edu/
186 Citations
187 ---------
189 .. code-block:: none
191   This is a reference [Ref]_ .
193   .. [Ref] Paper or article reference, URL, ...
195 Footnotes
196 ---------
198 .. code-block:: none
200   This text has a footnote [1]_
202   .. [1] Text of the footnote.