Извиняюсь повторно. Мне показалось, что пример говорит сам за себя.
Первое упоминание \i - включает курсив, следующее - выключает. Первое упоминание \b - включает жирный, второе - выключает. Цвет задаётся ескейп-последовательностью \color=(#RGB), \color - возвращает цвет к предыдущему.
Это не теги, а последовательности, если угодно - управляющие слова. Они даже завершаться ("ходить парами") никоим образом не обязаны (хотя это уже совсем несущественные мелочи).
Строго говоря, этих последовательностей больше (и вообще всё немного сложнее и насыщеннее подробностями), просто в
алгоритм дальнейшее перечисление деталей ничего существенного уже не вносит, ИМХО.
Я ж не прошу сделать за меня конкретную работу (которая, к тому же, уже сделана и сдана),

а просто предлагаю повыпендриваться/посоревноваться своей изобретательностью. Задача показалась достаточно забавным поводом.
Здесь, ИМХО, есть над чем подумать (особенно, учитывая
одновременные требования по скорости работы и качеству результата).

Если это не так, разубедите меня.