# code.mindmeldr.com /graphterm

### Navigation

- index
- next |
- previous |
- Docs Home |
- Contents »
- Advanced topics »

# Markdown notebook format

Contents

- Markdown notebook format

Although GraphTerm can read and write notebooks in the IPython (`.ipynb`) format, it natively saves notebooks using basic Markdown syntax, with support for the GitHub-style fenced code extension. The notebook filenames have the extension `.py.gnb.md` for Python, `.R.gnb.md` for R and so on. The Markdown sequential text format has some advantages over the JSON format used for `.ipynb` files:

- Notebooks may be easily viewed using standard Markup rendering software and will automatically render on GitHub (example).
- Notebooks can be easily modified using standard text editors, moving around blocks of code and markup.
- Notebooks can be split and concatenated at block boundaries, like text files (e.g. `cat a.py.gnb.md b.py.gnb.md > c.py.gnb.md`)

Markup cells are simply saved as Markdown text in the notebook file. This can include raw HTML, figures, or program statements. Triple dashes (`---`) can be used as page breaks to denote section/slide boundaries. Program statements occurring within a markup cell must be indented by at least four spaces. The data URIs for all figures are saved at the end of the file, making it easier to view the notebook cell content.

Code cells are saved as fenced code blocks in the notebook file, e.g.:

    ```python
    print "Hello World"
    ```

Output text resulting from running the code is saved in fenced code blocks of type `output`:

    ```output
    Hello
    ```

Figures resulting from code execution are distinguished by the prefix `output-` in their name, e.g.:

    ![image][output-fig1-test.py]

Multiple `output` text blocks and output figures, separated by blank lines, are considered as representing the cumulative output from executing the previous code block. To create a progressively fillable notebook, `output` blocks and figures are converted to `expect` blocks and figures. Here’s an example notebook file:

    # A sample GraphTerm notebook file in Markdown format

    ---

    ## Part I

    Write a function ``abs_add`` that returns the sum of the absolute values of two numbers. Test the function.

    ```python
    # Part 1: Define the function abs_add
    def abs_add(a, b):
        return abs(a) + abs(b)

    # Testing function abs_add
    print abs_add(3, -4)
    ```

    ```output

    7
    ```

    ---

    ## Part II

    Write some code to create a simple line plot with a title using the ``pylab`` module.

    ```python
    x = [1, 2, 3, 4]
    y = [1, 4, 9, 16]
    title = "Plot of y = x-squared"

    import pylab
    # Part 2: Plotting code
    pylab.plot(x, y)
    pylab.title(title)

    ```

    ```output

    ```

    ![image][output-fig1-Progressive-demo.py]

    [output-fig1-Progressive-demo.py]: data:image/png;base64,iVBORw0KGgo...

### Navigation

- index
- next |
- previous |
- Docs Home |
- Contents »
- Advanced topics »