corny-phoenix/tex-tools

PHP 库用于 (La)TeX 抽象

0.3 2016-07-04 15:22 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:48:04 UTC


README

Build Status Code Climate Test Coverage

PHP 库用于 (La)TeX 抽象

安装

将以下内容添加到您的 composer.json

"require": {
    "corny-phoenix/tex-tools": "dev-master"
}

支持的 TeX 命令

以下 TeX 命令受支持

使用方法

创建一个基本的 PdfLaTeX 作业并运行它

use CornyPhoenix\Tex\Repositories\TemporaryRepository;

$job = (new TemporaryRepository())->createJob( /* TeX source */ );
$job->runPdfLaTex();
$job->hasErrors(); // False if everything went fine

您也可以链式调用 LaTeX

use CornyPhoenix\Tex\Repositories\TemporaryRepository;
use CornyPhoenix\Tex\Exceptions\CompilationException;

$job = (new TemporaryRepository())->createJob( /* TeX source */ );
$job->runPdfLaTex()
    ->runBibTex()
    ->runMakeIndex()
    ->runPdfLaTex()
    ->runPdfLaTex();

有一个处理错误的优雅界面

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 ...
    }
}

此外,还有一个安全的 clean 方法,它将清理工作目录,而不会删除输入文件或任何 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