.cls ファイル内で \cleardoublepage を使用して \chapter と \chapter* を再定義します。

.cls ファイル内で \cleardoublepage を使用して \chapter と \chapter* を再定義します。
\newcommand{\Chapter}[1]{{\let\cleardoublepage\relax\chapter{#1}}}

正常に動作します。.cls ファイル内の星印 (*) バージョンで同じことを行うにはどうすればよいでしょうか?

(他の人にも興味深いかもしれません: メイン ドキュメントで定義することに何か違いはありますか?)

答え1

あなたは、\chapterと を再定義したいと述べています\chapter*。これについては、クラスでより深いレベルを見ることをお勧めしますが、これは初心者のタスクではありません。

\chapterとにかく、スター付きバージョンを組み込み、クラスに記述されたコマンドを使用するマクロを構築することができます。

非常に基本的な方法は次のとおりです。

\documentclass{scrbook}

\newcommand{\MyChapter}{%
    \let\cleardoublepage\empty
    \clearpage
    \chapter
}

\begin{document}

\tableofcontents

\MyChapter{Introduction}
some text

\MyChapter[My Introduction]{Introduction}
some text

\MyChapter*{Introduction}
some text

\end{document}

コマンドは\MyChapterを消去し\cleardoublepage\clearpageと を実行します。は最後に実行され、 の後に置いたものは何でも引数として受け取るため、古い のすべての機能\chapterが保持されます。\chapter\chapter\MyChapter

しかし後者は良い習慣ではないコマンド\cleardoublepageが役に立たなくなるため、LaTeX コマンドを消去すると、多くの場合、機能不良が発生する可能性があります。

\cleardoublepage私の意見では、それを保存して後で復元するのが「適切な」方法かもしれません。

\documentclass{scrbook}

\newcommand{\ResCdp}{%
    \let\cleardoublepage\cdp
}

\newcommand{\MyChapter}{%
    \let\cdp\cleardoublepage
    \let\cleardoublepage\empty
    \clearpage
    \chapter
}

\begin{document}

\tableofcontents

\MyChapter{Introduction}\ResCdp
some text

\MyChapter[My Introduction]{Introduction}\ResCdp
some text

\cleardoublepage

\MyChapter*{Introduction}\ResCdp
some text

\end{document}

読み書きが多少難しいですが、安全に機能します。

\ResCdpのすべての機能を消去せずにこれを使用せずに維持するには\cleardoublepage\chapterさらに多くの労力が必要になります。

答え2

ドキュメント クラスを使用していることが示されていますscrbook。の代わりに\chapter(および\chapter*) を実行するように再定義する場合は、パッケージをロードし、そのマクロを使用してマクロを変更することをお勧めします。\clearpage\cleardoublepageetoolbox\patchcmdchapter

\usepackage{etoolbox}
\patchcmd{\chapter}{\cleardoublepage}{\clearpage}{}{}

答え3

scrbookオプションを使用する場合は手動でopenany挿入します\cleardoublepage

質問に対する正確な答えではありませんが、それでも私はこの方法を使うことにしました。

関連情報