require_once "smartconfig.php"; $Art= $_GET['art']; $here_is_our_home = getcwd(); $schule = $_COOKIE['schule']; $klasse = $_COOKIE['klasse']; $datum = $_COOKIE['datum']; $ueberschrift = $_COOKIE['ueberschrift']; $unterschrift = $_COOKIE['unterschrift']; $ANGABE = $_COOKIE['ANGABE']; $LOESUNG = $_COOKIE['LOESUNG']; $FILE = $_COOKIE['FILE']; function replacebackslash ($text) { return preg_replace("/\\\\/i","",$text); } ################################################### # umlaute: Wandelt Umlaute in TeX-Format um ################################################### function umlaute ($text) { $s = utf8_encode($text); $s = str_replace("Ä","\"A",$s); $s = str_replace("Ö","\"O",$s); $s = str_replace("Ü","\"U",$s); $s = str_replace("ä","\"a",$s); $s = str_replace("ö","\"o",$s); $s = str_replace("ü","\"u",$s); $s = str_replace("ß","\"s",$s); return $s; #return replacebackslash($s); } ################################################### # aufgabenlisten: Erzeugt TeX-Quellcode fuer TeX # fuer Ausgabeformat TeX und interaktiv. # Fuer alle anderen Formate werden nur die Dateinamen benoetigt. ################################################### function aufgabenlisten ($handle,$Art,$smarthome_texsrc){ $ausgewaehlte_aufgaben = $_COOKIE['aufgabe']; $liste = explode(";",$ausgewaehlte_aufgaben); foreach($liste as $aufgabe) { $pos = strpos($aufgabe, "_"); if ($pos!=FALSE) { $aufgabe = substr($aufgabe,$pos+1); } if (trim($aufgabe)!="") { if (preg_match("/tex/", $Art) || preg_match("/interaktiv/", $Art)) { fwrite($handle,"%\n"); fwrite($handle,"% ********************************************************\n"); fwrite($handle,"% Aufgabe $aufgabe\n"); fwrite($handle,"% ********************************************************\n"); fwrite($handle,"\item\n"); foreach (glob("$smarthome_texsrc/SMART/*/*/$aufgabe.tex") as $filename) { if (file_exists($filename)) { $infile = fopen ($filename, "r"); $contents = fread ($infile, filesize ($filename)); fclose ($infile); fwrite($handle,$contents); break; } } } else { fwrite($handle,"\ABINPUT $aufgabe \n"); } } } } ########################################################## # # Hauptprogramm # ########################################################## # # $Art enthaelt das gewuenschte Dateiformat # # # Temporaerer Dateiname $datname # Erzeuge Tex-Datei $textmp$datname.tex # $datname = time(); $DATOUT = fopen("$textmp/$datname.tex","w"); fwrite($DATOUT,"% ********************************************************\n"); fwrite($DATOUT,"% \n"); fwrite($DATOUT,"% ********************************************************\n"); fwrite($DATOUT,"% TeX-Code Ihres SMART-Aufgabenblattes\n"); fwrite($DATOUT,"% \n"); fwrite($DATOUT,"% ********************************************************\n"); // fwrite($DATOUT,"\\nonstopmode \n"); fwrite($DATOUT,"\input vorspann \n"); if ($Art=="pdf") { fwrite($DATOUT,"\pdfcompresslevel=9 \n"); } fwrite($DATOUT,"\\renewcommand{\EGY}{} \n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"% Voreinstellungen (Loesungen ja/nein ...)\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); # # Ueberschrift etc. # if ($ANGABE!="") { fwrite($DATOUT,"\ANGABE$ANGABE\n"); } else { fwrite($DATOUT,"\ANGABEtrue\n"); } if ($LOESUNG!="") { fwrite($DATOUT,"\LOESUNG$LOESUNG\n"); } else { fwrite($DATOUT,"\LOESUNGfalse\n"); } if ($FILE!="") { fwrite($DATOUT,"\FILE$FILE\n"); } else { fwrite($DATOUT,"\FILEfalse\n"); } fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"% Ueberschrift, etc.:\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"\begin{document}\n"); if ($schule!="") { $s = umlaute($schule); fwrite($DATOUT,"$s \\\\\n"); } if ($klasse!="") { $s = umlaute($klasse); fwrite($DATOUT,"$s \\hfill "); } if ($datum!="") { $s = umlaute($datum); fwrite($DATOUT,"$s \n"); } fwrite($DATOUT,"\begin{ABTITEL} \n"); if ($ueberschrift!="") { $s = umlaute($ueberschrift); fwrite($DATOUT,"$s \n"); } fwrite($DATOUT,"\end{ABTITEL} \n"); fwrite($DATOUT,"\begin{AUFGABEN} \n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"% Der Aufgabenteil\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); # # Hier werden die Aufgaben geschrieben # #if (isset($aufgabe)) { aufgabenlisten($DATOUT,$Art,$smarthome_texsrc); #} fwrite($DATOUT,"\n"); fwrite($DATOUT,"\bigskip\n"); if ($unterschrift!="") { $s = umlaute($unterschrift); fwrite($DATOUT,"$s \n"); } fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"% Der Fussteil\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"%********************************************************\n"); fwrite($DATOUT,"%\n"); fwrite($DATOUT,"\end{AUFGABEN}\n"); fwrite($DATOUT,"\end{document}\n"); fclose($DATOUT); ################################## # Weder TeX-Quellcode noch interaktiv: # Zuerst wird DVI erzeugt. # Wechsel nach /tmp ################################## if ((!preg_match("/tex/", $Art)) && (!preg_match("/interaktiv/", $Art)) ) { if (!chdir("$textmp")) { mkdir("$textmp"); chdir("$textmp"); } if (!(preg_match("/pdf/", $Art))) { exec("$texverzeichnis/latex $datname.tex"); } } ################################## # TeX-Quellcode ################################## if (preg_match("/tex/", $Art)) { header("Content-type: text/plain"); header("Content-Disposition: inline; filename=smart.tex"); readfile("$textmp/$datname.tex"); exec("rm $textmp/$datname.*"); } ################################## # DVI ################################## if (preg_match("/dvi/", $Art)) { header("Content-type: text/x-dvi"); header("Content-Disposition: inline; filename=smart.dvi"); readfile("$textmp/$datname.dvi"); exec("rm $datname.*"); } ################################## # PostScript ################################## if (preg_match("/ps/", $Art)) { exec("$texverzeichnis/dvips -Pcmz $datname.dvi -o"); header("Content-type: application/postscript"); header("Content-Disposition: inline; filename=smart.ps"); readfile("$textmp/$datname.ps"); exec("rm $datname.*"); } ################################## # PDF: ################################## if (preg_match("/pdf/", $Art)) { // exec("$texverzeichnis/pdflatex $datname"); exec("$texverzeichnis/latex $datname"); exec("$texverzeichnis/dvips $datname -o"); exec("$pstoimgverzeichnis/ps2pdf $datname.ps"); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=smart.pdf"); readfile("$textmp/$datname.pdf"); exec("rm $datname.tex $datname.aux $datname.dvi $datname.log $datname.pdf $datname.ps"); } ########################################## # Interaktiv-Modus ########################################## if (preg_match("/interaktiv/", $Art)) { require_once "headerbase.php"; ?>