当我将\localtableofcontents
(来自这些包tocloft
或之一etoc
)放入其中时,\if....\else..\fi
我收到错误。
我之所以想要把它放在里面是if
因为我希望文件能够同时用 tex4ht 和 pdflatex 进行编译,而在 tex4ht 模式下运行时我不希望出现这种情况。
\documentclass[10pt,notitlepage]{report}
\ifdefined\HCode
\else
\usepackage{tocloft}
\usepackage{etoc}
\fi
\begin{document}
\chapter{ my chapter }
\ifdefined\HCode
\else
\localtableofcontents %this gives the error
\fi
\end{document}
现在 pdflatex foo.tex 给出
>pdflatex foo.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014)
....
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 79 languages loaded.
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/report.cls
Document Class: report 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2014/texmf-dist/tex/latex/tocloft/tocloft.sty)
(/usr/local/texlive/2014/texmf-dist/tex/latex/etoc/etoc.sty
(/usr/local/texlive/2014/texmf-dist/tex/latex/tools/multicol.sty)) (./foo.aux)
Chapter 1.
! Extra \fi.
<recently read> \fi
l.15 \fi
\ifdefined\HCode
如果我无法使用逻辑排除它,那么如何防止在 tex4ht 模式下使用 \localtableofcontents ?
>pdflatex foo.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
文件列表:
*File List*
report.cls 2014/09/29 v1.4h Standard LaTeX document class
size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
tocloft.sty 2013/05/02 v2.3f parameterised ToC, etc., typesetting
etoc.sty 2014/04/22 v1.07l Completely customisable TOCs (jfB)
multicol.sty 2014/10/28 v1.8i multicolumn formatting (FMi)
答案1
我不知道为什么,但这似乎是一个扩展问题。
添加\expandafter
之前\localtableofcontents
解决了该问题。
梅威瑟:
\documentclass[10pt,notitlepage]{report}
\ifdefined\HCode
\else
\usepackage{tocloft}
\usepackage{etoc}
\fi
\begin{document}
\chapter{ my chapter }
\ifdefined\HCode
\else
\expandafter\localtableofcontents %no error
\fi
\end{document}
输出(PDFLaTeX)
作为替代方案,正如 jfbu 所建议的,您可以加载etoolbox
包并使用以下方式\ifdef
代替\ifdefined
\documentclass[10pt,notitlepage]{report}
\usepackage{etoolbox}
\ifdef{\HCode}{}{%
\usepackage{tocloft}%
\usepackage{etoc}%
}
\begin{document}
\chapter{ my chapter }
\ifdef{\HCode}{}{%
\localtableofcontents%
}
\end{document}