Flexgesteuertes Auskommentieren von rtf-Passagen

Thomas Berger ThB at gymel.com
So Nov 23 14:01:05 CET 2003


Lieber Herr Allers,

>    vorweg: ich hatte einen Fehler begangen und
> 
> > > var "{\\info comment "\ins #ux1
> 
> geschrieben. Sie haben stillschweigend in
> 
> var "{\\info\\comment "
> 
> korrigiert. (Das Lustige ist, daß das Auskommentieren auch mit
> {\info comment ....} funktioniert, und deswegen wurde ich meines Fehlers
> nicht gewahr).

das war zunaechst nur Fluechtigkeit von mir, jetzt
habe ich in der Spezifikation nachgesehen: \info ist
das Steuerwort fuer die "Document informatin Group",
\info \comment dann also der vom Benutzer angegebene
Kommentar zur Datei. \info ist nur an einer Stelle
im Dokument erlaubt, insofern sind Sie mit dieser
Konstruktion (fuer Ihre Zwecke) vollkommen auf dem
Holzweg.

Illegales RTF im Sinne von "unbekannten Befehlen"
ist aber etwas sehr maechtiges und auch offizioeses, s.u.

 
> Aber zum springenden Punkt; Sie sagen
> 
> > Wenn ich das - halbautomatisch - teste, naemlich
> > in der .RTF-Datei schreibe
> >
> > {%#ux3
> > \par .... Die auszublendenden
> > \par ...  Zeilen
> > \par ...
> > }
> >
> > und dann im Schreibfeld eingebe:
> >
> > x var "\\info\\comment "\ins #ux3\h cat
> >
> > so sehe ich den Text "\info\comment" in der Ausgabe.
> > Das war auch zu erwarten,
> 
> Warum ist das zu erwarten? In der rtf-Datei geht doch der Ausgabe von #ux3
> ein { voran, also hätte ich erwartet, daß man _nichts_ vom Inhalt von #ux3
> sieht!

In {...} steht eine Gruppe, d.h. Formatierungen etc. enden
automatisch beim "}". In Ihrer Gruppe steht jedoch der Text
\\info\\comment, denn a99 hat im Inhalt von #ux3 im Moment
des Einfuegens die "\" zu "\\" ersetzt.

Der zu beschreitende Weg ist also [a99 aufzubohren, dass naemlich
der ~Output~ von %=X ausschneid.flx% an dieser Stelle eingefuegt
wird] mit den derzeitigen Mittel folgender: Das "\" muss bereits
in der .RTF-Datei stehen, das Kontrollwort dazu kommt aus der
Variablen. "allers" ist z.B. ein Kontrollwort, das kein RTF-
Reader versteht, es eignet sich dazu, den zu versteckenden
Text einzuleiten. RTF kennt aber das Konzept von zu versteckendem
Text ueberhaupt nicht, dafuer kennt es "Destinations". Ein davor
gestelltes "\*" regelt, ob der Reader den Text ignorieren soll,
wenn er die Destination nicht kennt, bzw. im aktuellen Kontext
ausgeben.

D.h. {\allers Dies und Das} gibt den Text aus, {\*\allers Dies und
Das} versteckt ihn. Wenn also in text.rtf steht

%=X ausblend.flx%
\par {\%#ux1\allers Konditioneller
\par Text
\par }

dann wird dieser Text versteckt, wenn #ux3 den Wert "*" hat,
und er wird ausgegeben, wenn #ux3 den Namen irgendeines moeglichst
harmlosen RTF-Steuerbefehls hat, "noop" gibt es leider nicht,
aber "noline" scheint harmlos genug.

Der zugehoerige Flex ausblend.flx saehe dann so aus:

var "*"
ins #ux1
var #ux3\if "1" end
var "noline"
ins #ux1
end

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro