Makro mit variabler Anzahl an Argumenten

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: Makro mit variabler Anzahl an Argumenten

Re: Makro mit variabler Anzahl an Argumenten

von u_fischer » Di 26. Nov 2024, 22:45

\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}

Makro mit variabler Anzahl an Argumenten

von t0biK_ » Mo 25. Nov 2024, 21:36

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}

Nach oben