[Tex/LaTex] the best practice for typesetting set-builder notation with a large number of membership criteria

best practicesmath-modepositioningspacing

That is, I have something akin to the following right now:


We must have $(a^i,b^i,c^i) \in X^i(d) = \bigg\{(a,b,c)
    \in \mathbb R^A \times \mathbb R^B \times \mathbb R^C : $
        1.\ d_0 \cdot (a_0 - b_0) + d_1 \cdot (b_0 - c_0) \leq 0  \\
        2.\ \sum_j c_j b^j \leq d_j \\
        3.\ \forall k \geq 1,
            d_k \cdot \left(a_k - b^h_k - F_k(x_{k^*})\right) \leq 
            \sum_k (b_k-c_k) \cdot \min \left(d_k \cdot G^j_k, m_k \right)

Which produces this monstrosity:

Awful TeX Job

Any suggestions for slaying this beast would be much appreciated.


  • make it look clean,
  • and comport with TeX best practices,
  • in particular removing manual serialization
  • and manual, highly-contingent layout tweaks


  • There is limited horizontal space with which to work, which may end up requiring that the set be opened on a different line from that on which it is closed.
  • Obviously, I do not want to define membership criteria outside of the set braces and then reference them, unless I can be convinced that this is the most simple / elegant way to express the set.

Best Answer

If you replace some of the symbolism with words from natural language, I think you get a much clearer and cleaner result; the most natural choice for the list is an enumerate environment; here's one possibility:


We must have $(a^i,b^i,c^i) \in X^i(d)$, where $X^i(d)$ is the set of all triples $(a,b,c) \in \mathbb R^A \times \mathbb R^B \times \mathbb R^C $ such that
  \item $d_0 \cdot (a_0 - b_0) + d_1 \cdot (b_0 - c_0) \leq 0$,
  \item $\smash[b]{\sum_j c_j b^j} \leq d_j$, and
  \item $\forall k \geq 1, d_k \cdot \left(a_k - b^h_k - F_k(x_{k^*})\right) \leq
    \sum_k (b_k-c_k) \cdot \min\bigl(d_k \cdot G^j_k, m_k \bigr)$.


enter image description here