我有一些(可能)非常简单的问题,关于文档中的一些调整scrbook
。让我们以以下最小示例作为我的问题的基础。
最低工作示例:
\documentclass[chapterprefix=true]{scrbook}
\usepackage{lipsum}
\renewcommand*\chapterheadstartvskip{ % Horizontal rule above chapter
\ifnumbered{chapter}
{\noindent\rule{\linewidth}{1pt}\par}
{}}
\renewcommand*\chapterheadendvskip{\noindent\rule{\linewidth}{1pt}\par\vspace*{\baselineskip}} % Horizontal rule below chapter
\begin{document}
\addchap{Foreword}
\lipsum[1]
\lipsum[2]
\lipsum[3]
\lipsum[4]
\addchap{Note of thanks}
\lipsum[1]
\lipsum[2]
\lipsum[3]
\lipsum[4]
\addchap{Other blabla}
\lipsum[1]
\lipsum[2]
\lipsum[3]
\lipsum[4]
\tableofcontents
\chapter{Experimental chapter - the first}
\lipsum[1]
\lipsum[2]
\lipsum[3]
\lipsum[4]
\chapter{Experimental chapter - the second}
\lipsum
\chapter{Experimental chapter - the third}
\lipsum
\chapter{Experimental chapter - the fourth}
\lipsum
\end{document}
问题 1:chapterprefix
我想减少和之间的垂直空间chapter
- 我该怎么做?我认为应该在\vspace*{-Xpt}
某处插入?
问题1的截图:
问题2:我怎样才能使自动生成的元素的标题\tableofcontents
看起来像\addchap
标题(例如前言,致谢函或者其他等等)。对于自动生成的元素,只需在下面绘制一行,而不是在上面绘制一行和下面有一行(就像在编号章节中表示的那样)。 、 和 ... 也存在同样的问题。\listoffigures
所有\listoftables
这些\printglossary
提到\printbibliography
的和未编号的(自动)内容元素都应该像常规的非编号章节一样绘制,下面只有一行。
问题2的截图:
编号章节(应该看起来像\chapter
- 正确):
未编号章节和自动化元素(应该看起来像\addchap
- 需要校正自动化元素)
问题 3:如何用sansserif-font 代替 serif-font 来书写\leftmark
和? 简单地写下- 我收到一些有关此内容的警告,这是一个干净的解决方案吗?\rightmark
\setkomafont{pageheadfoot}{\sf}
问题3的截图:
\leftmark
并且\rightmark
用衬线字体书写
非常感谢您的帮助!
答案1
更新
这是一条新建议KOMA-Script 版本 3.19 或更新版本。有两个新命令:\chapterlinesformat
和chapterlineswithprefixformat
。它们可以重新定义以插入行。
您chapterprefix=true
可以使用
\newcommand\titlerule[1][1pt]{\rule{\textwidth}{#1}}
\renewcommand\chapterlineswithprefixformat[3]{%
\ifstr{#2}{}{}{\titlerule\par\nobreak}%
#2#3\par\nobreak\titlerule%
}
如果chapterprefix=false
使用下线,也应插入,添加
\makeatletter
\renewcommand\chapterlinesformat[3]{%
\@hangfrom{#2}{#3}\par\nobreak\titlerule%
}
\makeatother
梅威瑟:
\documentclass[
chapterprefix=true
]{scrbook}[2015/09/29]
\usepackage{lipsum}
\RedeclareSectionCommand[
beforeskip=0pt,
%innerskip=0pt,
afterskip=1\baselineskip
]{chapter}
\newcommand\titlerule[1][1pt]{\rule{\textwidth}{#1}}
\renewcommand\chapterlineswithprefixformat[3]{%
\ifstr{#2}{}{}{\titlerule\par\nobreak}%
#2#3\par\nobreak\titlerule%
}
\makeatletter
\renewcommand\chapterlinesformat[3]{%
\@hangfrom{#2}{#3}\par\nobreak\titlerule%
}
\makeatother
\setkomafont{pageheadfoot}{\sffamily}
\begin{document}
\addchap{Foreword}
\lipsum[1-4]
\addchap{Note of thanks}
\lipsum[1-4]
\addchap{Other blabla}
\lipsum[1-4]
\tableofcontents
\listoffigures
\chapter{Experimental chapter - the first}
\lipsum[1-4]
\chapter{Experimental chapter - the second}
\lipsum
\chapter{Experimental chapter - the third}
\lipsum
\chapter{Experimental chapter - the fourth}
\lipsum
\end{document}
原始答案:chapterprefix
和 之间的间距chapter
由 设定\chapterheadmidvskip
。如果这两行之间不应该有额外的空格,您可以使用
\renewcommand*\chapterheadmidvskip{\par}
或新界面
\RedeclareSectionCommand[innerskip=0pt]{chapter}
\addchap
本地更改secnumdepth
,因此\ifnumbered{chapter}
。因此,您的定义\chapterheadstartvskip
适用于,\addchap
但不适用于\chapter*
。
一种可能性是在目录/列表标题之前更改计数器,并在目录/列表标题之后重置它。
\newcounter{savesecnumdepth}
\BeforeTOCHead{%
\setcounter{savesecnumdepth}{\value{secnumdepth}}%
\setcounter{secnumdepth}{\partnumdepth}}
\AfterTOCHead{\setcounter{secnumdepth}{\value{savesecnumdepth}}}
请注意 选项listof=totocnumbered
不适用于此代码。但是 的使用listof=totoc
仍然是可能的。
或者,您可以使用空的可选参数重新定义目录/列表标题,\addchap
以避免在目录中出现条目:
\deftocheading{toc}{\addchap[]{#1}}
\deftocheading{lof}{\addchap[]{#1}}
或者循环查找包中已知的所有列表tocbasic
:
\makeatletter
\doforeachtocfile{\deftocheading{\@currext}{\addchap[]{##1}}}
\makeatother
但在这种情况下您不能使用值totoc
和leveldown
选项listof
。
更新
也许将第一行插入到 中\chapterformat
而不是 中更容易\chapterheadstartvskip
。
\RedeclareSectionCommand[
beforeskip=0pt,
innerskip=0pt,
afterskip=1\baselineskip
]{chapter}
\usepackage{etoolbox}
\newcommand\titlerule[1][1pt]{\noindent\rule{\linewidth}{#1}\par}
\preto\chapterformat{\IfUsePrefixLine{\vspace{-\baselineskip}\titlerule}{}}
\preto\chapterheadendvskip{\titlerule}
要在页眉和页脚中获取无衬线字体,请使用
\setkomafont{pageheadfoot}{\sffamily}
完整示例:
\documentclass[chapterprefix=true]{scrbook}
\usepackage{lipsum}
\RedeclareSectionCommand[
beforeskip=0pt,
innerskip=0pt,
afterskip=1\baselineskip
]{chapter}
\usepackage{etoolbox}
\newcommand\titlerule[1][1pt]{\noindent\rule{\linewidth}{#1}\par}
\preto\chapterformat{\IfUsePrefixLine{\vspace{-\baselineskip}\titlerule}{}}
\preto\chapterheadendvskip{\titlerule}
\setkomafont{pageheadfoot}{\sffamily}
\begin{document}
\addchap{Foreword}
\lipsum[1-4]
\addchap{Note of thanks}
\lipsum[1-4]
\addchap{Other blabla}
\lipsum[1-4]
\tableofcontents
\listoffigures
\chapter{Experimental chapter - the first}
\lipsum[1-4]
\chapter{Experimental chapter - the second}
\lipsum
\chapter{Experimental chapter - the third}
\lipsum
\chapter{Experimental chapter - the fourth}
\lipsum
\end{document}