Skip to main content

pTyX is a python precompiler for LaTeX.

Project description

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

pTyX is only tested on GNU/Linux (Ubuntu), but should work on MacOs X too.

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

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

The easiest way to install it is using pip.

$ pip install ptyx

You may also download and install the latest version from Github:

$ git clone https://github.com/wxgeo/ptyx.git
$ cd ptyx
$ pip install -e .

Usage

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

$ ptyx my_file.ptyx

For more options:

$ ptyx --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 available, to generate latex code on the flow 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 a 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...)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ptyx-30.2.0.tar.gz (55.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ptyx-30.2.0-py3-none-any.whl (67.9 kB view details)

Uploaded Python 3

File details

Details for the file ptyx-30.2.0.tar.gz.

File metadata

  • Download URL: ptyx-30.2.0.tar.gz
  • Upload date:
  • Size: 55.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ptyx-30.2.0.tar.gz
Algorithm Hash digest
SHA256 ee174e9c9061c2fa2f909c9e2a3ed2ce074309058f1100704c50951a1cbd1926
MD5 1176ef382c8d0754cb2d60ee72d907d4
BLAKE2b-256 a0f1f0114214532b11cc72faea7c0466e9f727bc21b28b677f800543dd0a1772

See more details on using hashes here.

File details

Details for the file ptyx-30.2.0-py3-none-any.whl.

File metadata

  • Download URL: ptyx-30.2.0-py3-none-any.whl
  • Upload date:
  • Size: 67.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ptyx-30.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29743a682f9f573ef3693ab3d5cd92208364c5ebbda2e3be9ec5e12b6b313c54
MD5 68bacdccecb16419ac99ea04c35cdb45
BLAKE2b-256 974355e77ab286505d39bc1bf8823ffc67d784cc303a696c8751ac4a18022715

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page