#!/usr/bin/perl -wn
use strict;
our ($author, $title, $VERSE, $DBLQ_OPEN, $DBLQ_CLOSE, $EMDASH, $verse_indent, $state);
use constant { LANG => 'ru', 
	HEAD => 0, BODY => 1};
BEGIN {
	$VERSE = 0;
	($DBLQ_OPEN, $DBLQ_CLOSE, $EMDASH) = (LANG eq 'ru') ? qw(<< >> "---) : qw(`` '' ---);
	$state = HEAD;
	$verse_indent = 0 if $VERSE;

	if (LANG eq 'ru')
	{
		print <<'EOF';
\documentclass[oneside,notitlepage,11pt]{book}
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage{hyperref}
% Non-default font selection
%\usepackage{cyrtimes}
%\usepackage{cyrnewcent} % good for poetry, slightly heavy cyr. m and ya
%\usepackage{cyrbookman} % best for poetry @11pt, but toc entries broken
\usepackage{cyrpalatino}
%\usepackage{teams} % sans-serif, latin-style k, no << >>
%
\usepackage{iliad}
\usepackage{behead}
%\usepackage{textcomp} % paragraph sign (\textsection)
\usepackage{indentfirst}
\usepackage[russian]{babel}
\usepackage{hyphenat}
\date{}
EOF
	}
	else {
		print <<'EOF';
\documentclass[oneside,notitlepage,10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
% non-std font selection
%\usepackage{times} % cool at 10 and 11pt
\usepackage{bookman} % cool at default 10pt, tailed Qs
%\usepackage{palatino} % similar, no tails
%\usepackage{avant} % never at 11pt!!
%\usepackage{newcent}
%\usepackage{chancery}
%\usepackage{charter}
%\usepackage{courier}
%\usepackage{helvet}
%\usepackage{mathpazo}
%\usepackage{mathpple}
%\usepackage{mathptm}
%\usepackage{mathptmx}
%\usepackage{pifont}
%\usepackage{texnansi}
%
\usepackage{iliad}
\usepackage{behead}
%\usepackage{textcomp} % paragraph sign (\textsection)
\usepackage{indentfirst}
\usepackage{hyphenat}
\date{}
EOF
	}
}

s/$//;
if (defined ($title)) {
	if (s/\s*\*\s*([^]+)\s*\*\s*/\\part{$1}/
		|| s/\s*([^]+)\s*/\\chapter{$1}/
	) {
		$state = HEAD;
	}
	else {
		if (HEAD == $state) {
			next if /^\s*$/;
			$state = BODY;
			s/^\s+// unless $VERSE; # don't start new paragraph later 
		}
	}
	s//\\textsection/g;
	s/^'/`/g;
	s/(\s)'(\S)/$1`$2/g;
	s/^"/$DBLQ_OPEN/go;
	s/([\s{])"(\S)/$1$DBLQ_OPEN$2/go;
	s/(\S)"(\s)/$1$DBLQ_CLOSE$2/go;
	s/"([}?;!.,:])/$DBLQ_CLOSE$1/go;
	s/"$/$DBLQ_CLOSE/go;
	s/([^\s-])-([^\s-])/$1\\hyp $2/g;
	unless ($VERSE) {
		s/^ /\n/; # new paragraph
	}
	else {
		if (s/^\s+$/\\medskip\n\n/) {
			$verse_indent = 0;
		}
		else {
			s/^(\s*)//;
			my $new_verse_indent = length $1;
			if ($verse_indent == 0) {
				$verse_indent = $new_verse_indent;
			}
			my $offset;
			if (($offset = $new_verse_indent - $verse_indent) > 0) {
				$_ = ('\enskip' x $offset) .'{}'. $_;
			}
		}
	}
	s/^--?([^-])/$EMDASH $1/go;
	s/([^-])--([^-])/$1 $EMDASH $2/go;
	s/([?;!.,])-/$1 $EMDASH /go;
	s/(\s)-(\s)/$1 $EMDASH $2/g;
	s{_?((?:[^_]_)+)}{${\do{(my $x = $1) =~ tr/_//d; "{\\sl $x}"}}}g;
	s{No?[_.](\d+)}{\\textnumero $1}g;
	s'%'\%'g;
}
else {
	s/(.*)\.([^]+)/\\author{$1}\n\\title{$2}/
		&& do {
			$author = $1; 
			$title = $2; 
			$_ .= <<'EOF';
\begin{document}
\maketitle
\thispagestyle{empty}
\tableofcontents
\hfuzz=1mm                                                                                                                                                   
\emergencystretch=3mm                                                                                                                                        
\tolerance=400                                                                                                                                               
EOF
		print <<'EOF' if $VERSE;
\obeylines
\advance\leftskip\parindent
\advance\leftskip\parindent
EOF
		};
}

print;
END {
	print <<'EOF';
\end{document}
EOF
}
