Ich beschäftige mich gerade mit LateX. Mein Frage ist wahrscheinlich so trivial und deshalb hab ich nichts dazu gefunden. Ist es irgendwie möglich diese 2 Makros zu erzeugen? \newcommand{\1}{343434} \newcommand{\10}{10230} Bei dieser Erzeugung ist halt das Problem, das er bei "\newcommand{\10}" rummeckert, da er ja schon ein Makro "\1" definiert hat. Da es sich um über 100 Makros handelt und diese von einem PC Programm generiert werden, ist eine "normale" Namensgebung etwas umständlich.
Hast du das schon mal so probiert? \newcommand{\001}{343434} \newcommand{\010}{10230}
bringt auch nichts, da er ja mit beiden Befehlen das Makro "\0" erzeugt und nicht wie es sein sollte die Makros "\001" und "\010"
hab auch schon \newcommand{\1r}{343434} \newcommand{\10r}{10230} dachte mit nem Char am Ende nimmt er es evtl. als kompletten Makronamen. So kommt beim kompilieren der LateX Datei allerdings der Fehler Missing \begin{document}! Jmd eine Ahnung warum er zB. "\10r" nicht als Makronamen will?
Folgender Code funktioniert bei mir. A steht für 0, B steht für 1. Die Zahl wird also zunächst ins Binärformat gewandelt, dann wird 0 durch A und 1 durch B ersetzt. Dann noch ein ulmer davor (falls ein Name entsteht, der schon verwendet wird) und es funktioniert. \documentclass[12pt]{article} \pagestyle{empty} \newcommand{\ulmerA}{343434} \newcommand{\ulmerB}{10230} \begin{document} \ulmerA \ulmerB \end{document}
Hab gerade in einem LateX Forum erfahren, das ein Makroname aus "\" + Buchstaben besteht. Er darf keine Ziffern enthalten. Dann muss ich die Makronamen halt wie Zehnbauer schreibt umwandeln. Wird dann zwar alles etwas länger aber geht scheinbar nicht anderst :( Bzw. halt irgend eine Umwandlung meiner Zahl in Buchstaben, das überleg ich mir dann morgen mal. Jetzt ist Feierabend.
> Wird dann zwar alles etwas länger aber geht scheinbar nicht anderst
Ist doch nicht so schlimm. Hier sind zwei Varianten (letterizeAZ und
letterizeAJ), eine Zahl in einen String aus Buchstaben zu
konvertieren:
1 | #include <stdio.h> |
2 | #include <limits.h> |
3 | |
4 | // Integer-Zahl -> eindeutiger String aus max. 7 Buchstaben
|
5 | char *letterizeAZ(unsigned int n, char result[]) { |
6 | char *cptr = result; |
7 | do
|
8 | *cptr++ = 'A' + n%26; |
9 | while(n /= 26); |
10 | *cptr = '\0'; |
11 | return result; |
12 | }
|
13 | |
14 | // Integer-Zahl -> eindeutiger String aus max. 10 Buchstaben
|
15 | char *letterizeAJ(unsigned int n, char result[]) { |
16 | char *cptr = result; |
17 | sprintf(result, "%u", n); |
18 | while(*cptr) |
19 | *cptr++ += 'A' - '0'; |
20 | return result; |
21 | }
|
22 | |
23 | // Test mit verschiedenen Zahlenwerten
|
24 | int main(void) { |
25 | static unsigned int values[] = { 0, 1, 100, 10000, UINT_MAX }; |
26 | char str[11]; |
27 | int i; |
28 | |
29 | printf("letterizeAZ:\n"); |
30 | for(i=0; i<sizeof values / sizeof(int); i++) |
31 | printf("\\def\\ulmer%s{blabla}\n", letterizeAZ(values[i], str)); |
32 | printf("\nletterizeAJ:\n"); |
33 | for(i=0; i<sizeof values / sizeof(int); i++) |
34 | printf("\\def\\ulmer%s{blabla}\n", letterizeAJ(values[i], str)); |
35 | return 0; |
36 | }
|
Ausgabe:
1 | letterizeAZ: |
2 | \def\ulmerA{blabla} |
3 | \def\ulmerB{blabla} |
4 | \def\ulmerWD{blabla} |
5 | \def\ulmerQUO{blabla} |
6 | \def\ulmerVXLRMXN{blabla} |
7 | |
8 | letterizeAJ: |
9 | \def\ulmerA{blabla} |
10 | \def\ulmerB{blabla} |
11 | \def\ulmerBAA{blabla} |
12 | \def\ulmerBAAAA{blabla} |
13 | \def\ulmerECJEJGHCJF{blabla} |
jo das erstellen ist an sich net schwer, muss nur halt das komplette LateX Document durchgehn und dort die Makros ändern. Bissl Fleißarbeit^^
ok hab grad erfahren, das es "sinnvolle" makronamen sein sollten ^^ also doch alles von hand eingeben, freu mich jetzt schon ^^
warum packst du nicht einfach einen parameter zum makro, den du mit dann mit den messwerten füllst? dann könntest du in der vorlage die parameter bereits mit einem platzhalter füllen und mit c++ einfach der reihe nach die platzhalter durch die entsprechenden werte ersetzen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.