以下最小工作示例未提供我想要的结果。我想保留章节标题布局,但不使用该titlesec
包。该titlesec
包干扰了选项headings=optiontotoc
。通过显示空条目而不是将其保留,这会在目录中可见。
不幸的是我的 koma-script 技能非常有限。有人知道如何仅使用代码创建所需的章节标题布局吗?
我也尝试了loadonly
titlesec 包提供的选项,但产生了错误。
以下是最小的工作示例:
\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
:
和
仅使用代码生成的章节标题:
和