背景

背景

背景

有许多印刷上不同的方法可以将段落彼此分开,最常见的方法是将每个段落放在新行上,并缩进或添加垂直空格。(有些人同时使用这两种方法,但这是多余的,而且在印刷界通常不受欢迎。)¶ 另一种节省空间的替代方法是使用特殊字符(通常是段落号\P)来分隔段落。(Bringhurst 在印刷风格的要素对该技术和其他技术的优点进行了很好的讨论。

问题

\P在 LaTeX 中用段落符号“¶”( ) 连接段落的最佳方法是什么?

讨论

显而易见的解决方案是手动将段落标记插入文本,而不是使用换行符,但是,这妨碍了在各种不同格式之间快速切换。可以使用自定义宏,然后将其重新定义为 或\P\par但这似乎仍然不是最好的解决方案,因为它不能应用于以典型方式用空白行构造的源(例如,混淆了非常有用的lipsum包)。¶ 一个合适的解决方案可能涉及重新定义\par:类似于\def\par{ \P~}。这对于正确分组的短文本区域来说很好,但我怀疑在整个文档中实现时会遇到许多微妙的困难。以下最小示例演示了一些问题:

\documentclass{article}
\usepackage{lipsum}
\def\par{ \P~}
\begin{document}
\lipsum[1-5]

\let\par\endgraf
\begin{enumerate}
\item This is a list item.
\item And another.
\end{enumerate}

\def\par{ \P~}
\lipsum[6-11]
\def\par{\endgraf}
\end{document}

必须\let\par\endgraf在列表之前和之前恢复原来的功能\end{document}原始功能。即使手动执行此操作,也会在列表前和文档末尾的最后一段之后插入虚假的 Pillcrow。(Pillcrow 应该只出现在之间连接段落,而不是在换行符、节标题、等式等之后的段落之后)纠正解决方案是什么?

更多信息

Frank Mittelbach 解释道TeX 执行段落构建器的具体位置还有一些关于如何改变的讨论\par 在 LaTeX 中(在哪里\@setpar提到)以及如何避免破坏其他用途\par在环境、列表等中。其他一些相关讨论是:

答案1

尽管如此,这不是人们推荐用于现代排版的段落格式类型,您可以采取的方法就是您建议的;即手动在文本中插入段落标记,而不是使用换行符。

由于您似乎需要在各种不同格式之间快速切换,我建议您创建一个宏来打开或关闭 Pilcrow 宏的效果:

  \let\cacheP\P
  \def\Poff{\def\P{\leavevmode\par}}
  \def\Pon{\let\P\cacheP}

在标记中,您可以根据需要使用\Pon\Poff。以下是 MWE:

\documentclass{article}
\usepackage{lipsum}
\let\cacheP\P
\def\Poff{\def\P{\leavevmode\par}}
\def\Pon{\let\P\cacheP}
\begin{document}
This is a short paragraph. \P This is another and this is another.
\P And another.

And this is a normal one.\lipsum*[1]

This is how you negate the effect.

\Poff
This is a short paragraph.
\P This is another and this is another.
\P and another.

\Pon

This is a short paragraph.
\P This is another and this is another.
\P and another.
\end{document}

相关内容