我正在用 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}