我有一个测试文件,希望将其转换为 .odt。以下是 MWE:
\documentclass[a4paper,12pt]{article}
\title{Special media for rapid germination of \textit{Persea americana} seeds using vitamin B\textsubscript{12}}
\date{}
\begin{document}
\maketitle %This works without problems.
\section{Sections}
\subsection{B$_{12}$ in $Persea~americana$}% This works, but the formatting is incorrect.
\subsection{B\textsubscript{12} in \textit{Persea americana}}% This generates errors. Using \emph{} also doesn't help. Wrapping the offending pieces of text in \mbox{} doesn't help either.
\end{document}
生成的 PDF 如下所示:
但是,运行命令时:make4ht -c config.cfg -f odt Test.tex
,我得到输出:
[STATUS] make4ht: Conversion started
[STATUS] make4ht: Input file: Test.tex
[ERROR] htlatex: Compilation errors in the htlatex run
[ERROR] htlatex: Filename Line Message
[ERROR] htlatex: ? ? Incomplete \iffalse; all text was ignored after line 8.
[ERROR] htlatex: ? ? Emergency stop.
[FATAL] make4ht-lib: Fatal error. Command htlatex returned exit code 1
我发现主文档标题中的格式(\textit{}
、\textsubscript{}
等)似乎适用于make4ht
。但是,章节和子章节中的格式会出现错误。使用数学模式可能会有所帮助,但这是不可取的,因为它限制了人们可以在原始文档中使用的字体。
此外,输出的格式不正确。使用\mbox{}
不能保护格式。使用诸如\textit{}
之类的替代方法\emph{}
也无济于事。
笔记:
- 我使用的是 Linux Mint 21.3、TeX 3.141592653(TeX Live 2023)和 kpathsea 版本 6.3.5。
- 我正在使用
make4ht
v0.3m 版本。 - 这是我的
config.cfg
文件:
\RequirePackage{color}
\Preamble{xhtml}
\Configure{mhchemce}{}{}
\Configure{mhchemcf}{}{}
\begin{document}
\EndPreamble
.cfg
但是,即使文件从命令中排除,我注意到的错误仍然可以重现,即: make4ht -f odt Manuscript.tex
。
答案1
这是 TeX4ht 的一个错误。我会在源代码中修复。与此同时,您可以使用这个配置文件:
\RequirePackage{color}
\Preamble{xhtml}
\makeatletter
\catcode`\:=11
\def\:Ttle#1#2#3{%
\html:addr
\Get:SecAnchor{#1}{#2}{#3}%
%
{\escapechar=`\\%
\protect:wrtoc
\csname Modify#1ToToc\endcsname
\protected@edef\:writetoc{\csname if:toc\endcsname{\the\:tokwrite
{\string\doTocEntry
\string\toc \expandafter\ifx\csname toToc:#1\endcsname\relax #1\else
\csname toToc:#1\endcsname\fi
{#2}{\html:tocsec{\ifx \TocTitle\:UnDef #3\else
\TocTitle\fi}}{\the\:tokpage}\relax}}}%
\:writetoc \global\let\TocTitle\:UnDef
}%
{\csname #1:Href-\endcsname
% %
\no:lbl:idx \csname Modify#1Title\endcsname
\html:sectoc{#3}%
}%
}
\catcode`\:=12
\makeatother
\Configure{mhchemce}{}{}
\Configure{mhchemcf}{}{}
\begin{document}
\EndPreamble
该代码来自 TeX4ht 源,变化在于我们使用\protected@edef
而不是\edef
:writetoc`,以防止此类错误。
关于_{12}
,您应该始终使用下标的基数,因此我将其写为:
\subsection{B${}_{12}$ in $Persea~americana$}
结果如下: