mirror of https://github.com/texmacs/doc.git
81 lines
3.3 KiB
Tcl
81 lines
3.3 KiB
Tcl
<TeXmacs|1.0.4.5>
|
|
|
|
<style|tmdoc>
|
|
|
|
<\body>
|
|
<tmdoc-title|Steuerung des logischen Ablaufs>
|
|
|
|
Neben Folgen von Ausdrücken, die mit dem <markup|concat>-Konstrukt erzeugt
|
|
werden könne, und dem Mechanismus für die Makro-Expansion besitzt die
|
|
<TeXmacs>-Stil-Definitions-Sprache noch einige andere Konstrukte, um den
|
|
logischen Ablauf zu steuern: <markup|if>, <markup|case>, <markup|while> und
|
|
<markup|for-each>. Diese Konstrukte können mit dem Menü <menu|Source|Flow
|
|
control> erreicht werden. Wir müssen aber den Anwender warnen, diese
|
|
Konstrukte sind nicht sehr sicher: sie können nur auf Zeileninhalte
|
|
angewendet werden und ihr Ergebnis hängt von der Erreichbarkeit der
|
|
Makroargumente ab. Die Erreichbarkeit kann aber nicht vorab geprüft werden!
|
|
|
|
Das wichtigste Konstrukt ist <markup|if>, das mit dem Kurzbefehl
|
|
\ <shortcut|(make 'if)> erzeugt werden kann. Damit kann man bedingten Schriftsatz
|
|
erreichen:
|
|
|
|
<\tm-fragment>
|
|
<inactive*|<assign|appendix|<\macro|title|body>
|
|
<style-with|src-compact|none|<compound|<if|<long-document>|<value|chapter-appendix>|<value|section-appendix>>|<arg|title>|<arg|body>>>
|
|
</macro>>>
|
|
</tm-fragment>
|
|
|
|
In diesem Beispiel ist <markup|appendix> ein Block, der aus einem Titel und
|
|
einem Rumpf besteht. Dieser wird als Kapitel in langen Dokumenten und als
|
|
Abschnitt in anderen Dokumenten gesetzt. Im folgenden ist eine unzulässige
|
|
Inplementierung gezeigt. Sie funktioniert nicht, weil <markup|if> zur Zeit
|
|
nur mit Zeileninhalten arbeitet:
|
|
|
|
<\tm-fragment>
|
|
<active*|<\inactive*>
|
|
<active*|<\with|color|red>
|
|
So gehts nicht:
|
|
</with>>
|
|
|
|
\;
|
|
|
|
<assign|appendix|<\macro|title|body>
|
|
<style-with|src-compact|none|<if|<long-document>|<chapter-appendix|<arg|title>|<arg|body>>|<section-appendix|<arg|title>|<arg|body>>>>
|
|
</macro>>
|
|
</inactive*>>
|
|
</tm-fragment>
|
|
|
|
Das <markup|if>-Konstrukt kann auch benutzt werden um optionale Argumente
|
|
einzuführen:
|
|
|
|
<\tm-fragment>
|
|
<inactive*|<assign|hey|<macro|first|second|<style-with|src-compact|none|<if|<equal|<arg|second>|<uninit>>|Hey
|
|
<arg|first>, you look lonely today...|Hey <arg|first> and <arg|second>,
|
|
you form a nice couple!>>>>>
|
|
</tm-fragment>
|
|
|
|
<TeXmacs> kann aber nicht entscheiden, welche Argumente optional sind und
|
|
welche Argumente erreichbar (vom Anwender editierbar) sind. Deshalb muÿ
|
|
diese Information von Hand mit dem <markup|drd-props>-Konstrukt festgelegt
|
|
werden. Die Konstrukte <markup|case>, <markup|while> und <markup|for-each>
|
|
werden in <hyper-link|Steuerung des logischen
|
|
Ablaufs|../../format/stylesheet/prim-control.de.tm> im Abschnitt
|
|
<hyper-link|Konstrukte für Stil-Definitionen|../../format/stylesheet/stylesheet.de.tm>
|
|
eingehender behandelt.
|
|
|
|
<tmdoc-copyright|1998--2004|Joris van der Hoeven>
|
|
|
|
<tmdoc-license|Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the GNU Free Documentation License, Version 1.1
|
|
or any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
|
Texts. A copy of the license is included in the section entitled "GNU Free
|
|
Documentation License".>
|
|
</body>
|
|
|
|
<\initial>
|
|
<\collection>
|
|
<associate|language|german>
|
|
<associate|preamble|false>
|
|
</collection>
|
|
</initial> |