我想实现以下内容,经常使用公理列表。
(axiom name) a = 2 b + c
(membership) c \in Hom (E, F)
(Longish-name identity) c (a) - 2d (b) + d (b) = 0
其中数学表达式为中心,可能带有方程编号。
这可能执行不力
- 设置整个文档的左公式编号
- 滥用标签排版公理名称
- 使用环境并任意放置对齐选项卡(在此示例中,在、和
align
处对齐方程式会看起来很尴尬)=
\in
=
\documentclass[leqno]{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
a = 2 & b + c \tag*{(axiom name)} \\
c \in Hom & (E, F) \tag*{(membership)} \\
c (a) - 2d (b) & + d (b) = 0 \tag*{(Longish-name identity)}
\end{align}
\end{document}
以上各点都有缺点:
- 等式边的编号在整个文档中是固定的
- 方程式不能有方程编号
- 这些方程式并不是完全居中的。
所以应该有更好的方法。
我可以将文本的宽度设置为 0,并插入手动空间以推动等式,使其不覆盖 s (description)
。
答案1
使用 \rlap
和gather*
环境。注意坎不应该是斜体;它实际上应该被输入为数学运算符:
\documentclass[leqno]{article}
\usepackage[showframe]{geometry}
\usepackage{amsmath}
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\begin{gather*}
a = 2 b + c \tag*{\rlap{(axiom name)}} \\
c \in \Hom (E, F) \tag*{\rlap{(membership)}} \\
c (a) - 2d (b) + d (b) = 0 \tag*{\rlap{(Longish-name identity)}}
\end{gather*}
\end{document}
如果您不想设置该选项,您可以使用环境和包leqno
获得相同的结果。此包定义了一个 命令,其宽度参数被替换为标签;所有共享相同标签的命令都具有最宽内容的宽度。所以我定义了一个命令,其内容处于数学模式:\flalign(*)
eqparbox
\eqmakebox[some tag}{...}
\eqmakebox
\eqmathbox
\documentclass{article}%[leqno]
\usepackage[showframe]{geometry}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][Form]{\eqmakebox[#1]{$\displaystyle#2$}}
\usepackage{amsmath}
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\begin{flalign}
& \rlap{(axiom name)} &\eqmathbox{a = 2 b + c }& & & \\
& \rlap{(membership)} &\eqmathbox{c \in \Hom (E, F)} & \\
& \rlap{(Longish-name identity)} &\eqmathbox{c (a) - 2d (b) + d (b) = 0}&
\end{flalign}
\end{document}
答案2
你是指这样的吗?
\documentclass{article}
\usepackage{amsmath}
\usepackage{IEEEtrantools}
\usepackage{lipsum} % for context
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\lipsum*[3]
\begin{IEEEeqnarray}{- s ' c * c * c}
(axiom name) && a = 2 b + c \\
(membership) && c \in \Hom (E, F) \\
(Longish-name identity) && c (a) - 2d (b) + d (b) = 0
\end{IEEEeqnarray}
\lipsum[4]
\end{document}
的描述IEEEeqnarray
可通过 获得texdoc IEEEtran
。如果您不需要数字,则使用IEEEeqnarray*
,语法相同。