数学模式“\discretionary”中的不间断文本:为什么一定无效?

数学模式“\discretionary”中的不间断文本:为什么一定无效?

在水平模式下,a 的分隔前、分隔后和不分隔文本\discretionary可以包含字符、方框和字距的任意组合。但在数学模式下,不分隔文本必须为空。

这种令人讨厌的限制是否有客观原因?是否有希望在未来版本的 LaTeX 中放宽这一限制?(并且,让我们许个愿,如果\hyphenchar也可以调用宏而不是仅调用相同字体的字符……)

这可能通过 LuaTeX 或 XeTeX 实现,但我想坚持使用标准 (pdf)LaTeX(包括 e-TeX)。

答案1

我怀疑这种情况不太可能改变,但是由于换行只能发生在内联数学的顶层,而不是任何组内,所以你通常可以通过打破数学列表来避免限制,所以

\documentclass{article}

\def\mdiscretionary#1#2#3{%
{}$\discretionary{\hbox{$#1$}}{\hbox{$#2$}}{\hbox{$#3$}}${}}
\begin{document}


aaa\discretionary{X}{Y}{Z}aaa

\bigskip

\parbox{1cm}{\raggedright aaa\discretionary{X}{Y}{Z}aaa}

\bigskip


$aaa\mdiscretionary{X}{Y}{Z}aaa$

\bigskip

\parbox{1cm}{\raggedright $aaa\mdiscretionary{X}{Y}{Z}aaa$}



\end{document}

用文本 Z 显示完整的文本,用文本 X 和 Y 显示断开的文本,然后用数学公式显示相同的内容。

在此处输入图片描述

在 tex 源代码中实现限制的代码tex.web记录为

@三个自由列表的构造有点像水平盒子。名为 的子程序build_discretionary负责处理转换。

(这挺好玩的。)

不幸的是,这并没有提供太多关于为什么存在这种限制的见解。

相关内容