Metadata-Version: 2.1
Name: ptyx
Version: 22.3
Summary: pTyX is a python precompiler for LaTeX.
Home-page: https://github.com/wxgeo/ptyx
License: GPL-3.0-or-later
Keywords: python,tikz,latex,pdf,exam,mcq,student
Author: Nicolas Pourcelot
Author-email: nicolas.pourcelot@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: Pillow (>=9.1.1,<10.0.0)
Requires-Dist: numpy (>=1.23.0,<2.0.0)
Requires-Dist: pdf2image (>=1.16.0,<2.0.0)
Requires-Dist: sympy (>=1.10.1,<2.0.0)
Project-URL: Repository, https://github.com/wxgeo/ptyx
Description-Content-Type: text/markdown

pTyX
====

Overview
--------
pTyX is a LaTeX precompilator, written in Python.
pTyX enables to generate LaTeX documents, using custom commands or plain python code.
One single pTyX file may generate many latex documents, with different values.
I developped and used pTyX to make several different versions of a same test in exams,
for my student, to discourage cheating.
Since it uses sympy library, pTyX has symbolic calculus abilities too.

Installation
------------
Obviously, pTyX needs a working Python installation.
Python version 3.6 (at least) is required for pTyX to run.

pTyX also needs a working LaTeX installation. Command *pdflatex* must be available in your terminal.

Though not required, the following python libraries are recommanded :
* sympy : http://sympy.org/en/index.html
* geophar : https://github.com/wxgeo/geophar/archive/master.zip

Note that geophar come with its own sympy version embedded, so *you won't need to install sympy yourself*.

You may unzip geophar wherever you like, but you need to edit the *config.py* script to indicate geophar path.
Search for the following lines, and edit them according to your own path :

    # <personnal_configuration>
    param['sympy_path'] = '~/Dropbox/Programmation/geophar/wxgeometrie'
    param['wxgeometrie_path'] = '~/Dropbox/Programmation/geophar'
    # </personnal_configuration>

Nota: *wxgeometrie* is geophar previous name.

Usage
-----

To compile a pTyX file (see below), open a terminal, go to pTyX directory, and write:

    $ python ptyx.py my_file.ptyx

For more options:

    $ python ptyx.py --help


pTyX file specification
-----------------------
A pTyX file is essentially a LaTeX file, with a .ptyx extension, (optionally) some custom commands, and embedded python code.

To include python code in a pTyX file, use the #PYTHON and #END balise.
A special *write()* command is avalaible, to generate on the flow latex code from python.

    This a simple \emph{addition}:\quad
    #PYTHON
    from random import randint
    a = randint(5, 9)
    b = randint(2, 4)
    write('%s + %s = %s\\' % (a, b, a + b))
    #END
    Now, some basic \emph{subtraction}:\quad
    #PYTHON
    write('%s - %s = %s\\' % (a, b, a - b))
    #END

To access any python variable outside python code scope, simply add an hashtag before the variable name.

Any valid python expression can also be evaluated this way, using syntax #{python_expr}.

    $#a\mul#b=#{a*b}$

However, pTyX has also reserved tags, like conditionals statements #IF, #ELSE, #ENDIF...

(More to come...)

