for typesetting tables with design of experiments, I have to typeset strings like "+ - + +", - - - +", etc. in a column of a table to represent the so called pattern of the experimental run (sometimes they also contain "a", "A" and "0" (zero)).

However, the width of the "+" and "-" sign are very different in the used font (standard font in KOMA script class scrreprt) and a sequence of 2 or 3 dashes creates one long or very long dash....

So I'm searching for a way to easily typeset e. g. "+ - - - + -" with a little spacing between the characters and (if possible) that several different strings composed of the same number of characters ("+" or "-", "a", "A" and "0") would be aligned with each other, when they are in the same column of a table.

I hope I could make clear what I need, some examples how it shall NOT look are found here:  

![bad example](https://i.stack.imgur.com/YZkQH.png)
in line 9 it should be "+ - -" and in 10 "- - +", line 5 should be "- - -"

It looks a little better, if I insert `\,` between the characters, but as the widths are different, it is still not aligned:  

![enter image description here](https://i.stack.imgur.com/dC5x3.png)

Sure, I could split it up in centered columns like `- & + & - & - & ...`, but the tables are already complicated enough and I do not want to add 3 to 7 columns...

Does anybody have an idea how to solve that?
Maybe a command that parses the string like --+--++ and typesets it with a "constant spacing"?

------- edit:

added math mode for "+" and "-", looks better now, but not perfect:
![math mode for plus and minus](https://i.stack.imgur.com/D3hFt.png)

```
    \documentclass[11pt, a4paper%,  halfparskip
    ]{scrreprt}

    \usepackage{booktabs}

    \begin{document}

\begin{tabular}{cccccccc}
\midrule
         1 &        $+$$+$$-$           \\
         2 &        $+$$-$$+$           \\
         3 &        $-$$+$$+$           \\
         4 &        000                 \\
         5 &        $-$$-$$-$           \\
         6 &        000                 \\
\midrule
         7 &        $-$$+$$-$           \\
         8 &        000                 \\
         9 &        $+$$-$$-$           \\
        10 &        $-$$-$$+$           \\
        11 &        $+$$+$$+$           \\
        12 &        000                 \\ 
\midrule
        13 &        000                 \\
        14 &        00a                 \\
        15 &        00A                 \\
        16 &        0A0                 \\
        17 &        A00                 \\
        18 &        0a0                 \\
        19 &        a00                 \\
        20 &        000                 \\
\toprule
\end{tabular}  

\end{document}

```

---

example and further question about side-effects:

I used the solution of Michel and it looks good, but there is one thing I'm not sure about:
Is it possible that it changes the free space between columns?
I have the impression that the first 3 columns are closer together than the rest...
How can I fix that?

![solution with side effects?!](https://i.stack.imgur.com/25OVA.png)
['https://tex.stackexchange.com/questions/14576', 'https://tex.stackexchange.com', 'https://tex.stackexchange.com/users/4009/']
```
\documentclass{minimal}
\begin{document}
\setlength{\parindent}{0pt}
\newlength{\stretchlen}\setlength{\stretchlen}{1em}
\def\splitterm{\_}
\newcommand{\stretchit}[1]{\leavevmode\realstretch#1\_}
\def\realstretch#1{%
    \def\temp{#1}%
    \ifx\temp\splitterm
    \else
    \hbox to \stretchlen{\hss#1\hss}\expandafter\realstretch
\fi}
\stretchit{abcd}\par
\stretchit{----}\par
\stretchit{++++}\par
\stretchit{-+-+}\par
\stretchit{0aA+}\par
\end{document}

```

`\stretchit` appends an underscore to its argument and passes it to `\realstretch`, which recursively 'eats' one letter at a time, and typesets it centered in an `\hbox` stretched to `\stretchlen`. All letters are thus equally wide, and since they are centered, aligned nicely.

--- **solution for the question:** 

```
\documentclass[10pt, a4paper    ]{scrreprt}

\usepackage{booktabs}
\usepackage{collcell}
\usepackage{array}
\begin{document}

\setlength{\parindent}{0pt}
\newlength{\stretchlen}\setlength{\stretchlen}{1em}
\def\splitterm{\_}
\newcommand{\stretchit}[1]{\leavevmode\realstretch#1\_}
\def\realstretch#1{%
    \def\temp{#1}%
    \ifx\temp\splitterm
    \else
    \hbox to \stretchlen{\hss#1\hss}\expandafter\realstretch
\fi}

without the stretchit command

\begin{tabular}{cccccccc}
\midrule
         1 &        ++-             \\
         2 &        +-+             \\
         3 &        -++             \\
         4 &        000                  \\
         5 &        ---                 \\
         6 &       000               \\
\midrule
         7 &        -+-                 \\
         8 &       000                \\
         9 &        +--                 \\
        10 &        --+             \\
        11 &        +++             \\
        12 &        000             \\ 
\midrule
        13 &        000                  \\
        14 &        00a                   \\
        15 &        00A                   \\
        16 &        0A0                 \\
        17 &        A00                   \\
        18 &        0a0                  \\
        19 &        a00                  \\
        20 &        000                  \\
\toprule
\end{tabular}  

\medskip

\emph{with} the stretchit command

\begin{tabular}{c>{\collectcell\stretchit}c<{\endcollectcell}ccccccc}
\midrule
         1 &        ++-             \\
         2 &        +-+             \\
         3 &        -++             \\
         4 &        000                  \\
         5 &        ---                 \\
         6 &       000               \\
\midrule
         7 &        -+-                 \\
         8 &       000                \\
         9 &        +--                 \\
        10 &        --+             \\
        11 &        +++             \\
        12 &        000             \\ 
\midrule
        13 &        000                  \\
        14 &        00a                   \\
        15 &        00A                   \\
        16 &        0A0                 \\
        17 &        A00                   \\
        18 &        0a0                  \\
        19 &        a00                  \\
        20 &        000                  \\
\toprule
\end{tabular}  

\end{document}

```
An easy way to achieve this would be to typeset the plusses and minuses in a monospace font with `\verb|+-+-|` 

There are however [issues](https://tex.stackexchange.com/q/203/215) with verbatim text which you might run into...
Another solution might be to use `\texttt` and macros for your plusses etc. Here's an example:

```
\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand\p{+}
\newcommand\m{-{}}
\begin{document}
\texttt{++---++}

\texttt{\p\p\m\m\m\p\p}

\texttt{++\m\m aA0}
\end{document}

```

You need to use a macro like this for the minus sign because otherwise they get turned into en-dashes if you use the `fontenc` package. This should also mono-space letters easily.