使用 KOMA-script 在章节标题上方/下方添加线条,使章节的水平盒子溢出

使用 KOMA-script 在章节标题上方/下方添加线条,使章节的水平盒子溢出

我想\linewidth在章节标题上方和下方添加 大小的线条(类似于 MS Word 中“段落”上方/下方的边框)

我尝试了以下内容,它有点接近所需的外观(并不完美,而且我不太了解这些\kern-.75\ht\strutbox东西:

\documentclass[
    draft,
    parskip=full,
]{scrreprt}

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
\parbox[t]{\linewidth}{%
\raggedchapter%
\noindent\rule{\linewidth}{.6pt}%
\par\@hangfrom{#2}{#3}%
\par\kern-.75\ht\strutbox\rule{\linewidth}{.6pt}%
}%
}
\makeatother

\begin{document}
\chapter{test}
\end{document}

然而,这会导致每个章节标题上的水平盒子过满(并且很难看出我是否有实际的文本框过宽会导致文本行溢出,即使文本行没有超出文本区域的宽度。

我也尝试过解决方案KOMA-章节标题上方和下方的脚本行(接受答案的最下部分),但是线条距离文本非常远,并且过满的水平盒子问题仍然存在(如果仅在较低的规则上)。

答案1

您需要在末尾添加 \par,否则将使用错误的 parfillskip。为了避免移位,您可以将 parskip 局部设置为零:

\documentclass[
    draft,
    parskip=full,
]{scrreprt}

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
\parskip=0pt
\noindent\rule{\linewidth}{.6pt}%
\par\@hangfrom{#2}{#3}%
\par\kern-.75\ht\strutbox
\noindent\rule{\linewidth}{.6pt}%
\par
}
\makeatother

\begin{document}
\chapter{test}

bbbb

\chapter{test test test test test some text text text text test xtt }

bbbb\par abc

\end{document}

答案2

来自选项的KOMA-Script文档parskip=full

段落之间有一行垂直空间;段落最后一行必须至少有 1 em 的自由空间

\chapterlinesformat\parskip在设置为 0pt 并\parfillskip设置为 的组内调用0pt plus 1fil。但此组后面跟着一个\par使用您的parskip=full设置的命令,并且后面没有 1em 可用空间\parbox...

如果您不需要段落最后一行的 1em 可用空间,则可以使用parskip=full-

\documentclass[
    draft,
    parskip=full-,% <- changed
]{scrreprt}
\usepackage{showframe}% to show the page layout
\usepackage{lipsum}% only for dummy text

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
\parbox[t]{\linewidth}{%
\raggedchapter%
\noindent\rule{\linewidth}{.6pt}%
\par\@hangfrom{#2}{#3}%
\par\kern-.75\ht\strutbox\rule{\linewidth}{.6pt}%
}%
}
\makeatother

\begin{document}
\chapter{test}
\lipsum[1-2]
\chapter{test test test test test some text text text text long text }
\lipsum[3-4]
\end{document}

结果:

在此处输入图片描述

但请注意,第一段的最后一行实际上没有空白。

您还可以使用\makebox[\dimexpr\linewidth-1em\relax][l]{...}或更好的\makebox[.65\linewidth][l]{...}(确保它也适用于parskip=+和):parskip=full*

\documentclass[
    draft,
    parskip=full
]{scrreprt}
\usepackage{showframe}% to show the page layout
\usepackage{lipsum}% only for dummy text

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
  \makebox[.65\linewidth][l]{% <- added
    \parbox[t]{\linewidth}{%
      \raggedchapter
      \noindent\rule{\linewidth}{.6pt}%
      \par\@hangfrom{#2}{#3}%
      \par\kern-.75\ht\strutbox\rule{\linewidth}{.6pt}%
    }%
  }% <- added
}
\makeatother


\begin{document}
\chapter{test}
\lipsum[1-2]
\chapter{test test test test test some text text text text long text}
\lipsum[3-4]
\end{document}

结果:

在此处输入图片描述

相关内容