Optionales Argument in Klammern (wenn gesetzt)

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


schmendrich
Forum-Century
Forum-Century
Beiträge: 136
Registriert: Mo 2. Mär 2009, 19:18

Optionales Argument in Klammern (wenn gesetzt)

Beitrag von schmendrich »

Hallo,

ich möchte gern, daß das optionale Argument eines Befehls in Klammern ausgegeben wird.
Wenn das optionale Argument nicht angegeben wird, soll im Text jedoch kein leeres Klammerpaar erscheinen (siehe Minimalbeispiel).

Wie ist das zu erreichen?
\documentclass{article}
\usepackage{xargs}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}



\newcommandx{\wer}[2][2]{%
#1\\
#2 
}%


\begin{document}

\begin{verbatim}
\newcommandx{\wer}[2][2]{%
#1\\
#2 
}%
\end{verbatim}


\begin{verbatim}
\wer{Hans}[11.02.]
\end{verbatim}



Das Datum in der Hanszeile soll in Klammern gesetzt werden; also so
aussehen:

Hans\\
(11.02.)

Ohne optionales Argument, keine Klammern:

\begin{verbatim}
\wer{Ingo}
\end{verbatim}

Die Ingozeile soll also \emph{nicht} so aussehen:

Ingo\\
()

\end{document}
Grüße
schmendrich

Mechanicus
Forum-Guru
Forum-Guru
Beiträge: 322
Registriert: Mi 8. Okt 2008, 18:41
Wohnort: Hamburg

Beitrag von Mechanicus »

Hi,

mit LaTeX-Mitteln:
%%LaTeX
\makeatletter
\newcommand\wer[1]{%
  #1%
   \@ifnextchar[%]
    {\wer@i}{}%
}
\def\wer@i[#1]{~(#1)}
\makeatother
Paket xparse (bietet noch mehr)
\usepackage{xparse}
%xparse
\NewDocumentCommand\wer{mo}{%
  \IfNoValueTF{#2}{#1}{#1 (#2)}
}
Paket xargs:
\usepackage{xargs}
\newcommandx*\wer[2][2]{%
 \ifx\relax#2\relax
   #1
 \else
   #1 (#2)
 \fi
}
Marco
Personalführung ist die Kunst der Vorgesetzten den Untergebenen so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet.

schmendrich
Forum-Century
Forum-Century
Beiträge: 136
Registriert: Mo 2. Mär 2009, 19:18

Beitrag von schmendrich »

Wunderbar,

dankeschön.

Ich werde Dein letztes Beispiel an meine tatsächlichen Bedürfnisse anpassen.

Grüße
schmendrich

Antworten