@@ -2406,8 +2406,7 @@ parseAligns = try $ do
2406 case safeRead ds of
2406 case safeRead ds of
2407 Just w -> return w
2407 Just w -> return w
2408 Nothing -> return 0.0
2408 Nothing -> return 0.0
2409− let alignSpec = try $ do
2409+ let alignSpec = do
2411 pref <- option [] alignPrefix
2410 pref <- option [] alignPrefix
2413 al <- alignChar
2412 al <- alignChar
@@ -2418,10 +2417,21 @@ parseAligns = try $ do
2419 suff <- option [] alignSuffix
2418 suff <- option [] alignSuffix
2420 return (al, width, (pref, suff))
2419 return (al, width, (pref, suff))
2420+ let starAlign = do -- *{2}{r} == rr, we just expand like a macro
2423+ ds <- trim . toksToString <$> braced
2426+ case safeRead ds of
2428+ getInput >>= setInput . (mconcat (replicate n spec) ++)
2429+ Nothing -> fail $ "Could not parse " ++ ds ++ " as number"
2423 maybeBar
2432 maybeBar
2433+ aligns' <- many $ try $ spaces >> optional starAlign >>
2424− aligns' <- many (alignSpec <* maybeBar)
2434+ (alignSpec <* maybeBar)