将 LaTeX 文件重命名为 index.tex 会导致 tex4ht 在使用 minitoc 时出错

将 LaTeX 文件重命名为 index.tex 会导致 tex4ht 在使用 minitoc 时出错
>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导致错误?tex4htindex.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使用)。

相关内容