使用 changepage 中的 \adjustwidth 来缩小 ToC 会引入额外的空白页,如何删除它?

使用 changepage 中的 \adjustwidth 来缩小 ToC 会引入额外的空白页,如何删除它?

我需要排版一个比 或 更窄的目录\textwdith\linewidth我使用包\adjustwidth中的来实现changepage这一点,它几乎可以工作,只是它在实际的目录页之前引入了一个空白页。

我将其简化为一个最小的例子,以便您可以看到这里发生了什么(请复制并粘贴这两个代码块到两个命名文件中并编译narrowtoc.tex):

narrow-toc.cls

\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesClass{narrow-toc}

\DeclareOption*{
 \PassOptionsToClass{\CurrentOption}{report}
}
\ProcessOptions\relax

\LoadClass[12pt,letterpaper,oneside]{report}

\RequirePackage{changepage}

\let\cleardoublepage\clearpage
\renewcommand{\contentsname}{Table of Contents}

\let\oldtableofcontents = \tableofcontents
\renewcommand{\tableofcontents}{
%\clearpage % even after comment out this, there is still a blank page before the toc
    \pagestyle{plain}
    \begin{adjustwidth}{1cm}{1cm}
        \oldtableofcontents
    \end{adjustwidth}
}

narrowtoc.tex

\documentclass{narrow-toc}

\title{A normal title}
\author{My name}
\begin{document}

\maketitle
\tableofcontents

\chapter{My first chapter}
Texts

\end{document}

生成的pdf文件有4页:第3页是“目录”,第2页是空白,第1页是标题页。

我怎样才能删除这个空白页 2?这里使用了报告文档类,因此这不是“oneside”选项可以解决的问题。

答案1

环境adjustwidth启动一个列表,然后\oldtableofcontents发出\clearpage(from \chapter*); 添加\let\clearpage\relax到定义中。

\renewcommand{\tableofcontents}{%
  \pagestyle{plain}
  \begin{adjustwidth}{1cm}{1cm}
     \let\clearpage\relax
     \oldtableofcontents
  \end{adjustwidth}
  \clearpage
}

相关内容