Dr. Arne Jachens

Arnes Skriptbibliothek

LaTeXbrief

Wird verwendet von:

Keine Erläuterungen gefunden.

<?php
  session_start();
  include 'globals.php';
  include 'CMS.php';
  include 'DB.php';
  #define("DIR", "./tmp/");
  define("DIR", "./LaTeX/");
  $flag=3;
  $fname     = $_POST['fname'];
  $Name      = $_POST['Name'];
  $Strasse   = $_POST['Strasse'];
  $Ort       = $_POST['Ort'];
  $myref     = $_POST['myref'];
  if (empty($myref)){$myref=$_GET['myref'];}
  $ymail     = $_POST['ymail'];
  $yref      = $_POST['yref'];
  $Betreff   = $_POST['Betreff'];
  $Opening   = $_POST['Opening'];
  $Brief     = $_POST['Brief'];
  $Closing   = $_POST['Closing'];
  $Signature = $_POST['Signature'];
  $Anlage    = $_POST['Anlage']; 
  $counter=0;
  if (!empty($_POST['SB'])){
    $allMyref=explode(",",$myref);
    $counter=count($allMyref);
  }

  kopf($flag);
  echo "<h1>Briefpapier</h1>";
  if (empty($myref)){
    $myref=$_GET[MitglNr];
    $counter=0;
    echo "<p><u>Du kannst für externe Briefe eine Adresse angeben, 
          oder für interne die Mitgliedsnummer.</u></p>";
  }
  if ($counter==0){
    #einfacher Brief
    $latex=composeLaTeX($Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage);
    if (strlen($latex)>150){
      writeLaTeX($latex,$fname,"");
    }
  }else{
    #Serienbrief
    for($i=0;$i<$counter;$i++){
      $thisFname=$fname."_".$i;
      $entry=getKarteikarte($allMyref[$i]);
      $Name=$entry[2]." ".$entry[3];
      $Strasse=$entry[7];
      $Ort=$entry[8]." ".$entry[9];
      $thisOpening=substr($Opening,0,strlen($Opening)-1)." ".$Name.",";
      $latex=composeLaTeX($Name,$Strasse,$Ort,$allMyref[$i],$ymail,$yref,$Betreff,$thisOpening,$Brief,$Closing,$Signature,$Anlage);
      writeLaTeX($latex,$thisFname,$i);
    }
  }
  editLaTeX($fname,$Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage);

  fuss($flag);


#====================================================

function composeLaTeX($Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage){
  if (!empty($myref)){
    $TEXmyref="\myref{".$myref."}\n";
  };
  if (!empty($yref)){
    $TEXyref="\yref{".$yref."}\n";
  };
  if (!empty($ymail)){
    $TEXymail="\ymail{".$ymail."}\n";
  };
  if (!empty($Anlage)){
    $TEXAnlage="\encl{".$Anlage."}\n";
  };
  if (empty($Signature)){
    $Signature = "\par\Signatur{".$Closing."}\n";
  }else{

    $Signature = "\par\Signatur{".$Closing."}\\\\[1cm] \n".$Signature."\n";
  };
  $head = "\documentclass[german,12pt]{BVSM}\n\pagestyle{headings}\n\begin{document}\n";
  $TEXAdresse = "\begin{letter}{".$Name."\\\\".$Strasse."\\\\".$Ort."}\n";
  $TEXBetreff = "\subject{".$Betreff."}\n";
  $TEXOpening = "\opening{".$Opening."}\n";
  $foot = "\end{letter}\n\end{document}\n";

  $latex = $head.$TEXAdresse.$TEXmyref.$TEXyref.$TEXymail.$TEXBetreff.$TEXOpening.$Brief."\n".$Signature.$Anlage.$foot;
  #$latex = stripcslashes($latex);
  #$latex=str_replace("\\\\","BS",$latex);
  #$latex=ereg_replace('\\\\','/',$latex);
  return $latex;
}

function writeLaTeX($latex,$fname,$i){
  $filename=DIR.$fname.".tex";
  $handle = fopen($filename, "w");
  fwrite($handle, $latex);
  fclose($handle);
  $toexecute="pdflatex $filename";
  $toexecute="cd ".DIR." && pdflatex ".$fname.".tex";
  exec($toexecute); 
  #get error messages
  $filename=DIR.$fname.".log";
  $toexecute="tail -5 ".$filename." > ".DIR."errors.txt";
  echo $toexecute;
  $filename=DIR."errors.txt";

  $errormessages=array();
  $handle = fopen($filename, "r");
  while(!feof($handle)){
    $i=$i+1;
    echo "<br>".$i." ".$line;
    #$line = fgets( $handle, 518 );
    #array_push($errormessages,$line);
    if ($i>1000){
      echo "logfile: read impossible!";exit(1);
    }
  }
  fclose($handle);
  $dim=count($errormessages);
  $errors="";
  for($i=$dim-10;$i<$dim;$dim++){
    $errors.=$errormessages[$i];
  }
  echo $errors;


  $rmname = "cd ".DIR." && rm ".$fname.".aux && rm ".$fname.".log && rm ".$fname.".out && rm ./.tex";
  exec($rmname); 
  echo "<a class='gross' href='".DIR.$fname.".pdf' target='pdf'>show PDF ".$i."</a><br>";
}


function editLaTeX($fname,$Name,$Strasse,$Ort,$myref,$ymail,$yref,$Betreff,$Opening,$Brief,$Closing,$Signature,$Anlage){
  echo "<form style='width:600px' action='brief.php' method='post'>";
  if (empty($fname)){
    $fname=date("Y-m-d",mktime(0, 0, 0, date("m")  , date("d"), date("Y"))); 
  }
  echo "<p>Dateiname:<br>
       <input name='fname' type='text' size='30' maxlength='50' 
       value='".$fname."'>.tex<br>
       <em>Bitte nimm etwas sugestives wie 'Bundestag_2004-03-17.tex' 
       für ein Anschreiben an den Bundestag.</em></p>";

  echo "<p>Adresse:<br>
       <input name='Name' type='text' size='50' maxlength='50' 
       value='".$Name."'><br>
       <input name='Strasse' type='text' size='50' maxlength='50' 
       value='".$Strasse."'><br>
       <input name='Ort' type='text' size='50' maxlength='50' 
       value='".$Ort."'><br>
       <em>Solltest du weitere Zeilen benötigen, funktioniert das 
       mit:</em> <tt>Name <strong>\\\\</strong> Firma</tt>.</p>";

  echo "<p>Mitgliedsnummer:<br>
        <input name='myref' type='text' size='50' maxlength='50' 
        value='".$myref."'><br>
        <em>Bei Schreiben an ein Mitglied sollte hier die entsprechende 
        Mitgliedsnummer eingetragen werden. Falls du mehrere durch Kommata getrennt angibst, wird hieraus ein Serienbrief.</em></p>";

  echo "<p>Ihr Schreiben vom:<br>
       <input name='ymail' type='text' size='50' maxlength='50' 
       value='".$ymail."'><br>
       <em>Bei Antwort auf ein Schreiben sollte hier das Datum des 
       Schreibens aufgeführt werden.</em></p>";

  echo "<p>Ihr Zeichen:<br>
       <input name='yref' type='text' size='50' maxlength='50' 
       value='".$yref."'><br>
       <em>Dies kann eine Kunden- oder Vereinsregisternummer sein.</em></p>";

  echo "<p>Betreff:<br>
       <input name='Betreff' type='text' size='50' maxlength='50' 
       value='".$Betreff."'><br>
       <em>Idealerweise nicht länger als eine Zeile.</em></p>";

  if (empty($Opening)){$Opening="Sehr geehrte Damen und Herrn,";}
  echo "<p>Opening:<br>
       <input name='Opening' type='text' size='50' maxlength='50' 
       value='".$Opening."'><br>
       <em>Im Zweifelsfall lieber siezen.</em></p>";

  if (empty($Brief)){
    $Brief="Hier kannst du deinen Brief schreiben.
Links im Menü findest du eine kurze Übersicht einiger LaTeX-Sonderzeichen.
Auch nach Abschicken hast du noch die Möglichkeit, den Text zu korrigieren.";
  }
  echo "<textarea name='Brief' cols='70' rows='20'>".$Brief."</textarea>";

  if (empty($Closing)){$Closing="Mit freundlichen Grüßen,";}
  echo "<p>Closing:<br>
       <input name='Closing' type='text' size='50' maxlength='50' 
       value='".$Closing."'></p>";

  echo "<p>Signatur:<br>
       <input name='Signature' type='text' size='50' maxlength='50' 
       value='".$Signature."'><br>
       <em>Wenn du den Brief 'nur' unterschreiben willst, kannst du dieses 
       Feld auch leer lassen.</em></p>";

  echo "<p>Anlage:<br>
       <input name='Anlage' type='text' size='50' maxlength='50' 
       value='".$Anlage."'><br>
       <em>Gegebenenfalls leer lassen.</em></p>";

  echo "<table width='100%'><tr><td><INPUT TYPE=submit VALUE='Erzeuge PDF'>
        </td><td align='right'><INPUT TYPE=submit name='SB' 
        VALUE='Serienbrief'></td></tr></table></form>";
  echo "<p><em>Bei Serienbriefen kann du dir zunächst per 
        <tt>Erzeuge PDF</tt> ein Resultat angucken und korrigieren 
        und erzeugst dann per <tt>Serienbrief</tt> alle Exemplare, 
        die du dann nacheinander runterladen und drucken kannst.</em></p>";
}

?>


1fraktal.php
2VereinsverwaltungKartei.php
3VereinsverwaltungKarteikarte.php
4VereinsverwaltungKonto.php
5VereinsverwaltungLastschriften.php
6VereinsverwaltungMenue.php
7whichLengthDoWeHaveInXfigFile.php
8XML_extractAttribute.php
9XML_extractElement.php
10XML_extractTag.php
11XML_findAllElements.php
12XML_readFile.php
13writeNamedData.php
14menu.php
15content.php
16cms.php
17indexCms.php
18areaOfPolygon.php
19areaOfTriangle.php
20calculateAreasOfPolygonsInXfig.php
21calculateMeanStd.php
22checkChanges.php
23closeFigures.php
24db.php
25distanceOfPoints.php
26dtaus.php
27enumerateFiles.php
28fileGrep.php
29fitData.php
30fotoalbum.php
31genAlbum.php
32genDTAUS.php
33genFotoalbum.php
34genThumbnails.php
35globals.php
36hex2dec.php
37LaTeXbrief.php
38norm.php
39pdf.php
40plotResult.php
41pointsOfPolygon.php
42polynominalFit.php
43readData.php
44readDymolaOuput.php
45readFilenames.php
46readFromStdIn.php
47readNamedData.php
48readXmlFile.php
49searchMedian.php
50sortIEindex.php
51sortIntoBins.php
52sortPDF.php
53synchronise.php
54synchroniseDirectories.php
55Vereinsverwaltung.php
56writeData.php

 

gnuplot

gnuplot is used to visualise the results - via script you can do infinite diagrams in 1 second.
Run 'test' in gnuplot to get an owerview of the available line- and symbolstyles.