我想runin
在 KOMA-Script 中为章节标题设置正常的段落缩进。奇怪的是,后者忽略了indent = \parindent
。RedeclareSectionCommand
设置\the\parindent
了缩进,但值错误。
考虑以下代码:
\documentclass[10pt, twoside, paper = 140mm : 216mm]{scrbook}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont{Libertinus Serif}
\RedeclareSectionCommand[
style = section
, runin = true
, font = \normalfont\bfseries
, afterskip = \the\fontdimen2\font
, indent = \parindent
]{section}
\makeatletter
\renewcommand*{\thesection}{\@arabic\c@section.}
\makeatother
\AtBeginDocument{
\setlength{\parindent}{%
\dimexpr2\baselineskip-1ex\relax}
}
\begin{document}
\chapter{Bananas are great}
\section{About bananas.}
\lipsum[1]
\end{document}
我怎样才能指定缩进量\parindent
(我不是排版英文文本,所以我们就忽略为什么吧)?
哦,我也想指定\fontdimen2\font
,afterskip
但是效果不太好,而且谁知道\the
将设置为哪种字体afterskip
。
最后,有没有办法不用在章节标题后手动添加点?比如用\section{About bananas}
代替\section{About bananas.}
?
答案1
这是我的完整解决方案。感谢@marquinho 提供的提示。
\documentclass[10pt, twoside, paper = 140mm : 216mm]{scrbook}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont{Libertinus Serif}
\newcommand*\ssize{\fontdimen2\font}
\newcommand*\wspace{\nolinebreak\hspace{\ssize}\relax}
\makeatletter
\renewcommand*{\thesection}{\@arabic\c@section}
\makeatother
\renewcommand*{\sectionformat}{\thesection.\wspace}
\newcommand*{\headingdot}[1]{.}
\AddtoDoHook{heading/endgroup/section}{\headingdot}
\AtBeginDocument{
\setlength{\parindent}{%
\dimexpr2\baselineskip-1ex\relax}
\RedeclareSectionCommand[
style = section
, runin = true
, font = \normalfont\bfseries
, afterskip = \the\ssize
, indent = \the\parindent
]{section}
}
\begin{document}
\chapter{Mind reading introduction}
\section{Telepathy fundamentals}
\lipsum[1]
\end{document}
答案2
您希望在文档开头设置参数,而不是在序言中,因此\normalfont
已发出 after。如果您想缩进章节标题,您还需要indentfirst
。
与其硬编码句号\thesection
(因为您可能不希望在交叉引用中使用它,对吗?),不如使用scrbook
功能。
对于afterskip
我来说,它用拉伸和收缩组件来定义,因此它参与对齐。
\documentclass[
10pt,
twoside,
paper = 140mm : 216mm,
numbers = endperiod,
]{scrbook}
\usepackage{fontspec}
\usepackage{indentfirst}
\usepackage{lipsum}
\setmainfont{Libertinus Serif}
\newlength{\sectionparindent}
\newlength{\sectionafterskip}
\RedeclareSectionCommand[
style = section,
runin = true,
font = \normalfont\bfseries,
afterskip = \sectionafterskip,
indent = \sectionparindent,
]{section}
\renewcommand{\thesection}{\arabic{section}}
\AtBeginDocument{%
\setlength{\parindent}{\dimexpr2\baselineskip-1ex\relax}%
\setlength{\sectionparindent}{\parindent}%
\setlength{\sectionafterskip}{\fontdimen2\font plus \fontdimen3\font minus \fontdimen4\font}%
}
\begin{document}
\chapter{Bananas are great}
Let's see what the parindent is.
\section{About bananas.}
\lipsum[1]
\end{document}