使用 make4ht 将 LaTeX 转换为 HTML 时我可以输出任意 HTML 代码吗?

使用 make4ht 将 LaTeX 转换为 HTML 时我可以输出任意 HTML 代码吗?

我的代码:

\documentclass{article}
\newcommand{\world}{world}
\begin{document}
hello \world{}
\end{document}

我这样编译它make4ht

$ make4ht foo.tex        
[STATUS]  make4ht: Conversion started
[STATUS]  make4ht: Input file: foo.tex
[STATUS]  make4ht: Conversion finished

以下是生成的 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 type='text/css' rel='stylesheet' href='foo.css' /> 
<meta name='src' content='foo.tex' /> 
</head><body>
<!-- l. 4 --><p class='noindent'>hello world </p> 
</body> 
</html>

我可以告诉make4httex4hthtlatex在某些我需要的地方输出原始 HTML 吗?例如,我希望每当我调用新命令时\world,它都会被标签包裹起来,<span>如下所示:<span class="keyword">world</span>

换句话说,当前world在 HTML 输出中显示的任何内容都应在 HTML 输出中显示<span class="keyword">world</span>。这能做到吗?如果可以,您能否提供一个最小工作代码来说明如何做到这一点?

答案1

您可以\world在自定义.cfg文件中重新定义命令。尝试以下配置文件:

\Preamble{xhtml}
\makeatletter
% save original contents of the \world macro
\let\orig@world\world
\renewcommand\world{\HCode{<span class="keyword">}\orig@world\HCode{</span>}}
\makeatother
\begin{document}
\EndPreamble

我们将原始\world宏保存在 中\orig@world。这样,您就可以与 LaTeX 文件保持同步,并且当您决定应该\world生成不同于字符串“world”的内容时,您无需更改此配置。然后,您可以重新定义\world以使用\HCode命令插入 HTML 代码,并保存\orig@world以生成“world”文本。

编译使用:

make4ht -c config.cfg samle.tex

结果如下:

 <p class='noindent'>hello <span class='keyword'>world</span> </p> 

相关内容