1995 ACM Mid-Central Programming Contest
Problem #7 - Mark-up

Source File: markup.{c|cpp|pas}
Input File: markup.in
Output File: markup.out

Mark-up languages are computer languages that assist in the formatting of text files. Special keywords are used to mark the text to allow control of fonts, page styles, paragraph styles, etc. TeX, troff, and HTML are examples of mark-up languages.

Spell checking can be difficult to adapt to these special texts. In general, special processors or spell checkers must be created in order to accommodate mark-up languages. A special processor would recognize the mark-up language and strip it from the text so that the ``plain'' text could then be processed by a spell checker. For this problem, you are to write such a processor for a small mark-up language so that the output of your program will be the plain text without the mark-ups.

The mark-up language to consider is one which allows the modification of fonts within the text. Each markup command will be preceded by a \ character. If the letter following the \ character is not a recognized command from the table below then the character following the \ is printed as part of the plain text. For instance, the mark-up \\ can be used to print a single \.

 
\b
  toggle bold font on/off (default state is off)
 
\i
  toggle italics font on/off (default state is off)
 
\s
  set font size; the s is immediately followed by an optional number; if the number is missing then the command will restore the previous size
 
\*
  toggle processing of mark-ups on/off; if processing is toggle off then mark-ups are considered to be literal text (default state is on)
The number following the \s command can have a decimal point so 12, 9.5, 11., and .5 should all be recognized as valid numbers.

The input file will be plain text containing mark-ups from the language above. At the start, processing of mark-ups should be on. The file should be processed until the end-of-file is encountered.

A sample input file is shown here:

\s18.\bMARKUP sample\b\s

\*For bold statements use the \b command.\*

If you wish to \iemphasize\i something use the \\i command.

For titles use \s14BIG\s font sizes, 14 points usually works well.

Remember that all of the commands toggle except for the \\s command.
The following output file should be produced from the above sample input:

MARKUP sample

For bold statements use the \b command.

If you wish to emphasize something use the \i command.

For titles use BIG font sizes, 14 points usually works well.

Remember that all of the commands toggle except for the \s command.