在定理列表中使用对齐

在定理列表中使用对齐

我试图在等号处对齐公理列表,但是我无法使对齐跨我的 \begin{ax} \end{ax} 标签进行工作。

\newtheorem{ax}{Axiom}

\begin{align}
\begin{ax}[inf assoc] $c_0 \sqcap (c_1 \sqcap c_2) &= (c_0 \sqcap c_1) \sqcap c_2$ \end{ax}
\begin{ax}[inf comm] $c_0 \sqcap c_1 &= c_1 \sqcap c_0$ \end{ax}
\begin{ax}[inf idemp] $c \sqcap c &= c$ \end{ax}
\begin{ax}[inf unit] $c \sqcap \top &= c$ \end{ax}
\end{align}

我怎样才能实现这个目标?

答案1

有内容的解决方案tabular

\documentclass{article}
\usepackage{array}

\newtheorem{ax}{Axiom}

\begin{document}

\begin{ax}[inf assoc]\hfill
\begin{tabular}{>{$}r<{$}@{${ }={ }$}>{$}p{5cm}<{$}}
  c_0 \sqcap (c_1 \sqcap c_2) & (c_0 \sqcap c_1) \sqcap c_2
\end{tabular}
\refstepcounter{equation}\hfil\normalfont(\theequation)
\end{ax}
\begin{ax}[inf comm]\hfill
\begin{tabular}{>{$}r<{$}@{${ }={ }$}>{$}p{5cm}<{$}}
  c_0 \sqcap c_1 & c_1 \sqcap c_0
\end{tabular}
\refstepcounter{equation}\hfil\normalfont(\theequation)
\end{ax}
\begin{ax}[inf idemp]\hfill
\begin{tabular}{>{$}r<{$}@{${ }={ }$}>{$}p{5cm}<{$}}
  c \sqcap c & c
\end{tabular}
\refstepcounter{equation}\hfil\normalfont(\theequation)
\end{ax}
\begin{ax}[inf unit]\hfill
\begin{tabular}{>{$}r<{$}@{${ }={ }$}>{$}p{5cm}<{$}}
  c \sqcap \top & c
\end{tabular}
\refstepcounter{equation}\hfil\normalfont(\theequation)
\end{ax}

\end{document} 

输出

在此处输入图片描述

答案2

您还没有告诉我们您使用哪个包(如果有)来定义环境ax;在下面的示例中,我假设它是该ntheorem包。

如果公理环境都由标题(可能还有简短的宣传)和显示的方程组成,则可以加载包mathtools(包的超集amsmath)并使用其\shortintertext宏来包含公理声明的文本部分。(要微调公理标题行上方和下方的间距,您需要告诉我们哪个用来声明ax环境的包。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
\usepackage[amsmath]{ntheorem} % or amsthm
\newtheorem{ax}{Axiom}
\begin{document}
\begin{align}
\shortintertext{%
\begin{ax}[inf assoc] text \end{ax}}
c_0 \sqcap (c_1 \sqcap c_2) &= (c_0 \sqcap c_1) \sqcap c_2\\
\shortintertext{%
\begin{ax}[inf comm] more text\end{ax}}
c_0 \sqcap c_1 &= c_1 \sqcap c_0\\ 
\shortintertext{%
\begin{ax}[inf idemp] still more text\end{ax}}
c \sqcap c &= c \\
\shortintertext{%
\begin{ax}[inf unit] further text\end{ax}}
c \sqcap \top &= c
\end{align}
\end{document}

答案3

它们不起作用。你必须做一些特别的事情。我在下面做了:手动移动计数器ax并放置公理 X(标题)作为align-like 结构的一部分。使用full length alignment,您可以将内容拉伸到整个线宽:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\newtheorem{ax}{Axiom}
\makeatletter
\let\ltxlabel\ltx@label
\makeatother
\begin{document}

\begin{ax}[abc]
Some axiom.
\end{ax}
\[ a b c d e f g = a b c d e f g \]

\begin{flalign}
  &\refstepcounter{ax}\textbf{Axiom~\theax~(inf assoc)}\ltxlabel{abc} & c_0 \sqcap (c_1 \sqcap c_2) &= (c_0 \sqcap c_1) \sqcap c_2 & \\
  &\refstepcounter{ax}\textbf{Axiom~\theax~(inf comm)} & c_0 \sqcap c_1 &= c_1 \sqcap c_0 & \\
  &\refstepcounter{ax}\textbf{Axiom~\theax~(inf idemp)} & c \sqcap c &= c && \\
  &\refstepcounter{ax}\textbf{Axiom~\theax~(inf unit)} & c \sqcap \top &= c &
\end{flalign}

See Axiom~\ref{abc}.
\end{document}

请注意,公理方程的水平对齐与常规方程的水平对齐不一致。但这是可以预料到的,如果公理的描述较长,可能会看起来很奇怪。

当然,不建议像标记公理一样标记方程式。因此我建议改用flalign*。要引用公理,您需要使用\ltxlabel,因为常规\labelamsmath类似align的环境只会捕获标签(方程式编号)。

相关内容