使用宏为对齐的数学文本着色

使用宏为对齐的数学文本着色

我希望有可以在 align* 环境中使用的彩色文本生成宏。但是,这两者似乎有冲突。

这是描述该问题的 MWE。

\documentclass{article}

\usepackage{amsmath}
\usepackage[usenames,dvipsnames]{xcolor}


\newcommand{\src}[1]{\ensuremath{\color{RoyalBlue}{#1}}}
\newcommand{\letin}[3]{let~#1=#2~in~#3}
\newcommand{\letinsrc}[3]{\src{let}~#1=#2~\src{in}~#3}

\begin{document}
This is on a single line and it works
\begin{align*}
    \src{\letin{x}{3}{x}}
\end{align*}

Here i want to break the text over multiple lines and it does not work
% \begin{align*}
%   &
%   \src{
%       \letin{x}{3}{
%       \\&
%       x}
%   }
% \end{align*}

This is how it should look like, but the issue is the extra usage of ``src'' inside the macro.
\begin{align*}
    &
    \letinsrc{x}{\src{3}}{
    \\
    &\ 
    \src{x}
    }
\end{align*}

\end{document}

直观地讲,我只想要一个宏来设置颜色,无论在哪里,以及一个用于构造的宏letin。问题是,解决方法不是模块化的,它是……好吧,是一种解决方法,而不是解决方案。如果我有更多颜色,我必须定义多个版本,letinsrc并且必须将每个参数包装在它们自己的 \src 中。这会导致大量嵌套的 \src,而我只希望在 align* 的开头有一个 \src。

另外,在letinsrc命令中,我无法将参数包装在 \src 中,因为会有换行符和对齐符号,并且无法编译。

谢谢!

相关内容