# -*- tcl -*-
# $Id: script,v 1.15 2000/11/04 13:25:02 tobotras Exp $

require Simple.tcl
require TEItools.tcl

Debug "Start of script"

require textutil.tcl
TEItoolsSetup "tex"
require TEItoolsTeX.tcl

specification translate {
    {element PRESENTATION} {
	prefix	[latexFileHeader]
	suffix	[latexFileFooter]
    }
    {element LEGEND} {
	prefix	{}
	cdataFilter	null
	sdataFilter	null
    }
    {element TITLE in PRESENTATION} {
	prefix	{\n\\newcommand\{\\jettitle\}\{}
	suffix	{\}
	    \\begin\{slide\}
	    \\begin\{center\}
	    \\Huge\\bf\\cyr \\jettitle

	    \\vfil
	    [defaultAuthor]
	}
    }
    {element AUTHOR in PRESENTATION} {
	prefix	[authorPrefix]
	suffix	[authorSuffix]
    }
    {element SHORTTITLE} {
	prefix	{\n\\renewcommand\{\\jettitle\}\{}
	suffix	{\}}
    }
    {element SLIDE} {
	prefix	{\n\\begin\{jetslide\}\n}
	suffix	{\n\\end\{jetslide\}\n}
    }
    {elements "TEXT"} {
	prefix	{}
    }
    {element TITLE} {
	prefix	{\n\\jetcaption\{}
	suffix	{\}\n\n}
    }
    {element LIST withattval TYPE NUMBER} {
	prefix	{\\begin{jetenum}\n}
	suffix	{\\end{jetenum}\n}
    }
    {element LIST} {
	prefix	{\\begin{jetlist}\n}
	suffix	{\\end{jetlist}\n}
    }
    {element ITEM} {
	prefix	{\\item }
    }
    {element GRAPHICS} {
	prefix	"\\\\begin\{center\}\\n[includeFigure]"
	suffix	{\\end{center}\n}
    }
    {element CAPTION in GRAPHICS} {
	prefix	{\n\n\\textbf\{\\sffamily\{}
	suffix	{\}\}\n\n}
    }
    {element CAPTION in TABLE} {
	prefix	{\n\\caption\{}
	suffix	{\}\n}
    }
    {element Q} {
	prefix	"[localize lq]"
	suffix	"[localize rq]"
    }
    {element EM} {
	prefix	{\\emph\{}
	suffix	{\}}
    }
    {element SMALL} {
	prefix	{\{\\small }
	suffix	{\}}
    }
    {element P} {
	prefix	{\n\n\\par }
    }
    {element EG} {
	prefix	{\n\n\\begin{verbatim}\n}
	suffix	{\n\\end{verbatim}\n}
	sdataFilter	verbatimFilter
	cdataFilter	verbatimFilter
    }
    {element TABLE} {
	prefix	{
	    \\begin{table}
	}
	suffix	{
	    \\hline
	    \\end{tabular}
	    \\end{table}
	}
    }
    {element ROW in TABLE} {
	prefix	[rowPrefix]
	suffix	{\\\\
		     \\hline
	}
    }
    {element CELL in ROW} {
	prefix	{\\parbox\[t\]{\\CellW}\{\\raggedright\\strut{}}
	suffix	{\\strut\}[cellClosing]}
    }
    {el} {
	prefix		[openUnknown]
        sdataFilter     textSdataFilter
    }
}

proc defaultAuthor {} {
    withNode doctree element AUTHOR in PRESENTATION {
	return
    }
    Warning "No <AUTHOR>, using default `Jet Infosystems'"
    return "[authorPrefix]Jet Infosystems[authorSuffix]"
}

proc authorPrefix {} {
    return "\\large "
}

proc authorSuffix {} {
    return ", [exec date +%Y]
	    \\end\{center\}
	    \\end\{slide\}
"
}


proc countCells {} {
    #    
    set n 0
    foreachNode child element CELL {
	incr n
    }
    return $n
}

proc rowPrefix {} {

    set firstRow 1
    withNode prev element ROW {
	set firstRow 0
    }
    set ret ""
    if { $firstRow == 1 } {
	set cells [countCells]
	set ret "
\\setlength{\\CellW}{\\linewidth}
\\addtolength{\\CellW}{-[expr 2 * $cells]\\tabcolsep}
\\divide\\CellW $cells
\\begin{tabular}\{|"

	for {set i $cells} {$i > 0} {incr i -1} {
	    append ret "p{\\CellW}|"
	}
	append ret "\}
\\hline
"
    }
    return $ret
}

proc cellClosing {} {
    withNode next {
	return " & "
    }
    return 
}

proc latexFileHeader {} {
    return "% Generated from TEI Lite DTD by TEItools
% See http://xtalk.price.ru/SGML/TEItools

\\documentclass\[semlayer,semcolor\]\{seminar\}
\\usepackage\[koi8-r\]\{inputenc\}
\\usepackage\[english,russian\]\{babel\}
\\usepackage\{pslatex,freepsfonts\}
\\usepackage\{jetslide,textcomp\}
[extraPreamble]
\\begin\{document\}
\\pagestyle\{empty\}
\\newlength\{\\CellW\}
"
}

proc extraPreamble {} {
    return 
}

proc latexFileFooter {} {
    set fqdn {}
    global env
    if { [info exist env(HOST) ] } {
	set fqdn $env(HOST)
    } elseif { [info exist env(HOSTNAME)] } {
	set fqdn $env(HOSTNAME)
    } else {
	catch {set fqdn [exec hostname]}
    }
    if { [string first "." $fqdn] == -1 } {
	catch {set fqdn "${fqdn}.[exec domainname]"}
    }
    return "
\\end{document}
% Converted to LaTeX by $env(USER)@$fqdn at [exec date]
"
}

proc includeFigure {} {
    set entName [query attval IMG]
    if { $entName == "" } {
	Error "Figure without ENTITY to include!"
	return
    }
    withNode entity $entName {
	set fileName [query sysid]
	return "\\jetfigure{${fileName}.eps}"
    }
    Error "No such entity: ${entName}!"

}

Debug "End of script"
