章节标题下方规则中的水平盒子过满

章节标题下方规则中的水平盒子过满

我正在用 KOMA-Script 类写报告scrreprt。在每个章节标题下,我创建了一条规则,一直到论文结尾:

示例图像

这实际上工作正常,但在每个章节标题处都会创建一个过满的水平盒子警告:

段落中的 \hbox 过满(89.62619pt 太宽)

我对这个警告并不感到意外,因为我创建一个太宽的框。89.62619pt正好是段落右端和纸张末尾之间的长度。

有没有办法创建这样的规则而不会创建过满的框?或者,有没有办法隐藏此警告(但仅限于章节标题中的此规则)?

这是一个 MWE,包含我对章节标题和测试用例的重新定义:

\documentclass{scrreprt}
\usepackage{calc}

\makeatletter
\renewcommand{\@makechapterhead}[1]{
    \hfill
    \begin{minipage}[b]{9cm}
        \raggedleft
        \sffamily\huge\textbf{#1}
    \end{minipage}
    \quad
    \sffamily\huge\textbf{\thechapter}
    \vskip 5\p@
    \noindent
    \rule{\paperwidth-\oddsidemargin-\hoffset-1in}{0.7pt}
    \vskip 20\p@
    \normalfont\normalsize
}
\makeatother

\begin{document}
    \chapter{A test chapter}
    Some example text.

    \chapter{Another very long chapter title which will break}
    Even more text.

\end{document}

小评论:我正在创建迷你页面,以便长度超过一行的章节标题也能正常工作。如果有更好的方法,我很乐意提出建议。

答案1

这里只是关于章节标题格式的附加建议:使用新的 KOMA-Script 版本 3.19,您可以重新定义\chapterlinesformat以更改章节标题的布局。这也适用于目录等未编号的章节。

\documentclass{scrreprt}[2015/09/29]

\RedeclareSectionCommand[
  beforeskip=0pt,
  afterskip=20pt,
  font=\huge
]{chapter}

\renewcommand\raggedchapter{\raggedleft}
\renewcommand\chapterformat{\thechapter}

\renewcommand\chapterlinesformat[3]{%
  \parbox[b]{\textwidth}{%
    \raggedchapter%
    \begin{minipage}[b]{9cm}
        \raggedchapter #3
    \end{minipage}%
    \ifstr{#2}{}{}{\quad#2}\\*
    \makebox[\textwidth][l]{\rule{\paperwidth}{.7pt}}%
  }%
}

\begin{document}
    \tableofcontents
    \chapter{A test chapter}
    Some example text.
    \chapter{Another very long chapter title which will break}
    Even more text.
\end{document}

请注意,版本 3.19 已在 CTAN 上发布,很快将在 TeXLive 和 MiKTeX 上发布。但您也可以从KOMA-Script 网站上的存储库

在此处输入图片描述

在此处输入图片描述

答案2

您的规则延伸到了右边距,很自然地会产生坏框。将规则放入框内,例如\textwidth去除坏框。

\documentclass{scrreprt}
\usepackage{calc}

\makeatletter
\renewcommand{\@makechapterhead}[1]{%
    \hfill
    \begin{minipage}[b]{9cm}
        \raggedleft
        \sffamily\huge\textbf{#1}
    \end{minipage}
    \quad
    \sffamily\huge\textbf{\thechapter}
    \vskip 5\p@
    \noindent
    \makebox[\textwidth][l]{\rule{\paperwidth-\oddsidemargin-\hoffset-1in}{0.7pt}}
    \vskip 20\p@
    \normalfont\normalsize
}
\makeatother

\begin{document}
    \chapter{A test chapter}
    Some example text.

    \chapter{Another very long chapter title which will break}
    Even more text.

\end{document}

在此处输入图片描述

相关内容