![La definición del entorno da un error.](https://rvso.com/image/281483/La%20definici%C3%B3n%20del%20entorno%20da%20un%20error..png)
\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:
En primer lugar, debe cargar amsmath
si desea utilizarlo align*
en su documento.
Además, el espacio disponible para el minipage
es \linewidth
y 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 myenv
es
\myenv % same as \begin{myenv}
\endmyenv % same as \end{myenv}
En tu caso, lo he sustituido \begin{minipage}
por \minipage
y \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@ne
y \end{align*}
con \endalign
.
Tenga en cuenta que, como señala egreg en su comentario, puede reemplazar \start@align\@ne\st@rredtrue\m@ne
con \@nameuse{align*}
, que es un contenedor para \csname align*\endcsname
.