PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : expand \input?



kosmo
02-07-2013, 19:15
Hi, ich versuche gerade ein package zu erweitern.
Aktuell habe ich das Problem, dass ich die Daten, die ich in eine externe Datei geschrieben habe, nicht wieder richtig auslesen kann.

Gegeben sei z.B. var.txt mit Inhalt 3.14159, wenn ich jetzt \long\gdef\hierstehteinName{\input{var.txt}} in der vom Paket bereitgestellten Umgebung verwende, kann ich z.B. nicht \num{\hierstehteinName} verwenden, deklariere ich im Header aber \newcommand{\bla}{3.1111}, so lässt sich \num{\bla} problemlos verwenden.

Ich vermute mal ganz stark, dass ich an der richtigen Stelle expandieren müsste, aber ich bin scheinbar nicht in der Lage \expandafter richtig zu setzen. Hätte mir da jemand vielleicht eine Idee?

Die andere Frage ist allgemeiner Natur - Kann ich in (La)tex einen neuen Befehl so definieren, dass er im Namen Teile einer anderen Variablen enthält?
Also etwas a la
\def\name{a}
\def\gnuvar"\name"{...}

wobei der zweite Befehl mit \gnuvara aufgerufen werden könnte.

Vielen Dank schonmal & noch einen schönen Abend,
kosmo

mechanicus
02-07-2013, 19:27
Hi,

bevor du dich mit interna beschäftigst, solltest du verstehen, was du eigentlich tust:


\long\gdef\hierstehteinName{\input{var.txt}}
macht erstmal keinen Sinn, denn \long wirkt sich nur auf Argumente aus, \global ist für mich hier auch nicht erkennbar. Was du evtl. willst ist `\edef`.

Die Bedeutung ist hier erklärt: http://texwelt.de/blog/wie-definiere-ich-eigene-kommandos/

Um mit \num zu arbeiten (ich denke du meinst num von siunitx), muss das Argument expandierbar sein. Deswegen sollte man solche Anwendungen mit \DeclareExpandableDocumentCommand definieren.


Bevor wir weitermachen, was genau möchtest du überhaubt erreichen. Ein Minimalbeispiel ist dabei sehr hilfreich.

http://texwelt.de/wissen/fragen/569/was-ist-ein-vollstandiges-minimalbeispiel-oder-kurz-vm-und-wie-erstelle-ich-dieses



Marco