我已经看到了如何在列表环境中居中文本/数学。但是,那里接受的解决方案不允许我引用显示的方程式。那里给出的另一个解决方案是一个“粗略”的解决方案,要求我在每个显示的方程式中插入一个命令。
有没有办法修改上述问题的公认解决方案,以便可以标记并引用显示的方程式?(我的 MWE 与回答链接的问题)
答案1
如果你习惯使用宏如何在列表环境中将文本/数学置于中心位置?,那么你可以使用
\def\NLine#1{\par\hspace*{-\leftmargin}\parbox{\textwidth}{\begin{equation}#1\end{equation}}}
这会将参数插入编号的数学显示中,并允许以通常的方式引用。
\documentclass{article}
\usepackage{amsmath,bm}% http://ctan.org/pkg/{amsmath,bm}
\def\MLine#1{\par\hspace*{-\leftmargin}\parbox{\textwidth}{\[#1\]}}
\def\NLine#1{\par\hspace*{-\leftmargin}\parbox{\textwidth}{\begin{equation}#1\end{equation}}}
\begin{document}
\noindent\rule{\textwidth}{2pt}
\begin{itemize}
\item The quadratic formula
\MLine{x=\dfrac{-b\pm\sqrt{b^2-4ac}}{2a}}
\item The freshman's dream
\MLine{(a+b)^n=a^n+b^n}
\item The freshman's dream
\NLine{(a+b)^n=a^n+b^n\label{xyz}}
\end{itemize}
See~\eqref{xyz}.
\[(a+b)^n=a^n+b^n\]
\end{document}
也许更直观的定义可能是
\makeatletter
\def\MLine{\par\hspace*{-\leftmargin}\@ifstar\MLineNoNum\MLineNum}
\def\MLineNoNum#1{\parbox{\textwidth}{\[#1\]}}
\def\MLineNum#1{\parbox{\textwidth}{\begin{equation}#1\end{equation}}}
\makeatother
它允许您使用\MLine
编号方程式和\MLine*
未编号方程式(镜像其他编号/未编号环境/宏)。