# How to define an “align” environment with typewriter font?

I tried to use the commands defined here: Can I change all math output to use monospaced text? to change the font in the math environment. However, the following code does not compile:


\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*}



It compiles correctly in normal math mode (without using "align" and line breaks), or without the commands to change the font. How can I modify the font used inside the align environment to typewriter? (Similar to: \newenvironment where all text is typewriter (like \texttt) , but in math mode)

I would like to write something like:


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



where the environment "ttalign" behaves likes "align", but with the typewriter font instead of the normal font.

• Welcome to TeX.SE. Have you looked into the mathastext package? – Mico Sep 5 '16 at 13:46
• I looked into it after reading your comment. However, I did not understand how to use it to define a new environment. I edited my post to better describe what I want. Could you please elaborate more on how to use mathastext to achieve the align+typewriter effect? Thanks. – rfguimaraes Sep 5 '16 at 16:25

You don't need to reset \tmp every time: when you use \mathtt once, the relative math group is allocated and will no longer change.

\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}


You can define a ttalign* environment, if you prefer:

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


Since I was already using xparse, I defined a new environment this way:

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


And then, combined with the original align environment:

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