我想\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}
结果: