Create reports — SLiCAP 4.0.7 documentation

# Create reports

With SLiCAP you document your design while doing the design work:

- HMTL reporting tools let you create one-click updatable management presentations or detailed design websites

- LaTeX reporting tools let you create single-click updated publications and design reports.

SLiCAP is also compatible with Jupyter Notebooks.

## Create SLiCAP-style websites

SLiCAP-style websites are simple and have no width limitation. Style information is stored in the `html/css/` folder in the project driercory.

Use functions from the SLiCAPhtml module to create a website with text, tables, typesetted equations, and figures.

The example: My First RC Network shows you how to create a default SLiCAP-style project website.

Below a brief overview of related topics; examples are taken from `myFirstRCnetwork.py`.

### Project initialization

     1#!/usr/bin/env python3
     2# -*- coding: utf-8 -*-
     3"""
     4Created on Sun Sep 29 20:05:45 2024
     5
     6@author: anton
     7
     8This file requires SLiCAP_V3
     9"""
    10
    11import SLiCAP as sl
    12import sympy as sp
    13
    14# Define all the paths, create the HTML main index page, reset the parser, and
    15# compile the SLiCAP libraries.
    16
    17prj = sl.initProject('My first RC network')

After project initialization:

1. The `index.html` file is created in the html folder in the project directory

2. The project configuration is updated:

       >>> sl.ini.dump("html")

       HTML
       ----
       ini.html_prefix            =
       ini.html_index             = index.html
       ini.html_page              = index.html
       ini.html_pages
                index.html
       ini.html_labels

   1. html_prefix

      String added at the start of each new HTML page name

   2. html_index

      Acitve index page: if a new HTML page is created, a link to it is shown on the active index page.

   3. html_page

      Active HTML page: equations, tables, text, etc, will be written to this page.

   4. html_pages

      A list with HTML page names

   5. html_labels

      A list with HTML labels

### Circuit data created with makeCircuit()

The instruction `makeCircuit()` creates a new circuit index page on the main index page and a page `<circuit title>_Circuit-data.html`.

     1# Create a circuit object from a schematic file or a SLiCAP netlist:
     2fileName = "myFirstRCnetwork"
     3
     4# KiCAD version 8.0 +
     5fileName = 'kicad/' + fileName + '/' + fileName + '.kicad_sch'
     6
     7# LTspice
     8#fileName = ini.cir_path + fileName + '.asc'
     9
    10# gSchem or lepton-eda
    11#fileName = 'lepton-eda/' + fileName + '.sch'
    12
    13# Use existing netlist that resides in the ini.cir_path directory
    14#fileName = fileName + '.cir'
    15
    16cir = sl.makeCircuit(fileName, imgWidth=400)

    >>> sl.ini.dump("html")

    HTML
    ----
    ini.html_prefix            = myFirstRCnetwork_
    ini.html_index             = myFirstRCnetwork_index.html
    ini.html_page              = myFirstRCnetwork_Circuit-data.html
    ini.html_pages
             index.html
             myFirstRCnetwork_index.html
             myFirstRCnetwork_Circuit-data.html
    ini.html_labels
    label : fig_myFirstRCnetwork.kicad_sch
            type        : fig
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Circuit diagram of myFirstRCnetwork."
    label : netlist_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Netlist of myFirstRCnetwork.cir."
    label : elementdata_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Expanded netlist of myFirstRCnetwork.cir."
    label : params_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Parameter definitions of myFirstRCnetwork.cir."

### Complete website

After running the complete example a complete website has been created and some page information is stored in the SLiCAP.ini file in the project directory:

    >>> sl.ini.dump("html")

    HTML
    ----
    ini.html_prefix            = myFirstRCnetwork_
    ini.html_index             = myFirstRCnetwork_index.html
    ini.html_page              = myFirstRCnetwork_Links.html
    ini.html_pages
             index.html
             myFirstRCnetwork_index.html
             myFirstRCnetwork_Circuit-data.html
             myFirstRCnetwork_Matrix-equations.html
             myFirstRCnetwork_Plots.html
             myFirstRCnetwork_Poles-and-zeros.html
             myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
             myFirstRCnetwork_Links.html
    ini.html_labels
    label : fig_myFirstRCnetwork.kicad_sch
            type        : fig
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Circuit diagram of myFirstRCnetwork."
    label : netlist_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Netlist of myFirstRCnetwork.cir."
    label : elementdata_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Expanded netlist of myFirstRCnetwork.cir."
    label : params_myFirstRCnetwork
            type        : data
            href        : myFirstRCnetwork_Circuit-data.html
            description : "Parameter definitions of myFirstRCnetwork.cir."
    label : MNA
            type        : eqn
            href        : myFirstRCnetwork_Matrix-equations.html
            description : "MNA equation of the network"
    label : Iv
            type        : eqn
            href        : myFirstRCnetwork_Matrix-equations.html
            description : "Vector with independent variables"
    label : M
            type        : eqn
            href        : myFirstRCnetwork_Matrix-equations.html
            description : "MNA matrix"
    label : Dv
            type        : eqn
            href        : myFirstRCnetwork_Matrix-equations.html
            description : "Vector with dependent variables"
    label : gainLaplace
            type        : eqn
            href        : myFirstRCnetwork_Matrix-equations.html
            description : "Laplace transfer function"
    label : figMag
            type        : fig
            href        : myFirstRCnetwork_Plots.html
            description : "Magnitude characteristic of the RC network."
    label : figPolar
            type        : fig
            href        : myFirstRCnetwork_Plots.html
            description : "Polar plot of the transfer of the RC network."
    label : figdBmag
            type        : fig
            href        : myFirstRCnetwork_Plots.html
            description : "dB Magnitude characteristic of the RC network."
    label : figPhase
            type        : fig
            href        : myFirstRCnetwork_Plots.html
            description : "Phase characteristic of the RC network."
    label : figDelay
            type        : fig
            href        : myFirstRCnetwork_Plots.html
            description : "Group delay characteristic of the RC network."
    label : PZlistSym
            type        : data
            href        : myFirstRCnetwork_Poles-and-zeros.html
            description : "Symbolic values of the poles and zeros of the network"
    label : PZlist
            type        : data
            href        : myFirstRCnetwork_Poles-and-zeros.html
            description : "Poles and zeros of the network"
    label : figPZ
            type        : fig
            href        : myFirstRCnetwork_Poles-and-zeros.html
            description : "Poles and zeros of the RC network."
    label : figStep
            type        : fig
            href        : myFirstRCnetwork_Poles-and-zeros.html
            description : "Unit step response of the RC network."
    label : desEq
            type        : heading
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Design equations for $R$ and $C$"
    label : mu_t
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Symbolic expression of the unit step response"
    label : epsilon_t
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Symbolic expression of the settling error versus time"
    label : tau_s
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Symbolic expression of the settling time"
    label : RR1
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Design equation for $R$"
    label : CC1
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Design equation for $C$"
    label : Rvalue
            type        : eqn
            href        : myFirstRCnetwork_Design-equations-for-$R$-and-$C$.html
            description : "Numeric value of $R$"

## Create Sphinx-style websites

1. Write your report in ReStructured Text and use functions from the SLiCAPrst module for creating and updating design data.

2. Compile your website with Sphinx

The example: SLiCAP Sphinx report example is completely devoted to this topic. It uses a the Sphinx Book Theme as output format.

## Create LaTeX-style PDF reports

1. Write your report in LaTeX and use functions from the SLiCAPlatex module for creating and updating design data.

2. Compile your report with LaTeX

The example: SLiCAP LaTeX report example. is completely devoted to this topic.

## Create Jupyter Notebooks

The example: My First RC Network (`myFirstRCnetwork.ipynb`) shows you how to work with Jupyter Notebooks.