我正在进行 2 个渲染,第一个采用经典渲染latex command
,另一个采用htlatex command
(tex4ht)。
我已经定义了以下 \newcommand :
\newcommand{\btFma}[2]{$\mathfrak{e}_{\mathbf{#1}}$$_{}$$^{\mathbf{#2}}$}
\newcommand{\btFmb}[2]{$\mathfrak{e}^{\mathbf{#1}}$$_{}$$_{\mathbf{#2}}$}
像这样使用它们:
\begin{equation}
\,\,\,\,\textrm{\btFma{i}{j}}=\beq{e_{i}}\otimes\beq{e^{j}}\,\,\,\,;\,\,\,\,\textrm{\btFmb{i}{j}}=\beq{e^{i}}\otimes\beq{e_{j}}
\end{equation}
渲染符合latex command
我的期望:
您会注意到,我希望每个\newcommand
上限和下限索引之间都有一点偏移。
我的问题是我无法用 重现相同的渲染htlatex command
。以下是生成的 HTML 页面上显示的内容:
MathJax 似乎没有考虑到 2 \newcommand
。
我使用以下命令生成 HTML 页面:
htlatex source.tex config_mathjax
和配置文件“ config_mathjax
”:
\Configure{@HEAD}{\HCode{
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
Macros: {
\unexpanded{
beq: ['{\\mathbf\{\#1\}}',1],
btFma: ['{\$\\mathfrak\{e\}_\{\\mathbf\{\#1\}\}\$\$_\{\}\^\{\\mathbf\{\#2\}\}\$}',2],
btFmb: ['{\$\\mathfrak\{e\}\^\{\\mathbf\{\#1\}\}\$\$\^\{\}_\{\\mathbf\{\#2\}\}\$}',2],
},
equationNumbers: { autoNumber: "AMS" }
},
extensions: ["tex2jax.js"],
tex2jax: {
\unexpanded{
inlineMath: [ ['\$','\$'], ["\\\\(","\\\\)"] ],
displayMath: [ ['$$','$$'], ['\begin{equation}','\end{equation}'], ['\begin{align}','\end{align}'], ["\\[","\\]"] ],}
processEscapes: true
}
});
</script>
}}
我不明白为什么htlatex
不考虑这两个\newcommand
。
也许\newcommand
\bFma 和 \bFmb 对于 htlatex 来说太复杂了,如果有人知道如何简化它们,我会采用它们。
如果有人遇到过或者遇到过同样类型的问题,这就可以告诉我如何解决它。
问候
答案1
MathJax 仅在数学模式下处理宏,而不在文本模式下处理宏(它不包括文本模式宏)。这包括内部命令\textrm{}
和其他切换到文本模式的命令。要将其与 MathJax 一起使用,您需要删除\textrm{}
并将宏的定义更改为最初在数学模式下的宏。
答案2
从定义中删除美元符号:
\newcommand{\btFma}[2]{\mathfrak{e}_{\mathbf{#1}}{}^{\mathbf{#2}}}
\textrm
从等式中删除:
\begin{equation}
\btFma{i}{j}
\end{equation}
从 mathjax 配置中删除美元符号:
\unexpanded{
btFma: ['{\\mathfrak e}_{\\mathbf \#1}{}^{\\mathbf \#2}',2],
}
顺便说一句:您可以使用\quad
或\qquad
代替\,\,\,\,