xemlock / php-latex
LaTeX 解析器和渲染器
dev-master
2023-09-14 19:51 UTC
Requires
- php: >=5.3.0
- ext-dom: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: >=5.7 <10.0
This package is auto-updated.
Last update: 2024-09-14 22:14:05 UTC
README
此库的主要目的是从用户输入(不总是有效的)中提供有效的 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 文件。