[Tustep-Liste] Frage zu Execute
Christian Griesinger
ChristianGriesinger at gmx.de
Mi Mai 9 13:11:46 CEST 2018
Lieber Michael,
danke für Deine schnelle Antwort. Ich versuche es mal, mit der von Dir genannten Methode, das Makro zu beenden und den Rest in ein weiteres Makro zu verschieben.
Aber um Deine Gegenfrage zu beantworten:
Nehmen wir an, ich habe einen Stapel von beliebig vielen Dateien, die nacheinander gesetzt werden sollen. In einem Teil der Dateien kommen Bilder vor, in anderen nicht. Auch die Anzahl der Bilder kann natürlich variieren. In einem solchen Fall schien es mir praktisch, in einer Schleifer abzufragen, ob Bilder in der jeweils aktuellen Datei der Schleife vorkommen, und wenn ja, für genau diese Bilder das Standardmakro #*GRAFIK auszuführen.
Diese Überlegung gilt natürlich allgemein für alle Standardmakros, nicht nur im speziellen für #*GRAFIK. Ich denke da an #*FUNO,#*PSAUS usw. In einem solchen Szenario ist zum Beispiel die Frage relevant, ob einer der Texte Fußnoten enthält. Dann könnte leicht mit IF - ELSE der Ablauf des Satzprogramms geändert werden und #*FUNO da eingeschaltet werden, wo es gebraucht wird. Ebenso ändert sich so auch der Aufruf von #SATZ (#satz mit Angabe einer Fussnotendatei gibt nämlich einen Fehler zurück, wenn die Fussnotendatei leer ist).
Ich verstehe zwar, dass Endlosschleifen vermieden werden müssen, aber es scheint mir keine gute Lösung, wenn Makroaufrufe innerhalb von Makroaufrufen zwar möglich sind, aber nur am Laufzeitende des Hauptmakros.
Hier ein Beispiel in Pseudocode, wie ich mir das ungefähr gedacht habe:
LOOP datei 1 bis 100
...
IF datei hat überschriften THEN
EXECUTE $nummeriere
ENDIF
IF datei hat bilder THEN
EXECUTE #*GRAFIK
...
ENDIF
IF datei hat fussnoten THEN
EXECUTE #*FUNO
...
ELSE
...
ENDIF
...
ENDLOOP
Viele Grüße
Christian
> Gesendet: Mittwoch, 09. Mai 2018 um 12:41 Uhr
> Von: "Dr. Michael Trauth" <michael.trauth at outlook.de>
> An: "tustep-liste at itug.de" <tustep-liste at itug.de>
> Betreff: Re: [Tustep-Liste] Frage zu Execute
>
> Diskussionsforum Tustep-Liste
> Weitere Informationen: www.itug.de
> ------------------------------------------------------------
>
>
> Lieber Christian,
>
> Makros (Tuscripte) dürfen nicht innerhalb von Makros aufgerufen werden, um Endlosschleifen auszuschließen. Punkt.
>
> Wenn Du zur Laufzeit eines Makros das Ergebnis eines anderen Makros benötigst, kannst Du so verfahren wie von Dir selbst erwähnt:
>
> > MODE DATA
> > #*GRAFIK,{quelle},{ziel},nu={nr}
>
> Danach beendest Du Dein Makro, danach wird Dein #*grafik ausgeführt, dann kannst Du ein weiteres, neues Makro beginnen. Hört sich etwas umständlich an, funktioniert aber gut.
>
> Es bleibt folgende Frage: Makros verwendet man für Arbeitsabläufe, die regelmäßig ausgeführt werden müssen, nicht wahr? #*grafik wird aber z.B. in einer Satzumgebung für eine Publikation nur einmal benötigt (bzw. nur dann, wenn eine Abbildung neu in den Grafikcontainer gesteckt werden soll). Hilfst Du mir zu verstehen, warum Du es im Inneren eines anderen Makros verwenden willst?
>
> Viele Grüße von
>
> ** Michael **
>
>
>
>
>
>
> ------------------------------------------------------------
> Tustep-Liste at itug.de
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
Mehr Informationen über die Mailingliste Tustep-Liste