Makros mit Suffix erzeugen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Makros mit Suffix erzeugen

Re: Makros mit Suffix erzeugen

von MeganovaBass » Sa 4. Jul 2020, 14:10

Hey,

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

Re: Makros mit Suffix erzeugen

von MoeWe » Sa 4. Jul 2020, 14:02

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}

Makros mit Suffix erzeugen

von MeganovaBass » Sa 4. Jul 2020, 13:47

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}

Nach oben