仍可拉伸、收缩并允许换行的 \smash 版本

仍可拉伸、收缩并允许换行的 \smash 版本

是否可以将段落中某些内容的高度、深度或总高度(可选)设置为零,同时仍允许其空白拉伸或收缩并出现换行?也许可以使用 LuaTeX 和 Lua 代码?

答案1

由于没有 OP 的 MWE,我只能推测他希望处理什么类型的内容。在这里,我使用该tokcycle包创建了一个伪环境\smashstream。如您所见,空白可以拉伸/收缩以满足边距约束。

已编辑以处理简单的数学。对于这种情况,您不想被破坏的标记必须在字符指令中被拦截,例如$^_。诸如 之类的东西\frac不会被破坏,因为它是一个宏,而不是一个字符。

缺点:连字、字距调整和连字不起作用。

\documentclass{article}
\usepackage[nopar]{lipsum}
\usepackage{tokcycle}
\tokcycleenvironment\smashstream
  {\tctestifx{_##1}{\addcytoks{##1}}
   {\tctestifx{^##1}{\addcytoks{##1}}
    {\tctestifx{$##1}{\addcytoks{##1}}
     {\addcytoks{\smash{##1}}}}}}
  {\processtoks{##1}}
  {\addcytoks{##1}}
  {\addcytoks{##1}}
\begin{document}
\lipsum[1]
\smashstream\Huge This is a test of the emergency broadcast 
  system...this is only a \huge $y = x^{2} + y_{i}$
  test\normalsize\endsmashstream
\lipsum[2]
\end{document}

在此处输入图片描述

相关内容