make4ht жалуется на «модуль 'luaxml-domobject' не найден»

make4ht жалуется на «модуль 'luaxml-domobject' не найден»

Я установил make4htс помощью команды tlmgr install make4ht.

Теперь при вводе команды make4ht foo.texпоявляется следующая ошибка:

[STATUS]  make4ht: Conversion started
[STATUS]  make4ht: Input file: foo.tex
...texmf-dist/scripts/make4ht/filters/make4ht-domfilter.lua:2: module 'luaxml-domobject' not found:
        no field package.preload['luaxml-domobject']
        [kpse lua searcher] file not found: 'luaxml-domobject'
        [kpse C searcher] file not found: 'luaxml-domobject'

Что еще мне нужно установить, чтобы можно было make4htуспешно пользоваться?

решение1

На Ubuntu (20.04) я make4htустановил его через aptстандартный пакет texlive-extra-utils.

И у меня похожая ошибка:

...texmf-dist/scripts/make4ht/filters/make4ht-domfilter.lua:2: module 'luaxml-domobject' not found:
        no field package.preload['luaxml-domobject']
        [kpse lua searcher] file not found: 'luaxml-domobject'
        [kpse C searcher] file not found: 'luaxml-domobject'

Чтобы устранить ошибку, я просто установил пакет texlive-luatex:

sudo apt install texlive-luatex

(Похоже, что для пакета отсутствует зависимость texlive-extra-utils)

решение2

Позвольте мне ответить, как я решил эту проблему. Комментарий @michal.h21 помог.

Обратите внимание, что пункты 2–6 показывают фальстарты или попытки, которые не привели к хорошим результатам. Только последний пункт, т. е. пункт 7, привел к хорошим результатам.

  1. Создайте файл foo.tex, который я буду использовать для проверки его make4htуспешной работы:

    \documentclass{article}
    \usepackage{amsmath}
    \title{Demo}
    \begin{document}
    
    \begin{align}
    1 + 0 & = 1, \label{eq1} \\
    1 + 1 & = 2, \label{eq2} \\
    e^{i \pi} = -1. \label{eq3}
    \end{align}
    
    Equation \( \eqref{eq1} \), \( \eqref{eq2} \) and \( \eqref{eq3} \)
    describe eternal truths.
    
    The equation \( e^{i \pi} = -1 \) can also be rewritten as \( e^{i \pi}
    + 1 = 0 \) which is known as Euler's identity.
    \end{document}
    
  2. Установите make4htи скомпилируйте foo.texследующим foo.htmlобразом:

    sudo tlmgr install make4ht
    make4ht foo
    

    Это привело к следующей ошибке:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    ...texmf-dist/scripts/make4ht/filters/make4ht-domfilter.lua:2: module 'luaxml-domobject' not found:
            no field package.preload['luaxml-domobject']
            [kpse lua searcher] file not found: 'luaxml-domobject'
            [kpse C searcher] file not found: 'luaxml-domobject'
    
  3. Установите make4htи luaxmlпопробуйте еще раз:

    sudo tlmgr install make4ht luaxml
    make4ht foo
    

    Это привело к следующей ошибке:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    [ERROR]   htlatex: Compilation errors in the htlatex run
    [ERROR]   htlatex: Filename     Line    Message
    [ERROR]   htlatex: ?    ?        LaTeX Error: File `tex4ht.sty' not found.
    [ERROR]   htlatex: ?    2        Emergency stop.
    [FATAL]   make4ht-lib: Fatal error. Command htlatex returned exit code 1
    
  4. Установите make4ht, luaxml, и tex4ht, и попробуйте еще раз:

    sudo tlmgr install make4ht luaxml tex4ht
    make4ht foo
    

    На этот раз преобразование прошло успешно:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    sh: dvipng: command not found
    sh: dvipng: command not found
    sh: dvipng: command not found
    sh: dvipng: command not found
    sh: dvipng: command not found
    [STATUS]  make4ht: Conversion finished
    

    Вот как foo.htmlвыглядел результат:

    <!DOCTYPE html> 
    <html lang='en-US' xml:lang='en-US'> 
    <head><title></title> 
    <meta charset='utf-8' /> 
    <meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' /> 
    <meta content='width=device-width,initial-scale=1' name='viewport' /> 
    <link href='foo.css' type='text/css' rel='stylesheet' /> 
    <meta content='foo.tex' name='src' /> 
    </head><body>
    <!-- l. 6 --><p class='noindent'>
    </p><table class='align'>
                               <tr><td class='align-odd'>1 + 0</td>                               <td class='align-even'> = 1<span class='cmmi-10'>,</span></td>                                                      <td class='align-label'><a id='x1-2r1'></a>(1)
                               </td></tr><tr><td class='align-odd'>1 + 1</td>                               <td class='align-even'> = 2<span class='cmmi-10'>,</span></td>                                                      <td class='align-label'><a id='x1-3r2'></a>(2)
                               </td></tr><tr><td class='align-odd'><span class='cmmi-10'>e</span><sup><span class='cmmi-7'>iπ</span></sup> = <span class='cmsy-10'>−</span>1<span class='cmmi-10'>.</span></td>                           <td class='align-even'></td>                               <td class='align-label'><a id='x1-4r3'></a>(3)                                                      </td></tr></table>
    <!-- l. 12 --><p class='noindent'>Equation <img alt='(1)  ' src='foo0x.png' class='math' />, <img alt='(2)  ' src='foo1x.png' class='math' /> and <img alt='(3)  ' src='foo2x.png' class='math' /> describe eternal truths.
    </p><!-- l. 15 --><p class='indent'>   The equation <img alt='eiπ = − 1  ' src='foo3x.png' class='math' /> can also be rewritten as <img alt='eiπ + 1 = 0  ' src='foo4x.png' class='math' /> which is known
    as Euler’s identity. </p> 
    </body> 
    </html>
    

    Математика, отрисованная с использованием HTML и изображений, выглядит не очень хорошо.

  5. Визуализация математики с помощью MathJax:

    make4ht foo mathjax
    

    Преобразование не удалось:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    [ERROR]   htlatex: Compilation errors in the htlatex run
    [ERROR]   htlatex: Filename     Line    Message
    [ERROR]   htlatex: ?    ?        LaTeX Error: File `environ.sty' not found.
    [ERROR]   htlatex: ?    22       Emergency stop.
    [FATAL]   make4ht-lib: Fatal error. Command htlatex returned exit code 1
    
  6. Установите make4ht, luaxml, tex4ht, и environи попробуйте еще раз:

    sudo tlmgr install make4ht luaxml tex4ht environ
    make4ht foo mathjax
    

    Опять неудача:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    [ERROR]   htlatex: Compilation errors in the htlatex run
    [ERROR]   htlatex: Filename     Line    Message
    [ERROR]   htlatex: ?    ?        LaTeX Error: File `trimspaces.sty' not found.
    [ERROR]   htlatex: ?    17       Emergency stop.
    [FATAL]   make4ht-lib: Fatal error. Command htlatex returned exit code 1
    
  7. Установите make4ht, luaxml, tex4ht, environ, и trimspacesи попробуйте еще раз:

    sudo tlmgr install make4ht luaxml tex4ht environ trimspaces
    make4ht foo mathjax
    

    Преобразование прошло успешно:

    [STATUS]  make4ht: Conversion started
    [STATUS]  make4ht: Input file: foo
    [STATUS]  make4ht: Conversion finished
    

    Вот что получилось foo.html:

    <!DOCTYPE html> 
    <html xml:lang='en-US' lang='en-US'> 
    <head><title></title> 
    <meta charset='utf-8' /> 
    <meta name='generator' content='TeX4ht (https://tug.org/tex4ht/)' /> 
    <meta name='viewport' content='width=device-width,initial-scale=1' /> 
    <link href='foo.css' type='text/css' rel='stylesheet' /> 
    <meta name='src' content='foo.tex' /> 
    <script>window.MathJax = { tex: { tags: "ams", inlineMath: [ ["\\\(","\\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true, processEnvironments: true, packages: ['base', 'color', 'ams'] }, loader: { load: ['[tex]/color', '[tex]/ams'] } }; </script> 
     <script id='MathJax-script' type='text/javascript' async='async' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js'></script>  
    </head><body>
    <!-- l. 10 --><p class='noindent'>\begin{align} 1 + 0 &amp; = 1, \label{eq1} \\ 1 + 1 &amp; = 2, \label{eq2} \\ e^{i \pi } = -1. \label{eq3} \end{align}
    </p><!-- l. 12 --><p class='noindent'>Equation \( \eqref{eq1} \), \( \eqref{eq2} \) and \( \eqref{eq3} \) describe eternal truths.
    </p><!-- l. 15 --><p class='indent'>   The equation \( e^{i \pi } = -1 \) can also be rewritten as \( e^{i \pi } + 1 = 0 \) which is known as Euler’s identity.
    </p> 
    </body> 
    </html>
    

    Вот пример JSFiddle, показывающий вывод:https://jsfiddle.net/9xubrm47/.

Связанный контент