7

I have a problem regarding the space added by \right..

I have read this answer regarding the topic, where @egreg proposes a macro that deletes this space. However, when using this in my own documents the space is still added. I have written a MWE where I set the value of \nulldelimiterspace to 10pt for clarity. The MWE is:

\documentclass{minimal}

\usepackage{amsmath}
\newcommand{\zerodel}{.\kern-\nulldelimiterspace}

\begin{document}

\setlength{\nulldelimiterspace}{10pt}

I$\left(\delta t;\delta t;\right.\delta t;\delta t$I

I$\left(\delta t;\delta t;\right\zerodel\delta t;\delta t$I

I$\left(\delta t;\delta t;\delta t;\delta t\right.$I

I$(\delta t;\delta t;\delta t;\delta t$I

\end{document}

Which results in:

Result

You can clearly see the large 10pt space after the second semicolon (line 1), a smaller space (line 2) where the \zerodel was used, a space after the math (line 3) where \right. was moved after the math block and no space added at all where neither \left nor \right where used (line 4).

The look of line 4 is what I want, but I want to have the \left/\right autospacing.

Why is \zerodel not working and how can I fix this?

Thanks!

2
  • Put the semicolon after \right\zerodel, or it won't act as punctuation. However, the "inner" atom built by \left and \right still will give an additional space. Use instead \mleft and \mright from the mleftright package.
    – egreg
    Jan 22, 2013 at 16:51
  • Adding mleftright fixed the problem. If you add this as an answer I'll accept it. Is there any reason for using \zerodel when using mleftright at the same time?
    – elemakil
    Jan 22, 2013 at 16:59

2 Answers 2

7

Let's look at some variations, keeping out \right. until the last. We'll use the mleftright package by H. Oberdiek.

\documentclass{article}

\usepackage{amsmath,mleftright}
\newcommand{\zerodel}{.\kern-\nulldelimiterspace}

\begin{document}

\setlength{\nulldelimiterspace}{10pt} % just for experiment

I$\left(\delta t;\delta t\right\zerodel;\delta t;\delta t$I

I$\mleft(\delta t;\delta t\mright\zerodel;\delta t;\delta t$I

I$(\delta t;\delta t;\delta t;\delta t$I

I$\mleft(\delta t;\delta t\mright.;\delta t;\delta t$I

\end{document}

enter image description here

First line.

A space is inserted between \right\zerodel and ; because a subformula between \left and \right makes for an "inner" atom.

Second and third line

The result is exactly the same. Notice that the semicolon has to go after \mright\zerodel, because otherwise its "punctuation atom" character would be hidden in the subformula.

Fourth line

With \mleft. the \nulldelimiterspace kern is inserted anyway. The pair \mleft\mright just removes the "inner" character to the subformula.

3
  • Thanks for clarifying the usage of \zerodel!
    – elemakil
    Jan 22, 2013 at 17:09
  • Is there any reason why one shouldn't set \nulldelimiterspace to zero?
    – elemakil
    Jan 22, 2013 at 19:58
  • @elemakil It's thought for balancing the other delimiter's width.
    – egreg
    Jan 22, 2013 at 22:10
2

neither latex nor amsmath is needed for this. it's basic tex behavior.

try this with tex, not latex:

I$\left(\delta t;\delta t;\right.\delta t;\delta t$I
\bye

here's the result:

output of example code

(i know this isn't an answer, but output can't be shown in a comment.)

in plain.tex, knuth adjusts the space after the nondirectional \big, \Big, etc., commands like this:

\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
\def\n@space{\nulldelimiterspace\z@ \m@th}

curiously, if the equivalent of \n@space is inserted after \right. the space is decreased by about half, but it doesn't disappear entirely. so an expedition into appendix g or tex itself seems to be required. (but not for me today.)

however, this is yet another good reason not to blindly use \left and \right with all delimiters.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .