Ich möchte ein reines Tex-Dokument in HTML konvertieren mitmake4ht. Wenn ich diese Befehlszeile verwende, make4ht document.tex
ruft das Programm den Compiler „Latex“ auf und blockiert die Kompilierung. Der make4ht --help
Befehl erklärt nicht, wie das reine Tex kompiliert wird.
Wie lautet die genaue Befehlszeile zum Kompilieren eines einfachen TEX-Dokuments in ein HTML-Dokument?
Antwort1
Es ist nicht so einfach, TeX4ht mit Plain TeX zum Laufen zu bringen. Ulrike hat bereits auf meineältere Antwort. Das können wir als Ausgangspunkt verwenden. Speichern Sie den folgenden Code als plain-4ht.tex
:
% file plain-4ht.tex
% the following macro needs to be executed in order to include all .4ht files
\csname tex4ht\endcsname
Ich habe den Code auf das absolute Minimum vereinfacht. Der \csname tex4ht\endcsname
Befehl muss ausgeführt werden, um die grundlegende HTML-Struktur einzufügen.
Diese Datei muss lediglich nach allen Makrodefinitionen eingefügt werden:
\input plain-4ht
Hello world
\bye
Das nächste Problem ist, wie man reines TeX tatsächlich mit ausführt make4ht
. Dazu müssen wir eine Build-Datei verwenden. Speichern Sie die folgende Datei als mybuild.lua
:
Make:add("httex",
'${htlatex} --interaction=${interaction} ${latex_par}' ..
"'\\def\\Link#1.a.b.c.{\\expandafter\\def\\csname tex4ht\\endcsname{\\expandafter\\def\\csname tex4ht\\endcsname{#1,html}\\input tex4ht.sty }}" ..
"\\def\\HCode{\\futurelet\\HCode\\HChar}\\def\\HChar{\\ifx\"\\HCode\\def\\HCode\"##1\"{\\Link##1}\\expandafter\\HCode\\else\\expandafter\\Link\\fi}" ..
"\\HCode ${tex4ht_sty_par}.a.b.c.\\input \"\\detokenize{${tex_file}}\"'",
{htlatex="dviluatex"})
Make:httex {}
Es verwendet den Make:add
Befehl, um einen neuen Befehl zu erstellen Make:httex
, der Plain TeX ausführt. Die verwendete Engine kann mit htlatex
Parametern konfiguriert werden (die Standard-Engine ist htlatex="dviluatex"
).
Sie können das Dokument kompilieren mit
make4ht -e mybuild.lua filename.tex
Das letzte Problem betrifft die Konfiguration Ihrer benutzerdefinierten Makros. TeX4ht kann dank eines gepatchten Befehls Konfigurationsdateien für bestimmte Dateien laden \usepackage
, aber im Plain-Modus funktioniert das nicht.
Nehmen wir an, Sie haben eine Datei mymacros.tex
:
\def\mytitle#1{\bgroup\bf #1\egroup\par}
<h1>
Wir wollen das Element für \mytitle
im HTML-Dokument verwenden . Datei erstellen mymacros.4ht
:
\NewConfigure{mytitle}{2}
\def\mytitle#1{\a:mytitle#1\b:mytitle\par}
\Configure{mytitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h1>}}{\HCode{</h1>}}
Ein Beispieldokument:
\input mymacros
\input plain-4ht
\mytitle{My title}
Some text.
\bye
Die mymacros.4ht
Datei kann in die Datei eingefügt werden .cfg
:
\Preamble{xhtml}
\catcode`\:=11
\input mymacros.4ht
\catcode`\:=12
\EndPreamble
Wir müssen die richtigen Catcodes verwenden, da :
in den Dateien Zeichen verwendet werden .4ht
. Dies geschieht in LaTeX automatisch.
Sie können das Dokument nun kompilieren mit:
make4ht -e mybuild.lua -c config.cfg filename.tex
Dies ist das Ergebnis:
<!DOCTYPE html>
<html lang='en-US' xml:lang='en-US'>
<head>
<title>sample.html</title>
<meta charset='utf-8' />
<meta name='generator' content='TeX4ht (http://www.tug.org/tex4ht/)' />
<meta name='viewport' content='width=device-width,initial-scale=1' />
<link rel='stylesheet' href='sample.css' type='text/css' />
<meta name='src' content='sample.tex' />
</head><body>
<h1>My title</h1>
<!-- l. 6 --><p class='indent'> Some text.
</p>
</body>
</html>