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]
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.3.tar.gz
(9.8 kB
view details)
Built Distribution
hltex-0.0.3-py3-none-any.whl
(13.2 kB
view details)
File details
Details for the file hltex-0.0.3.tar.gz
.
File metadata
- Download URL: hltex-0.0.3.tar.gz
- Upload date:
- Size: 9.8 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b84ef03eb50b962aad2c2b11e5e40d683fc9fb65ec60d3d72c1ae64d71cdfa54 |
|
MD5 | 4d155ddacb8131a73ce2940e332d6317 |
|
BLAKE2b-256 | 1fcbeb73e11d59343eab4793d5c8bddea6a73132104e8b957d56615961fa756f |
File details
Details for the file hltex-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: hltex-0.0.3-py3-none-any.whl
- Upload date:
- Size: 13.2 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbbdcec6975088e414aa612ccc79638c07e6801a0da69fa1ce1f7bd03e21195c |
|
MD5 | ce0793f1b3d7a2c6c944bf10ae930315 |
|
BLAKE2b-256 | 6c0711c557d08103bab815cec5d4e3d61a0a9d06eb98c5b16c25dc8feda9be50 |