无法包含带有自定义文档类的 tocloft 包

无法包含带有自定义文档类的 tocloft 包

我正在努力处理一个自定义文档类,我需要将它用于我的论文:

https://github.com/sigchi/Document-Formats/blob/master/LaTeX/sigchi.cls

它默认不允许有目录,但我设法在以下答案的帮助下定义了一个基本的目录:https://tex.stackexchange.com/a/346018/19179

我的下一个问题是设置目录条目的样式。我试图包含该tocloft包以便可以执行\renewcommand{\cftsecfont}等操作,但失败了

! Extra \fi.
\@cfttocfinish ...f@restonecol \twocolumn \fi \fi

.cls 或自定义tableofcontents定义中一定有它不喜欢的东西?

这是MWE:

\documentclass{sigchi}

\usepackage{tocloft}

% Redefine the table of contents because sigchi class is shit.
% https://tex.stackexchange.com/questions/346012/define-tableofcontents-in-document-class-that-doesnt-support-it?noredirect=1#comment849020_346012
\makeatletter
\newcommand{\contentsname}{\MakeUppercase{Contents}}
\renewcommand{\tableofcontents}{
    \section*{\contentsname}
      \@starttoc{toc}
    }

% sigchi.cls does \let\thepage\relax (don't ask!), so define it again
\newcommand{\thepage}{\arabic{page}}

\begin{document}

\tableofcontents

\section{First section}

\end{document}

\tableofcontents如果删除其中一个或两个,文档就会编译\usepackage{tocloft},但如果同时删除这两个,就会出现上述错误。

答案1

实际上并不sigchi.cls符合标准类,因此tocloft的复杂特性无法脱离类定义。

最好的办法是激活该titles选项来tocloft防止奇怪的类定义。

潜在的编辑是否会允许这样做是另一个问题;-)

\documentclass{sigchi}


\usepackage[titles]{tocloft}

% Redefine the table of contents because sigchi class is ...
% http://tex.stackexchange.com/questions/346012/define-tableofcontents-in-document-class-that-doesnt-support-it?noredirect=1#comment849020_346012
\makeatletter
%\@cftnctoctrue
%\AtBeginDocument{%
\newcommand{\contentsname}{Contents}
\renewcommand{\tableofcontents}{%
    \section*{\contentsname
        \@mkboth{%
          \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }
%}
\makeatother


% sigchi.cls does \let\thepage\relax (don't ask!), so define it again
\newcommand{\thepage}{\arabic{page}}

\begin{document}

\tableofcontents

\section{First section}

\end{document}

相关内容