home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / adm / arexx / adm-arexxmakros.lha / TeX / TeX_TelList.adm (.txt) next >
LaTeX Document  |  1996-02-27  |  11KB  |  266 lines

  1. /* $VER: TeX_TelList.adm 0.9 (23.2.96)
  2.    basierend auf  List.rexx 1.3 von Jan Geissler
  3.    und TrapFax-Export.adm 1.1 (26.3.95) von Kai Bolay.
  4.    Written by Thomas Schr
  5. der. */
  6. NL = '0a'x
  7. OPTIONS RESULTS
  8. SIGNAL ON BREAK_C
  9. SIGNAL ON BREAK_D
  10. SIGNAL ON BREAK_E
  11. SIGNAL ON BREAK_F
  12. SIGNAL ON ERROR
  13. SIGNAL ON HALT
  14. SIGNAL ON IOERR
  15. SIGNAL ON SYNTAX
  16. /* RexxReqTools-Library 
  17. ffnen */
  18. reqname = "rexxreqtools.library"
  19. if ~show("L", reqname) then
  20.   if ~addlib(reqname, 0, -30, 0) then do
  21.      say reqname "not found!"
  22.      EXIT
  23.   end
  24. an = rtezrequest("Ausgabeformat","_Standard|_Konfiguration|_Abbruch")
  25. IF an = 1 THEN DO
  26. /* VOREINSTELLUNGEN */
  27.      groesse = 11
  28.      ausgabeart = "SMALLBOOKLET"
  29.      seite = "TWOSIDE"
  30. /* ENDE VOREINSTELLUNGEN */
  31. IF an = 0 THEN EXIT
  32. IF an = 2 THEN DO
  33.     an2 = rtezrequest("Auf welche Art soll die Liste ausgegeben werden?","_Booklet|_Kleines Booklet|_Normal")
  34.     SELECT
  35.       WHEN an2 = 0 THEN ausgabeart = "NOBOOKLET"
  36.       WHEN an2 = 1 THEN ausgabeart = "BOOKLET"
  37.       WHEN an2 = 2 THEN ausgabeart = "SMALLBOOKLET"
  38.     END
  39. IF ausgabeart = "NOBOOKLET" THEN DO
  40.     an3 = rtezrequest("Ein- oder zweiseitig?","_Einseitig|_Zweiseitig")
  41.     SELECT
  42.       WHEN an3 = 0 THEN seite = "TWOSIDE"
  43.       WHEN an3 = 1 THEN seite = "ONESIDE"
  44.     END
  45. an4 = rtezrequest("Verwendete Fontgr
  46. e","1_0pt|1_1pt|1_2pt")
  47.     SELECT
  48.       WHEN an4 = 0 THEN groesse = 12
  49.       WHEN an4 = 1 THEN groesse = 10
  50.       WHEN an4 = 2 THEN groesse = 11
  51.     END
  52. OPTIONS RESULTS                      /* R
  53. ckgabewerte zulassen   */
  54. ADDRINMEM                             /* Anzahl Adressen holen    */
  55. numadr = RESULT
  56. IF ~OPEN(datei,"t:TelListe.tex","W") THEN DO   /* Ausgabedatei 
  57. ffnen     */
  58.    SAY "Kann Ausgabedatei nicht 
  59. ffnen!"
  60.    EXIT
  61. ACTIVATEFIRST                        /* Ersten Eintr. aktivieren */
  62. /* ----------------------------------------------------------------------
  63.    AUSGABE
  64.    ---------------------------------------------------------------------- */
  65. IF ausgabeart = "SMALLBOOKLET" THEN DO
  66.    text = "\documentclass["||groesse||"pt,a5paper,twoside]{article}"
  67.    CALL DruckZeile
  68. ELSE DO
  69.     IF seite = "ONESIDE" THEN DO
  70.        text = "\documentclass["||groesse||"pt,a4paper]{article}"
  71.        CALL DruckZeile
  72.     ELSE DO
  73.        text = "\documentclass["||groesse||"pt,a4paper,twoside]{article}"
  74.        CALL DruckZeile
  75.    text = "\parindent0cm"
  76.    CALL DruckZeile
  77.    text = "\columnsep1cm"
  78.    CALL DruckZeile
  79. IF ausgabeart = "NOBOOKLET" THEN DO
  80.    text = "\usepackage{german,multicol,wasysym,a4}"
  81.    CALL DruckZeile
  82. ELSE DO
  83.    text = "\usepackage{german,multicol,wasysym}"
  84.    CALL DruckZeile
  85.    text = "\usepackage[T1]{fontenc}"
  86.    CALL DruckZeile
  87.    text = "\usepackage[latin1]{inputenc}"
  88.    CALL DruckZeile
  89.    text = "\begin{document}"
  90.    CALL DruckZeile
  91.    text = "\begin{multicols}{2}"
  92.    CALL DruckZeile
  93.    text = "\hbadness=10000"
  94.    CALL DruckZeile
  95. DO FOR numAdr
  96.    text = "\begin{samepage}"
  97.    CALL DruckZeile
  98.    GETADDRESS ADM                    /* Adresse -> Stemvar ADM   */
  99.    text = "\begin{bf}" ADM.COMPANY"\end{bf}"
  100.    CALL DruckZeile
  101.    text = "\begin{bf}"ADM.LASTNAME || "," ADM.FIRSTNAME "\end{bf}\\"
  102.    IF ADM.ID ~= "" THEN text = text "(ID" ADM.ID || ")"
  103.    CALL DruckZeile
  104.    text = ADM.ADDRESS1"\hfill\\"
  105.    CALL DruckZeile
  106. /*   text = ADM.ADDRESS2"\hfill\\"
  107.    CALL DruckZeile*/
  108.    text = "  " ADM.POSTCODE ADM.CITY || "" ADM.COUNTRY "\hfill\\"
  109.    CALL DruckZeile
  110.    pp = POS("|",ADM.TELEPHONE)
  111.    DO WHILE pp > 0
  112.       ADM.TELEPHONE = DELSTR(ADM.TELEPHONE,pp,1)
  113.       ADM.TELEPHONE = INSERT(", ",ADM.TELEPHONE,pp-1)
  114.       pp = POS("|",ADM.TELEPHONE)
  115.    END;
  116.    text = "   "
  117.    IF ADM.TELEPHONE ~= "" THEN text = text || "\phone\ " ADM.TELEPHONE /*|| ", "
  118.    IF ADM.FAX ~= "" THEN text = text || "Fax" ADM.FAX"\hfill\\"            */
  119.    CALL DruckZeile
  120. /*   text = "   "
  121.    IF ADM.BIRTHDAY ~= "" THEN text = text || "Geb." ADM.BIRTHDAY
  122.    CALL DruckZeile
  123.    ok = WriteLn(datei,"")            /* Leerzeile schreiben */
  124.    ACTIVATENEXT                      /* Akt. naechsten Eintrag */
  125.    text = "\end{samepage}"
  126.    CALL DruckZeile
  127.    text= "\vspace{1ex}"
  128.    CALL DruckZeile
  129.    text = "\end{multicols}"
  130.    CALL DruckZeile
  131.    text = "\end{document}"
  132.    CALL DruckZeile
  133. ok = CLOSE(datei)
  134. BERSETZUNG MIT VIRTEX */
  135. ADDRESS COMMAND "virtex t:TelListe.tex"
  136. /* ANZEIGEN MIT SHOWDVI */
  137. ADDRESS COMMAND "showdvi t:TelListe.dvi"
  138. /* BOOKLET-ERSTELLUNG */
  139. IF ausgabeart = "BOOKLET" THEN DO
  140.     IF groesse = 10 THEN DO
  141.             ADDRESS COMMAND "dvidvi -m 4:0(-4.5cm,-1.0cm),3(15.5cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet1.dvi"
  142.             ADDRESS COMMAND "dvidvi -m 4:1(15.5cm,-1.0cm),2(-4.5cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet2.dvi"
  143.         IF groesse = 11 THEN DO
  144.             ADDRESS COMMAND "dvidvi -m 4:0(-4.25cm,-1.0cm),3(16.25cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet1.dvi"
  145.             ADDRESS COMMAND "dvidvi -m 4:1(16.25cm,-1.0cm),2(-4.25cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet2.dvi"
  146.         IF groesse = 12 THEN DO
  147.             ADDRESS COMMAND "dvidvi -m 4:0(-3.5cm,-1.0cm),3(17cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet1.dvi"
  148.             ADDRESS COMMAND "dvidvi -m 4:1(17cm,-1.0cm),2(-3.5cm,-1.0cm) -sm -2 -sw 4 t:TelListe.dvi t:Booklet2.dvi"
  149. booklet_druck = rtezrequest("Soll das Booklet auf dem Drucker" || NL ||,
  150.                 "oder in ein File ausgegeben werden?","_Drucker|_File")
  151.     IF booklet_druck = 0 THEN DO
  152.         ADDRESS COMMAND "dviprint landscape t:Booklet1.dvi OUT=t:Booklet1.out"
  153.         ADDRESS COMMAND "dviprint landscape t:Booklet2.dvi OUT=t:Booklet2.out"
  154.         bla = rtezrequest("So, die beiden Files t:Booklet1.out und" || NL ||,
  155.                              "t:Booklet2.out wurden jetzt geschrieben. Zum" || NL ||,
  156.                              "Ausdrucken einfach nur per Shell Booklet1.out nach" || NL ||,
  157.                              "PAR: kopieren, das Papier umdrehen, und dasselbe" || NL ||,
  158.                              "mit Booklet2.out machen.","Ok")
  159.     IF booklet_druck = 1 THEN DO
  160.         ADDRESS COMMAND "dviprint landscape t:Booklet1.dvi"
  161.         papierumdreh = rtezrequest("Nimm die bedruckten Seiten, und lege sie so in" || NL ||,
  162.                     "den Schacht zur
  163. ck, da
  164.  sie richtig bedruckt" || NL ||,
  165.                     "werden. Fertig?", "_Ja|_Nein")
  166.             IF papierumdreh = 0 THEN DO
  167.                 file = rtezrequest("Soll der zweite Teil erst einmal in das File" || NL ||,
  168.                         "t:Booklet2.out geschrieben werden?" || NL ||,
  169.                         "(Das kannst Du dann sp
  170. ter mal ausdrucken, indem" || NL ||,
  171.                         "Du es nach PAR: kopierst.)","_Ja|_Nein")
  172.                 IF file = 1 THEN DO
  173.                 ADDRESS COMMAND "dviprint landscape t:Booklet2.dvi OUT=t:Booklet2.out"
  174.                         END
  175.              END
  176.             IF papierumdreh = 1 THEN DO
  177.             ADDRESS COMMAND "dviprint landscape t:Booklet2.dvi"
  178.             END
  179. /* Erstellung eines kleinen Booklets */
  180. IF ausgabeart = "SMALLBOOKLET" THEN DO
  181. ADDRESS COMMAND "dvidvi -m 4:0(-0.8cm,-0.5cm),2(14.25cm,-0.5cm) -sm -2 -sw 4 t:TelListe.dvi t:SM1.dvi"
  182. ADDRESS COMMAND "dvidvi -m 2:0(0cm,0cm),1(0cm,14.8cm)  t:SM1.dvi t:SM_Booklet1.dvi"
  183. ADDRESS COMMAND "delete t:SM1.dvi quiet force"
  184. ADDRESS COMMAND "dvidvi -m 4:1(14.25cm,-0.5cm),3(-0.8cm,-0.5cm) -sm -2 -sw 4 t:TelListe.dvi t:SM2.dvi"
  185. ADDRESS COMMAND "dvidvi -m 2:0(0cm,0cm),1(0cm,14.8cm)  t:SM2.dvi t:SM_Booklet2.dvi"
  186. ADDRESS COMMAND "delete t:SM2.dvi quiet force"
  187. sm_booklet_druck = rtezrequest("Soll das Booklet auf dem Drucker" || NL ||,
  188.                 "oder in ein File ausgegeben werden?","_Drucker|_File")
  189.     IF sm_booklet_druck = 0 THEN DO
  190.         ADDRESS COMMAND "dviprint landscape t:SM_Booklet1.dvi OUT=t:SM_Booklet1.out"
  191.         ADDRESS COMMAND "dviprint landscape t:SM_Booklet2.dvi OUT=t:SM_Booklet2.out"
  192.         bla = rtezrequest("So, die beiden Files t:SM_Booklet1.out und" || NL ||,
  193.                              "t:SM_Booklet2.out wurden jetzt geschrieben. Zum" || NL ||,
  194.                              "Ausdrucken einfach nur per Shell SM_Booklet1.out nach" || NL ||,
  195.                              "PAR: kopieren, das Papier umdrehen, und dasselbe" || NL ||,
  196.                              "mit SM_Booklet2.out machen.","Ok")
  197.     IF sm_booklet_druck = 1 THEN DO
  198.         ADDRESS COMMAND "dviprint PAPERSIZE A4 t:SM_Booklet1.dvi"
  199.         sm_papierumdreh = rtezrequest("Nimm die bedruckten Seiten, und lege sie so in" || NL ||,
  200.                     "den Schacht zur
  201. ck, da
  202.  sie richtig bedruckt" || NL ||,
  203.                     "werden. Fertig?", "_Ja|_Nein")
  204.             IF sm_papierumdreh = 0 THEN DO
  205.                 sm_file = rtezrequest("Soll der zweite Teil erst einmal in das File" || NL ||,
  206.                         "t:SM_Booklet2.out geschrieben werden?" || NL ||,
  207.                         "(Das kannst Du dann sp
  208. ter mal ausdrucken, indem" || NL ||,
  209.                         "Du es nach PAR: kopierst.)","_Ja|_Nein")
  210.                 IF file = 1 THEN DO
  211.                 ADDRESS COMMAND "dviprint PAPERSIZE A4 t:SM_Booklet2.dvi OUT=t:SM_Booklet2.out"
  212.                         END
  213.              END
  214.             IF sm_papierumdreh = 1 THEN DO
  215.             ADDRESS COMMAND "dviprint PAPERSIZE A4 t:SM_Booklet2.dvi"
  216.             END
  217. /* Normales Ausdrucken mit DVIprint ohne Booklet-Erstellung */
  218. IF ausgabeart = "NOBOOKLET" THEN DO
  219.     IF seite = "ONESIDE" THEN DO
  220.             ADDRESS COMMAND "dviprint t:TelListe.dvi"
  221.     IF seite = "TWOSIDE" THEN DO
  222.         ADDRESS COMMAND "dviprint ODD t:TelListe.dvi"
  223.         papierumdreh2 = rtezrequest("Nimm die bedruckten Seiten, und lege sie so in" || NL ||,
  224.                     "den Schacht zur
  225. ck, da
  226.  sie richtig bedruckt" || NL ||,
  227.                     "werden. Fertig?", "_Ja|_Nein")
  228.             IF papierumdreh2 = 0 THEN DO
  229.                 file2 = rtezrequest("Soll der zweite Teil erst einmal in das File" || NL ||,
  230.                         "t:ListeGerade.out geschrieben werden?" || NL ||,
  231.                         "(Das kannst Du dann sp
  232. ter mal ausdrucken, indem" || NL ||,
  233.                         "Du es nach PAR: kopierst.)","_Ja|_Nein")
  234.                     IF file2 = 1 THEN DO
  235.                         ADDRESS COMMAND "dviprint EVEN t:TelListe.dvi OUT=t:ListeGerade.out"
  236.                     END
  237.                                         IF file2 = 0 THEN DO
  238.                         ADDRESS COMMAND "dviprint EVEN t:TelListe.dvi"
  239.                     END
  240.             END
  241. /* Programmende */
  242. /* ----------------------------------------------------------------------
  243.    UNTERPROGRAMM: Zeile Schreiben
  244.    ---------------------------------------------------------------------- */
  245. DruckZeile:
  246.   text = STRIP(text,"T"," ")        /* Leerzeichen am Ende entfernen */
  247.   text = STRIP(text,"T",",")        /* Kommas      am Ende entfernen */
  248.   pp = POS("&",text)
  249.   DO WHILE pp > 0
  250.       text = INSERT("\",text,pp-1)
  251.       pp = POS("&",text,pp+2)
  252.   END;
  253.   pp = POS("#",text)
  254.   DO WHILE pp > 0
  255.       text = INSERT("\",text,pp-1)
  256.       pp = POS("#",text,pp+2)
  257.   END;
  258.   pp = POS("%",text)
  259.   DO WHILE pp > 0
  260.       text = INSERT("\",text,pp-1)
  261.       pp = POS("%",text,pp+2)
  262.   END;
  263.   IF text ~= "" THEN                /* Wenn Zeile nicht leer...      */
  264.      ok = WRITELN(datei,text)          /* Zeile ausgeben                */
  265. RETURN
  266.