Latex Makros definieren

OP #868039
Lesenswert?
• ▲
▼
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.
OP #868062
Lesenswert?
• ▲
▼
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?
Gast #868071
Lesenswert?
• ▲
▼
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}
OP #868086
Lesenswert?
• ▲
▼
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.
Gast #868388
Lesenswert?
• ▲
▼
> 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}
Gast #869535
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.