Makro mit variabler Anzahl an Argumenten

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


t0biK_
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 15. Okt 2024, 21:22

Makro mit variabler Anzahl an Argumenten

Beitrag von t0biK_ »

Hi zusammen,

ich bin gerade dabei mir ein Makro zu schreiben. Ich will eine variable Anzahl an Wörtern durch Bindestriche und einem reduzierten horizontalen Abstand trennen. Das Problem, das ich nun habe, ist der Bindestrich nach dem letzten Wort. Habt ihr eine Idee wie ich den Bindestrich wegbekomme. Hab schon einiges mit if-Schleifen versucht, bin aber kläglich gescheitert. Bin dankbar für eure Hilfe.
\documentclass{article}

% Paket für erweiterte Argumentverarbeitung
\usepackage{xparse} 

% Definition des Makros
\NewDocumentCommand{\hyphenatewords}{>{\SplitList{,}}m}{%
    \ProcessList{#1}{\hyphenatewordhelper}%
}

\newcommand{\hyphenatewordhelper}[1]{%
    #1-\hspace{-0.3ex}%
}

\begin{document}

\section*{Beispiel für \texttt{\textbackslash hyphenatewords}}

Hier ist eine Demonstration des Makros:

\hyphenatewords{Haus,Baum,Wiese,Sonne}

Das Ergebnis sollte wie folgt aussehen: Haus-\hspace{-0.3ex}Baum-\hspace{-0.3ex}Wiese-\hspace{-0.3ex}Sonne

\end{document}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4286
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: Makro mit variabler Anzahl an Argumenten

Beitrag von u_fischer »

\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\hyphenatewords}{m}
 {
   \clist_use:nn{#1}{-\hspace{-0.3ex}}
 }
\ExplSyntaxOff

\begin{document}

\section*{Beispiel für \texttt{\textbackslash hyphenatewords}}

Hier ist eine Demonstration des Makros:

\hyphenatewords{Haus,Baum,Wiese,Sonne}

\end{document}

Antworten