PHP library for (La)TeX abstraction
Add following to your composer.json
:
"require": {
"corny-phoenix/tex-tools": "dev-master"
}
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 |
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