Ich möchte gerne einen eigenen Befehl erstellen, der in Abhängigkeit eines optionalen Parameters etwas ausgibt. Ich denke, mit dem Minimalbeispiel wird es deutlicher: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} %\newcommand\MeinBefehl[1]{if "Y" then \textcolor{red}{123} else \textcolor{green}{123}} \begin{document} % \MeinBefehl[Y] ==> \textcolor{red}{123} % \MeinBefehl ==> \textcolor{green}{123} \end{document} |
Im gezeigten Beispiel könnte man eigentlich ganz einfach ein normales optionales Argument verwenden: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \newcommand*{\MeinBefehl}[1][green]{\textcolor{#1}{123}} \begin{document} \MeinBefehl[red] \MeinBefehl \end{document} Will man unbedingt Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \newcommand*{\MeinBefehl}[1][green]{\textcolor{#1}{123}} \colorlet{Y}{red} \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} Natürlich kann man auch mit Hilfsmakros arbeiten: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \makeatletter \newcommand\MeinBefehl@Y{\textcolor{red}{123}} \newcommand\MeinBefehl@{\textcolor{green}{456}} \newcommand*{\MeinBefehl}[1][]{\@nameuse{MeinBefehl@#1}} \makeatother \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} Da ich für die Hilfemakros interne Namen mit Und wenn man unbedingt ein If-Konstrukt haben will, so bietet Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \newcommand*{\MeinBefehl}[1][]{% \ifstr{#1}{Y}{\textcolor{red}{123}}{\textcolor{green}{456}}% } \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} Es gibt diverse weitere Pakete, die conditionals anbieten, beispielsweise Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \usepackage{etoolbox} \newcommand*{\MeinBefehl}[1][]{% \ifstrequal{#1}{Y}{\textcolor{red}{123}}{\textcolor{green}{456}}% } \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} aber auch Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \usepackage{expl3} \ExplSyntaxOn \newcommand*{\MeinBefehl}[1][]{% \str_if_eq:nnTF { #1 } { Y } { \textcolor{red}{123} } { \textcolor{green}{456} } } \ExplSyntaxOff \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} wobei man dann natürlich gleich mal überlegen sollte, ob man die Definition nicht direkt mit Öffne in Overleaf
\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{xcolor} \usepackage{expl3} \usepackage{xparse} \ExplSyntaxOn \NewDocumentCommand{\MeinBefehl} { o } {% \str_if_eq:nnTF { #1 } { Y } { \textcolor{red}{123} } { \textcolor{green}{456} } } \ExplSyntaxOff \begin{document} \MeinBefehl[Y] \MeinBefehl \end{document} Durch die jeweils angegebenen Links findet man auch die relevanten Anleitungen, in denen man die verwendeten Anweisungen unbedingt nachlesen sollte. beantwortet 05 Dez '17, 18:10 gast3 WOW - da habe ich etwas zu studieren. Herzlichen Dank!
(07 Dez '17, 13:36)
dzaic
|
Da Du eine KOMA-Script-Klasse verwendest: Schau mal in der Anleitung nach
\ifstr
. Alternative:etoolbox
.Siehe auch: http://texwelt.de/wissen/fragen/16573