# SpiX 🦜 Yet another TeX compilation tool: simple, human readable, no option, no magic
SpiX is [yet another compilation tool](https://www.ctan.org/topic/compilation) for ``.tex`` files. It aims at being simple and human readable. Every piece of configuration is written in the ``.tex`` file itself, in a clear format (a list of console commands).
## Why SpiX?
With SpiX, the compilation process of a ``.tex`` file (Is it compiled using latex? pdflatex? xelatex? lualatex? Should I process its bibliography? with bibtex or biber? Is there an index?) is written in the ``.tex`` file itself, in a human-readable format (a shell script). That way:
- when you want to compile two years later, you don't have to guess the compilation process;
- you can send the ``.tex`` file to someone, and that's it: no need to send detailed instructions or a Makefile along with it (everything is in the ``.tex`` file);
- the compilation process is human readable: it can be understood by anyone who is able to read a very basic shell script. In particular, one can read it even if she does not know SpiX.
### The ``.tex`` file
Write the compilation process of your ``.tex`` file as a shell script, before the preamble, as lines starting with ``%$``:
% Compile this file twice with lualatex.
%$ lualatex foo.tex
%$ lualatex foo.tex
\documentclass{article}
\begin{document}
Hello, world!
\end{document}
You can also replace the file name with ``$texname``. That way, you don't have to worry about the file name when writing your commands.
% Compile this file twice with lualatex.
%$ lualatex $texname
%$ lualatex $texname
### Compilation
To compile the ``.tex`` file, run SpiX:
spix foo.tex
Spix will parse the ``.tex`` file, looking for shell snippets (lines before the preamble starting with ``%$``), and run them.
That's all!
## Documentation
The complete documentation is available on [readthedocs](http://spix.readthedocs.io).
To compile it from source, download and run:
cd doc && make html
## What's new?
See [changelog](https://framagit.org/spalax/spix/blob/main/CHANGELOG.md).
## Download and install
* The preferred way to get `SpiX` working is by using your distribution package manager. With Debian (and Ubuntu, and surely other distributions that inherit from Debian), it is in package [`texlive-extra-utils`](https://packages.debian.org/search?keywords=texlive-extra-utils) (since version 2020.20210202-3)::
sudo apt install texlive-extra-utils
* Otherwise, you can install SpiX using pip:
python3 -m pip install spix
* Other installation methods can be found in the [documentation](https://spix.readthedocs.io/en/latest/install/).
## License
*Copyright 2020-2023 Louis Paternault*
SpiX is licensed under the [Gnu GPL 3 license](https://www.gnu.org/licenses/gpl-3.0.html), or any later version.
Raw data
{
"_id": null,
"home_page": "http://framagit.org/spalax/spix",
"name": "spix",
"maintainer": "",
"docs_url": null,
"requires_python": "<4,>=3.7",
"maintainer_email": "",
"keywords": "tex latex compilation",
"author": "Louis Paternault",
"author_email": "spalax@gresille.org",
"download_url": "https://files.pythonhosted.org/packages/79/97/4aeb6f2b40a2790a8b68b4383bcf3bd7eda2af94fa2a37885abfa193c002/spix-1.4.0.tar.gz",
"platform": null,
"description": "# SpiX \ud83e\udd9c Yet another TeX compilation tool: simple, human readable, no option, no magic\n\nSpiX is [yet another compilation tool](https://www.ctan.org/topic/compilation) for ``.tex`` files. It aims at being simple and human readable. Every piece of configuration is written in the ``.tex`` file itself, in a clear format (a list of console commands).\n\n## Why SpiX?\n\nWith SpiX, the compilation process of a ``.tex`` file (Is it compiled using latex? pdflatex? xelatex? lualatex? Should I process its bibliography? with bibtex or biber? Is there an index?) is written in the ``.tex`` file itself, in a human-readable format (a shell script). That way:\n\n- when you want to compile two years later, you don't have to guess the compilation process;\n- you can send the ``.tex`` file to someone, and that's it: no need to send detailed instructions or a Makefile along with it (everything is in the ``.tex`` file);\n- the compilation process is human readable: it can be understood by anyone who is able to read a very basic shell script. In particular, one can read it even if she does not know SpiX.\n\n### The ``.tex`` file\n\nWrite the compilation process of your ``.tex`` file as a shell script, before the preamble, as lines starting with ``%$``:\n\n % Compile this file twice with lualatex.\n %$ lualatex foo.tex\n %$ lualatex foo.tex\n \n \\documentclass{article}\n \\begin{document}\n Hello, world!\n \\end{document}\n\nYou can also replace the file name with ``$texname``. That way, you don't have to worry about the file name when writing your commands.\n\n % Compile this file twice with lualatex.\n %$ lualatex $texname\n %$ lualatex $texname\n\n### Compilation\n\nTo compile the ``.tex`` file, run SpiX:\n\n spix foo.tex\n\nSpix will parse the ``.tex`` file, looking for shell snippets (lines before the preamble starting with ``%$``), and run them.\n\nThat's all!\n\n## Documentation\n\nThe complete documentation is available on [readthedocs](http://spix.readthedocs.io).\n\nTo compile it from source, download and run:\n\n cd doc && make html\n\n## What's new?\n\nSee [changelog](https://framagit.org/spalax/spix/blob/main/CHANGELOG.md).\n\n## Download and install\n\n* The preferred way to get `SpiX` working is by using your distribution package manager. With Debian (and Ubuntu, and surely other distributions that inherit from Debian), it is in package [`texlive-extra-utils`](https://packages.debian.org/search?keywords=texlive-extra-utils) (since version 2020.20210202-3)::\n\n sudo apt install texlive-extra-utils\n\n* Otherwise, you can install SpiX using pip:\n\n python3 -m pip install spix\n\n* Other installation methods can be found in the [documentation](https://spix.readthedocs.io/en/latest/install/).\n\n## License\n\n*Copyright 2020-2023 Louis Paternault*\n\nSpiX is licensed under the [Gnu GPL 3 license](https://www.gnu.org/licenses/gpl-3.0.html), or any later version.\n",
"bugtrack_url": null,
"license": "GPLv3 or any later version",
"summary": "Yet another TeX compilation tool: simple, human readable, no option, no magic.",
"version": "1.4.0",
"project_urls": {
"Documentation": "http://spix.readthedocs.io",
"Homepage": "http://framagit.org/spalax/spix",
"Source": "https://framagit.org/spalax/spix",
"Tracker": "https://framagit.org/spalax/spix/issues"
},
"split_keywords": [
"tex",
"latex",
"compilation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "17caf9889117b679de5b84b7cc7c23e7402251b9e326208026b3d4001e3e573c",
"md5": "01092673b0e22618b0cb24136e15029b",
"sha256": "c2b0f26144fa463649025bbf2c66c1939418990c5304ad90228b0e9c240cb2cc"
},
"downloads": -1,
"filename": "spix-1.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "01092673b0e22618b0cb24136e15029b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.7",
"size": 18106,
"upload_time": "2023-10-07T10:31:04",
"upload_time_iso_8601": "2023-10-07T10:31:04.660644Z",
"url": "https://files.pythonhosted.org/packages/17/ca/f9889117b679de5b84b7cc7c23e7402251b9e326208026b3d4001e3e573c/spix-1.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "79974aeb6f2b40a2790a8b68b4383bcf3bd7eda2af94fa2a37885abfa193c002",
"md5": "a5bef31d3f764a24dc48d9953fc68ce5",
"sha256": "3f0d44441872de51b3c164c7e0628bad6871cac3deb3b117bc1fd0f225365174"
},
"downloads": -1,
"filename": "spix-1.4.0.tar.gz",
"has_sig": false,
"md5_digest": "a5bef31d3f764a24dc48d9953fc68ce5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.7",
"size": 1168089,
"upload_time": "2023-10-07T10:31:07",
"upload_time_iso_8601": "2023-10-07T10:31:07.887930Z",
"url": "https://files.pythonhosted.org/packages/79/97/4aeb6f2b40a2790a8b68b4383bcf3bd7eda2af94fa2a37885abfa193c002/spix-1.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-07 10:31:07",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "spix"
}