数学模式下允许在“,”处换行的环境

数学模式下允许在“,”处换行的环境

我发现问题和接受的答案,允许在内联数学模式下换行吗?非常有用,但我想用它创建一个环境(例如“allowbreaks”)。问题是我无法做到。让我解释一下这个想法:

\begin{allowbreaks}
Commas are modified in such a way that they allow breaks in
inline mathmode $(a,b,c)$ only within this environment.
\end{allowbreaks}

请问这可能吗?

编辑:我将环境重命名为allowbreaks,因为与命令命名冲突allowbreak

答案1

您可以局部修改逗号的行为,允许中断。诀窍是使其“数学活跃”:

\documentclass{article}
\newenvironment{allowbreaks}
  {\mathactivatecomma
   \mathcode`\,=\string"8000
   \ignorespaces}
  {\ignorespacesafterend}

\newcommand{\mathactivatecomma}{%
  \begingroup\lccode`~=`\,
  \lowercase{\endgroup\edef~}{\mathchar\the\mathcode`\,\penalty0 }}

\begin{document}
\parbox{1cm}{abc def
\begin{allowbreaks}
$a,b,c,d,0,1,2,3,4,5,6,7$
\end{allowbreaks}
haaa 
$a,b,c,d,0,1,2,3,4,5,6,7$}
\end{document}

您会发现第一个数学公式有问题,而第二个数学公式没有问题。

然而,我的这个答案在我看来,更好:用于\mathlist{a,b,c,d}可以用逗号分隔的数学变量列表。

答案2

\documentclass{article}
\newenvironment{allowbreaks}
  {\mathcode`\,="213B}
  {}

\begin{document}
\rightskip=11cm
foo $1,2,3,4,5,6,7,8,9$
foo bar baz

\begin{allowbreaks}
foo $1,2,3,4,5,6,7,8,9$
foo bar baz
\end{allowbreaks}

foo $1,2,3,4,5,6,7,8,9$
foo bar baz

\end{document}

在此处输入图片描述

相关内容