La definición del entorno da un error.

La definición del entorno da un error.
\documentclass{scrreprt}

\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\usepackage{graphicx}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}

% align in enumerate
\newenvironment{enumalign}[1][\textwidth]%
{\item \begin{minipage}[t]{#1} \vspace{-5.375ex} \begin{align*}}
{\end{align*} \end{minipage}}

\renewcommand*\thechapter{\arabic{chapter}}

\usepackage{color}

\newcommand*\defin[1]{\textcolor{red}{#1}}

\begin{document}

\begin{enumerate}
\begin{enumalign}
test
\end{enumalign}
\end{enumerate}

\end{document}

LaTeX me dice \begin{align*} on input line 511 ended by \end{enumalign}.que parece tener algo que ver con cómo LaTeX interpreta mi código y reemplaza las macros, pero no pude hacerlo bien.

Respuesta1

Este es el código correcto:

\documentclass{scrreprt}

\usepackage{amsmath}

\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\usepackage{graphicx}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}

% align in enumerate
\makeatletter
\newenvironment{enumalign}[1][\linewidth]%
{\item\minipage[t]{#1}\vspace{-5.375ex}\start@align\@ne\st@rredtrue\m@ne}
{\endalign\endminipage}
\makeatother

\renewcommand*\thechapter{\arabic{chapter}}

\usepackage{color}

\newcommand*\defin[1]{\textcolor{red}{#1}}

\begin{document}

\begin{enumerate}
\begin{enumalign}
test
\end{enumalign}
\end{enumerate}

\end{document} 

Producción:

ingrese la descripción de la imagen aquí

En primer lugar, debe cargar amsmathsi desea utilizarlo align*en su documento.

Además, el espacio disponible para el minipagees \linewidthy no \textwidth, así que lo cambié.

Y ahora, intenta ver por qué tienes ese error. Los entornos anidados a menudo causan errores como el que tienes. Para evitar esto, debe utilizar la forma de comando del entorno (principio y final).

Por ejemplo, la forma de comando del entorno myenves

\myenv     % same as \begin{myenv}
\endmyenv  % same as \end{myenv}

En tu caso, lo he sustituido \begin{minipage}por \minipagey \end{minipage}por \endminipage.

Acerca de align*(siendo la forma estrellada), si echas un vistazo a la definición del align*entorno en amsmath.sty, verás

\newenvironment{align*}{%
  \start@align\@ne\st@rredtrue\m@ne
}{%
  \endalign
}

entonces, lo he sustituido \begin{align*}con \start@align\@ne\st@rredtrue\m@ney \end{align*}con \endalign.

Tenga en cuenta que, como señala egreg en su comentario, puede reemplazar \start@align\@ne\st@rredtrue\m@necon \@nameuse{align*}, que es un contenedor para \csname align*\endcsname.

información relacionada