% \iffalse meta-comment
%
%%  (C) 2006 Paul Ebermann
%%
%%   Package robustcommand - robuste Kommandos, die nicht
%% automatisch überschreiben.
%%
%%   Die Datei robustcommand.dtx sowie die dazugehörige
%%   robustcommand.ins sowie die damit generierte
%%   robustcommand.sty stehen unter der
%%   "LaTeX Project Public License" (LPPL, zu finden
%%   unter http://www.latex-project.org/lppl/, sowie
%%   auch in den meisten TeX-Distributionen in
%%   texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
%%   später (nach Wahl des Verwenders).
%%
%%   Der 'maintenance-status' ist (zur Zeit) 'author-maintained'.
%%   
%%   Das heißt u.a., die Dateien dürfen frei vertrieben werden,
%%   bei Änderungen (durch andere Personen als Paul Ebermann)
%%   ist aber der Name der Datei zu ändern.
%
% \fi
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[2003/12/01]
%<package>\ProvidesPackage{robustcommand}
%<package> [2006/03/23 v0.1 Robuste Kommandos (PE)]
%
%<*driver>
\documentclass[draft,ngerman]{ltxdoc}
\usepackage{robustcommand}
\usepackage{pauldoc}
\begin{document}
   \DocInput{robustcommand.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{5}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \changes{v0.0}{2006/03/22}{Erste Fassung}
%
% \GetFileInfo{robustcommand.sty}
%
%
% \title{Das \pack{robustcommand}-Package -- Erweiterungen von \cs{DeclareRobustCommand}\thanks{%
% Dieses Dokument gehört zu \pack{robustcommand}~\fileversion,
% vom~\filedate.}}
% \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}}
%
% \maketitle
%
% \tableofcontents
%
% \section{Benutzerdoku}
%  Im \LaTeX-Kernel gibt es den Befehl '\DeclareRobustCommand', welcher
%  ein robustes Kommando definiert. Leider beachtet dies -- im Gegensatz
%  zu '\newcommand' -- nicht, ob ein entsprechendes Makro schon vorhanden
%  ist, und überschreibt es einfach, so dass man versehentlich Makros
%  überschreiben kann.
%
%  \DescribeMacro{\robust@new@command}
%  Dieses Package schließt diese Lücke mit dem Kommando
%  
%  '\robust@new@command'\marg{kommando}\oarg{param-num}\oarg{default}\marg{defn}
% 
%  Dies definiert \meta{kommando}, falls noch nicht vorhanden, als robustes
%  Makro (mit kurzen Argumenten) mit Definition \meta{defn}. Falls \meta{kommando}
%  schon existiert,  gibt es eine Fehlermeldung.
%
%  Dies ist also wie '\newcommand*' oder '\DeclareRobustCommand*' zu verwenden,
%  eine \emph{Nicht-Stern-Variante} gibt es nicht.
%
%  Der Makro-Name enthält '@'-Zeichen, so dass er nur in Package-Dateien verwendet
%  werden kann. Normalerweise ist er auch sonst nicht notwendig.
%
% \StopEventually{\PrintChanges\PrintIndex}
%
% \section{Implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
%  \begin{macro}{\robust@new@command} \noindent\marg{kommando}\oarg{default}\oarg{params}\marg{defn}
% 
%    \begin{macrocode}
\newcommand*{\robust@new@command}[1]
{%
%    \end{macrocode}
%  Die Überprüfung und Fehlermeldung realisieren wir, indem wir \meta{kommando}
%  einmal mittels '\newcommand*' definieren. Das gibt eine Fehlermeldung, falls
%  \meta{kommando} schon definiert war.
%    \begin{macrocode}
  \newcommand*{#1}{}%
%    \end{macrocode}
%  Ansonsten nutzen wir jetzt einfach '\DeclareRobustCommand*', welches auch noch die
%  weiteren Argumente (\meta{default}, \meta{params}, \meta{defn}) liest.
%    \begin{macrocode}
  \DeclareRobustCommand*{#1}%
}
%    \end{macrocode}
%  \end{macro}
%
%  Das war schon alles.
%    \begin{macrocode}
\endinput
%</package>
%    \end{macrocode}
%
% \Finale
%\endinput


%%% Folgendes ist nur für meinen Editor.
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End: