
\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
\cleardoublepage
etoolbox
\patchcmd
chapter
\usepackage{etoolbox}
\patchcmd{\chapter}{\cleardoublepage}{\clearpage}{}{}
答え3
scrbook
オプションを使用する場合は手動でopenany
挿入します\cleardoublepage
。
質問に対する正確な答えではありませんが、それでも私はこの方法を使うことにしました。