scopesim.reports.rst_utils module¶
- scopesim.reports.rst_utils.latexify_rst_text(rst_text, filename=None, path=None, title_char='=', float_figures=True, use_code_box=True)[source]¶
Converts an RST string (block of text) into a LaTeX string
NOTE: plots will NOT be generated with this command. For that we must invoke the
plotfiycommand.- Parameters:
- rst_textstr
- filenamestr, optional
What to name the latex file. If None, the filename is derived from the text title
- pathstr, optional
Where to save the latex file
- title_charstr, optional
The character used to underline the rst text title. Usually “=”.
- float_figuresbool, optional
Set to False if figures should not be placed by LaTeX. Replaces all
egin{figure}withegin{figure}[H]- use_code_boxbool, optional
Adds a box around quote blocks
- Returns:
- tex_strstr
The same string or block of text in LaTeX format
Examples
- ::
rst_text = ‘’’ Meaning of life ===============
Apparently it’s 42. Lets plot
This is an included figure caption¶
‘’’
plotify_rst_text(rst_text) latexify_rst_text(rst_text, filename=”my_latex_file”, path=”./”)
- scopesim.reports.rst_utils.plotify_rst_text(rst_text)[source]¶
Generates and saves plots from code blocks in an RST string
The save directory for the plots defaults to
scopesim.rc.__config__["!SIM.reports.image_path"]. This can be overridden ONLY inside a COMMENT block using the path keyword.- Parameters:
- rst_textstr
Any RST text string
Notes
Possible actions are: [reset, clear-figure, plot]
Code is retained between code blocks in the same string, so we do not need to re-write large sections of code
By default
import numpy as npandimport matplotlib.pyplot as pltare loaded automatically, so these do not need to be explicitly specified in each code block.THE EXCEPTION is when the action
resetis specified. This clears the code_context variable.
Examples
The following rst text will generate a plot and save it in three formats:
..!! processed by numpydoc !!
- scopesim.reports.rst_utils.process_code(context_code, code, options)[source]¶
Extracts and adds code from the node text to the context_code string
Code can be passed in either a
literal_blockorcommentdocutils node. The options regarding what to do with the code are included in either the :class: and :name: tag of aliteral_blocknode, or in a yaml header section in acommentnode.See below for examples of code blocks.
Options for controlling what happens to the code block are as follows:
name: The filename for the plot
- format: Any matplotlib-accepted file format, e.g: png, pdf, svg, etc.
Multiple file formats can be
- action: [reset, clear-figure, plot]
resetclears the context_code string. By default code is saved from previous code blocks.clear-figureaddsplt.clf()to the context string before the current code block is addedplotaddsplt.savefig({name}.{format})to the context string. If multiple formats are given, these will be iterated over.
For
commentblocks, options should be given in a yaml style header, separated form the code block by exactly three (3) hyphens (’—‘)For
literal_blockblocks, we hijack the:class:and:name:attributes. See the examples below. All action keywords are passed to:class:. Format keys are passed asformat-<key>.- Parameters:
- context_codestr
code from previous Nodes
- codestr
code from the current Node
- optionsdict
options dictionary derived from Node attributes or RST header blocks
- Returns:
- context_codestr
Examples
Example of
literal_blockcode block:.. code:: :name: my_fug :class: reset, clear-figure, plot, format-png plt.plot([0,1], [1,1]) .. figure:: my_fug.png :name: fig:my_fug
Example of a
commentcode block:.. name: my_fug2 format: [jpg, svg] action: [reset, clear-figure, plot] --- plt.plot([0,1], [1,0]) .. figure:: my_fug2.jpg :name: fig:my_fug2
- scopesim.reports.rst_utils.process_comment_code(node, context_code)[source]¶
Add code from a
commentnode to the context_code string
- scopesim.reports.rst_utils.process_literal_code(node, context_code)[source]¶
Add code from a
literal_blocknode to the context_code string
- scopesim.reports.rst_utils.rstify_rst_text(rst_text, filename=None, path=None, title_char='=')[source]¶
The same as
latexify_rst_text`, but the output is in RST format
- scopesim.reports.rst_utils.walk(node, context_code=None)[source]¶
Recursively walk through a docutils doctree and run/plot code blocks
- Parameters:
- nodedocutils.node.Node
- context_codestr, optional
A code string inherited from previous code/comment nodes
- Returns:
- context_codestr
Code to be inherited by subsequent code/comment nodes