为了给显示的方程分配正确的行号,我需要将每个显示的方程环绕
\begin{linenomath*}
\end{linenomath*}
我想定义一个新的环境,将这两行包裹起来
\begin{align*}
\end{align*}
等等。这是我的不成功尝试实现这一点:
\documentclass[12pt,letterpaper]{amsart}
\usepackage{amssymb,lineno}
\linenumbers
\newenvironment{myeqn}
{
\begin{linenomath*}
\begin{align}
\end{align}
\end{linenomath*}
}
\begin{document}
What I want
\begin{linenomath*}
\begin{align}
x^n + y^n &= z^n
\label{one}
\end{align}
\end{linenomath*}
What I got
\begin{myeqn}
x^n + y^n &= z^n
\label{two}
\end{myeqn}
\end{document}
实现这一目标的正确方法是什么?非常感谢!
答案1
这类工作;至少输出是相同的(尽管有争议)。
\documentclass[12pt,letterpaper]{amsart}
\usepackage{amssymb,lineno}
\linenumbers
\newenvironment{myeqn}
{\csname linenomath*\endcsname\align}
{\endalign\csname endlinenomath*\endcsname}
\begin{document}
What I want
\begin{linenomath*}
\begin{align}
x^n + y^n &= z^n
\label{one}
\end{align}
\end{linenomath*}
What I got
\begin{myeqn}
x^n + y^n &= z^n
\label{two}
\end{myeqn}
\end{document}
当您在其他环境中包装时align
,需要使用“内部形式”,而不是 with\begin
和\end
。
一个通用环境,其中所需的环境以参数形式给出。
\documentclass[12pt,letterpaper]{amsart}
\usepackage{amssymb,lineno}
\linenumbers
\NewDocumentEnvironment{linenodisplay}{mb}
{\begin{linenomath*}\begin{#1}#2\end{#1}\end{linenomath*}}
{}
\begin{document}
Here is \texttt{align}
\begin{linenodisplay}{align}
x^n + y^n &= z^n \\
x^n + y^n &= z^n
\end{linenodisplay}
and here is \texttt{align*}
\begin{linenodisplay}{align*}
x^n + y^n &= z^n \\
x^n + y^n &= z^n
\end{linenodisplay}
Also \texttt{equation}
\begin{linenodisplay}{equation}
a=b
\end{linenodisplay}
and \texttt{equation*}
\begin{linenodisplay}{equation*}
a=b
\end{linenodisplay}
\end{document}
\usepackage{xparse}
如果您的 LaTeX 版本早于 2020-10-01,则可能需要添加。