网格和章节 (addchap)、部分 (KOMA)

网格和章节 (addchap)、部分 (KOMA)

我的出版商要求我使用网格,因为这本书有 1000 页,纸张很薄,这样下一页的文字就不会透过来,使页面全是灰色。我读到过 TeX 和网格的困难。(我无法更改为 ConTeXt)。我被困在了章节和部分命令的间距上,这些命令应该与网格保持一致。

有两个问题,本问题解决其中一个:

  1. \addchap\section互相跟随时,网格不再保持

  2. 有时章节标题的长度超过一行。(可能会有后续行动,但如果其他方法可行,我会很高兴)

当我使用这个 MWE 时,网格在\addchap和之后是完整的\section

\documentclass[fontsize=10pt,headings=openany]{scrbook}
\usepackage[usenames]{xcolor}
\usepackage{scrlayer-scrpage}
\usepackage{fontspec}
\usepackage{blindtext}
\usepackage{eso-pic}
\usepackage[ngerman]{babel}
\usepackage[babel]{microtype}
\usepackage{tikz}

% baseline grid
\AddToShipoutPicture{%
\AtTextLowerLeft{
    \begin{tikzpicture}[overlay,remember picture]%
        \draw[blue!90!white,very thin]%
             (current page.south west) grid[step=\baselineskip]%
             (current page.north east);%
    \end{tikzpicture}%
    }%
}

\RedeclareSectionCommand[
  beforeskip=22.89pt,
  afterskip=12pt]{chapter}
\RedeclareSectionCommand[
  beforeskip=17.99pt,
  afterskip=12pt]{section}


\begin{document}
\addchap{1 EL}
1EL\blindtext

\section{1 EL}
1EL\blindtext

\addchap{1 EL}
\section{1 EL}

1EL\blindtext

\blindtext

\end{document}

\addchap不幸的是,无论何时和相邻,它都是关闭的\section。(由于未知原因,图像上传器不接受我的屏幕截图。我稍后会尝试添加图像。)章节和部分之间的空间长度是多少?

答案1

您可以创建一个命令来处理章节标题紧跟在章节标题之后的情况。我调用了它\adjacent,它采用以下参数:

\adjacent[<short chap>]{<chap>}[<short sec>]{<sec>}

这应该可以解决您的第一个问题(但正如评论中指出的那样,这不是必需的,因为它们总是相邻的。

对于您的第二个问题,我重新定义了该\section命令。它现在会检查章节标题的长度,如果长度超过 1,\textwidth则会更改标题后的间距。

以下是完整的 MWE

\documentclass[fontsize=10pt,headings=openany]{scrbook}
\usepackage[usenames]{xcolor}
\usepackage{scrlayer-scrpage}
%\usepackage{fontspec}
\usepackage{blindtext}
\usepackage{eso-pic}
\usepackage[ngerman]{babel}
\usepackage[babel]{microtype}
\usepackage{tikz}

% baseline grid
\AddToShipoutPicture{%
\AtTextLowerLeft{
    \begin{tikzpicture}[overlay,remember picture]%
        \draw[blue!90!white,very thin]%
             (current page.south west) grid[step=\baselineskip]%
             (current page.north east);%
    \end{tikzpicture}%
    }%
}

\RedeclareSectionCommand[
  beforeskip=22.89pt,
  afterskip=12pt
]{chapter}
\RedeclareSectionCommand[
  beforeskip=17.99pt,
  afterskip=12pt
]{section}

\newcommand\adjacent[2][]{%
  \bgroup
  \RedeclareSectionCommand[
    beforeskip=22.89pt,
    afterskip=17.99pt,
  ]{chapter}%
  \if\relax\detokenize{#1}\relax
    \addchap{#2}%
  \else
    \addchap[#1]{#2}%
  \fi
  \egroup
  \section
}

\let\sectionBAK\section
\newcounter{sectiontmp}
\renewcommand\section[2][]{%
  \bgroup
  \setcounter{sectiontmp}{\numexpr\value{section}+1\relax}%
  \setbox0\hbox{%
    \usekomafont{section}\sectionlinesformat{1}{0pt}{\thesectiontmp}{#2}}%
  \expandafter\ifodd\numexpr\wd0/\textwidth\relax
    \RedeclareSectionCommand[
      beforeskip=17.99pt,
      afterskip=17.99pt
    ]{section}%
  \fi
  \if\relax\detokenize{#1}\relax
    \sectionBAK{#2}%
  \else
    \sectionBAK[#1]{#2}%
  \fi
  \egroup
}

\begin{document}
\tableofcontents
\addchap{1 EL}
1EL\blindtext

\section{1 EL}
1EL\blindtext

\adjacent{1 EL}{1ELFoo bar bazg 1ELFoo bar baz 1ELFoo bar baz 1ELFoo bar baz 1EL}
1EL\blindtext

%\addchap{1 EL}
%\section{1 EL}


%1EL\blindtext

\blindtext

\section{1EL}%Foo bar bazg 1ELFoo bar baz 1ELFoo bar baz 1ELFoo bar baz 1E}%LFoo bar
%  baz 1EL}
1EL\blindtext

\end{document}

编辑:我修改了\section命令,这样它就可以处理任意数量的行。但可能会失败,因为在估计所需的行数时不会考虑章节标题的悬挂缩进。

相关内容