我正在尝试编写一些方程式,并使用列表环境对每个方程式进行注释。
我想从一个方程式开始,然后用标签进行注释\item
,所以我尝试了这个
\documentclass[a4paper, 11pt]{article}
%For math commands
\usepackage{amsmath}
%For spacing options in lists (enumerate, itemize, description)
\usepackage{enumitem}
\begin{document}
\begin{itemize}[label = {--}, leftmargin = 25mm]
\[ \sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{2}\]
\item From any customer vertex, the total inflow should be of exactly 1 edge
\[ \sum_{j \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{3}\]
\item The outflow from any customer vertex should be exactly 1 edge
\end{itemize}
\end{document}
但这引发了一个错误,因为列表环境似乎必须
以\item
标签开头。
所以我尝试了这个,
\begin{document}
\[ \sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{2}\]
\begin{itemize}[label = {--}, leftmargin = 25mm]
\item From any customer vertex the total inflow should be of exactly 1 edge
\[ \sum_{j \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{3}\]
\item The outflow from any customer vertex should be exactly 1 edge
\end{itemize}
\end{document}
这样做的一个问题是,这似乎不是理想的做法。另一个问题是对齐。我希望这些注释稍微向右移动(使用 leftitem 选项)。这也会影响方程的对齐,
我希望将所有方程式居中对齐,并将注释稍微放在右边。
请为此提出解决方案。
编辑
这个问题不是重复的这个问题因为我希望有与方程式相关联的方程式编号(标签),但这在那里建议的内联数学模式中是不可能的。
答案1
\documentclass[a4paper, 11pt]{article}
%For math commands
\usepackage{amsmath}
%For spacing options in lists (enumerate, itemize, description)
\usepackage{enumitem}
\begin{document}
zzzz
\begin{align}
\sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\}\\
\intertext{From any customer vertex, the total inflow should be of exactly 1 edge}
\sum_{j \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\}\\
\intertext{The outflow from any customer vertex should be exactly 1 edge}
\noalign{\vspace{-\baselineskip}}\nonumber% hmm amsmath could be better here
\end{align}
zzzz
\end{document}
答案2
链接的问题如果您想坚持该结构,确实有解决方案。您可以设置自己的列表及其属性(mylist
)。但问题仍然存在,第一个等式不在该列表中。当然,您可以创建一个新命令来缩短这个环境\begin...
内容。
\documentclass{article}
\usepackage{amsmath}
\usepackage{enumitem}
\newlist{mylist}{enumerate}{2}
\setlist[mylist,1]{leftmargin=25mm,label={--}}
\setlist[mylist,2]{leftmargin=-25mm,label={}}
\begin{document}
Some text.
\[ \sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{2}\]
\begin{mylist}
% \begin{mylist}
% \item \[ \sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{2}\]
% \end{mylist}
\item From any customer vertex the total inflow should be of exactly 1 edge
\begin{mylist}
\item \[ \sum_{j \in V} x_{ij} = 1 \quad \forall j \in V \backslash \{0\} \tag{3}\]
\end{mylist}
\item The outflow from any customer vertex should be exactly 1 edge
\end{mylist}
\end{document}
答案3
如果我理解正确的话,您需要一个itemize
环境,其中每个项目都由一个带标签的显示方程式和一个简短的描述组成。并且您希望项目符号/破折号与描述的第一行对齐。
这里有一种方法可以精确地做到这一点,即将方程和描述封装在一对parbox
es 中:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
You'll find a list of equations and corresponding descriptions below.
\begin{itemize}
% \itemsep=0pt %% <- don't add space between items
\abovedisplayshortskip=\abovedisplayskip %% <- always use long skips before equations
\belowdisplayshortskip=\belowdisplayskip %% <- always use long skips after equations
\item
\parbox[b]{\linewidth}{
\begin{equation}
\sum_{i \in V} x_{ij} = 1 \quad \forall j \in V \setminus \{0\}
\end{equation}
\parbox[t]{\linewidth}{
From any customer vertex, the total inflow should be of exactly 1 edge.
}}
\item
\parbox[b]{\linewidth}{
\begin{equation}
\sum_{j \in V} x_{ij} = 1 \quad \forall i \in V \setminus \{0\}
\end{equation}
\parbox[t]{\linewidth}{
The outflow from any customer vertex should be exactly 1 edge, with another sentence tacked on to ensure this item contains a line break.
}}
\end{itemize}
\end{document}
只有当您的某些描述跨越多行时,内部 parbox 才是真正必要的。(此外,我擅自用 替换了您的\backslash
并\setminus
量化了我代替杰在第二个等式中。)
由于某种原因,我无法写出简短的答案,因此这里有一些解释:
子弹的位置:
我使用\parbox
es 将项目的基线(以及相应的项目符号)与说明的顶行对齐。选项[b]
(for "bottom") 和[t]
(for "top") 控制这些框的垂直位置:它们将其内容的底线/顶线的基线与周围文本的基线对齐。还有一个[c]
(for "center") 选项,但您可能猜到了它的作用。一张图片可能更好地说明了这一点:
Word \parbox[t]{8mm}{word\\word} \parbox[b]{8mm}{word\\word} word.
间距:
垂直间距有点难以调整,目前是否正确可能取决于个人喜好。以下是一些问题:
您不能只将显示方程式放在顶部,
\item
因为会在其前面插入一个空段落(这实际上会插入一个\baselineskip
垂直空间)。然而,我们实际上不必处理这个问题,因为它可以通过将方程式包装在中来解决\parbox
(我们这样做了,尽管出于其他原因)。好极了!\abovedisplayskip
通常,每个显示方程的上方/下方都会插入长度为/的垂直空格\belowdisplayskip
,但如果前一行较短,则使用\abovedisplayshortskip
/\belowdisplayshortskip
代替。在这种情况下,将使用短距离,因为方程不知道前一段的长度,因为它位于不同的\item
(并且在其之外\parbox
)。我已将\abovedisplayshortskip
/设置\belowdisplayshortskip
为\abovedisplayskip
/相等\belowdisplayskip
(仅在此itemize
环境中),以便始终使用长距离。
(注意:我相信amsmath
环境(如align
和gather
)总是使用\abovedisplayskip
。我不知道为什么,如果有人能告诉我,我很想知道。)
- 环境
itemize
实际上还在每两个项目之间引入了一些空间,即除第一个方程之外的每个项目上方。我认为这可能很合适,因为它清楚地表明方程属于其下方的文本。如果取消注释该\itemsep=0pt
行(或添加选项itemsep=0pt
,因为您正在使用enumitem
),环境内的垂直间距将与普通段落中的间距相同(我相信)。