我的代码:
\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>
我可以告诉make4ht
或tex4ht
或htlatex
在某些我需要的地方输出原始 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>