A Case for Study
Lenny, on our staff, was having difficulty converting a document coded for Scribe to our troff macro package, because of font changes. The problems he encountered are quite interesting, apart from the task he was trying to do.
The Scribe convention for putting text in a bold font is:
@f1(put this in bold)
This font change command can appear in-line and may begin on one line and end on a subsequent line. It can also appear more than once on a line. Here’s a sample file that shows several different occurrences:
$ cat test
I want to see @f1(what will happen) if we put the
font change commands @f1(on a set of lines). If I understand
things (correctly), the @f1(third) line causes problems. (No?).
Is this really the case, or is it (maybe) just something else?
Let's test having two on a line @f1(here) and @f1(there) as
well as one that begins on one line and ends @f1(somewhere
on another line). What if @f1(it is here) on the line?
Another @f1(one).The sample file shows the different contexts in which the font-change commands appear. The script must match “@f1(anything)” when it occurs on a single line or multiple times on the same line or when it extends across more than one line.
The easiest way to make a single match is:
s/@f1(\(.*\))/\\fB\1\\fR/g
The regular expression matches “@f1(.*)” and saves anything inside parentheses using \( and \). In the replacement section, the saved portion of the match is recalled as “\1”.
Putting this command in a sed script, we will run it on ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access