我尝试过renewcommand
这样的:
\renewcommand\chapter{}
但是当我\chapter{test}
在文档中写入时,仍然有文本“测试”,只是没有任何格式。
答案1
只需使用\renewcommand{\chapter}{}
就会将移动参数留在流输入中,并对其进行排版,例如
\chapter{foo}
会产生\chapter
空{foo}
参数不再是参数,而是一个排版文本,即将foo
被打印。
\chapter
本身没有参数,但会分支到\@chapter
和\@schapter
,具体取决于版本\chapter
和\chapter*
。
带星号的章节使用\@schapter
,有一个参数,而\@chapter
有一个可选参数和一个强制参数。(对于book
和report
类,语句为真,memoir
略有不同。)我将提出两种解决方案:更简单的解决方案\RenewDocumentCommand
和更基本的解决方案,即捕获\@chapter
和\@chapter
。
这在主体中绝对不执行任何操作document
:它吞噬了\chapter*
等类型的宏及其宏。
它捕获带星号的版本 (s)、可选参数 (o) 和参数mandatory
,然后让它什么都不做,所以甚至\tableofcontents
不会打印标题(它使用\chapter*{\contentsname}
\documentclass{book}
\usepackage{xparse}
\RenewDocumentCommand{\chapter}{som}{%
}
\begin{document}
\tableofcontents
\chapter{Foo}
\end{document}
这是一种不使用的方法xparse
:
\documentclass{book}
\makeatletter
%\def\chapter%
% branches into \@chapter and \@schapter
\renewcommand{\@chapter}[2][]{%
}
\renewcommand{\@schapter}[1]{%
}
\makeatother
\begin{document}
\tableofcontents
\chapter[foo]{Foobar}
\end{document}
\let\chapter\relax
当然使用也不是一个好主意!
现在:让某些命令不执行任何操作的一般问题取决于宏的类型。无参数宏,例如,\foo
可以使用 来静音\let\foo\relax
。
答案2
在有 s 的常规文档类下\chapter
,你必须捕获三个可能的论点:
*
,例如\chapter*{<title>}
可选参数
[
..]
,例如\chapter[<toc>]{<title>}
强制参数
{
...}
,如同\chapter{<title>}
。
请注意,上述三个参数可以混合使用,如\chapter*[<toc>]{<title>}
。要执行\chapter
无操作,您可以使用以下任一方法:
-
\usepackage{xparse} \RenewDocumentCommand{\chapter}{s o m}{} \RenewDocumentCommand{\tableofcontents}{}{} \RenewDocumentCommand{\listoffigures}{}{} \RenewDocumentCommand{\listoftables}{}{}
LaTeX2e 宏重新定义:
\makeatletter \renewcommand{\chapter}{\@ifstar\@chapter\@chapter} \renewcommand{\@chapter}[2][]{} \renewcommand{\tableofcontents}{}% or \let\tableofcontents\relax \renewcommand{\listoffigures}{}% or \let\listoffigures\relax \renewcommand{\listoftables}{}% or \let\listoftables\relax \makeatother
在这两种情况下,可能还必须抑制与 ToC 相关的命令,以避免设置(甚至是虚构的)ToC。
memoir
使用四个可能的参数:
*
,例如\chapter*{<title>}
第一个可选参数
[
.]
,例如\chapter[<toc>]{<title>}
第二个可选参数
[
..]
,例如\chapter[<toc>][<header>]{<title>}
强制参数
{
...}
,如同\chapter{<title>}
。
要覆盖这些,需要进行与上面提到的类似的设置:
-
\usepackage{xparse} \RenewDocumentCommand{\chapter}{s o o m}{} \RenewDocumentCommand{\tableofcontents}{s}{} \RenewDocumentCommand{\listoffigures}{s}{} \RenewDocumentCommand{\listoftables}{s}{}
LaTeX2e 宏重新定义:
\makeatletter \renewcommand{\chapter}{\@ifstar\@chapter\@chapter} \renewcommand{\@chapter}[1][]{\@@chapter} \newcommand{\@@chapter}[2][]{} \renewcommand{\tableofcontents}{\@ifstar{}{}} \renewcommand{\listoffigures}{\@ifstar{}{}} \renewcommand{\listoftables}{\@ifstar{}{}} \makeatother