load "file"; function encode_tex(t) { t =~ s/\\/\\textbackslash{}/g; t =~ s/~/\\textasciitilde{}/g; t =~ s/\^/\\textasciicircum{}/g; t =~ s/(?]|--+)/\$$1\$/g; return t; } if (not declared parameters or not declared parameters.infile) { write("Need parameter 'infile' for input file!\n"); exit; } if (not declared parameters or not declared parameters.outfile) { write("Need parameter 'outfile' for output file!\n"); exit; } if (not declared parameters or not declared parameters.title) { write("Need parameter 'title' for document title!\n"); exit; } if (not declared parameters or not declared parameters.author) { write("Need parameter 'author' for document author!\n"); exit; } var input_file = parameters.infile; var output_file = parameters.outfile; var title = parameters.title; var author = parameters.author; var text; while (input_file =~ s/([^,]+)//) text ~= file_read($1) ~ "\n\n"; var latex = <> \documentclass[a4paper]{report} \begin{document} \title{${tex::title}} \author{${tex::author}} \maketitle \tableofcontents ; var blank_lines = 0; while (text =~ s/^(.*)\n//) { var line = $1; if (text =~ /^=+\s*\n/) { latex ~= "\\chapter{${tex::line}}\n"; text =~ s/^.*\n//; blank_lines = 0; } else if (text =~ /^-+\s*\n/) { latex ~= "\\section{${tex::line}}\n"; text =~ s/^.*\n//; blank_lines = 0; } else if (text =~ /^~+\s*\n/) { latex ~= "\\subsection{${tex::line}}\n"; text =~ s/^.*\n//; blank_lines = 0; } else if (text =~ /^\.+\s*\n/) { latex ~= "\\subsubsection{${tex::line}}\n"; text =~ s/^.*\n//; blank_lines = 0; } else if (line =~ /^\s/) { latex ~= "\\begin{verbatim}\n"; latex ~= "$line\n"; if (line =~ ,^\s*/\*\s+--\s+(\S+)\s+--\s+\*/\s*$,) { var prog = file_read($1); prog =~ s,^/\*.*?\*/\s*,\n,s; prog =~ s,\n,\n\t,g; prog =~ s,\s+$,\n,; latex ~= prog; } while (text =~ /^\n*[\t ]/) { text =~ s/^(.*\n)//; latex ~= $1; } latex ~= "\\end{verbatim}\n"; blank_lines = 0; } else { if ( line =~ /\S/ ) { if (blank_lines >= 2) latex ~= "\\vspace*{.3cm}\n"; blank_lines = 0; } else blank_lines++; latex ~= "${tex::line}\n"; } } latex ~= <> \end{document} ; latex =~ s/\t/ /g; file_write(output_file, latex);