Я хочу преобразовать обычный tex-документ в html с помощьюсделать4хт. Если я использую эту командную строку, make4ht document.tex
программа вызывает компилятор "latex" и блокирует компиляцию. Команда make4ht --help
не объясняет, как компилировать простой tex.
Какова точная командная строка для компиляции документа обычного tex в html?
решение1
Не так-то просто заставить TeX4ht работать с Plain TeX. Ульрике уже указал на мойстарый ответ. Мы можем использовать это как отправную точку. Сохраните следующий код как plain-4ht.tex
:
% file plain-4ht.tex
% the following macro needs to be executed in order to include all .4ht files
\csname tex4ht\endcsname
Я упростил код до минимума. \csname tex4ht\endcsname
Команду нужно выполнить, чтобы вставить базовую структуру HTML.
Этот файл нужно просто вставить после всех определений макросов:
\input plain-4ht
Hello world
\bye
Следующая проблема — как на самом деле выполнить обычный TeX с помощью make4ht
. Для этого нам нужно использовать файл сборки. Сохраните следующий файл как 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 {}
Он использует Make:add
команду для создания новой команды Make:httex
, которая выполняет Plain TeX. Используемый движок можно настроить с помощьюhtlatex
параметра (движок по умолчанию — htlatex="dviluatex"
)
Вы можете скомпилировать документ, используя
make4ht -e mybuild.lua filename.tex
Последняя проблема заключается в том, как настроить пользовательские макросы. TeX4ht может загружать файлы конфигурации для определенных файлов благодаря исправленным\usepackage
команде, но это не работает в Plain.
Предположим, у вас есть файл mymacros.tex
:
\def\mytitle#1{\bgroup\bf #1\egroup\par}
Мы хотим использовать <h1>
элемент \mytitle
в HTML-документе. Создайте файл mymacros.4ht
:
\NewConfigure{mytitle}{2}
\def\mytitle#1{\a:mytitle#1\b:mytitle\par}
\Configure{mytitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h1>}}{\HCode{</h1>}}
Образец документа:
\input mymacros
\input plain-4ht
\mytitle{My title}
Some text.
\bye
Файл mymacros.4ht
может быть включен в .cfg
файл:
\Preamble{xhtml}
\catcode`\:=11
\input mymacros.4ht
\catcode`\:=12
\EndPreamble
Нам нужно использовать правильные коды, как:
символы используются в .4ht
файлах. Это все делается автоматически в LaTeX.
Теперь вы можете скомпилировать документ, используя:
make4ht -e mybuild.lua -c config.cfg filename.tex
Вот результат:
<!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>