我试图在等号处对齐公理列表,但是我无法使对齐跨我的 \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 结构的一部分。使用f
ull l
ength align
ment,您可以将内容拉伸到整个线宽:
\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
,因为常规\label
的amsmath
类似align
的环境只会捕获标签(方程式编号)。