Seite 1 von 1

Mehrmals auf ein

Verfasst: So 28. Aug 2016, 18:13
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.

Verfasst: So 28. Aug 2016, 19:06
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.

Verfasst: So 28. Aug 2016, 19:18
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.

Verfasst: Di 30. Aug 2016, 08:52
von cgnieder