Makros mit Suffix erzeugen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


MeganovaBass
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Do 24. Okt 2013, 23:40

Makros mit Suffix erzeugen

Beitrag von MeganovaBass »

Hallo Leute,

ich habe mehrere Befehle, die dieselbe Endung haben. In meinem Beispiel lauten die Endungen "Michael" und "Alex". Die Befehle sind beispielshaft \VornameMichael und \NachnameMichael. Diese liefern, wie der Name es andeutet, den Vor- und Nachnamen von Michael. Ich hätte gerne einen Befehl (\Hallo), der beides gleichzeitig macht und zwar in der Form: \Hallo{Michael}. Siehe hierzu meinen Quellcode.

Der Befehl \Hallo soll für verschiedene Namen funktionieren, daher das Argument und daher soll er nicht wie folgt aussehen: \VornameMichael\ \NachnameMichael. Auf die Weise, wie er bei mir definiert ist, spuckt LaTeX einen Fehler aus. Ich weiß auch, woran es liegt, aber ich habe keine Ahnung, wie ich diese Idee, die ich habe, umsetzen kann. Es soll resultieren: "Die Personen heißen Michael Tester und Alex Mustermann." Hoffentlich kann mir da jemand helfen.

\documentclass[ngerman,11pt,a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[intlimits]{amsmath}
\usepackage{xcolor,xurl,calc,tikz}
\usepackage[a4paper,outermargin=3cm,innermargin=2cm]{geometry}
\usepackage{hyperref}

%Meine definierten Befehle.
\newcommand{\VornameMichael}{Michael}
\newcommand{\NachnameMichael}{Tester}
\newcommand{\VornameAlex}{Alex}
\newcommand{\NachnameAlex}{Mustermann}

%Kombinierter Befehl.
\newcommand{\Hallo}[1]{\Vorname#1\ \Nachname#1}

\begin{document}
Die Personen heißen \Hallo{Michael} und \Hallo{Alex}.
\end{document}

MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Makros mit Suffix erzeugen

Beitrag von MoeWe »

Du hast es fast. Wenn Du aus einem "String" einen Befehlsnamen zusammenbauen möchtest, brauchst Du \csname <String>\endcsname, was LaTeX dazu bringt das Makro mit dem Namen \<String> auszuführen.

Je nach gewünschtem Fehler-Handling kann man da noch mehr machen. \csname <String>\endcsname definiert den Befehl und setzt ihn auf \relax, falls es den Befehl nicht gibt. Es gibt also keinen Fehler, wenn Du Kokolores eingibst. Da wird dann unter Umständen etoolbox ganz praktisch, das hat nützliche Helfer für diese Dinge

\documentclass{article}

%Meine definierten Befehle.
\newcommand{\VornameMichael}{Michael}
\newcommand{\NachnameMichael}{Tester}
\newcommand{\VornameAlex}{Alex}
\newcommand{\NachnameAlex}{Mustermann}

%Kombinierter Befehl.
\newcommand{\Hallo}[1]{\csname Vorname#1\endcsname\ \csname Nachname#1\endcsname}

\begin{document}
Die Personen heißen \Hallo{Michael} und \Hallo{Alex}.

Und jetzt \Hallo{Grindolin}, oha!
\end{document}

MeganovaBass
Forum-Anfänger
Forum-Anfänger
Beiträge: 33
Registriert: Do 24. Okt 2013, 23:40

Re: Makros mit Suffix erzeugen

Beitrag von MeganovaBass »

Hey,

danke für die schnelle Antwort. Es funktioniert nun. Es ist echt lächerlich, wie simpel das war. Und wieder etwas dazugelernt, danke. :)


Antworten