我使用cprotect
包,这样我就可以在章节标题中使用数学。它在 pdf 中运行正常,但 tex4ht 在章节标题末尾生成奇怪的字符。
如果我不使用cprotect
,那么它将无法在 tex4ht 中编译。
有办法解决这个问题吗?
\documentclass[12pt,notitlepage]{book}
\usepackage{cprotect}
\usepackage{amsmath}
\begin{document}
\title{my book}
\chapter{Listing of integrals}
\cprotect\section{\quad $\int e^x \left(1-x^3+x^4-x^5+x^6\right) \, dx$}
stuff
\cprotect\section{\quad $\int \frac{e^{\frac{x}{2+x^2}} \left(2-x^2\right)}{2 x+x^3} \, dx$}
text
\end{document}
使用编译
make4ht -ulm default -a debug t.tex "htm,3,mathjax,notoc*,p-width"
给出
如果我不使用\cprotect
则会出现编译错误。
(/usr/local/texlive/2019/texmf-dist/tex/generic/tex4ht/html5.4ht))
(./report.aux) (/usr/local/texlive/2019/texmf-dist/tex/latex/base/ts1cmr.fd)
[1] [2]
Chapter 1.
(./report.4ct (./report-1.cpt) (./report-2.cpt))
(/usr/local/texlive/2019/texmf-dist/tex/latex/lm/ot1lmtt.fd)
! Argument of \im:g has an extra }.
<inserted text>
\par
l.9 ...nt e^x \left(1-x^3+x^4-x^5+x^6\right) \, dx$}
?
重要的 请注意,章节标题中使用的数学公式本身是由计算机代数系统自动生成的,我并没有编写这些数学公式。运行一个大型程序,读取这些数学公式,并将每个公式用作章节标题。因此,编辑这些数学公式是不可能的,也不切实际。
2019 年
答案1
我认为您原来的问题与这里相同:https://tug.org/pipermail/tex4ht/2018q4/002114.html
我的解决方案是创建\fixmathjaxtoc
命令,这样当命令写入目录时,命令就不会被扩展。这个命令似乎对\left
和不起作用\right
,因为它们在节中使用时就会失败。作为一种解决方法,您可以完全禁用它们的扩展。由于数学由 MathJax 处理,因此它不会造成任何损害:
\Preamble{xhtml}
\def\right{\detokenize{\right}}
\def\left{\detokenize{\left}}
\begin{document}
\EndPreamble
答案2
如果您更正标记,删除它\left\right
然后它就会起作用htlatex
(cprotect
在 htlatex 或 pdflatex 中似乎没有必要)
我得到的 html 渲染
\documentclass[12pt,notitlepage]{book}
\usepackage{amsmath}
\begin{document}
\title{my book}
\tableofcontents
\chapter{Listing of integrals}
\section{\quad $\int e^x (1-x^3+x^4-x^5+x^6) \, dx$}
stuff
\section{\quad $\int \frac{e^{\frac{x}{2+x^2}} (2-x^2)}{2 x+x^3} \, dx$}
text
\end{document}