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