새 장이 있을 때 내 문서에서 새 페이지가 시작되지 않도록 하고 싶습니다. 내 코드는 다음과 같습니다
\documentclass{scrbook}
\usepackage{etoolbox}
\patchcmd{\chapter}{\clearpage}{}{}
\begin{document}
\chapter{Preliminary}
first chapter
\chapter{Discussion}
second chapter
{\let \clearpage \relax\chapter{Advanced}}
final chapter
\end{document}
이 코드는 첫 번째와 두 번째 장에 대해서는 새 페이지를 시작하지만 세 번째 장에서는 시작하지 않습니다.
내 \patchcmd가 작동하지 않는 이유는 무엇입니까?
답변1
\patchcmd
첫째, 중괄호 쌍이 없기 때문에 해당 줄에 구문 오류가 있습니다 .
\patchcmd{<macro>}{<search>}{<replace>}{<success>}{<failure>}
이 경우에는 패치가 실패하기 때문에 결과가 없습니다. 따라서 \begin
실패로 인해 다섯 번째 인수가 전달될 때 흡수되었습니다.
주된 이유: 매크로의 대체 텍스트에 \chapter
no가 있습니다 .\clearpage
\scr@startchapter{chapter}
그리고 그건 \scr@startchapter
패치해야돼
% scrbook.cls, line 4030:
\newcommand*{\scr@startchapter}[1]{%
\if@openright\cleardoublepage\else\clearpage\fi
\scr@ifundefinedorrelax{#1pagestyle}{}{%
\ifstr{#1pagestyle}{}{}{%
\thispagestyle{\@nameuse{#1pagestyle}}%
}%
}%
\global\@topnum\z@
\@afterindentfalse
\expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
}
패치를 시도하기 전에 항상 매크로의 의미를 확인하십시오.
\cleardoublepage
아마도 및 를 모두 제거하고 싶을 것 \clearpage
입니다.
\makeatletter
\patchcmd{\scr@startchapter}
{\if@openright\cleardoublepage\else\clearpage\fi}% search
{}% replace
{}{\ddt}
\makeatother
나는 와 같은 것을 추가하는 것이 편리하다고 생각하는데 \ddt
, 이것은 의 실패에 대해 경고할 것입니다 Undefined control sequence \ddt
. 패치가 성공했다고 확신하면 패치를 제거합니다.
답변2
KOMA-Script 클래스를 사용하면 장 제목을 \RedeclareSectionCommand
설정할 수 있습니다. style=section
따라서 아무 것도 패치할 필요가 없습니다.
\documentclass{scrbook}[2015/10/03]
\RedeclareSectionCommand[
style=section,
indent=0pt
]{chapter}
\begin{document}
\chapter{Preliminary}
first chapter
\chapter{Discussion}
second chapter
\chapter{Advanced}
final chapter
\end{document}
답변3
여기에 해결책이 있습니다. 패치해야 하나\scr@startchapter
\documentclass{scrbook}
\usepackage{etoolbox}
\makeatletter
\if@openright
\patchcmd{\scr@startchapter}{\cleardoublepage}{}{}{}
\else
\patchcmd{\scr@startchapter}{\clearpage}{}{}{}
\fi
\makeatother
\begin{document}
\chapter{Preliminary}
first chapter
\chapter{Discussion}
second chapter
\end{document}