让宏根据是否需要连字符来评估不同的内容

让宏根据是否需要连字符来评估不同的内容

给出这样的命令

\newcommand{\AB}{$\textsf{A} \subseteq \textsf{B/string}$}

是否有可能将字符串计算为类似

\newcommand{\ABhyp}{\textsf{A} is contained in \textsf{B/string}}

如果 TeX 决定使用连字符\AB或使用\AB?会出现溢出框

答案1

这绝不是理想的,但您可以将断点定义为\discretionary{<pre-break>}{<post-break>}{<no-break>}

在此处输入图片描述

\documentclass{article}

\usepackage{showframe}% Just for this example

\newcommand{\AB}{%
  \textsf{A}%
  \discretionary{\mbox{ is}}{\mbox{contained in }}{\mbox{${}\subseteq{}$}}%
  \textsf{B/string}%
}

\begin{document}

\AB

Some text to fill the line width with characters and then we have the \AB.

\end{document}

它之所以不理想,是因为它\mbox消除了使行适合水平宽度的任何典型的字间间距调整。因此,Aiscontained之间的间距in可能B/string与周围的字间间距略有不同。然而,这在很大程度上取决于它所用段落的上下文,在大多数情况下可能不可见。单词较长的句子(字间间距很少)可能会强调这一点。

相关内容