# -*- tcl -*-
# $Id: script,v 1.1 2000/10/24 05:56:06 tobotras Exp $

require Simple.tcl
require TEItools.tcl

Debug "Start of script"

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

specification translate {
    {element TEXT} {
	prefix	{}
	suffix	{}
    }
    {element TITLE in SLIDE } {
	prefix	[titleSlidePrefix]
	suffix	[titleSlideSuffix]
    }
    {el} {
	prefix	"[[toLower [query gi]]Prefix]"
	suffix	"[[toLower [query gi]]Suffix]"
    }
}

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

proc titlePrefix {} { return "\n\\title\{\\color{section0}\\Huge " }

proc titleSuffix {} { return "\}\n" }

proc titleSlidePrefix {} { return "\\title\{" }

proc titleSlideSuffix {} { return "\}\n\n" }

proc authorPrefix {} { return "\\author\{\\color{section1}\\Large " }

proc authorSuffix {} { return "\}\n" }

proc slidePrefix {} { return "[titlePage]\n\\begin{slide}\n" }

proc titlePage {} {
    global firstSlide
    if { [info exist firstSlide] } return
    set firstSlide 1
    return "
\\date{\\theDate}
\\maketitle

\\clearpage{}

\\newcommand{\\title}\[1\]{{\\Large\\textbf{#1}\\hfill}\\vspace{3ex}}
"
}

proc slideSuffix {} { return "\n\\end{slide}\n" }

proc pPrefix {} { return "\\par " }

proc pSuffix {} { return }

proc listPrefix {} { return "\n\\begin{itemize}\n" }

proc listSuffix {} { return "\n\\end{itemize}\n" }

proc itemPrefix {} { return "\\item{} " }

proc itemSuffix {} { return "\n" }

proc emPrefix {} { return "\\emph\{" }

proc emSuffix {} { return "\}" }

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 extraPreamble {} {
    return 
}

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

\\documentclass\[a4paper\]{article}
\\usepackage\[koi8-r\]{inputenc}
\\usepackage\[english,russian\]{babel}
\\usepackage{freepsfonts}

% pdfscreen setup
\\usepackage\[russian,screen,sectionbreak,panelright,bluelace\]{pdfscreen}
\\newcommand{\\myemail}{boris@xtalk.msk.su}

\\begin{screen}
  \\margins{.65in}{.65in}{.65in}{.65in}
  \\screensize{6.25in}{8in}
  \\def\\pfill{\\vskip6pt}
  \\emblema{Jet_Logo.pdf}
  \\emailid{\\myemail}
  \\urlid{xtalk.price.ru/SGML/}
  \\overlay{overlay1.pdf}
  \\paneloverlay{but.pdf}
  \\pagedissolve{/S /Split /D 2 /Dm /H /M /O}
\\end{screen}
% -

[extraPreamble]

\\begin\{document\}
\\pagestyle\{empty\}
\\newlength\{\\CellW\}
\\newcommand\{\\theDate\}
"
}

proc presentationSuffix {} {
    
    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"
