Bopytex/README.md

87 lines
1.7 KiB
Markdown

# Bopytex
[![Build Status](https://drone.opytex.org/api/badges/lafrite/Bopytex/status.svg)](https://drone.opytex.org/lafrite/Bopytex)
Bopytex is a command line tool which embed python into latex. It uses jinja2 to do so with a modified environnement to match with latex syntax.
## Installing
Install and update using [pip](https://pip.pypa.io/en/stable/quickstart/)
pip install -U bopytex
## Simple example
``` latex
% save this as tpl_simple.tex
\documentclass[12pt]{article}
\title{Bopytex example -- {{ number }}}
\begin{document}
\maketitle
%- set a = 10
%- set n = 2
We have two variables
\begin{itemize}
\item a: \Var{a}
\item n: \Var{n}
\end{itemize}
%# We can use blocks
\begin{itemize}
%- for i in n
\item \Var{a}
%- endfor
\end{itemize}
\end{document}
```
To create a version a this document type this
``` bash
$ bopytex tpl_simple.tex
```
## How I use it
I build this program to produce individual exams subjects for each of my student with the correction associated. I write a template, and bopytex build subject and correction.
To produce formulas and values, I use an another tool I an developing: `mapytex <https://git.opytex.org/lafrite/Mapytex`. I am importing it through `bopytex_config.py`.
``` python
# bopytex_config.py
from mapytex import Expression
from random import random
```
Every variables, objects or function inside this file will be available inside the template.
``` latex
% tpl_example.tpl
\documentclass[12pt]{article}
\title{Bopytex with Mapytex example -- \Var{ number }}
\begin{document}
\maketitle
%- set e = Expression.random("{a} + {b}")
\Var{e}
\Var{e.simplify()}
\end{document}
```
Then I can produce multiple documents (3 here)
``` bash
$ bopytex tpl_simple.tex -q 3 -c bopytex_config.py
```