TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to have a macro which produces N white spaces if called like this

\mulspc{3} % Produces exactly 3 spaces

    \whiledo {\value{ctra} < #1}%

But I have problems that this macro does not produce 0mm spacing in a table cell (just at the beginning of the cell!) if I call zero times \multspc{0}. There is always some indent, but where does this come from?

I need this macro to indent some algorithm in the table cell, its nasty but manualy formating gives me the best result in a longtable, because its multiple pages long...

Thanks for your help!

share|improve this question
up vote 13 down vote accepted

No need for using a loop:


share|improve this answer
...now that's clean! Nice! – Werner Aug 10 '11 at 19:26

The problem with the current macro is that it unwanted whitespace is added from due to indentation. Add some % add the line ends to get rid of these. However, the current definition also produces a warning after you use \mulspc more than once. That is because the counter definition \newcounter{ctra} is contained within the \newcommand{\mulspc}. Rather define the counter outside the macro definition. Another drawback is that the space offered by \mulspc{0} should be non-existent, which it is not, even if you add % to remove the unwanted spaces. For example, the code:

    \whiledo {\value{ctra} < #1}%

\fbox{\mulspc{0}}% Zero spaces

\fbox{}% Empty \fbox

\fbox{\mulspc{1}} % One space

\fbox{\mulspc{3}} % Produces exactly 3 spaces



Unwanted spacing in \mulspc

To get rid of this spacing, you could use a condition on the parameter passed to \mulspc:

    \whiledo {\value{ctra} < #1}%

providing \unskip if there is a parameter passed with value less than 1. This produces:

Unwanted spaces gone from \mulspc

Another alternative would be to use the easy interface of the multido package, and define (say)

\usepackage{multido}% A loop facility for Generic TeX

that you can use in a similar way, and is a little cleaner code-wise.

share|improve this answer
That is not because of indentation. Even if you start every line from the first column, a space is still added because of the newline. – Tsuyoshi Ito Aug 10 '11 at 20:43

eTeX is always available nowadays, thus you can simply use

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.