% \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 %\NeedsTeXFormat{LaTeX2e}[2003/12/01] %\ProvidesPackage{robustcommand} % [2006/03/23 v0.1 Robuste Kommandos (PE)] % %<*driver> \documentclass[draft,ngerman]{ltxdoc} \usepackage{robustcommand} \usepackage{pauldoc} \begin{document} \DocInput{robustcommand.dtx} \end{document} % % \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 % % \end{macrocode} % % \Finale %\endinput %%% Folgendes ist nur für meinen Editor. %%% %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: