@Section @Title { Dealing with formfeed characters in programs } @Tag { formfeed } @Begin @PP The formfeed (Control-L) character is traditionally taken to be a programs. @RawIndex { programs } programs.formfeeds @SubIndex { formfeed characters in } formfeeds.programs @Index { formfeed characters in programs } request to start a new page. This is explicitly recognized by the formal definition of the C language and many others, which treat this character as white space from a language point of view, with the understanding that it will cause a page break when printed. @PP There are no @Code { prg2lout } options for dealing with formfeed characters. They will be converted into @Code "@NP" (new page) symbols, causing a new page or column to be begun in the printing. @PP Whether formfeed characters end their line or not is a problem. Consider this example, where @Code "^L" stands for one formfeed character: @ID @Code @Verbatim { abc def^Lghi jhk } How many lines does this example contain? Your text editor would probably say `three', but when you print it you will see four. It is not desirable to have printed programs (especially those with line numbers attached) disagreeing with text editors about line numbers. The solution adopted by @Code { prg2lout } to this problem is to treat the formfeed character as including a newline, but to assign the same line number to both parts of the original line (the parts before and after the formfeed). If the part after the formfeed is empty (that is, if the formfeed character is immediately followed by a newline or another formfeed), and if the formfeed is not inside any lexical unit, then the empty line after the formfeed will not be printed at all. @PP The most common case is that of a formfeed character, outside any lexical unit, on a line by itself. Let's see what this rule produces in the following example of this case: @ID @Code @Verbatim { abc def ^L ghi } There will be one blank line numbered 3 at the end of the first page, and a line numbered 4 and containing @Code ghi at the start of the next page. The blank line is a necessity, at least when lines are being numbered, because we want the last line in the example to be numbered 4 to agree with text editors, but we don't want the line numbers on our print to skip from 2 on the first page to 4 on the second, because that would make readers anxious about the apparently missing line 3. If you don't want that empty line, move the formfeed character to the end of the preceding line. @End @Section