如何减少章节标题中的空白数量?

如何减少章节标题中的空白数量?

我是 LaTeX 的初学者,我选择了一个大学模板来撰写小组报告。

我不知道在哪里可以更改顶部和底部都有太多空白的章节标题。模板使用 fncychap,但我似乎找不到任何可以更改它的内容。还有一个类文件。我可能在哪里找到这个选项?我应该寻找什么?我可以手动覆盖它吗?

例如,我们的目录页面顶部有大约四分之一的空白,这导致它泄漏到两页上,这是完全没有必要的。

首先,我了解到 fncychap 中有模板,但我似乎无法弄清楚使用的是哪一个。这是类文件中的内容:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  Fancy Chapter Headings
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% (must be loaded before hyperref)
\RequirePackage{./local/fncychap/fncychap}
%
% customizations
\makeatletter
  \ChNameVar{\raggedleft\Huge\rm}
  \ChNumVar{\Huge\rm}
  \ChTitleVar{\raggedleft\Huge\sf\bfseries}
  \ChRuleWidth{2pt}

  \renewcommand{\DOCH}{%
    \vskip -0.5\baselineskip
    \mghrulefill{\RW}\par\nobreak
    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
    \par\nobreak
    \vskip -0.5\baselineskip
   }
  \renewcommand{\DOTI}[1]{%
    \mghrulefill{\RW}\par\nobreak
    \CTV\FmTi{#1}\par\nobreak
    \vskip 60\p@
    }
  \renewcommand{\DOTIS}[1]{%
    \mghrulefill{\RW}\par\nobreak
    \CTV\FmTi{#1}\par\nobreak
    \vskip 60\p@
    }

什么是 DOCH/DOTI 等?我尝试使用 \vskip,但似乎没有任何明显的效果。

(这模板正在讨论中)

答案1

如果您只需要减少“目录”一词上方的空间,您可以更改 的定义\DOTIS。它代表 DO TItle Star 形式,它将是无编号章节中的第一个内容。如果您将其放在\vspace*{-50pt}\mghrulefill 之前,这将取消 增加的 50pt 空间fncychap。作为替代方案,您可以\@makeschapterhead从重新定义fncychap.sty,删除或更改行\vspace*{50pt}

如果您希望偶数章节的顶部空间较少,您可以重新定义\DOCH。这代表 DO 章节标题,是编号章节中的第一个内容。\vspace*{-50pt}出于同样的原因,您可以使用它来开始它。另一种方法是重新定义\@makechapterhead并删除或更改起始\vspace命令。

我会更改\@make...命令。下面只需删除\vspace*{50pt}

\makeatletter
\def\@makechapterhead#1{%
%  \vspace*{50\p@}% commenting out this line
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
        \DOCH
      \fi
    \fi
    \interlinepenalty\@M
    \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
      \DOTI{#1}%
    \else%
      \DOTIS{#1}%
    \fi
  }}
\def\@makeschapterhead#1{%
%  \vspace*{50\p@}% commenting out this command
  {\parindent \z@ \raggedright
    \normalfont
    \interlinepenalty\@M
    \DOTIS{#1}
    \vskip 40\p@
  }}
\makeatother

把这个放在你的序言中(之前\begin{document})。

答案2

解决减少花哨章节标题上方垂直空白量问题的关键是注意dutmsc文档类会加载book文档类。因此,您需要修补 中定义的两个宏——具体来说,分别是编号和未编号章节的book.cls\@makechapterhead和。(这两个宏都是在包中定义并由包重新定义的,包也由类加载。有趣的是,该包的重新定义不会修改章节标题上方的默认空白量,该量由类设置。)\@makeschapterheadbook.clsfncychapdutmsc50ptbook

如果需要,请在序言中添加以下说明章节标题上方的额外空白。

\usepackage{etoolbox} % provides macros for patching macros
\makeatletter
\patchcmd{\@makechapterhead}{50\p@}{0\p@}{}{}
\patchcmd{\@makeschapterhead}{50\p@}{0\p@}{}{}
\makeatother

相关内容