[Tustep-Liste] zn,,%,
Michael Trauth
trauth at uni-trier.de
Mo Feb 2 20:22:55 CET 2004
Liebe TUSTEPler,
zuerst einmal vielen Dank an die Adresse von Herrn
Schaelkle, denn diese Neuerung (zn,,%,...) gehoert
zweifellos zu den feinsten der letzten Jahre. Es
ist schon seltsam, dass *jeder* das sofort aner-
kennt und aus seinem Erfahrungsschatz Faelle an-
fuehren kann, in denen er das schon laengst ge-
braucht haette (in meinem Fall war es das Problem,
dass nach dem Einfuegen von fakultativen Trenn-
stellen in einen Text irgendwelche Suchwoerter nur
noch dann gefunden werden konnten, wenn man bei der
Suche muehselig alle evtl. vorkommenden Backslashes
mit angab). Aber artikuliert hat's ueber die Jahre
hinweg keiner. Oder? Im Klartext: Wir haetten die
Funktion schon laengst haben koennen, wenn wir sie
uns nur schon frueher gewuenscht haetten...
Wie auch immer: In etlichen Unterhaltungen ueber
das Thema, ueber die Diskussion in der Liste sowie
ueber die Frage und die Erlaeuterungen von Herrn
Schaelkle hat sich in mir der Verdacht verfestigt,
dass es gleich mehrere Missverstaendnisse und Un-
klarheiten ueber die Implikationen der Funktion
gibt. Sie sind vorderhand ganz pragmatischer Natur.
Gegeben sei folgende Eingabe:
---------------------------------------------------
Text Wort Text #/+Joh#/-a#f+n#f-ne#/+s#/- Wort
Text Wort #/+Jo#/-han#/+nes#/- Text Wort Text
#/+Jo#/+h%/an#/+n%\es#/- Wort Text Wort
#/+Johannes#/- Text Wort Text
----------------------------------------------------
Man beachte, dass dabei auch Kodierungsfehler (z.B.
"#/+Jo#/+h%/an#/+n%\es#/-") enthalten sind. Darin soll
der Name 'Johannes' gesucht werden, natuerlich *unab-
haengig* von evtl. vorkommenden Zeichenformatierungen
und Akzentkodierungen. Gehen wir vorerst ferner davon
aus, dass *ein* Prozentzeichen in der Zeigeanweisung
die Akzente und '#.' uebergeht und *zwei* Prozentzei-
chen ausserdem die evtl. vorkommenden Zeichenformatie-
rungen und Klammern. Die Anweisung muesste demzufolge
lauten:
zn,,%%,|Johannes|
Die Frage, die sich stellt, besteht nun aus zwei Teilen:
a) Was *wird* angezeigt?
b) Gibt es Gruende, das Resultat *anders* auszugeben?
Letztere war, wenn ich's richtig verstanden habe, das
eigentliche Anliegen der ersten Mail von Herrn Schaelkle.
Im Beispieltext oben wird in der Tat jedes Vorkommen
des Suchworts 'Johannes' gefunden. ABER: Manche Zeichen-
formatierungen werden ebenfalls hervorgehoben, andere
nicht. Ich gebe im folgenden die angezeigten Treffer,
wobei ich zur Kennzeichnung von Beginn und Ende der Her-
vorhebung "== ... ::" verwende:
---------------------------------------------------
Text Wort Text ==#/+Joh#/-a#f+n#f-ne#/+s#/-:: Wort
Text Wort ==#/+Jo#/-han#/+nes#/-:: Text Wort Text
#/+==Jo#/+h%/an#/+n%\es#/-:: Wort Text Wort
#/+==Johannes::#/- Text Wort Text
----------------------------------------------------
Man sieht: Die Zeichenformatierungen *im Innern* des
gesuchten Worts werden *immer* mit angezeigt, die am
Anfang und am Ende aber *nicht* immer.
- Leicht zu verstehen ist "#/+==Johannes::#/-": Das
Suchwort wird als ganzes innerhalb einer Zeichenfor-
matierung gefunden, deren Anfang und (komplementaeres)
Ende ausserhalb des Suchworts stehen; also werden sie
aus der Hervorhebung ausgespart.
- Danach ist umgekehrt auch die Logik nachzuvollzie-
hen, die zu "==#/+Joh#/-a#f+n#f-ne#/+s#/-::" und zu
"==#/+Jo#/-han#/+nes#/-::" fuehrt: Die Formatierungen
beziehen sich nicht auf das Suchwort als ganzes, son-
dern auf *Teile* des Suchworts, also werden sie auch
am Beginn und am Ende des gefundenen Suchworts hervor-
gehoben.
- Bei "#/+==Jo#/+h%/an#/+n%\es#/-::" ist das zumindest
auf den ersten Blick nicht ganz so einfach. Dass
"#/+n%\es#/-" hervorgehoben wird, entspricht der eben
beschriebenen Logik. Fuer das '#/+' am Wortanfang fin-
det das Programm im Innern des Suchworts kein entspre-
chendes Ende, also spart es die Kodierung aus der Her-
vorhebung aus.
Die Frage von Herrn Schaelke war: Gibt es gute Gruende,
das genau *so* zu handhaben, oder sprechen andere Gruen-
de dafuer, Formatierungen am Beginn und am Ende des ge-
suchten Wortes ins Suchergebnis zu integrieren, sie
also ebenfalls hervorzuheben?
Bevor Sie die Frage pro oder contra beantworten (oder
sich zu der Auffassung durchringen, dass die Debatte
letztlich ein Streit um des Kaisers Bart ist), sollten
Sie sich freilich eine sekundaere Implikation klarma-
chen, die zumindest ich zuerst nicht bedacht habe:
Suchzeichenfolgen koennen ja genauso auch in Austau-
scheanweisungen vorkommen. Was passiert also, wenn
man die Anweisung
a,,%%,|Johannes|Johannes|
gibt? Die scheinbar nicht sehr sinnvolle Anweisung
macht - natuerlich - aus "#/+Joh#/-a#f+n#f-ne#/+s#/-"
die neue Zielzeichenfolge "Johannes", entfernt also
alle Zeichenformatierungen, ditto aus
"#/+Jo#/-han#/+nes#/-" -> "Johannes", ditto aus
"#/+Jo#/+h%/an#/+n%\es#/- -> "#/+Johannes", ditto aus
"#/+Johannes#/-" -> "#/+Johannes#/-"
Ich denke, das ist, mit einem bisschen Nachdenken, gut
nachzuvollziehen. ABER: Was soll das Programm tun, wenn
in eine solche Austauscheanweisung auch noch Rueckver-
weise - etwa der Form "a,,%%,|Johannes|>=01>=05<=01|" -
eingebaut werden? Sollen dann die Formatiereanweisungen
und Akzente, die zu dem betr. gefundenen Element (in
diesem Fall: Buchstaben) gehoeren, in die Zielzeichen-
folge mit ausgegeben werden oder nicht?
Ich meine, dass die eventuellen Konsequenzen einer
solchen Austauscheanweisung so schwerwiegend sein koen-
nen, dass der Programmautor bei der Verwendung von
"a,,%,..." und "a,,%%,..." den Rueckverweis unterbin-
den (= gar nicht erst zulassen) sollte. Das gleiche
koennte ubrigens auch schon bei der Zeigeanweisung
zweckmaessig sein - aber dort ueberblicke ich noch
nicht so ganz, wie zweckmaessig die Entscheidung pro
oder contra jeweils sein koennte.
Sind damit alle Klarheiten endgueltig beseitigt?
In der Hoffnung auf weitere Stellungnahmen zur Frage
von Herrn Schaelkle gruesst in die Runde
Michael Trauth
---------------------------------------------------------------
Dr. Michael Trauth e-mail: trauth at uni-trier.de
Rechenzentrum office: Tel. 0651-201-3413
der Universitaet Fax 0651-201-3921
Universitaetsring secretary: Tel. 0651-201-3417
D-54286 Trier
---------------------------------------------------------------
Mehr Informationen über die Mailingliste Tustep-Liste