我在这里看到使用\newline
保持水平模式处于启用状态。那么,当我选择\newline
例如
\noindent\rule{\textwidth}{\heavyrulewidth}\newline
Here is some text.
该行和“这里是一些文本”将始终在同一页面上吗?
我的理解是,使用\\
或\par
会短暂切换到垂直模式,这可能会导致内容之间出现分页符。这无法确保行 ( \rule
) 和“Here is some text”位于同一页上。
我希望一行后面紧跟着小文本(尽可能接近但不显得奇怪)。它们必须始终排版在同一页上。
例子:
\documentclass{article}
\usepackage{fontspec}
\usepackage{booktabs}
\begin{document}
\noindent\rule{\textwidth}{\heavyrulewidth}\newline
{\tiny Here is some text.}
\noindent\rule{\textwidth}{\heavyrulewidth}\\[.1\baselineskip]
{\tiny Here is some text.}
\noindent\rule{\textwidth}{\heavyrulewidth}{\tiny\par
Here is some text.}
\end{document}
答案1
不会,\\
在正常的 LR 模式下不会切换到垂直模式,也不会\newline
。
在正常 LR 模式下,的定义\newline
是\@normalcr\relax
;\relax
是为了避免后续*
被解释为 *-变体。
的定义\\
本质上是\@normalcr
,但它会寻找后面的*
和 可选参数。如果存在可选参数,则它应该是长度,并且 LaTeX 会插入\vadjust{\vskip<length>}
,\vadjust{\nobreak\vskip<length>}
如果*
跟在 后面\\
,则插入\hfil\break
以触发换行符。效果是在换行符和下一行之间添加一个垂直空格;如果使用\\*
或 ,则不会出现分页符。在前一种情况下,当然只会添加 。\\*[<length>]
\vadjust{\nobreak}
该\vadjust
项目添加了垂直材料,将在页面设置时考虑该材料,后该段落已被分成几行,并且这样获得的框被贡献到正在构建的垂直列表中。
可能添加的胶水将插入两行之间此外与普通的线间胶水一样。
一般来说,一个段落两行之间的行间粘连是一个可行的分页点,除非行间粘连前面有一个惩罚,该惩罚可能会自动插入:\clubpenalty
前两行之间、\widowpenalty
最后两行之间以及\interlinepenalty
任何其他对之间(如果该参数未设置为 0)。
你想要的东西可以轻松获得
\documentclass{article}
\usepackage{booktabs}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
{\nopagebreak\tiny\noindent\rule{\textwidth}{\heavyrulewidth}\\*
\tiny Here is some text.\par}
\lipsum[3]
\end{document}
然而,一个更简单的方法是
\documentclass{article}
\usepackage{booktabs}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\par\kern3pt
\hrule height \heavyrulewidth
\kern1pt
{\tiny\noindent Here is some text.\par\nointerlineskip}
\kern3pt
\nopagebreak
\lipsum[3]
\end{document}
这使用较低级别的工具并利用以下事实:
前后不加线间胶
\hrule
垂直模式下的字距调整如果没有跟在粘连线后面,则不是可行的分页点
因此,带有小文本的规则无法转到新页面,其后也不能有分页符。如果要允许,请删除最后一个\nopagebreak
。
通过这种方式控制空间就更容易了。
答案2
我会用
{\tiny
\noindent\rule{\textwidth}{\heavyrulewidth}
\nopagebreak
Here is some text.
}
其中两个空白行都是需要的(或者可能是\par
同一件事)。
第一个空白行进入垂直模式,以便您可以添加分页惩罚(实际上,这里的空白行不是严格必要的,因为\nopagebreak
在垂直模式下可以通过 工作\vadjust
)。需要第二个空白行,以便为小文本设置合适的基线,并适当地接近规则。