home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Database / adm30.lha / ADM / ARexx / ADM-ARexxMakros.lha / TeX / TeX_TelList.adm next >
Encoding:
Text File  |  1996-02-27  |  10.5 KB  |  389 lines

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