如何定义带有打字机字体的“对齐”环境?

如何定义带有打字机字体的“对齐”环境?

我尝试使用这里定义的命令:我可以将所有数学输出更改为使用等宽文本吗?更改数学环境中的字体。但是,以下代码无法编译:


\everymath{\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
\everydisplay{\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}
    \begin{align*}
        T = \{
              \alpha : A \subseteq B,\\
               \beta : B \subseteq C\\
            \}
    \end{align*}

它在正常数学模式下(不使用“对齐”和换行符)或不使用更改字体的命令时可以正确编译。我如何才能将对齐环境中使用的字体修改为打字机?(类似于:\newenvironment 其中所有文本都是打字机(如 \texttt),但在数学模式下)

我想写类似的东西:


    \begin{ttalign*}
        T = \{
              \alpha : A \subseteq B,\\
               \beta : B \subseteq C\\
            \}
    \end{ttalign*}

环境“ttaalign”的行为类似于“align”,但使用打字机字体而不是普通字体。

答案1

无需\tmp每次都重新设置:当您使用\mathtt一次时,相对数学组就被分配了,并且不会再改变。

\documentclass{article}
\usepackage{amsmath}

\newenvironment{ttmath}
 {\everymath{\ttmathgroup}\everydisplay{\ttmathgroup}}
 {}

\AtBeginDocument{%
  $\mathtt{\xdef\ttmathgroup{\fam\the\fam\relax}}$%
}

\begin{document}

\begin{align*}
T = \{
      &\alpha : A \subseteq B,\\
      &\beta : B \subseteq C\\
    \}
\end{align*}

\begin{ttmath}
\begin{align*}
T = \{
      &\alpha : A \subseteq B,\\
      &\beta : B \subseteq C\\
    \}
\end{align*}
\end{ttmath}

\end{document}

在此处输入图片描述

ttalign*如果愿意,您可以定义一个环境:

\newenvironment{ttalign*}
 {\everymath{\ttmathgroup}\everydisplay{\ttmathgroup}\csname align*\endcsname}
 {\endalign}

答案2

由于我已经在使用 xparse,因此我通过以下方式定义了一个新环境:

\NewDocumentEnvironment{ttmath}{}{\begingroup\everymath{\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}}{\endgroup}

然后,结合原有的对齐环境:

\begin{ttmath}
  \begin{align*}
        T = \{
            &\alpha : A \subseteq B,\\
            &\beta : B \subseteq C\\
        \}
    \end{align*}
\end{ttmath}

相关内容