ConTeXt 中的不间断 \hspace

ConTeXt 中的不间断 \hspace

据我所知,ConTeXt 中唯一一个不可中断空格命令是波浪号 (~) 命令,但我希望能够更精确地控制不可中断空格的长度。在 LaTeX 中,我可以使用 \hspace* 来实现这一点,但 ConTeXt 仅提供该命令的非星号版本,这会产生可中断空格。

ConTeXt 是否提供了 \hspace 命令的非中断版本,或者在 ConTeXt 中是否有其他首选方法?我愿意暂时修改 ~ 空间的宽度,但我也不确定如何做到这一点。

答案1

您可以\kern按照 Mico 在评论中所建议的方式使用,但是,它的缺点是它不会拉伸或收缩。

为了获得不能被打破的水平空间,并且可以像单词间空间一样拉伸和收缩,你可以使用

\nobreak\hskip1em plus 1em minus .5em\nobreak 

但是,这也不符合 ConTeXt 的一流 Unicode 支持理念。与其手动指定空间,不如看看所有预定义的水平空间spac-chr.mkiv,ConTeXt 本身支持这些格式。它们最大的优点是可以正确导出为 XML 格式,并且可以从 PDF 复制粘贴。如果它们是可拆分的,那么应该可以像\nobreak上面一样将它们括起来。

以下是摘录自spac-chr.mkiv

\edef\nobreakspace            {\normalUchar"00A0} % space
\edef\softhyphen              {\normalUchar"00AD} % softhyohen
\edef\enquad                  {\normalUchar"2000} % quad/2
\edef\emquad                  {\normalUchar"2001} % quad

\let\ideographicspace         \enquad
\let\ideographichalffillspace \emquad

\edef\twoperemspace           {\normalUchar"2002} % quad/2
\edef\threeperemspace         {\normalUchar"2004} % quad/3
\edef\fourperemspace          {\normalUchar"2005} % quad/4
\edef\sixperemspace           {\normalUchar"2006} % quad/6
\edef\figurespace             {\normalUchar"2007} % width of zero
\edef\punctuationspace        {\normalUchar"2008} % width of period
\edef\breakablethinspace      {\normalUchar"2009} % quad/8
\edef\hairspace               {\normalUchar"200A} % quad/8
\edef\zerowidthspace          {\normalUchar"200B} % 0
\edef\zerowidthnonjoiner      {\normalUchar"200C} % 0
\edef\zerowidthjoiner         {\normalUchar"200D} % 0
\edef\narrownobreakspace      {\normalUchar"202F} % quad/8

\udef\zerowidthnobreakspace   {\penalty\plustenthousand\kern\zeropoint}
\udef\fiveperemspace          {\hskip\dimexpr\emwidth/5\relax}

相关内容