Skip to main content

A compiler for HLTeX, a higher-level language on top of LaTeX

Project description

# HLTeX
HLTeX is a new typesetting language built on top of LaTeX designed for conciseness and ease of use,
while also adding support for additional features like inline Matplotlib figure generation
and SymPy integration.

### Installation
1. Install the compiler with `pip3 install hltex`.
1. Install [Docker](https://www.docker.com/).
1. Run `docker pull czentye/matplotlib-minimal`.

### Example
```TeX
\documentclass{article}
\title{My First Document}
\author{Your Truly}
===
\section{HLTeX is Awesome}
Here are some words that are in this section.
Math is fun, so here's an equation:
\eq:
f(x) = x^2 + 3
We might want to give our equation a label, like this:
\eq[cubic]:
f(x) = x^3 - 4x^2 + 2
We can reference our equation with Equation \ref{eq:cubic}.
This is automatically joined with the non-breaking space \verb{~}.
```

### Syntax
HLTeX supports two kinds of macros: *commands* and *environments*.

Commands are just as they are in plain LaTeX, and they look like this:
```
This text \emph{is emphasized} using the `emph' command.
```
They are preceeded by a backslash, the *escape character*, followed by either any number of letters in the alphabet
(capital or lowercase), or by a single non-alphabetical character, like this:
```
Once upon a time, in a distant galaxy called \"O\"o\c c, there lived a computer named R.~J. Drofnats.
```
The `\"` *control symbol* puts an umlaut over the following character, while the `\c` control symbol
puts a "cedilla" under the next character.

Environments are slightly different in HLTeX than in LaTeX.
Whereas in LaTeX they are enclosed by begin/end commands, in HLTeX environments use indentation-based blocks, like this:
The main syntactic difference between HLTeX and LaTeX is that HLTeX uses indentation-based environments, like this:
```
\eq:
f(x) = x^2 + 3
```
Notice that there isn't a trailing `\end{eq}`!
This makes typing out your documents a breeze.

Commands can take both *required* and *optional* arguments.
Required arguments are enclosed in curly braces `{}`, while optional arguments are enclosed in square brackets `[]`.
For compatibility reasons, only curly braces are required to match;
this means `\command{[}` is valid HLTeX, because it is valid LaTeX.

As in LaTeX, files are broken into two parts: a *preamble*, and a *document*.
Whereas LaTeX encloses the document in an enormous pair of begin/end commands, in the interest of conciseness,
HLTeX separates these two parts by `===` (or optionally more equals signs, but at least three).
In the preamble, only commands and their arguments are allowed--in particular, this means
environments can only be created in the document (i.e. after the `===`).

### Usage
To compile a file into LaTeX, you can use our CLI utility, like this:
```
hltex myfile.hltex
```
By default, this will put the resulting LaTeX code into a file called `myfile.tex`, at which point you can run
```
pdflatex myfile.tex
```
to generate a PDF.
Optionally, you can specify your own output file, like this:
```
hltex myfile.hltex --out myotherfile.tex
```


### Inline-python support
We use (Epicbox)[https://github.com/StepicOrg/epicbox] and (Docker)[https://hub.docker.com/]. After installing Docker, run

```
pip install epicbox
docker pull python:3.6.5-alpine
```

Now you can run python code in HLTeX and have save its output directly to your generated LaTeX file!

[example coming]


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

hltex-0.0.5.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

hltex-0.0.5-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file hltex-0.0.5.tar.gz.

File metadata

  • Download URL: hltex-0.0.5.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.4

File hashes

Hashes for hltex-0.0.5.tar.gz
Algorithm Hash digest
SHA256 ddd2efbc04e81c5a0fe256c01c06dc4a5a4b57fe659387085ebbd4cc019753f3
MD5 227a9f27c0089e69ff95d8df5d347b6b
BLAKE2b-256 3acaa4378056bcc01a9fe09d36a23fee83da6b3f163749e1a27afb9f9c4081b9

See more details on using hashes here.

File details

Details for the file hltex-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: hltex-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.4

File hashes

Hashes for hltex-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 40dca0ac2244f49b187e4b8f9326ee67a2f684bdb52e6dfd7cb9ecdee455e19e
MD5 80bac117b052e048bb52df2a2e85c343
BLAKE2b-256 06bf19c3825d1766f85762011e5923b18f02e58c07df6c69adc25d1a38d3e97a

See more details on using hashes here.

Supported by

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