Ist es möglich, amsmath
mich warnen zu lassen, wenn die Gleichung zu lang ist und die Zahl in die nächste Zeile verschiebt?
Ich gehe davon aus, dass es entweder Equation (1) too long
auf der Konsole gedruckt wird oder dass der (1)
Teil rot wird.
\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}
Antwort1
Ich möchte nicht sagen, dass es unmöglich ist, aber es ist auf jeden Fall ein schwieriges Problem, weil amsmath
es darauf angewiesen ist, \eqno
dass das Primitiv diese Arbeit für die equation
Umgebung erledigt.
\hsize=8cm
$$A+B+C+D+R+F+G+H+I+J+L+M+N+O+P\eqno(1)$$
\bye
Die einzige Möglichkeit, die ich sehe, besteht darin, das Grundelement zu überschreiben \eqno
und die Strafen zu messen, um zu sehen, ob die Zahl in die nächste Zeile übernommen wird.
Für die align
Familie der Umgebungen ist es etwas einfacher, da die Tag-Verschiebung durch Makros erfolgt, in die Sie einfach Ihren benutzerdefinierten Fehler oder Ihre Warnung einbinden.
\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}
Eine andere Möglichkeit wäre, die Gleichung zweimal zu setzen, aber einmal mit der Breite Null (mit \vphantom
), so dass die Zahl nicht in die zweite Zeile passt. Vergleichen Sie dann die Höhe der regulär gesetzten Gleichung mit der mit der Breite Null. Wenn die Höhe der regulär gesetzten Gleichung größer ist als die der anderen, gab es einen Zeilenumbruch.
\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}