scrbook - 关于调整和字体样式的三个非常简单的问题

scrbook - 关于调整和字体样式的三个非常简单的问题

我有一些(可能)非常简单的问题,关于文档中的一些调整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 或更新版本。有两个新命令:\chapterlinesformatchapterlineswithprefixformat。它们可以重新定义以插入行。

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

但在这种情况下您不能使用值totocleveldown选项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}

相关内容