mikrocontroller.net

Forum: PC-Programmierung Latex Makros definieren


Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Werner A. (homebrew)
Datum:

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

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: C. Zehnbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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}

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <stdio.h>
#include <limits.h>

// Integer-Zahl -> eindeutiger String aus max. 7 Buchstaben
char *letterizeAZ(unsigned int n, char result[]) {
  char *cptr = result;
  do
    *cptr++ = 'A' + n%26;
  while(n /= 26);
  *cptr = '\0';
  return result;
}

// Integer-Zahl -> eindeutiger String aus max. 10 Buchstaben
char *letterizeAJ(unsigned int n, char result[]) {
  char *cptr = result;
  sprintf(result, "%u", n);
  while(*cptr)
    *cptr++ += 'A' - '0';
  return result;
}

// Test mit verschiedenen Zahlenwerten
int main(void) {
  static unsigned int values[] = { 0, 1, 100, 10000, UINT_MAX };
  char str[11];
  int i;

  printf("letterizeAZ:\n");
  for(i=0; i<sizeof values / sizeof(int); i++)
    printf("\\def\\ulmer%s{blabla}\n", letterizeAZ(values[i], str));
  printf("\nletterizeAJ:\n");
  for(i=0; i<sizeof values / sizeof(int); i++)
    printf("\\def\\ulmer%s{blabla}\n", letterizeAJ(values[i], str));
  return 0;
}

Ausgabe:
letterizeAZ:
\def\ulmerA{blabla}
\def\ulmerB{blabla}
\def\ulmerWD{blabla}
\def\ulmerQUO{blabla}
\def\ulmerVXLRMXN{blabla}

letterizeAJ:
\def\ulmerA{blabla}
\def\ulmerB{blabla}
\def\ulmerBAA{blabla}
\def\ulmerBAAAA{blabla}
\def\ulmerECJEJGHCJF{blabla}

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht 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^^

Autor: Sebastian Ulmer (sulmer)
Datum:

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

Autor: df311 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.