![彻底删除章节文本和垂直空间](https://linux22.com/image/360928/%E5%BD%BB%E5%BA%95%E5%88%A0%E9%99%A4%E7%AB%A0%E8%8A%82%E6%96%87%E6%9C%AC%E5%92%8C%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4.png)
我有一个奇怪的要求,即章节标题只能出现在\tableofcontents
和页面标题中,而不会出现在文档正文中。
我已经成功使用以下方法删除了该号码:
\renewcommand*{\chapterformat}{}%
如果我使用以下方法,则文本不会出现:
\chapter[Test]{}
但我无法摆脱垂直空间。我尝试了建议的东西这里,但这些都没有删除所有的空间。
如果我这样做\renewcommand{\chapterheadstartvskip}{\vspace*{-25pt}}
,实际上会删除所有空格,但前提是我不修改10pt
传递给 scrbook 的选项。(它似乎也依赖于字体,因为我需要使用我无法在此处发布的使用导入的 truetype 字体fontspec
,并且对于该字体,-29.3pt 是 10pt 大小的测量值)。
那么,是否有任何“可移植”的方法使文档的第 2 页看起来像第 1 页?重新定义\chapter
或使用{book}
和会不会更容易{titlesec}
(因为我认为 titlesec 和 koma-classes 相处得不太好)?该项目仍处于非常早期的阶段,因此我仍然可以进行任何这些更改而不会破坏任何东西。
梅威瑟:
\documentclass[10pt,a4paper,oneside]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{lmodern}
\renewcommand{\chapterpagestyle}{headings}
% remove chapter number
\renewcommand*{\chapterformat}{}%
% removes some vertical space, but not all:
\RedeclareSectionCommand[beforeskip=0pt,afterskip=0pt]{chapter}
% works for 10pt only
% \renewcommand{\chapterheadstartvskip}{\vspace*{-25pt}}
\parindent0pt
\begin{document}
Test
\newpage
\chapter[Test]{}
Test
\end{document}
输出:
答案1
我不会尝试删除\chapter
不需要的功能,而是定义一个\mychapter
仅包含所需功能的新宏(例如)。让我们定义它包括
- 分页符,
- 增加了计数器
chapter
, - 目录条目,
- 标题条目,
当然,你也可以根据需要扩展它。假设你希望目录的标题也以同样的方式运行,我们可以借鉴这个答案并得到:
\documentclass[10pt,a4paper,oneside]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{lmodern}
\parindent0pt
\newcommand{\mychapter}[1]{%
\clearpage%
\refstepcounter{chapter}%
\addcontentsline{toc}{chapter}{#1}%
\chaptermark{#1}%
}
\makeatletter
\renewcommand\tableofcontents{%
\@mkboth{\contentsname}{\contentsname}%
\@starttoc{toc}%
}
\makeatother
\begin{document}
\tableofcontents
\mychapter{Test}
Test
\mychapter{Another test}
More text
\end{document}
答案2
以下是重新定义 KOMA-Script 命令的另一个建议\chapterlinesformat
:
\documentclass[10pt,a4paper,oneside]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{lmodern}
\setlength\parindent{0pt}% really no parindent and no parskip?
\renewcommand\chapterheadstartvskip{}
\renewcommand\chapterheadendvskip{}
\renewcommand\chapterlinesformat[3]{}
\deftocheading{toc}{%
\cleardoublepage
\addchapmark{\contentsname}%
%\addchaptertocentry{}{\contentsname}% if there should be a TOC entry for TOC
}
\renewcommand*\chapterpagestyle{headings}
\begin{document}
\tableofcontents
\chapter{Test}
Test
\chapter{Another Test}
More text
\addchap{Chapter without Number}
Text
\end{document}
对于双面文档,您必须确保\rightmark
用于页眉:
\documentclass[10pt,a4paper,twoside]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{lmodern}
\setlength\parindent{0pt}% really no parindent and no parskip?
\renewcommand\chapterheadstartvskip{}
\renewcommand\chapterheadendvskip{}
\renewcommand\chapterlinesformat[3]{}
\deftocheading{toc}{%
\cleardoublepage
\addchapmark{\contentsname}%
%\addchaptertocentry{}{\contentsname}% if there should be a TOC entry for TOC
}
\usepackage{scrlayer-scrpage}
\automark[chapter]{chapter}
\clearpairofpagestyles
\chead{\rightmark}
\cfoot*{\pagemark}
\renewcommand\chapterpagestyle{scrheadings}
\begin{document}
\tableofcontents
\chapter{Test}
Test
\chapter{Another Test}
More text
\addchap{Chapter without Number}
Text
\end{document}
如果它chapterprefix
也应该与选项一起使用,那么你必须添加行
\renewcommand\chapterlineswithprefixformat[3]{}