在水平模式下,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
负责处理转换。(这挺好玩的。)
不幸的是,这并没有提供太多关于为什么存在这种限制的见解。