我定义了一个新命令,将文本“夹”在一起,以防止其跨越整个页面。
我希望能够从夹紧文本切换到非夹紧文本,而不会出现行距不均匀的问题,并且允许自己将大块文本夹紧在一起(一个在另一个之上;我不打算在一行中从一个夹紧的文本块过渡到另一个夹紧的文本块)并保持正常的行距。
起初调整间距似乎有效,但我意识到只有当夹紧的段落不太靠近页面的末尾或开头时,它才有效;如果剩余的页面高度太小,似乎夹紧的段落可能会被稍微向上或向下推。
这是我的命令及其迄今为止的支持:
\newlength{\parsk}
\newlength{\parin}
\setlength{\parsk}{\parskip}
\setlength{\parin}{\parindent}
\newbox\linebox
\setbox\linebox=\hbox{gh}
\newcommand{\clasp}[1]{\noindent\begin{minipage}[b]{\textwidth}
\setlength{\parskip}{\parsk}
\setlength{\parindent}{\parin}
\vspace{1\dp\linebox}
#1
\end{minipage}}
有谁知道如何解决这个问题?
下面是一个测试文档,展示了问题发生的情况:
\documentclass{article}
\newlength{\parsk}
\newlength{\parin}
\setlength{\parsk}{\parskip}
\setlength{\parin}{\parindent}
\newbox\linebox
\setbox\linebox=\hbox{gh}
\newcommand{\clamp}[1]{\noindent\begin{minipage}[b]{\textwidth}
\setlength{\parskip}{\parsk}
\setlength{\parindent}{\parin}
\vspace{1\dp\linebox}
#1
\end{minipage}}
\newcommand{\text}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dignissim justo eget est viverra eleifend. Fusce sed felis vulputate, tempor lacus et, iaculis nisi. Sed ultricies mi neque, ut euismod dui rhoncus id. Cras fringilla, turpis in fringilla rutrum, nulla elit porttitor tellus, eu finibus sapien turpis hendrerit odio. In malesuada metus ac justo placerat fermentum. Cras ac turpis mattis, ornare arcu lobortis, cursus nisi. Vestibulum nec cursus ante. Vivamus quis consectetur mauris.}
\begin{document}
\text
\clamp{\text}
\text
\text
\clamp{\text}
\clamp{\text}
\clamp{\text}
\end{document}
答案1
标题周围的默认 parskip 和间距以及article
类中几乎所有其他垂直空间都是可拉伸的,因此会拉伸或收缩以适应页面上的大框。此外,让 minipages 上方和下方的空间与 minipage 不存在时使用的空间相匹配也是很棘手的(如果不对 latex 进行重大更改,几乎不可能)。
因此,我不会使用框来将文本放在一起,而是使用\begin{samepage}
...排列标记段落内的惩罚停止换行\end{samepage}
。
\documentclass{article}
\newcommand{\clamp}[1]{{\par\samepage#1\par}}
\newcommand{\text}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dignissim justo eget est viverra eleifend. Fusce sed felis vulputate, tempor lacus et, iaculis nisi. Sed ultricies mi neque, ut euismod dui rhoncus id. Cras fringilla, turpis in fringilla rutrum, nulla elit porttitor tellus, eu finibus sapien turpis hendrerit odio. In malesuada metus ac justo placerat fermentum. Cras ac turpis mattis, ornare arcu lobortis, cursus nisi. Vestibulum nec cursus ante. Vivamus quis consectetur mauris.}
\begin{document}
\text
\clamp{\text}
\text
\text
\clamp{\text}
\clamp{\text}
\clamp{\text}
\end{document}