PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \let-analogon für einzelne character



schoppenhauer
27-11-2006, 00:32
Hollerö.

Ich suche gerade nach einem Befehl, der analog zu \let ist... aber:

wenn ich "\let\bla= " mache, wird das leerzeichen (und beliebig viele) übersprungen. genau das will ich NICHT! Ich will, dass \bla mit dem character belegt wird, und dann mit ner if-anweisung auch \bla mit jedem character vergleichen können (sprich: ich brauch wohl auch dafür was anderes)...

irgendwie muss sowas gehen... also dass man auch sonderzeichen bekommt... mir stellt sich nur die frage: wie? Weiß das jemand?

rais
27-11-2006, 15:57
Moin moin,


wenn ich "\let\bla= " mache, wird das leerzeichen (und beliebig viele) übersprungen. genau das will ich NICHT! Ich will, dass \bla mit dem character belegt wird, und dann mit ner if-anweisung auch \bla mit jedem character vergleichen können (sprich: ich brauch wohl auch dafür was anderes)...
\defineverbatimstring klingt vielversprechend... hab ich hier (http://groups.google.de/group/de.comp.text.tex/browse_thread/thread/54ea03a93e59528/12b181bf4b2dc9f6?lnk=gst&q=leerzeichen+dateiname&rnum=14&hl=de#12b181bf4b2dc9f6)
gefunden ;)
MfG,

schoppenhauer
11-06-2007, 00:51
Hm... Nein... Das hilft mir nicht wirklich weiter.

Es muss doch irgendeine Alternative zu \let geben... also auch \let ... = \verb bringt nix.

sommerfee
11-06-2007, 08:03
Vielleicht ist \chardef was für dich?

Liebe Grüße,
Axel

schoppenhauer
11-06-2007, 08:57
Sieht auf jeden Fall mal besser aus als \let... Werd ich mal probieren...

Lustigerweise findet man im Google zu solchen Befehlen zwar wahnsinnig viel, aber einfach mal irgendwie sowas von wegen Syntax und Bedeutung und vielleicht verwandte Befehle, die so aehnlich sind (wie in ner gescheiten Befehlsreferenz)... Fehlanzeige...

countbela666
11-06-2007, 09:29
Lustigerweise findet man im Google zu solchen Befehlen zwar wahnsinnig viel, aber einfach mal irgendwie sowas von wegen Syntax und Bedeutung und vielleicht verwandte Befehle, die so aehnlich sind (wie in ner gescheiten Befehlsreferenz)... Fehlanzeige...Im Anhang zu Norbert Schwarz' Einführung in TeX (http://www.ruhr-uni-bochum.de/www-rz/schwanbs/TeX/einfuehrung-in-tex.pdf) gibt's ein Verzeichnis der plain-TeX-Befehle. Über dessen Vollständigkeit und Aktualität kann ich aber nichts sagen.

Grüße
Marcel

sommerfee
11-06-2007, 09:39
Ansonsten gibt es noch das IMHO sehr gute "TeX by Topic, A TeXnician's Reference" von Victor Eijkhout online:

http://www.eijkhout.net/tbt/

Liebe Grüße,
Axel

bischi
11-06-2007, 10:09
Das kannte ich noch gar nicht... Merci für den Link ;)

MfG Bischi

schoppenhauer
11-06-2007, 20:55
Hm... Also \chardef erwartet nach dem = eine Zahl... und ich will doch einfach nur, dass nur das nächste Zeichen eingelesen wird... ein Zeichen. Ein einfaches Zeichen. Das muss doch irgendwie möglich sein. Gibts denn wenigstens ne Möglichkeit, meinetwegen einen Befehl \charnumber oder so, der einem die Nummer des nächsten Characters zurückgibt? Also das würde ja bereits reichen, um \chardef zu verwenden, nehm ich an.

sommerfee
11-06-2007, 21:22
Kannst du ein bischen konkreter werden? Denn um ein "Zeichen einzulesen", gibt es sehr viele Möglichkeiten, z.B.:

- Makro mit Parameter (wenn der Parameter nicht in {} eingebettet wird, wird ja einfach das nächste Zeichen genommen)

- \@car (definiert im LaTeX-Kernel, ltxdefns.dtx) expandiert zum ersten Zeichen/Token einer gegebenen Zeichen/Tokenkette

- \futurelet (Anwendung: Siehe z.B. \@ifnextchar & \@ifstar)

- ...

Man muß für eine reine Makrosprache (wie TeX) anders denken als bei einer prozeduralen Programmiersprache, ansonsten wird man verrückt. :D Es erinnert mich immer an den Spielfilm "Firefox" (siehe http://de.wikipedia.org/wiki/Firefox_(Film)) wo Clint Eastwood eingebleut wird "You have to think Russian!". Ähnlich ist es bei TeX/LaTeX, mittlerweile bekomme ich aber den Wechsel zwischen TeX und C++ ganz gut hin, hoffe ich zumindest ;)

Lese doch einfach mal ein wenig in den beiden hier genannten TeX-Büchern/PDFs, vielleicht kommt dir dann die eine oder andere Idee...

Liebe Grüße,
Axel

schoppenhauer
11-06-2007, 21:27
Kannst du ein bischen konkreter werden? Denn um ein "Zeichen einzulesen", gibt es sehr viele Möglichkeiten, z.B.:Ich hab doch oben recht konkret gesagt, was ich will... An sich ist \let\next=... in ordnung, nur, dass es leerzeichen ignoriert, und genau das ist es, was ich nicht will, ich will dasselbe wie die \let-funktion, nur so, dass sie auch leerzeichen ausliest und nicht einfach ignoriert.

sommerfee
11-06-2007, 21:42
Ich hab doch oben recht konkret gesagt, was ich will... An sich ist \let\next=... in ordnung, nur, dass es leerzeichen ignoriert, und genau das ist es, was ich nicht will, ich will dasselbe wie die \let-funktion, nur so, dass sie auch leerzeichen ausliest und nicht einfach ignoriert.

Verstehe ich nicht. \let kopiert das Token nach dem (optionalen) =, welches man explizit dahinter schreiben muß. Ich kann mir keinen Reim daraus machen, warum man möchte, daß Leerzeichen hier nicht ignoriert werden, es sei denn, man möchte einem Makro genau ein Leerzeichen zuweisen, was aber z.B. mit \chardef ginge. Sorry, ich stehe total auf dem Schlauch, für mich ist das etwa so, als würde man ein "a = 1;" in C wollen, welches keine Leerzeichen hinter dem = ignoriert...

Wenn das Zeichen aus dem aktuellen Token-Strom entnommen werden soll, dann ist \let sowieso schlecht. Dafür nimmt man dann AFAIK entweder ein eigenes Makro oder \futurelet oder ..., und dort werden Leerzeichen nicht ignoriert, zumindest solange sich TeX nicht in einem passenden Modus befindet und \obeyspaces nicht gesetzt ist.

Liebe Grüße,
Axel