>cat t2.tex
\documentclass[titlepage]{report}%
\usepackage{minitoc}
\begin{document}
foo
\end{document}
现在
htlatex t2.tex "html,4"
没有错误。现在我将其命名为index.tex
并重试:
>cp t2.tex index.tex
>htlatex index.tex "html,4"
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian)
....
(/usr/share/texmf/tex/generic/tex4ht/html4-math.4ht))
(/usr/share/texmf/tex/generic/tex4ht/index.4ht
! Undefined control sequence.
<argument> \printindex
l.41 ...name{\the\@nameuse{idxtitle@\@indextype}}}
?
任何其他名字似乎都可以
cp index.tex indexx.tex
htlatex indexx.tex
没有错误。只有当名称为 时才会出现index.tex
。并且只有当我包含 时才会出现这种情况minitoc
。如果我删除minitoc
,则编译成功:
>cat index.tex
\documentclass[titlepage]{report}%
%\usepackage{minitoc}
\begin{document}
foo
\end{document}
>htlatex index.tex
没有错误(只需要确保在重试之前删除所有旧的index.aux
和其他的东西。但没有错误。index.*
那么,为什么仅当调用源 LaTeX 文件时才会minitoc
导致错误?tex4ht
index.tex
眼镜:
>tex4ht -v
tex4ht.c (2009-01-31-07:33 kpathsea)
>latex -v
pdfTeX 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian)
>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
答案1
TeX4ht 重载了文件输入的 LaTeX 宏以支持配置文件。这些文件以基本名称和扩展名命名.4ht
。包minitoc
生成并加载文件\jobname.mtc0
。因此,\jobname.4ht
如果此文件存在,TeX4ht 就会加载。如果等于\jobname
,则index
文件index.4ht
存在,因为 TeX4ht 支持包index
。因此index.4ht
假定包index
已加载,其中\printindex
已定义。由于其他包也可能生成类似这样的辅助文件minitoc
,因此解决方案是避免使用包或类作为作业名称(如果htlatex
使用)。