¿Es posible dejar que amsmath
me avise cuando la ecuación es demasiado larga y empuja el número a la siguiente línea?
Espero que se imprima Equation (1) too long
en la consola o que la (1)
pieza se ponga roja.
\documentclass[twocolumn]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
A+B+C+D+R+F+G+H+I+J+L+M+N+O+P
\end{equation}
\end{document}
Respuesta1
No quiero decir que sea imposible, pero definitivamente es un problema difícil, porque amsmath
depende de lo \eqno
primitivo para hacer este trabajo por el equation
medio ambiente.
\hsize=8cm
$$A+B+C+D+R+F+G+H+I+J+L+M+N+O+P\eqno(1)$$
\bye
Entonces, la única forma que veo es anular la \eqno
primitiva y medir las penalizaciones para ver si el número pasará a la siguiente línea.
Para la align
familia de entornos es un poco más fácil porque el cambio de etiquetas se maneja mediante macros, a las que simplemente se conecta el error o advertencia personalizado.
\documentclass[twocolumn]{article}
\usepackage{amsmath}
\makeatletter
\def\place@tag{%
\iftagsleft@
\kern-\tagshift@
\if1\shift@tag\row@\relax
\errmessage{Equation too wide}%
\rlap{\vbox{%
\normalbaselines
\boxz@
\vbox to\lineht@{}%
\raise@tag
}}%
\else
\rlap{\boxz@}%
\fi
\kern\displaywidth@
\else
\kern-\tagshift@
\if1\shift@tag\row@\relax
\errmessage{Equation too wide}%
\llap{\vtop{%
\raise@tag
\normalbaselines
\setbox\@ne\null
\dp\@ne\lineht@
\box\@ne
\boxz@
}}%
\else
\llap{\boxz@}%
\fi
\fi
}
\makeatother
\begin{document}
\begin{align}
A+B+C+D+R+F+G+H+I+J+L+M+N+O+P
\end{align}
\end{document}
Otra posibilidad sería componer la ecuación dos veces, pero una vez con ancho cero (usando \vphantom
), de modo que el número no pueda ir en la segunda línea. Luego compare la altura de la ecuación tipográfica regular con la de ancho cero. Si la altura del normal es mayor que la del otro, hubo un salto de línea.
\documentclass[twocolumn]{article}
\usepackage{amsmath}
\usepackage{environ}
\NewEnviron{warnequation}{
\setbox0=\vbox{\begin{equation}\BODY\end{equation}}%
\setbox1=\vbox{\begin{equation}\vphantom{\BODY}\end{equation}}%
\ifdim\ht0>\ht1
\errmessage{Equation too wide}%
\fi
\box0
}
\begin{document}
\begin{warnequation}
A+B+C+D+R+F+G+H+I+J+L+M+N+O+P
\end{warnequation}
\end{document}