多年来,我一直在寻找这个问题的答案,浏览了数十页谷歌搜索结果和数百种表达问题的方式,但我从未找到过一个好的答案。我发现同样的问题我之前也问过,但从来没有得到正确的答复,所以我会在这里尽可能清楚地说明。
分节符是书中章节内段落之间的空格,用于向读者表明他们的参考框架即将改变,或者其他一些大细节不同。从一个角色转到另一个角色,或指定自上一段以来已经过了一段时间。以下是维基百科文章对此有话要说:
在小说等书面叙述中,章节通常没有编号或名称。分节符用于表示故事中的各种变化,包括时间、地点、人物视角、情绪、语气、情感和节奏的变化。作为一种小说写作模式,分节符可以被视为一种过渡,类似于章节分隔符。
据我所知,LaTeX 根本无法执行分节符。有办法模拟分节符,但没有实际的命令可用于在 LaTeX 中表示分节符。我已经使用了一段时间\bigskip\bigskip
,但现在我也在使用,tex4ebook
它对我来说不再起作用了,因为它只是一个 PDF 视觉变化。
请告诉我我错了。请告诉我有没有一种正确的方法可以在我需要的每个地方插入印刷分节符。
答案1
编辑:我已经把包裹放上Github并于发布加拿大运输安全局。
我还添加了新的包选项asterism
和新命令\asterism
,它将打印星号符号。
您可以尝试以下包sectionbreak.sty
:
\ProvidesPackage{sectionbreak}
\usepackage{kvoptions}
\DeclareStringOption[2em]{preskip}
\DeclareStringOption[2em]{postskip}
\DeclareStringOption[\relax]{style}
\DeclareStringOption[~]{mark}
\ProcessKeyvalOptions*
\newcommand\pre@sectionbreak{\par\vskip\sectionbreak@preskip\relax}
\newcommand\post@sectionbreak{\par\vskip\sectionbreak@postskip\relax}
% print centered section break mark
\newcommand\print@sectionbreak[1]{%
\bgroup%
\noindent\null\hfill\sectionbreak@style\hbox{#1}\hfill\null\par%
\egroup%
}
% default section break mark is an unbreakable space
\newcommand\sectionbreak[1][\sectionbreak@mark]{%
\pre@sectionbreak%
\print@sectionbreak{#1}%
\post@sectionbreak%
}
\newcommand\sectionbreakmark[1]{%
\gdef\sectionbreak@mark{#1}%
}
\endinput
它提供了一个文档命令。\sectionbreak
它有一个可选参数,您可以在其中指定应在分节符中打印的字符。例如,我经常看到***
在这种情况下使用。默认节标记是一个空格,因此它不会打印任何内容。
可以使用包mark
的选项更改使用的字符sectionbreak
。如果您想使用更复杂的标记,如规则或图像,您可以使用该\sectionbreakmark
命令。
还有一些用于标记前后空间的尺寸选项,preskip
以及postskip
。2em
默认情况下,它们设置为。最后一个选项是样式,例如,\bfseries
如果您希望以粗体打印标记,则可以将其设置为。
正如您提到的那样tex4ebook
,您还需要为 提供一个配置文件tex4ht
,因为默认情况下它将无法充分转换为 HTML。它可能看起来像这样:
\NewConfigure{sectionbreak}{2}
\renewcommand\sectionbreak[1][\sectionbreak@mark]{%
\a:sectionbreak\bgroup\sectionbreak@style #1\egroup\b:sectionbreak%
}
\Configure{sectionbreak}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="sectionbreak">}}{\HCode{</div>}}
\Css{div.sectionbreak{
margin-top:3rem;
margin-bottom:3rem;
text-align:center;
}}
它声明了新的配置钩子,sectionbreak
然后将其插入到重新定义的\sectionbreak
命令中。重新定义的命令只插入钩子中配置的 HTML 代码和分节符标记。sectionbreak
然后配置为插入<div class="sectionbreak">
元素。使用 CSS,我们将分节符居中,并在标记前后定义一些垂直空间。
It can be used like this:
\documentclass{article}
\usepackage[mark=***]{sectionbreak}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\sectionbreak[!!!]
\lipsum[5-7]
\sectionbreak
\lipsum[1-2]
\sectionbreakmark{\rule{10em}{3pt}}
\sectionbreak
\lipsum[6-8]
\end{document}
这是带有星号标记的 PDF 结果:
这是生成的 HTML,同样带有星号(此示例来自原始答案,其中在第一个\lipsum
命令后使用星号,正确的标记也会在 HTML 中呈现):
<p class="indent" > Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at,
tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy
pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam.
Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam
ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula
feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim.
Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc
eu purus. Donec bibendum quam in tellus. Nullam cursus pulvinar lectus.
Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu
massa.
</p>
<div class="sectionbreak">***</div>
<!--l. 10--><p class="indent" > Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus
semper, leo velit ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum
diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis
porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis
dui, et vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis
cursus enim ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a
leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur
consectetuer.
</p>
答案2
该类memoir
有各种命令用于生成所谓的“匿名分隔”。例如,在排版由星号组成的居中小菱形\plainbreak{2}
时,将生成 2 个空白行\fancybreak{{*}\\{* * *}\\{*}}
。它还具有处理以下情况的命令:例如,在页面中间使用空白行,但如果匿名分隔发生在页面的开头或结尾,则需要更具指示性的内容。
在我看来,最好有一些用于匿名划分(分节符)的印刷标记,而不仅仅是额外的空白空间。
阅读手册(texdoc memoir
)以了解更多信息。
答案3
您可以插入一个空的分段命令(具体取决于您的文档的结构):
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\section*{}
\lipsum[5-7]
\end{document}
答案4
原帖作者认为,对于他所谓的“分节符”,存在一种“正确”的方法。显然,这意味着两个段落之间的间距更大。
如果你仔细想想,如果两个段落之间有分页符,那么这个较大的空间将变得不可见。使用居中***
或短线作为标记在页面底部会显得很奇怪。
那么,开始新的段落和在较长的间隔之后开始新的段落有什么区别呢?
但如果必须的话,它只是一个空白行,然后是一个由\mbox{}
另一个空白行组成的新段落。