Make4ht: mathjax로 렌더링하는 \ce가 포함된 방정식 내부의 모든 내용은 추가 \protect를 추가합니다.

Make4ht: mathjax로 렌더링하는 \ce가 포함된 방정식 내부의 모든 내용은 추가 \protect를 추가합니다.

다음은 추가 \protect를 제공하지 않고는 어떤 시스템에서도 렌더링하지 않는 매우 간단한 mwe입니다. \begin{equation} 뒤에 % 기호가 없으면 pdf(lualatex 사용)와 make4ht 모두에 적합합니다. % 기호를 사용하면 관련 없는 \protect가 표시됩니다. 이는 내부에 추가 \label{}이 있거나 이 % 기호(\label 문제 디버깅에서 발견한)에서만 발생합니다.

mwe.tex:

\documentclass{book} 
\usepackage[english]{babel}
\usepackage[version=4]{mhchem}
\begin{document}

Text with formula \ce{CuCl2} and \ce{Cu^{2+}}.


\begin{equation}%
        \frac{\ce{H2O}}{xyz} = 4
\end{equation}

\end{document}

이는 다음을 사용하여 컴파일됩니다.

make4ht -c config.cfg mwe.tex

그리고 이 config.cfg:

\Preamble{xhtml,mathjax}
\def\ce#1{\texttt{\detokenize{\(\ce{#1}\)}}}
\begin{document}
\EndPreamble

생성된 HTML은 다음과 같습니다.


<!DOCTYPE html> 
<html lang='en' xml:lang='en'> 
<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='mwe.css' rel='stylesheet' type='text/css' /> 
<meta content='mwe.tex' name='src' /> 
<script>window.MathJax = { tex: { tags: "ams", }, }; </script> 
 <script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js' type='text/javascript'></script>  
</head><body>
<!-- l. 6 --><p class='noindent'>Text with formula <span class='cmtt-10'>\(\ce {CuCl2}\) </span>and <span class='cmtt-10'>\(\ce {Cu^{2+}}\)</span>.
</p><!-- l. 11 --><p class='indent'>   \begin {equation} \protect \frac  {\ce {H2O}}{xyz} = 4  \end {equation}
</p>
    
</body> 
</html>

임의의 \protect가 표시되면 다음과 같습니다.

위에서 설명한 html의 스크린샷입니다.

나는 MacTeX를 새로 설치한 여러 컴퓨터에서 이것을 시도했습니다.

관련 정보