列表环境中的方程式

列表环境中的方程式

我正在尝试编写一些方程式,并使用列表环境对每个方程式进行注释。

我想从一个方程式开始,然后用标签进行注释\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环境,其中每个项目都由一个带标签的显示方程式和一个简短的描述组成。并且您希望项目符号/破折号与描述的第一行对齐。

这里有一种方法可以精确地做到这一点,即将方程和描述封装在一对parboxes 中:

\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量化了代替在第二个等式中。)


由于某种原因,我无法写出简短的答案,因此这里有一些解释:


子弹的位置:

我使用\parboxes 将项目的基线(以及相应的项目符号)与说明的顶行对齐。选项[b](for "bottom") 和[t](for "top") 控制这些框的垂直位置:它们将其内容的底线/顶线的基线与周围文本的基线对齐。还有一个[c](for "center") 选项,但您可能猜到了它的作用。一张图片可能更好地说明了这一点:

Word \parbox[t]{8mm}{word\\word} \parbox[b]{8mm}{word\\word}  word.

在此处输入图片描述

间距:

垂直间距有点难以调整,目前是否正确可能取决于个人喜好。以下是一些问题:

  1. 您不能只将显示方程式放在顶部,\item因为会在其前面插入一个空段落(这实际上会插入一个\baselineskip垂直空间)。然而,我们实际上不必处理这个问题,因为它可以通过将方程式包装在中来解决\parbox(我们这样做了,尽管出于其他原因)。好极了!

  2. \abovedisplayskip通常,每个显示方程的上方/下方都会插入长度为/的垂直空格\belowdisplayskip,但如果前一行较短,则使用\abovedisplayshortskip/\belowdisplayshortskip代替。在这种情况下,将使用短距离,因为方程不知道前一段的长度,因为它位于不同的\item(并且在其之外\parbox)。我已将\abovedisplayshortskip/设置\belowdisplayshortskip\abovedisplayskip/相等\belowdisplayskip(仅在此itemize环境中),以便始终使用长距离。

(注意:我相信amsmath环境(如aligngather)总是使用\abovedisplayskip。我不知道为什么,如果有人能告诉我,我很想知道。)

  1. 环境itemize实际上还在每两个项目之间引入了一些空间,即除第一个方程之外的每个项目上方。我认为这可能很合适,因为它清楚地表明方程属于其下方的文本。如果取消注释该\itemsep=0pt行(或添加选项itemsep=0pt,因为您正在使用enumitem),环境内的垂直间距将与普通段落中的间距相同(我相信)。

相关内容