File: robustcommand.dtx

package info (click to toggle)
texlive-extra 2022.20230122-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,466,588 kB
  • sloc: perl: 398,710; xml: 35,871; python: 29,125; cs: 25,850; sh: 17,610; makefile: 17,304; ansic: 15,490; java: 12,811; javascript: 9,898; lisp: 1,755; csh: 1,129; ruby: 1,072; awk: 151; tcl: 142; pascal: 138; cpp: 41; sed: 36; haskell: 5
file content (137 lines) | stat: -rw-r--r-- 4,467 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
% \iffalse meta-comment
%
%%  (C) 2006 Paul Ebermann
%%
%%   Package robustcommand - robuste Kommandos, die nicht
%% automatisch berschreiben.
%%
%%   Die Datei robustcommand.dtx sowie die dazugehrige
%%   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
%%   spter (nach Wahl des Verwenders).
%%
%%   Der 'maintenance-status' ist (zur Zeit) 'author-maintained'.
%%   
%%   Das heit u.a., die Dateien drfen 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 gehrt 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 schliet diese Lcke 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 enthlt '@'-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 berprfung 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 fr meinen Editor.
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End: