xemlock/php-latex

LaTeX 解析器和渲染器

dev-master 2023-09-14 19:51 UTC

This package is auto-updated.

Last update: 2024-09-14 22:14:05 UTC


README

Build status License

此库的主要目的是从用户输入(不总是有效的)中提供有效的 LaTeX 输出。您还可以将 LaTeX 代码渲染为 HTML,但有一个限制 - HTML 渲染只适用于文本模式,数学模式需要由 JavaScript 库处理 - 在浏览器中。为此,我建议使用 MathJax

请注意,并非每个 LaTeX 命令都被识别或实现。如果您需要不支持的操作,您可以手动定义它(见下文描述),或者提交一个 功能请求

安装

要使用 php-latex,您可以像安装任何其他 php 包一样安装它 - 使用 Composer

composer require xemlock/php-latex:dev-master

用法

基本用法如下

解析 LaTeX 源代码

$parser = new PhpLatex_Parser();
$parsedTree = $parser->parse($input);
// $parsedTree contains object representation of the LaTeX document

渲染解析后的 LaTeX 源代码

一旦您有了解析后的源代码,您可以将其渲染为 HTML(或 LaTeX)- 请注意,数学模式代码将原样渲染。

// render parsed LaTeX code to HTML
$htmlRenderer = new PhpLatex_Renderer_Html();
$html = $htmlRenderer->render($parsedTree);

// render parsed LaTeX code to sanitized LaTeX code
$latex = PhpLatex_Renderer_Abstract::toLatex($parsedTree);

自定义

您可以向解析器添加自定义(或尚未实现)的命令

$parser = new PhpLatex_Parser();
$parser->addCommand(
    '\placeholder',
    array(
        // number of arguments
        'numArgs' => 1,
        // number of optional arguments, default 0
        'numOptArgs' => 1,
        // mode this command is valid in, can be: 'both', 'math', 'text'
        'mode' => 'both',
        // whether command arguments should be parsed, or handled as-is
        'parseArgs' => false,
        // whether command allows a starred variant
        'starred' => false,
    )
);

pdflatex

此外,此库还提供了一个 pdflatex 的包装器,以便更容易地从 PHP 脚本中渲染和编译 .tex 文件。

$pdflatex = new PhpLatex_PdfLatex();

// to generate a PDF from .tex file
$pathToGeneratedPdf = $pdflatex->compile('/path/to/document.tex', 
    array(/* optional paths to files included by .tex file (images) */])
);

您可以通过以下方式访问上次 compile 调用的构建日志

echo $pdflatex->getLog();

您甚至可以即时编译 LaTeX 字符串

$pathToGeneratedPdf = $pdflatex->compileString('
\documentclass{article}
\begin{document}
Hello from \LaTeX!
\end{document}
');

默认情况下,系统临时目录用于从字符串生成 PDF。但是,您可以自定义它

$pdflatex->setBuildDir('/path/to/temp'); 

许可证

MIT 许可证 (MIT)。请参阅 LICENSE 文件。