Ein Befehlsargument, in dem nur bestimmte Zeichen (sagen wir beispielshalber Ich habe eine Umsetzung auf der Grundlage zweier verschiedener expl3-Datenstrukturen (token list und string) versucht, aber beides funktioniert nicht, wie es soll. Bei der String-Variante liegt dies offenbar daran, dass das zweite Argument von Open in Online-Editor Code, hier editierbar zum Übersetzen:
|
Du hast in beiden Definitionen kleine aber wesentliche Fehler. In der Tokenlist-Definition hast Du folgende Zeile: Öffne in Overleaf
Wenn Du die damit definierte Tokenlist mit Öffne in Overleaf
Ändere die Zeile in Öffne in Overleaf
und daraus wird Öffne in Overleaf
Das reicht aber noch nicht. Öffne in Overleaf Code, hier editierbar zum Übersetzen:
und verwenden: Öffne in Overleaf Code, hier editierbar zum Übersetzen:
Das reicht immer noch nicht: in Tokenlists hängt ein Match auch vom Kategoriecode der Zeichen ab. Mit Öffne in Overleaf
ensteht eine Tokenliste, in der alle Zeichen Kategoriecode 12 haben. In den Testvariablen haben sie das mit obiger Definition nicht. Darum ändern wir noch mal: Öffne in Overleaf
Und jetzt klappt der Test. In der String-Variante hast Du ähnliche Fehler: Öffne in Overleaf
Ändere das in Öffne in Overleaf
Außerdem hast Du Öffne in Overleaf
Das vergleicht aber nicht den Inhalt der Variablen Öffne in Overleaf
die Du am besten mit Öffne in Overleaf
bereitstellst. Mit diesen Korrekturen funktioniert Dein Code: Öffne in Overleaf Code, hier editierbar zum Übersetzen:
Im Log: Öffne in Overleaf
Das ganze geht aber auch erheblich leichter: Öffne in Overleaf Code, hier editierbar zum Übersetzen:
Im Log: Öffne in Overleaf
|
Ich würde das mit einer Open in Online-Editor Code, hier editierbar zum Übersetzen:
Der zweite
(23 Mai '16, 22:32)
Cletus
Etwas unschön ist es, dass die Warnung zweimal ausgegeben wird (jeweils mit einem Fragezeichen anstelle des eigentlichen Zeichens), falls das falsche Zeichen ein Umlaut ist. Der Hintergrund ist mir klar: In UTF-8 werden Umlaute anders als gewöhnliche lateinische Buchstaben durch zwei Byte codiert. Aber kann eine moderne, in Unicode-Zeiten entstandene Sprache wie expl3 so etwas nicht angemessener behandeln?
(26 Mai '16, 00:26)
Cletus
|
Sehe ich das richtig, dass Leerzeichen ignoriert werden sollen? Was ist mit komplett leerem Input?
Ja, Leerzeichen stören in diesem Fall nicht und sollen ignoriert werden. Eine leere Eingabe ist dagegen nicht erwünscht/sinnvoll.