KOMA-Script:如何将 runin 部分的缩进设置为 \parindent?

KOMA-Script:如何将 runin 部分的缩进设置为 \parindent?

我想runin在 KOMA-Script 中为章节标题设置正常的段落缩进。奇怪的是,后者忽略了indent = \parindentRedeclareSectionCommand设置\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\fontafterskip但是效果不太好,而且谁知道\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}

在此处输入图片描述

相关内容