章节标题使用 koma-script 进行调整

章节标题使用 koma-script 进行调整

以下最小工作示例未提供我想要的结果。我想保留章节标题布局,但不使用该titlesec包。该titlesec包干扰了选项headings=optiontotoc。通过显示空条目而不是将其保留,这会在目录中可见。

不幸的是我的 koma-script 技能非常有限。有人知道如何仅使用代码创建所需的章节标题布局吗?

我也尝试了loadonlytitlesec 包提供的选项,但产生了错误。

以下是最小的工作示例:

\documentclass[11pt,numbers=noenddot,headings=optiontotoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\renewcommand{\sffamily}{\rmfamily}

\usepackage{titlesec}
\titleformat{\chapter}[display]{\usekomafont{chapter}\bfseries\raggedleft}{\vspace{-3em} \textsc{Kapitel} \thechapter \vspace{1.5em}}{.5 em}{\vspace{-1em} \titlerule  \vspace{.5em}}[\vspace{.5em} \titlerule]

\begin{document}
\tableofcontents

\chapter{Chapter}

\section{Section}  
Hier folgt dann der Text

\subsection{Subsection}  
Hier folgt dann der Text

\subsection{Subsection 2}  
Hier folgt dann der Text

\chapter[]{Nullchapter}
Und hier folgt dann der Text

\section[]{Nullsection} 
Und hier folgt dann der Text

\subsection[]{Nullsubsection} 
Und hier folgt dann der Text

\end{document}

所需章节标题布局:

章节标题

由于 titlesec 包导致目录中的条目为空: 目录

答案1

我通过以下方法找到了一个可行的解决方案: http://www.latex-community.org/forum/viewtopic.php?f=5&p=53313。该命令@makechapterhead用于所有编号标题和@makeschapterhead所有未编号标题。

一个完整工作的最小示例如下所示:

\documentclass[11pt,numbers=noenddot,headings=optiontotoc,chapterprefix]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\renewcommand{\sffamily}{\rmfamily}

\makeatletter

\def\@makechapterhead#1{%
    \vspace*{10\p@}%
    {\parindent \z@ \raggedleft \reset@font
        \huge \scshape \@chapapp{}  \thechapter\vspace*{-15\p@}
        \par\nobreak
        \interlinepenalty\@M\hrulefill\newline\vspace*{-5\p@}
        \huge \bfseries #1\par\nobreak
        \vspace*{-8\p@}%
        \hrulefill
        \par\nobreak
        \vskip 30\p@
}}

\def\@makeschapterhead#1{%
    \vspace*{4\p@}%
    {\parindent \z@ \raggedleft \reset@font
        \scshape
        \interlinepenalty\@M\hrulefill\newline\vspace*{-5\p@}
        \huge \bfseries #1\par\nobreak
        \vspace*{-8\p@}%
        \hrulefill
        \par\nobreak
        \vskip 30\p@
}}

\makeatother

\begin{document}

\tableofcontents
\listoffigures
\listoftables

\chapter{Chapter}

\section{Section}  
Hier folgt dann der Text

\subsection{Subsection}  
Hier folgt dann der Text

\subsection{Subsection 2}  
Hier folgt dann der Text

\chapter[]{Nullchapter}
Und hier folgt dann der Text

\section[]{Nullsection 2} 
Und hier folgt dann der Text

\subsection[]{Nullsubsection} 
Und hier folgt dann der Text

\end{document}

感谢@ChristianHupfer 的所有建议和耐心。

答案2

如果你想省略输入\tableofcontents,你应该使用已加星标分段命令的版本,例如\chapter*\section*等等。然而,这会阻止对分段进行编号。

\documentclass[11pt,numbers=noenddot,headings=optiontotoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\renewcommand{\sffamily}{\rmfamily}



\usepackage{titlesec}
\titleformat{\chapter}[display]{\usekomafont{chapter}\bfseries\raggedleft}{\vspace{-3em} \textsc{Kapitel} \thechapter \vspace{1.5em}}{.5 em}{\vspace{-1em} \titlerule  \vspace{.5em}}[\vspace{.5em} \titlerule]

\begin{document}
\tableofcontents

\chapter{Chapter}

\section{Section}  
Hier folgt dann der Text

\subsection{Subsection}  
Hier folgt dann der Text

\subsection{Subsection 2}  
Hier folgt dann der Text

\chapter*{Nullchapter}
Und hier folgt dann der Text

\section*{Nullsection} 
Und hier folgt dann der Text

\subsection*{Nullsubsection} 
Und hier folgt dann der Text

\end{document}

在此处输入图片描述

编辑

基于millo的解决方案,仅作为扩展:

\documentclass[11pt,numbers=noenddot,headings=optiontotoc,chapterprefix]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\renewcommand{\sffamily}{\rmfamily}

\setkomafont{chapter}{\raggedleft\huge}

\let\origchapapp\chapapp
\renewcommand{\chapapp}{\textsc{\origchapapp}}  % or \scshape{\origchapapp}

\renewcommand*{\chapterheadstartvskip}{\vskip-10pt}
\renewcommand*{\chapterformat}{%
    \raggedleft
    \chapapp\enskip\thechapter\\
    \hrulefill\\[-9pt]
}
\renewcommand*{\chapterheadendvskip}{%
    \vspace{-12pt}\noindent{\setlength{\parskip}{0pt}\Huge\hrulefill\par}
    \vspace{\baselineskip}
}


\begin{document}

\tableofcontents

\chapter{Chapter}

\section{Section}  
Hier folgt dann der Text

\subsection{Subsection}  
Hier folgt dann der Text

\subsection{Subsection 2}  
Hier folgt dann der Text

\chapter[]{Nullchapter}
Und hier folgt dann der Text

\section[]{Nullsection} 
Und hier folgt dann der Text

\subsection[]{Nullsubsection} 
Und hier folgt dann der Text


\end{document}

在此处输入图片描述

答案3

感谢@ChristianHupfer 提供的\chapterformat命令提示。我在以下链接下找到了解决方案:http://www.komascript.de/chapterwithlines经过一些编辑,我设法得出以下解决方案:

\documentclass[11pt,numbers=noenddot,headings=optiontotoc,chapterprefix]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\renewcommand{\sffamily}{\rmfamily}

\setkomafont{chapter}{\raggedleft\huge}

\renewcommand*{\chapterheadstartvskip}{\vskip-10pt}
\renewcommand*{\chapterformat}{%
    \raggedleft
    \chapapp\enskip\thechapter\\
    \hrulefill\\[-9pt]
}
\renewcommand*{\chapterheadendvskip}{%
    \vspace{-12pt}\noindent{\setlength{\parskip}{0pt}\Huge\hrulefill\par}
    \vspace{\baselineskip}
}


\begin{document}

\tableofcontents

\chapter{Chapter}

\section{Section}  
Hier folgt dann der Text

\subsection{Subsection}  
Hier folgt dann der Text

\subsection{Subsection 2}  
Hier folgt dann der Text

\chapter[]{Nullchapter}
Und hier folgt dann der Text

\section[]{Nullsection} 
Und hier folgt dann der Text

\subsection[]{Nullsubsection} 
Und hier folgt dann der Text


\end{document}

不幸的是我仍然面临两个问题:

  • 目录、表格列表、图表列表和附录的标题表现不同。这些标题不调用命令并在“Inhaltsverzeichnis”上方显示“Kapitel X”,这是有道理的\chapapp,但我仍然希望hrule它们位于上方并具有相似的间距。
  • 我找不到能生成\chapapp.小型大写的命令,\scshape而且\textsc{}效果不如我所愿。有人能想出解决办法吗?

使用该包生成的章节标题titlesec内容目录

章 1


仅使用代码生成的章节标题: 内容目录

章 1

相关内容