corny-phoenix / tex-tools
PHP library for (La)TeX abstraction
0.3
2016-07-04 15:22 UTC
Requires
- php: >=5.5
- symfony/process: ~2.6|~3.0
Requires (Dev)
- codeclimate/php-test-reporter: 0.2.*
- phpunit/phpunit: ~4.2
This package is not auto-updated.
Last update: 2024-04-27 12:54:21 UTC
README
PHP library for (La)TeX abstraction
Installation
Add following to your composer.json
:
"require": { "corny-phoenix/tex-tools": "dev-master" }
Supported TeX Commands
The following TeX commands are supported:
Command | Required format | Provided formats |
---|---|---|
TeX | .tex |
.dvi , .log , .aux |
PdfTeX | .tex |
.pdf , .log , .aux |
LaTeX | .tex |
.dvi , .log , .aux |
PdfLaTeX | .tex |
.pdf , .log , .aux |
XeLaTeX | .tex |
.pdf , .log , .aux |
LuaLaTeX | .tex |
.pdf , .log , .aux |
BibTeX | .aux |
.bbl , .blg |
BibTeX8 | .aux |
.bbl , .blg |
MakeIndex | .idx |
.ind , .ilg |
DviPs | .dvi |
.ps |
Usage
Create a basic PdfLaTeX job and run it:
use CornyPhoenix\Tex\Repositories\TemporaryRepository; $job = (new TemporaryRepository())->createJob( /* TeX source */ ); $job->runPdfLaTex(); $job->hasErrors(); // False if everything went fine
You can also chain LaTeX calls:
use CornyPhoenix\Tex\Repositories\TemporaryRepository; use CornyPhoenix\Tex\Exceptions\CompilationException; $job = (new TemporaryRepository())->createJob( /* TeX source */ ); $job->runPdfLaTex() ->runBibTex() ->runMakeIndex() ->runPdfLaTex() ->runPdfLaTex();
There is a lovely interface for handling errors:
use CornyPhoenix\Tex\Repositories\TemporaryRepository; use CornyPhoenix\Tex\Exceptions\CompilationException; $job = (new TemporaryRepository())->createJob( /* TeX source */ ); try { $job->runPdfLaTex() ->runBibTex() ->runMakeIndex() ->runPdfLaTex() ->runPdfLaTex(); } catch (CompilationException $e) { $format = 'Error in %s, line %d: %s'; $log = $job->createLog(); foreach ($log->getErrors() as $error) { echo sprintf( $format, $error->getFilename(), $error->getLine(), $error->getMessage() ); // handle error ... } }
Also, there is a safe clean
method which will clean up your working directory without deleting the input file or any files unknown to TeX:
use CornyPhoenix\Tex\Repositories\TemporaryRepository; $repo = new TemporaryRepository(); touch($repo->getDirectory() . '/file.unknown.to.tex'); $repo->clean(); assert(file_exists($repo->getDirectory() . '/file.unknown.to.tex')); // True