Forum: PC-Programmierung Latex Makros definieren


von Sebastian U. (sulmer)


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.

von Werner A. (homebrew)


Lesenswert?

Hast du das schon mal so probiert?
\newcommand{\001}{343434}
\newcommand{\010}{10230}

von Sebastian U. (sulmer)


Lesenswert?

bringt auch nichts, da er ja mit beiden Befehlen das Makro "\0" erzeugt 
und nicht wie es sein sollte die Makros "\001" und "\010"

von Sebastian U. (sulmer)


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?

von C. Zehnbauer (Gast)


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}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Darf denn der Name eines Macros mit einer Ziffer (0..9) beginnen?

von Sebastian U. (sulmer)


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.

von yalu (Gast)


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}

von Sebastian U. (sulmer)


Lesenswert?

jo das erstellen ist an sich net schwer,
muss nur halt das komplette LateX Document durchgehn und dort die Makros 
ändern.
Bissl Fleißarbeit^^

von Sebastian U. (sulmer)


Lesenswert?

ok hab grad erfahren, das es "sinnvolle" makronamen sein sollten ^^ also 
doch alles von hand eingeben, freu mich jetzt schon ^^

von df311 (Gast)


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...

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
Noch kein Account? Hier anmelden.