LaTeX How can I size the center bar in my LaTeX code for sets with constraints?

  • Thread starter Thread starter gauss^2
  • Start date Start date
  • Tags Tags
    Latex Sizing
AI Thread Summary
The discussion revolves around creating a LaTeX command for expressing sets with constraints in a semantically meaningful way. The user has defined a command \SetWithConstraint that formats sets with constraints but faces an issue with the sizing of the vertical bar (|) that separates the set elements from the constraints. The current implementation sizes the bar based on the height of the constraint expression, leading to aesthetic inconsistencies when the left-hand side is taller. Suggestions are made to modify the command to use \middle| for better sizing, which would adjust the bar to match the maximum height of both sides. An alternative approach is also proposed to relate the bar more closely to the left-hand side, although it may not be as visually appealing. The conversation highlights the importance of visual consistency in mathematical typesetting using LaTeX.
gauss^2
Messages
50
Reaction score
0
When I write something in LaTeX, I always try to create shortcuts for things I use a lot, so my code looks has semantically meaningful constructions like \[\CountableUnion{U_n}{n}\] instead of complicated strings of symbols like \[\bigcup_{n=1}^{\infty}U_n\], for example. I have run into a difficulty in trying to create something to express sets with constraints such as the set B_N in the image below:

[PLAIN]http://img401.imageshack.us/img401/6616/screenshot1rg.png

The code I used for that B_N is

Code:
Let us define the countable collection of sets $\CountableCollection{B_N}$ by
\[
   \Defined
      {B_N}
      {\SetWithConstraint
         {
            \SetMember
               {
                  \FiniteSum{a_i x^{n-i}}{i}{0}{n}
               }
               {
                  \Polynomials{\Integers}{x}
               }
         }
         {
             \FiniteSum{\AbsoluteValue{a_i}}{i}{0}{n} \neq 0
             \quad\text{and}\quad n +
             \FiniteSum{\AbsoluteValue{a_i}}{i}{0}{n} = N
        }
     }
\]

where \Defined{a}{b} is translated to a := b and \SetWithContraint{The_set}{The_constraint} is translated to { The_set | The_constraint }. The command \SetWithConstraint is defined in my preamble as:

Code:
\newcommand{\SetWithConstraint}[2]{\left\{\,#1\ \left|\ #2\,\right.\right\}}

My main problem is sizing that center bar | between the set to draw elements from and the constraint the elements must satisfy. As I have it set up right now, its size is determined by the height of the expression in the constraint area (e.g., the expression on the rhs). However, this looks very bad on something like the set K' in the image below, where the expression on the lhs is taller:

[PLAIN]http://img199.imageshack.us/img199/445/screenshottc.png

The relevant code there is

Code:
Hence, we have now shown that $x$ is a limit point of $K$ if and only if
$x = 0$ or there is an integer $m > 0$ with $x = 1/m$. In other words,
\[
   \LimitPoints{K} =
   \Union
      {\Singleton{0}}
      {\SetWithConstraint{\frac{1}{m}}{\SetMember{m}{\PositiveIntegers}}}
\]

where \LimitPoints{K} displays K'. Does anyone know how to size this middle bar | in the \SetWithConstraint command I defined so that it will match the maximum of the height of the expression on the lhs and height of the expression on the rhs? Thanks!
 
Last edited by a moderator:
Physics news on Phys.org
Change:
Code:
\newcommand{\SetWithConstraint}[2]{\left\{\,#1\ \left|\ #2\,\right.\right\}}

To:
Code:
\newcommand{\SetWithConstraint}[2]{\left\{\,#1\ \middle|\ #2\,\right\}}
 
Thanks NeoDevin; that's exactly what I was looking for. I can't believe that's not included in The Not So Short Introduction to LaTeX2e.
 
Very nice NeoDevin!

also a less beautiful result might be, to relate the bar character with lhs by
Code:
\newcommand{\SetWithConstraint}[2]{\left\{\left.\,#1\ \right|\ #2\,\right\}}

Did not try but should work...
 
trambolin said:
Very nice NeoDevin!

also a less beautiful result might be, to relate the bar character with lhs by
Code:
\newcommand{\SetWithConstraint}[2]{\left\{\left.\,#1\ \right|\ #2\,\right\}}

Did not try but should work...

That would work to scale it with the lhs, but my understanding was that the OP wanted it to scale with whichever side what taller.
 

Similar threads

Replies
3
Views
2K
Replies
3
Views
2K
Replies
4
Views
3K
Replies
4
Views
4K
Replies
15
Views
25K
Replies
2
Views
2K
Replies
2
Views
3K
Back
Top