我的出版商要求我使用网格,因为这本书有 1000 页,纸张很薄,这样下一页的文字就不会透过来,使页面全是灰色。我读到过 TeX 和网格的困难。(我无法更改为 ConTeXt)。我被困在了章节和部分命令的间距上,这些命令应该与网格保持一致。
有两个问题,本问题解决其中一个:
当
\addchap
和\section
互相跟随时,网格不再保持有时章节标题的长度超过一行。(可能会有后续行动,但如果其他方法可行,我会很高兴)
当我使用这个 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
命令,这样它就可以处理任意数量的行。但可能会失败,因为在估计所需的行数时不会考虑章节标题的悬挂缩进。