Redefina \chapter e \chapter* com \cleardoublepage dentro do arquivo .cls

Redefina \chapter e \chapter* com \cleardoublepage dentro do arquivo .cls
\newcommand{\Chapter}[1]{{\let\cleardoublepage\relax\chapter{#1}}}

funciona bem. Como posso fazer o mesmo para a versão estrelada (*) dentro de um arquivo .cls?

(Poderia ser interessante para outros: há alguma diferença em defini-lo no documento principal?)

Responder1

Você indicou que deseja redefinir \chaptere \chapter*. Para isso sugiro dar uma olhada em um nível mais profundo em sua aula e não é uma tarefa para iniciantes.

De qualquer forma, você poderia criar uma macro que incorporasse uma versão com estrela e usasse o comando \chapterescrito em sua classe.

Uma maneira muito básica é a seguinte:

\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}

O comando \MyChapterapaga \cleardoublepage, executa \clearpagee \chapter. Ele terá todos os \chapterrecursos do seu antigo, porque \chapteré executado por último e leva como argumento tudo o que você colocar depois do \MyChapter.

Contudo este últimoNÃO é uma boa prática, uma vez que o comando \cleardoublepagese torna inútil e apagar comandos de látex muitas vezes pode causar mau funcionamento.

IMHO, uma prática "decente" poderia ser salvá-la \cleardoublepagee restaurá-la mais tarde:

\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}

que é um pouco difícil de ler/escrever, mas funciona com segurança.

Evitar usar isso \ResCdpsem apagar \cleardoublepagee manter todos \chapteros recursos exigiria muito mais esforço.

Responder2

Você indicou que usa a scrbookclasse document. Se você quiser redefinir \chapter(and \chapter*) para executar \clearpageem vez de \cleardoublepage, sugiro que você carregue o etoolboxpacote e use sua \patchcmdmacro para modificar a chaptermacro:

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

Responder3

No caso de scrbookusar a opção openanye inserir \cleardoublepages manualmente.

Ainda não é exatamente a resposta para a pergunta, decidi usar esse método.

informação relacionada