章节格式为 \chapter*

章节格式为 \chapter*

因此,我在章节布局方面遇到了一些问题,这与命令有关\chapter*。这是我现在设置的布局,是由一位朋友完成的,他比我更有 LaTeX 和 KOMA 经验:

\documentclass[11pt,
chapterprefix=true 
]{scrbook} 
\usepackage[]{graphicx} 
\usepackage[scaled=.90]{helvet}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\usepackage{ragged2e}
\setkomafont{chapter}{\Huge\bfseries}
\addtokomafont{chapterprefix}{\raggedleft}
\renewcommand*{\raggedsection}{\raggedright} 
\renewcommand*{\chapterformat}{%
    \hrulefill\enskip\mbox{\scalebox{3}{\thechapter\autodot}}\vspace{-0.6\baselineskip}}
\newcommand{\chap}[1]{\chapter{#1}\vspace{-0.8\baselineskip}\hrule\vspace{1.5\baselineskip}}


\begin{document}
    \tableofcontents
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
\blindtext

\chap{Theory}
\blindtext
\end{document}

现在,这产生了我想要的“理论”章节的章节布局,但它不适用于“简介”章节,因为两个栏都丢失了。

那么,是否可以有如下布局:

------------
Introduction
------------

text

----------1
Theory
-----------

但是,与上面的最小工作示例相同,但对于介绍章节也是如此。 这两个章节都应该在目录中,并且不应列举“介绍”。 我无法找到任何可以做到这一点的东西,也许你们有想法,并且对布局的任何改进都将不胜感激。

答案1

更新(KOMA-Script 3.19 版现已在 CTAN 和 TeXLive 上发布)

KOMA-Script 版本 3.19 或更新版本还有另一种可能性。使用该版本,您可以简单地重新定义命令\chapterlinesformat。此命令的说明见KOMA-Script 文档

\documentclass{scrbook}[2015/09/15]
\usepackage{graphicx} 
\usepackage[scaled=.90]{helvet}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\setkomafont{chapter}{\Huge\bfseries}

\renewcommand*{\chapterformat}{%
  \enskip\mbox{\scalebox{3}{\thechapter\autodot}}}
\renewcommand\chapterlinesformat[3]{%
  \parbox[b]{\textwidth}{\hrulefill#2}\par%
  #3\par\bigskip
  \hrule}
\RedeclareSectionCommand[afterskip=1.5\baselineskip]{chapter}

\begin{document}
\tableofcontents
\addchap{Introduction}% \addchap instead of \chapter* and \addcontentsline
\blindtext
\chapter{Theory}
\blindtext
\blinddocument
\end{document}

请注意我已删除chapterprefix=true

结果:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述


这是另一个建议(适用于较旧的 KOMA-Script 版本),也使用etoolbox。章节下方的行由 插入\chapterheadendvskip

\usepackage{etoolbox}
\preto{\chapterheadendvskip}{\noindent\hrulefill\par}

因此您可以\chapter在代码中使用等等,它也适用于目录。

\newcommand\chaptertopline{\smash{\raisebox{-3.5\baselineskip}{\rule{\textwidth}{.4pt}}}}
\makeatletter
\preto{\@@makeschapterhead}{\chaptertopline}
\preto{\@@makechapterhead}{\ifunnumbered{chapter}{\chaptertopline}{}}
\makeatother

也可以使用和\addchap的组合。\chapter*\addcontentsline

代码:

\documentclass[
chapterprefix=true
]{scrbook}
\usepackage{graphicx}
\usepackage[scaled=.90]{helvet}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}

\setkomafont{chapter}{\Huge\bfseries}
\addtokomafont{chapterprefix}{\raggedleft}
\renewcommand*{\chapterformat}{%
    \hrulefill\enskip\mbox{\scalebox{3}{\thechapter\autodot}}\vspace{-0.6\baselineskip}}

\usepackage{etoolbox}
\newcommand\chaptertopline{\smash{\raisebox{-3.5\baselineskip}{\rule{\textwidth}{.4pt}}}}
\makeatletter
\preto{\@@makeschapterhead}{\chaptertopline}
\preto{\@@makechapterhead}{\ifunnumbered{chapter}{\chaptertopline}{}}
\makeatother
\preto{\chapterheadendvskip}{\noindent\hrulefill\par}

\begin{document}
\tableofcontents
\addchap{Introduction}
\blindtext

\chapter{Theory}
\blindtext
\end{document}

结果:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案2

试试这个。我用的是电子工具箱将软件包添加到补丁中\@@makeschapterhead以获取标题上方的行。该\chapst命令开始一个未编号的章节并放入下面的行。最后,\mychap工作原理类似于\chapter,因此您可以在不带星号的情况下使用它来编号部分,或者如果您不想要数字,则可以带星号。

\documentclass[11pt,
chapterprefix=true
]{scrbook}
\usepackage[]{graphicx}
\usepackage[scaled=.90]{helvet}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\usepackage{ragged2e}
\usepackage{etoolbox}
\setkomafont{chapter}{\Huge\bfseries}
\addtokomafont{chapterprefix}{\raggedleft}
\renewcommand*{\raggedsection}{\raggedright}
\renewcommand*{\chapterformat}{%                                                                                                                            
    \hrulefill\enskip\mbox{\scalebox{3}{\thechapter\autodot}}\vspace{-0.6\baselineskip}}
\newcommand{\chap}[1]{\chapter{#1}\vspace{-0.8\baselineskip}\hrule\vspace{1.5\baselineskip}}
\newcommand\chapst[1]{\chapter*{#1}\vspace{-0.8\baselineskip}\hrule\vspace{1.5\baselineskip}}


\makeatletter
\pretocmd{\@@makeschapterhead}{\noindent\hrulefill\par\vspace{-2\baselineskip}}{}{}

\newcommand\mychap{\@ifstar\chapst\chap}

\makeatother

\begin{document}
    \tableofcontents
\mychap*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
\blindtext

\mychap{Theory}
\blindtext
\end{document}

相关内容