# Automatic execution of code blocks

Compile this document with

    doconce format ipynb execute.do.txt --execute

Hidden execution cells (`pyhid`, `pycod-e`) can be used to perform operations (e.g. imports, variable initializations) without showing any cell. The `pyhid` environment executes and hides the cell in formats other than .ipynb:

The `pycod-e` environment executed but hides the cell also in .ipynb files:

    import os
    os.listdir(".")
    a = 1

`pycod` is a normal cell that should execute automatically when using `--execute`. Note that this cells relies on code executed in a previous hidden cell:

    print(sys.version)
    b = 2
    c = a + b
    print("The result is {}".format(c))
    c

The `*-t` environment (e.g. `pycod-t`) formats a cell to text, and can be used to print an example

    # This is a for-loop example
    for i in [0,10]:
      print(i)

The `*out` (e.g. `pycod-out`) environment can be used to write a cell output:

    # This is a normal pycod cell
    1/0

    1/0: You cannot divide by zero

# Plotting

This is a cell that should plot and output:

    from pylab import *
    x = linspace(0, 10, 100)
    plot(x, x*x)
    show()

To improve quality when exporting to LaTeX, the following code has automatically been run to enable PDF export in notebooks.

    from IPython.display import set_matplotlib_formats
    set_matplotlib_formats('png', 'pdf')

# Ignore output

Predefined output can be omitted by passing `--ignore_output` to DocOnce. This will remove all environments ending with `out`.

    a = 2
    print(a)

    2

# Code with errors

If code contains errors, it will still be run and the exception shown as part of the output:

    for a in range(10)
        print(a)

# Opening files

The working directory is the same as the .do.txt file. You may want to use `os.chdir` to change the directory.

    with open("../LICENSE") as f:
        print(f.read())