LaTex en mPDF

LaTeXi is een softwaresysteem voor het zetten van documenten en wordt vooral gebruikt om wetenschappelijke teksten op te maken. Met behulp van bepaalde pakketten maak je LaTeX zeer geschikt voor de presentatie van wiskundige, natuurkundige en scheikundige formules op websites en print. mPDF is een PHP bibliotheek voor het genereren van PDF files uit HTML content. Voor het Publishtool platform heb ik een module ontwikkeld waarmee je formules en vergelijkingen m.b.v. van LaTeX kunt maken en deze kunt plaatsen in een document. Vervolgens kun je het document publiceren als website en PDF. De PDF kun je automatisch generen m.b.v. mPDF of via inDesign d.m.v. een XML export.

Als je formules wilt weergeven in drukwerk kun je TeX live installeren op je VPS server. Je kunt dan met de LaTeX taal formules maken en vanuit die codering afbeeldingen genereren in png of svg formaat. Deze afbeeldingen kun je dan weer in je document gebruiken. Op je website kun je de formules weergeven m.b.v MathJax. MathJax is open-source JavaScript voor weergave van LaTeX, MathML, en AsciiMath notaties in alle moderne browsers.

Om wetenschappelijke formules gecodeerd met LaTeX op een webpagina te presenteren is het voldoende om MathJax (Een Javascript bibliotheek) in je pagina's te laden. Hieronder een voorbeeld van LaTeX code en de presentatie daarvan.

When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
  $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}$$
    
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}$$

Daarnaast is het handig als je van de LaTeX code ook afbeeldingen kunt genereren. Deze afbeeldingen kun je dan plaatsen in je document om met mPDF een PDF te genereren of in de XML voor inDesign. Met PHPLatex kun je afbeeldingen of Pdf's genereren uit LaTeX code. Een ander voorbeeld is het script te vinden op Mike's Software Blog. Ik heb uit deze twee voorbeelden een nieuw script geschreven om .svg, .png en .pdf files van de formules te maken. M.b.v. de code gevonden op TeX stack exchange maak ik pdf's aan met een pagina grote gelijk aan de formule. Deze pdf's gebruik ik in inDesign en de svg's gebruik ik in mPDF. Op de Server moet dan wel LaTeX geïnstalleerd zijn. Op mijn VPS heb ik de procedure gevolgd beschreven op SysTutorials.

PHPlatex produceert verschillende output files (.dvi, .ps, .png). Je moet dit programma meer zien als een voorbeeld en aanpassen naar eigen wens. Bijv. het pad heb ik als volgt veranderd.

#In case these are elsewhere
$path_to_latex   = '/usr/bin/latex';
$path_to_dvips   = '/usr/bin/dvips';
$path_to_convert = '/usr/bin/convert';

$path = '/usr/local/texlive/2019/bin/x86_64-linux/';
$path_to_latex   = $path.'latex';
$path_to_pdflatex   = $path.'pdflatex';
$path_to_dvisvgm = $path.'dvisvgm';
$path_to_dvips   = $path.'dvips';
$path_to_convert   = $path.'convert';
$path_to_dvipng   = $path.'dvipng';
    

De kwaliteit van de .png viel tegen. Daarom heb ik code toegevoegd om .svg files aan te maken. De "--no-fonts" was nodig omdat anders in de mPDF parser de verkeerde fonts worden gebruikt.

exec($path_to_dvisvgm.' '.$tfn.'.dvi --no-fonts --scale="2,2');
copy( $tfn.".svg", $dir_path.'/'.$filename.'.svg');
    
De png afbeelding
De svg afbeelding

Voor inDesign worden pdf afbeeldingen gemaakt. Het LaTeX template voor het genereren van pdf's waarvan de grote wordt aangepast aan de formule ziet er als volgt uit:

\documentclass[tightpage]{standalone}
\usepackage{varwidth}
    

Een voorbeeld van de XML die voor de inDesign import gegenereerd wordt kun je zien in het artikel over inDesign afbeeldingen verkleinen.

Voorbeeld formules in inDesign
Voorbeeld formules in pdf