避免在双列文档中使用章节分页符

避免在双列文档中使用章节分页符

我花了一段时间才找到错误,但这是一个 MWE。我正在使用我自己的类,如下所示:

 \documentclass[fleqn,10pt,twocolumn]{MWEclass}
 \usepackage{lipsum} % Required to insert dummy text
 \definecolor{pt_Blau_04}{RGB}{20,20,20}

   \begin{document}
    \makeatletter 
         \renewcommand\chapter{\global\@topnum\z@
                 \@afterindentfalse
                 \secdef\@chapter\@schapter}
    \def\@topnewpage[#1]{#1}
 \makeatother

 \input{MWEchapter}
 \chapter{Something}
 \lipsum[7-10]
 %\input{MWEchapter2}
 %\input{MWEchapter3}
  \end{document}

和班级:

 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{MWEclass}[17/06/2013, v1.0]

 \AtEndOfClass{\RequirePackage{microtype}}
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
 \ProcessOptions*
 \LoadClass{report}
 \RequirePackage[usenames,dvipsnames,svgnames,table]{xcolor}


 \RequirePackage[explicit]{titlesec}
 \newlength\mylena
 \newlength\mylenb
 \setlength\mylena{1.3cm}
 \setlength\mylenb{\dimexpr\columnwidth-\mylena\relax}

 \newcommand\PlaceNumber[1]{%
   \makebox[\mylena][l]{#1}}

 \titleformat{\chapter}
  {\color{pt_Blau_04}\Large\sffamily\bfseries}
  {}
  {0em}
  {\PlaceNumber{\thechapter}\parbox[t]{\mylenb}{\raggedright#1}}

 \titlespacing*{\chapter}{0pc}{3ex \@plus4pt \@minus3pt}{5pt}

如果我想避免每个新章节的分页符(MWEchapter 章节只是口头总结的文本),它最多可以包含两个章节,如果我想包含更多章节,就会出现有关水平模式和 titlesec 包的错误消息。

答案1

错误源于你对 的重新定义\chapter没有确保在章节标题即将排版时段落结束。因此,

Text\chapter{Foo}

触发错误。

既然你无论如何都在使用titlesec,我建议删除 的 hacky 重新定义\chapter,并使用 的接口titlesec使章节不开始新的页面。这可以通过将 from 的类设置为 来实现。\chapters然后看起来像这样(参见最后一行):topstraightMWEclass.cls

\NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{MWEclass}[17/06/2013, v1.0]

 \AtEndOfClass{\RequirePackage{microtype}}
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
 \ProcessOptions*
 \LoadClass{report}
 \RequirePackage[usenames,dvipsnames,svgnames,table]{xcolor}

 \RequirePackage[explicit]{titlesec}
 \newlength\mylena
 \newlength\mylenb
 \setlength\mylena{1.3cm}
 \setlength\mylenb{\dimexpr\columnwidth-\mylena\relax}

 \newcommand\PlaceNumber[1]{%
   \makebox[\mylena][l]{#1}}

 \titleformat{\chapter}
  {\color{pt_Blau_04}\Large\sffamily\bfseries}
  {}
  {0em}
  {\PlaceNumber{\thechapter}\parbox[t]{\mylenb}{\raggedright#1}}

 \titlespacing*{\chapter}{0pc}{3ex \@plus4pt \@minus3pt}{5pt}

\titleclass{\chapter}{straight}%% added

\chapter并且可以删除主文件中的重新定义。

答案2

这对我有用,只需要重置 cleardoublepage,如果你将它保存在内存中,就可以恢复。

\documentclass{book}

\begin{document}
\chapter{One}
Bla
\chapter{Two}
Bla Bla

%Reset
\makeatletter
    \let\cleardoublepage@old\cleardoublepage
    \let\cleardoublepage\relax
\makeatother

\chapter{Three}
Bla Bla Bla

%Restore
\makeatletter
    \let\cleardoublepage\cleardoublepage@old
\makeatother

\chapter{Four}
Bla Bla Bla

\end{document}

相关内容