방정식 번호가 다음 줄로 밀릴 때 경고

방정식 번호가 다음 줄로 밀릴 때 경고

amsmath방정식이 너무 길어서 숫자가 다음 줄로 넘어갈 때 경고 하도록 할 수 있습니까 ?

콘솔에 인쇄되거나 Equation (1) too long해당 부분이 빨간색으로 변할 것으로 예상됩니다 (1).

\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}

답변1

나는 그것이 불가능하다고 말하고 싶지 않지만 환경 을 위해 이 작업을 수행하기 위해 원시적인 amsmath것에 의존하기 때문에 확실히 어려운 문제입니다 .\eqnoequation

\hsize=8cm
$$A+B+C+D+R+F+G+H+I+J+L+M+N+O+P\eqno(1)$$
\bye

여기에 이미지 설명을 입력하세요

그래서 내가 보는 유일한 방법은 프리미티브를 무시 \eqno하고 페널티를 측정하여 숫자가 다음 줄로 플러시되는지 확인하는 것입니다.


환경군 에서는 align태그 이동이 매크로에 의해 처리되기 때문에 조금 더 쉽습니다. 매크로에 사용자 정의 오류나 경고를 간단히 연결하면 됩니다.

\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}

또 다른 가능성은 방정식을 두 번 조판하는 것입니다. 단, 너비가 0인 경우( 를 사용하여 \vphantom) 한 번은 숫자가 두 번째 줄에 들어갈 수 없습니다. 그런 다음 일반 조판 방정식의 높이를 너비가 0인 방정식과 비교합니다. 일반 것의 높이가 다른 것보다 크면 줄 바꿈이 발생한 것입니다.

\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}

관련 정보