1
0
Fork 0
doc/devel/style/design/style-flow.de.tm

81 lines
3.3 KiB
Plaintext
Raw Normal View History

2011-08-28 15:59:50 +08:00
<TeXmacs|1.0.4.5>
<style|tmdoc>
<\body>
<tmdoc-title|Steuerung des logischen Ablaufs>
Neben Folgen von Ausdr<64>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<65> <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<70>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<75>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<75>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<6D>
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>