Mehrmals auf ein

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Bebowi
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: So 28. Aug 2016, 17:00

Mehrmals auf ein

Beitrag von Bebowi »

Hallo liebes Forum,

ich habe das folgende Problem wo ich keine Lösung zu finde. Vielleicht verstehe ich die Lösungen aber auch nur nicht wenn ich sie gefunden habe, da ich noch nie in die Tiefe von LaTeX gegangen bin.

Ich möchte moderncv verwenden und hier einiges nach meinen Vorstellungen anpassen. Hat soweit auch alles geklappt, jedoch möchte ich es auch elegant lösen.

Nachdem ich den namen eingegeben habe, finde ich keine Möglichkeit auf diese Attribute zuzugreifen.
\documentclass[a4paper, 11pt]{moderncv}

\name{Benjamin}{Bock}

\newcommand{\Vorname}[1]{#1}

\begin{document}

\Vorname{hier soll etwas stehen um #1 von \name zu liefern}

\end{document}
So sollte es in etwa gehen. Leider finde ich keinen Weg wie es umzusetzen wäre. Sollte es möglich sein bin ich für einfache Lösungswege oder gute erklärungen offen. Gerne auch geeignete Quellen.

DADABBI

Beitrag von DADABBI »

Ist es aber nicht. moderncv ist leider so gut wie gar nicht dokumentiert¹, so dass man in den Quellcode schauen muss, um zu sehen, was es eigentlich tut:
moderncv hat geschrieben:
\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
Demnach setzt \name die beiden Makros \@firstname und \@lastname. Dies sind allerdings interne Makros. Man kann darauf nur zwischen \makeatletter und \makeatother oder via \csname …\endcsname zugreifen, also beispielsweise per:
% Code für die Dokumentpräambel:
\makeatletter
\newcommand*{\firstnamevalue}{\@firstname}
\newcommand*{\lastnamevalue}{\@lastname}
\makeatother
Dann kannst du später im Dokument einfach \firstnamevalue und \lastnamevalue verwenden.


1 Deshalb verwende ich diese Klasse auch nie.

Bebowi
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: So 28. Aug 2016, 17:00

Beitrag von Bebowi »

Vielen Dank, genau danach habe ich gesucht. Das mit den Makros hatte ich schon gefunden, aber das mit dem \makeatletter war es was mir fehlte.

Das hätte ich wohl aus dem Code auch nie herauslesen können.

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Clemens
Paketauthor

Antworten