产生居中的星号来指示新部分

产生居中的星号来指示新部分

在一段文本(或一段文本)中不是按标题细分(例如,一篇文章),表示新部分开始的常用工具是一个简单的星号(或其他符号),通常居中,但不一定如此。

\documentclass[pagesize,fontsize=12pt,paper=a5,DIV=9]{scrartcl}
\usepackage{blindtext}
\begin{document}
\blindtext\par
\noindent
\makebox[\textwidth][c]{*}\par
\noindent
\blindtext
\end{document}

这样的事情是必要的或有用的,因为单纯的空白行可能不够清楚,例如当前一个段落以几乎满的行结束时,和/或当新部分的开始与新页面的开始重合时。

我想知道的是,在 *TeX 包中是否有类似这样的实现。这样的实现必须处理一些事情,这些事情会让整个事情变得比我的例子所暗示的要复杂一些:

  • 星号必须始终位于其标记结束部分的最后一行,即不得将其拆分到新页面上

  • 但是:最后一行也可能是页面的最后一行。在单面文档中,\enlargethispage如果没有可能与之冲突的页脚,那么这样做可能没问题。在双面文档中,这样做可能也没问题,但您可能要考虑到读者的敏感度,他们会注意到\textheight星号在双页跨页中造成的差异,并觉得这很不方便。顺便说一句,Jan Tschichold 在他的《企鹅规则》中并不觉得这很不方便。

  • 即使没有页脚,也可能会与脚注发生冲突。这种冲突可能更难预料。

可能还有一些事情需要解决。这些是我首先想到的,其中一些问题让我至今无法自己编写出令人满意的实现——这就是为什么我想知道是否有人尝试过。

更新

按照 Ulrike 的建议,我尝试了memoir's \fancybreak.以下示例,可以将其与 Marc 和 egreg 进行比较建议。

\documentclass[11pt,a4paper,twoside=false]{memoir}
\usepackage{typearea}
\usepackage{kantlipsum}
\typearea{10}
%typearea etc. are just to create conditions identical to my scrartcl tests of Marc's egreg's solutions
\begin{document}
\kant[1-4]
\fancybreak{* * *}
\kant[1-4]
\end{document}

\fancybreak似乎没有将星号与它们完成的段落联系起来。

答案1

我会这样做:

\documentclass{article}
\usepackage{kantlipsum}
\newcommand{\finishsection}[1][0]{%
  \ifhmode\unskip\fi % to emulate what \par does
  \ifnum#1>0 \enlargethispage*{#1\baselineskip}\fi
  \par\nopagebreak
  \vbox to 3\baselineskip{\centering
    \vss
    $*$\qquad$*$\qquad$*$\par
    \vss
  }
}
\addtolength{\textheight}{-7\baselineskip}
\begin{document}
\kant[1-3]
\finishsection
\kant[4-5]
\end{document}

如果您将其更改-7\baselineskip-8\baselineskip星号,则会移动到下一页。在这种情况下,您可以执行

\finishsection[1]

将执行\enlargethispage*{1\baselineskip}。也许自动版本needspace是可行的,但在质量书籍制作中,我会选择手动检查。

答案2

尝试这个:

\documentclass[pagesize,fontsize=12pt,paper=a5,DIV=9]{scrartcl}
\usepackage{blindtext}
 \def\EndSection{\section*{\hfill*\hfill\hfill}}
\begin{document}
\blindtext\par

\EndSection

\blindtext
\end{document}

答案3

这或许太简单了,但是那又怎么样?

\begin{center}
  * * *
\end{center}

相关内容