我正在努力处理一个自定义文档类,我需要将它用于我的论文:
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}