Ausgehend von der Antwort von Clemens auf diese Frage würde ich gerne wissen, warum das folgende Beispiel den Fehler Code, hier editierbar zum Übersetzen:
liefert und wie man den Fehler beheben kann. Open in Online-Editor Code, hier editierbar zum Übersetzen:
Ziel ist es, dass Update: Wenn ich |
Die Fehlermeldung ist einer der typischen beim Zerbrechen eines Befehls bei der Expansion. In der Tat hilft es hier auch, den Befehl Open in Online-Editor Code, hier editierbar zum Übersetzen:
Die robuste Deklaration ist auch deshalb sinnvoll, weil der Befehl zuvor bereits robust war, und erst durch die Umdefinierung mit Code, hier editierbar zum Übersetzen: Wann immer die \show\foo als Definition eines Makros \protect \foo . (man beachte die zwei Leerzeichen vor dem Punkt) ausgibt, handelt es sich um ein robust deklarierten Befehl.
Allerdings genügt in diesem Fall auch das nicht. Wir müssen nun also zusätzlich dafür sorgen, dass die Umdefinierung erst dann aktiv wird, wenn die Schrift bereits geladen wurde. Die Schrift wird spätestens dann geladen, wenn sie das erste Mal verwendet wird. Um genau dafür zu sorgen, können wir beispielsweise mit Open in Online-Editor Code, hier editierbar zum Übersetzen:
Das führt dann auch wie erwartet zu Tatsächlich würde es jetzt auf den ersten Blick sogar genügen, Vielen Dank für die Erklärung. Das Ergebnis passt aber noch nicht, denn das Z wird nach wie vor mit Doppelstrich gedruckt.
(06 Mär '16, 11:02)
tom75
Ja, das Ganze ist noch viel schlimmer als ich dachte. Siehe meine erweiterte Antwort.
(06 Mär '16, 12:31)
saputello
Das klingt kompliziert. Warum geht es mit
(06 Mär '16, 13:36)
tom75
@tom75: Weil dann
(06 Mär '16, 15:06)
saputello
@saputello: Welche Variante ist die sauberere? Deine Lösung oder einfach
(06 Mär '16, 15:09)
tom75
Ergebnis 5 von 6
show 1 more comments
|