有没有办法阻止文档段落内的分页符\obeylines
?我发现了这个问题:如何避免段落内分页?,但那里建议的解决方案似乎都不能适用于\obeylines
。 的替代方案\obeylines
也会有所帮助,但我需要一个全局命令,而不是\\
在每一行文本之后。(我正在制作一本歌本,其中每一行都有硬换行符,因此\\
非常不切实际)
以下是我尝试过的一个例子:
\documentclass[a6paper]{article}
\usepackage[margin=100pt]{geometry}
%\usepackage[defaultlines=100]{nowidow}
\widowpenalties 1 10000
\raggedbottom
%\clubpenalties 1 10000
%\interlinepenalty 10000
\begin{document}
\obeylines
TITLE
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
~\par
bar
bar
bar
bar
bar
bar
bar
bar
\end{document}
照这样,这些条形图被分割在文档的两页之间。当我尝试在每一行上\obeylines
用替换时,该命令有效,但用 则无效。\\
\widowpenalties
\obeylines
答案1
通常允许在之后进行分页\par
,但这就是\obeylines
问题所在。
您可以使用(新的)钩子机制:
\documentclass{article}
\usepackage[a6paper,margin=100pt]{geometry}
\newcommand{\normalpar}{\par\allowbreak}
\begin{document}
\obeylines\AddToHook{para/after}[obey]{\nobreak}
TITLE
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
~\normalpar
bar
bar
bar
bar
bar
bar
bar
bar
\RemoveFromHook{para/after}[obey]
\clearpage
\obeylines
TITLE
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
~\par
bar
bar
bar
bar
bar
bar
bar
bar
\end{document}
第二个例子表明它\par
恢复了其标准属性。
更好地定义一个环境。
\documentclass{article}
\usepackage[a6paper,margin=100pt]{geometry}
\newenvironment{obeynobreak}
{%
\par % ensure vertical mode
\AddToHook{para/after}[obey]{\nobreak}
\obeylines
}
{\RemoveFromHook{para/after}[obey]}
\newcommand{\normalpar}{\par\allowbreak}
\begin{document}
\begin{obeynobreak}
TITLE
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
~\normalpar
bar
bar
bar
bar
bar
bar
bar
bar
\end{obeynobreak}
\clearpage
\obeylines
TITLE
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
~\par
bar
bar
bar
bar
bar
bar
bar
bar
\end{document}