使用 编译这个简单示例mk4ht oolatex
(然后我直接将其转换为 docx 文件),我对得到的结果感到有些困惑。请注意,使用 编译的 pdf 文件一切如预期xelatex
。
\documentclass{article}
\newcommand{\KDP}{$KH_2 \cdot PO_4$}
%\newcommand{\KDP}{\expandafter{$KH_2 \cdot PO_4$}}
%\protected\def\KDP{\expandafter$KH_2 \cdot PO_4$}
\begin{document}
$KH_2 \cdot PO_4$
\KDP
\end{document}
纯数学模式表达式类型设置得很好,甚至在 MS Word 的方程式模式下显示。但如果我将该表达式嵌套在新命令中,它会丢失其下标格式(方程式仍然显示,只是丢失了下标指令)。
在我尝试了一些化学公式排版软件包之后,我最终得到了这个 MWE,但是\ce{}
它们\ch{}
也不起作用。基于文本的下标也不起作用,但我不确定是否可以假设它们具有相同的根本问题,所以我将从基础开始,使用简单的数学模式。
我尝试调整一些扩展或保护措施,模仿周围的一些其他答案,但我对这个特定概念的理解很差 - 我没想到它们真的能起作用。
我推断我的问题是,_
考虑到新命令插入可能需要额外的解释/扩展层,它没有在适当的时间得到稳健的保存和扩展。
答案1
在自定义命令中(基本上是序言和包中定义的所有内容)最好使用\sp
代替^
和\sb
代替。这在_
tex4ht MathML 疑难解答页:
使用运算符‘^’和‘',而不是 '\sb' 和 '\sp',在 TeX4ht 之外。(TeX4ht 仅在 '\begin{document}' 命令下变为活动状态。'早期' 和 'early^' 选项将这种意识扩展到源乳胶文档的序言中。)
您的命令可以按如下方式重写:
\documentclass{article}
\newcommand{\KDP}{\ensuremath{KH\sb{2} \cdot PO\sb{4}}}
\begin{document}
$KH_2 \cdot PO_4$
\KDP
\end{document}
这将产生预期的格式: