Seite 1 von 1

Optionales Argument in Klammern (wenn gesetzt)

Verfasst: Do 29. Sep 2011, 22:17
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

Verfasst: Fr 30. Sep 2011, 08:37
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

Verfasst: Fr 30. Sep 2011, 10:25
von schmendrich
Wunderbar,

dankeschön.

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

Grüße
schmendrich