# @(#)(c)_ExNet_1988--91 convawkprog 1.1@(#) 90/08/27 #
BEGIN			{
				FS=sprintf("%c", 12);
				blankline = "\\vspace{\\baselineskip}";
				topstretch= "\\vspace{0pt plus 1.8ex}";
				blankstretch = "\\vspace{0pt plus 0.7ex}";

				spaced = "false";		# Have not just read a blank line.

				insertbreak = "false";	# Do not need a break `encouragement'
										#	inserted before the next non-blank
										#	item.

				print "{\\PROGttsize\\parskip=0pt\\parindent=0pt";
				}

		{
		if(NF == 0) {					# Blank input line.
			if(spaced != "true") {
				spaced = "true";
				insertbreak = "true";
				}
			}
		else {							# Non-blank input line.
			for(i = 1; i <= NF; ++i) {
				if(i > 1) { # ^L in input...
										# Do not allow break just before
										# 	\hrulefill at ^L in input, even 
										# 	after a blank line in the text.
					if(insertbreak == "true") { insertbreak = "false"; }

										# Draw horizontal line.
					printf("\\mbox{}\\hrulefill\\mbox{}");
					printf("\\nopagebreak[4]");
					if($i != "") {
						printf("\\par");
						printf("\\mbox{}{\\obeycr\\verb\n%s\n}",$i);
						printf("\\nopagebreak[4]");
						printf("\\mbox{}\\par\n");
						}
					printf(topstretch);
					printf("\\par");
					printf(blankline);
					printf(topstretch);
										# Encourage break here as much as
										#	possible without actually forcing
										#	one.
					printf("\\pagebreak[3]");
					printf("\\par\n");
					spaced = "true";
					}
				else { # Normal "line" in $i...

					if(insertbreak == "true") {
						printf(blankline);
						printf(topstretch);
						printf("\\pagebreak[1]");
						printf("\\par\n");
						insertbreak = "false";
						}
					printf("\\mbox{}{\\obeycr\\verb\n%s\n}",$i);
					printf("\\nopagebreak[3]");
					printf("\\mbox{}\\par\n");
					}

				spaced = "false";
				}
			}
		}

END				{
				print "}";
				}
