summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pauldoc/pauldoc.dtx
blob: a0b3bb6f6c214f4c815db920500ec4603536f747 (plain)
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
% \iffalse meta-comment
%
%%  (C) 2006-2009 Paul Ebermann
%%
%%   Package pauldoc - Anpassungen für doc für Pauls Package-Dokus.
%%   Die Datei pauldoc.dtx sowie die dazugehörige
%%   pauldoc.ins sowie die damit generierte
%%   pauldoc.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{pauldoc}
%<package> [2009/11/06 v0.5 Pauls Anpassungen fuer doc (PE)]
%
% \changes{v0.2a}{2006/02/23}{'ue' statt 'ü' im Identifikations-String - gibt schönere
%                             Ausgabe bei \cs{listfiles}.}
%
%<*driver>
\nonstopmode
\documentclass[draft,ngerman]{ltxdoc}
\usepackage{pauldoc}
\usepackage{dox}
\doxitem{Option}{option}{Optionen}

\setlength{\IndexMin}{2\IndexMin}
\begin{document}
   \DocInput{pauldoc.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{139}
%
%
% \changes{v0.0}{2006/01/31}{Erste Fassung}
% \changes{v0.1}{2006/02/12}{Erste veröffentlichte Fassung}
% \changes{v0.5}{2009/11/06}{README jetzt in UTF-8}
%
% \GetFileInfo{pauldoc.sty}
%
%
% \title{Das \pack{pauldoc}-Package -- Anpassungen für \pack{doc} für Pauls Package-Dokus\thanks{%
% Dieses Dokument gehört zu \pack{pauldoc}~\fileversion,
% vom~\filedate.}}
% \author{Paul Ebermann\footnote{\texttt{Paul-Ebermann@gmx.de}}}
%
% \maketitle
% \begin{abstract}
%  Dieses Package enthält einige Befehle, welche
%  die Funktion von \pack{doc} an meine Wünsche
%  anpassen.
% 
%  Außerdem werden noch einige gewünschte Pakete
%  geladen sowie einige neue Befehle definiert.
% \end{abstract}
% \tableofcontents
%
%  \changes{v0.4a}{2006/04/05}{Kleinere Änderungen an der Dokumentation.}
%
% \section{Benutzerdoku}
%
%
%  \subsection{Package-Optionen}
%
%  \DescribeOption{chapter}
%  Die Option 'chapter' legt fest, dass Index und Liste der Änderungen
%  in einem eigenen Kapitel (anstatt in einem Abschnitt) beginnen.
%  Dies ist nur in einer Dokumentenklasse sinnvoll, welche
%  überhaupt '\chapter' definiert, etwa den 'book'-artigen Klassen.
%
%  \DescribeOption{section}
%  Die Option 'section' legt fest, dass Index und Änderungsliste in
%  einem Abschnitt beginnen. Dies ist der Vorgabewert.
%
%  \DescribeOption{latin1}
%  Die Option 'latin1' legt fest, dass das Dokument im ISO-8859-1-Format
%  kodiert ist. Dies ist der Vorgabewert.
%  (Die Option wird an das \pack{inputenc}-Paket weitergegeben.)
%
%  \DescribeOption{utf8}
%  Die Option 'utf8' legt fest, dass das Dokument als UTF-8
%  kodiert ist. (Die Option wird an das \pack{inputenc}-Paket weitergegeben.)
%
% \subsection{Neue Makros}
%
%  \DescribeMacro{\ifReferenceExists}\marg{refName}\marg{then}\marg{else}
%
%  Mit diesem Makro kann man, abhängig davon, ob eine bestimmte Referenz
%  mit '\label{}' gesetzt wurde, bestimmten Text ausgeben.
%
%  Falls ein '\ref'\marg{refName} Erfolg hätte, wird \meta{then}
%  ausgewertet, ansonsten \meta{else}.
%  Dies ist nützlich, wenn man im Beschreibungsteil verschiedenen Text
%  aufnehmen will, abhängig davon, ob auch der Implementationsteil
%  mitgesetzt wird -- man kann dann etwa auf einen bestimmten Abschnitt
%  darin verweisen, und andernfalls den Text im Konjunktiv formulieren
%  ("`Wenn der Implementationsteil mit enthalten
%  wäre, könnte man dort jetzt \dots finden."').
%
%  Gegebenenfalls wird erst beim zweiten \LaTeX-Durchlauf der richtige
%  Zweig ausgewertet.
%
%  \noindent\DescribeMacro{\pack}\marg{name}
%
%  In Paketbeschreibungen werden häufiger Paketnamen (der des eigenen
%  Paketes, gelegentlich auch andere Pakete) verwendet. Wie in
%  "`How to Package Your \LaTeX{} Package"' (Scott Pakin, dtxtut.pdf),
%  Abschnitt 3.2, erläutert, setzt man Package-Namen (sofern es dafür
%  nicht ein eigenes Logo gibt) üblicherweise in '\textsf{}' (die
%  serifenlose Schrift der Klasse). Ich bevorzuge einen sprechenderen
%  Namen, daher gibt es jetzt '\pack{pauldoc}' für \pack{pauldoc}.
%
%  \DescribeMacro{\includeLicense}
%  '\includeLicense' bindet die eventuell im \TeX-Suchpfad zu findende
%  Lizenz (LPPL) ein. Dies ergibt -- je nach dem, ob 'section' oder
%  'chapter' als Option gegeben wurde -- ein neues Kapitel oder einen
%  neuen Abschnitt. Durch Neudefinition von\DescribeMacro{\lpplfilename}
%  '\lpplfilename' kann festgelegt werden, welche Datei zu verwenden
%  ist -- als Vorbgabewert ist die bei \LaTeX{} mitgelieferte Datei
%  \texttt{\lpplfilename} im Package festgelegt.
%
%
%  \DescribeMacro{\cmd}\DescribeMacro{\cs}
%  \DescribeMacro{\marg}\DescribeMacro{\oarg}\DescribeMacro{\parg}
%  Diese fünf Makros habe ich aus \pack{ltxdoc} kopiert, damit man sie
%  auch verwenden kann, wenn eine Doku mit einer anderen Klasse formatiert
%  wird (wie bei meiner \pack{alg-script}-Klasse). (Sie sind so formatiert,
%  dass eine andere Definition immer vorgeht.)
%
% '\cmd'\marg{makro} formatiert einen Makronamen. '\cmd{\bla}' ergibt
%  \cmd{\bla}. (Sollte der erste Buchstabe kein '\' sein, wird er
%      damit ersetzt: '\cmd{abc}' ergibt \cmd{abc}.)
%  '\cs'\marg{makro} tut das gleiche -- hier wird allerdings der '\' noch
%  angefügt. Falls '\cmd' mal nicht geht, geht gelegentlich noch '\cs'.
%  '\cs{bla}' ergibt \cs{bla}.
%
%   '\marg{text}' gibt \marg{text} aus. Die Abkürzung steht für
%   "`mandatory argument"'.
%    '\oarg{text}' ergibt \oarg{text} ("`optional argument"').
%    '\parg{text}' ergibt \parg{text} ("`picture mode argument"').
%
%
% \StopEventually{\appendix\PrintChanges\PrintIndex}
%
% \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         \~}
%
% \section{Implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
%  \subsection{Package-Optionen}
%
%  \begin{option}{utf8}
%  \changes{v0.5}{2009/11/03}{Parameter für die Kodierung, wird an
%    \pack{inputenc} weitergegeben.}
%  \begin{option}{latin1}
%  \changes{v0.5}{2009/11/03}{Parameter für die Kodierung, wird an
%    \pack{inputenc} weitergegeben.}
%  \begin{macro}{\pauldoc@ienc}
%  Mi der Option 'utf8' bzw. 'latin1' wähle ich die Kodierung der
%  Dokumentation aus. 'latin1' ist der Default.
%  Die Optionen selbst merken sich ihren Wert einfach in der Variable
%  '\pauldoc@ienc'.
%    \begin{macrocode}
\newcommand*\pauldoc@ienc{}
\DeclareOption{utf8}{
  \def\pauldoc@ienc{utf8}
}
\DeclareOption{latin1}{
  \def\pauldoc@ienc{latin1}
}
\ExecuteOptions{latin1}
%    \end{macrocode}
%  \end{macro}
%  \end{option}
%  \end{option}
%
%  \begin{option}{chapter}
%  '\chapter' für die Index-Überschrift.
%    \begin{macrocode}
\DeclareOption{chapter}{
   \let\pauldoc@indexsec=\chapter
}
%    \end{macrocode}
%  \end{option}
%
%  \begin{option}{section}
%  '\section' für die Index-Überschrift.
%    \begin{macrocode}
\DeclareOption{section}{
   \let\pauldoc@indexsec=\section
}
%    \end{macrocode}
%  \end{option}
%
% \begin{macro}{\pauldoc@indexsec}
%  Wir definieren noch '\pauldoc@indexsec', rufen dann
%  die Vorgabeoption 'section' auf (welche das gleich neu definiert)
%  und verarbeiten die gegebenen Optionen.
%    \begin{macrocode}
\newcommand*{\pauldoc@indexsec}{}
\ExecuteOptions{section}
\ProcessOptions\relax
%    \end{macrocode}
% \end{macro}
%
%  \subsection{geladene Pakete}
%
%  Wir laden das Paket \pack{inputenc} mit Option 'latin1' oder 'utf8' (je
%  nach Paketoption), um Sonderzeichen auch direkt eingeben zu können.
%
% \pack{babel} sorgt für vernünftige deutsche Bezeichnungen.
%    \begin{macrocode}
\RequirePackage[\pauldoc@ienc]{inputenc}
\RequirePackage[ngerman]{babel}
%    \end{macrocode}
%
%  \changes{v0.3}{2006/03/23}{Jetzt mit \cs{usepackage}\protect\linebreak[0]'[T1]{fontenc}'}
%  \pack{fontenc} mit Option 'T1' lädt das T1-Fontencoding, in dem
%  etwa Umlaute direkt aus der Schriftart genommen werden können,
%  anstatt sie mit \"{ } und den Vokalen a, o und u zusammenzusetzen.
%  Dies führt auch zu einer verbesserten Silbentrennung.
%    \begin{macrocode}
\RequirePackage[T1]{fontenc}
%    \end{macrocode}
%
%  \subsection{Diverse Einstellungen}
%  
% Wir wollen natürlich in der Doku Querverweise haben,
% die Änderungen registrieren (für eine entsprechende Liste)
% und im Index mit Zeilennummern arbeiten. Quelltext in der Doku
% wollen wir mit \verb|'| markieren.
%    \begin{macrocode}
\EnableCrossrefs
\RecordChanges
\CodelineIndex
\AtBeginDocument{\MakeShortVerb{\'}\selectlanguage{ngerman}}
%    \end{macrocode}
%  Außerdem sollten Index und Änderungsliste auf deutsch beschriftet
%  werden. Wie benutzen hier für die Überschrift '\@pauldoc@indexsec', was
%  entweder '\section' oder '\chapter' ist.
%  \changes{v0.5}{2009/11/01}{Ä $\Rightarrow$ '\"A' in
%    "`Liste der Änderungen"', und entsprechend für "`Schräggedruckte"'}
%    \begin{macrocode}
\renewcommand{\generalname}{Allgemein}

\GlossaryPrologue{\pauldoc@indexsec{Liste der \"Anderungen}}

\IndexPrologue{

  \pauldoc@indexsec{Index}
   
   Schr\"aggedruckte Nummern verweisen auf die Seite, auf der der
   Eintrag beschrieben ist, unterstrichene Nummern zeigen auf die
   Zeilennummer der Definition, sonstige Zahlen auf die Zeilennummer
   einer Verwendung.

 }
%    \end{macrocode}
% Der Index bekommt nur zwei statt sonst drei Spalten (wir haben einige
% ziemlich lange Makronamen).
%    \begin{macrocode}
   \setcounter{IndexColumns}{2}
%    \end{macrocode}
%
%  \subsection{Neue oder geänderte Makros}
%
%  \subsubsection{Bedingte Anweisungen}
%  \begin{macro}{\ifReferenceExists}\marg{label}\marg{then}\marg{else}
%
%    '\ifReferenceExists' prüft einfach, ob das Makro '\r@'\meta{label}
%     (dort wird die Referenz auf das Label gespeichert), existiert, und
%     wertet entsprechend \meta{then} oder \meta{else} aus.
%    \begin{macrocode}
\newcommand*{\ifReferenceExists}[3]
{%
  \@ifundefined{r@#1}{#3}{#2}%
}
%    \end{macrocode}
%  \end{macro}
%  
%  \subsubsection{Packagenamen}
%  \begin{macro}{\pack}
%  Um Packagenamen wie \pack{pauldoc} vernünftig
%  auszeichnen zu können, dieser Befehl.
%    \begin{macrocode}
   \newcommand*{\pack}{\textsf}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{Logos}
%
%  \begin{macro}{\eTeX}
%  \changes{v0.4}{2006/04/02}{Neu.}
%  Aus 'etex.sty' geklaut -- das \eTeX-Logo.
%    \begin{macrocode}
\newcommand*\eTeX{$\m@th\varepsilon$-\TeX}
%    \end{macrocode}
%  \end{macro}
%
% \subsubsection{Lizenz}
%
%  \begin{macro}{\includeLicense}
%   Die Lizenz wird nur eingelesen, wenn sie auch
%   gefunden wird. Dafür wird der Dateiname,
%   welcher in '\lpplfilename' steht, eingebunden.
%    \begin{macrocode}
   \newcommand*{\includeLicense} {
   \IfFileExists{\lpplfilename}{%
%    \end{macrocode}
%  Zunächst stellen wir die Sprache um (aber nur Silbentrennung etc.,
%  keine Namen), mit dem passenden \pack{babel}-Befehl.
%    \begin{macrocode}
     \begin{otherlanguage*}{english}
%    \end{macrocode}
%  \changes{v0.2}{2006/02/14}{Verwendung einer neuen Version der
%                             LPPL macht Workarounds unnötig.}
%  Um die Lizenz als '\chapter' einzubinden und dann Referenzen
%  darauf im Text verwenden zu können, waren mit der \LaTeX-Version
%  vom 13. Januar 2006 einige Verrenkungen notwendig -- siehe unten.
%
%  Am 10. Februar habe ich einen Vorschlag zur Verbesserung
%  an die LaTeX-Bug-Liste geschickt, das wurde positiv aufgenommen.%
%  \footnote{Siehe \texttt{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3839}.}
%  Ich habe dann von eine verbesserte Version von Frank Mittelbach bekommen,
%  die inzwischen auch veröffentlicht wurde.
%
%  Wir wollen die Abschnitte der Lizenz auch nummeriert
%  (und im Inhaltsverzeichnis) haben, deswegen die Versionen
%   ohne '*'. Falls 'chapter'
%  als Package-Option angegeben wurde, schieben wir außerdem
%  alles eine Ebene höher.
%    \begin{macrocode}
\ifx\pauldoc@indexsec\chapter
  \providecommand*{\LPPLsection}{\chapter}
  \providecommand*{\LPPLsubsection}{\section}
  \providecommand*{\LPPLsubsubsection}{\subsection}
  \providecommand*{\LPPLparagraph}{\subsubsection}
\else
  \providecommand*{\LPPLsection}{\section}
  \providecommand*{\LPPLsubsection}{\subsection}
  \providecommand*{\LPPLsubsubsection}{\subsubsection}
  \providecommand*{\LPPLparagraph}{\paragraph}
\fi
%    \end{macrocode}
%
% Der folgende (auskommentierte) Code sowie die eingerückte
% Dokumentation dazu ist mit der neuen
% Version der Lizenz-Datei nicht mehr notwendig -- ich lasse
% ihn mal trotzdem hier drin, zu Dokumentationszwecken.
% \begin{quotation}\slshape
%  Die Lizenz-Datei (zumindest die mir vorliegende
%  Version) verwendet Unterteilungen ab '\section' --
%  falls in unserer Dokumentation '\chapter' verwendet
%  werden soll (d.h. die entsprechende Option gegeben
%  wurde), stellen wir einen Kapitelbeginn davor.
%\begin{verbatim}
%       \ifx\pauldoc@indexsec\chapter
%         \chapter{Lizenz}%
%       \fi
%\end{verbatim}
%  \begin{macro}{\section*}
%  \begin{macro}{\lizenz@oldsection@}
%  Damit wir aus dem Dokument auf die Lizenz referieren
%  können, definieren wir den Befehl '\section', welcher
%  zu Beginn der Lizenz verwendet wird, so um, dass er
%  ein Label setzt. (Weil wir uns in einer Gruppe
%  befinden (durch die 'otherlanguage'-Umgebung), bleibt
%  die Änderung lokal.)
%\begin{verbatim}
%      \newcommand{\lizenz@oldsection@}{}%
%      \let\lizenz@oldsection@\section\relax%
%      \def\section*{% 
%        \label{lppl-chapter}%
%        \lizenz@oldsection@*%{##1}%
%       }%
%\end{verbatim}
%  \end{macro}
%  \end{macro}
%  \begin{macro}{\emph}
%  Leider habe ich es nicht wirklich geschafft, den Befehl
%  so umzudefinieren, dass nach dem '\section*{}'-Befehl noch
%  ein Label kommt -- deswegen definiere ich stattdessen den
%  '\emph{}'-Befehl um, der zumindest in meiner Ausgabe der
%  LPPL direkt nach dem '\section*' kommt. Ein böser Hack,
%  ich weiß \dots
%\begin{verbatim}
%      \newcommand{\lizenz@oldemph}{}%
%      \let\lizenz@oldemph\emph%
%      \def\emph{%
%         \label{lppl-section}%
%         \let\emph\lizenz@oldemph%
%         \emph%
%         }%
%\end{verbatim}
%  \end{macro}
%  \end{quotation}
%   Einige Änderungen sind notwendig, um
%   die Lizenz einzulesen: '%' soll wieder
%   ein Kommentarzeichen sein, \verb|'| darf kein
%   Verbatim-Zeichen mehr sein, weil diese Zeichen
%   in der Lizenz-Datei natürlich nicht den
%   Doc-Konventionen entsprechend verwendet werden.
%   Dann lesen wir die Datei ein, und machen danach die Änderungen
%   wieder rückgängig.
%    \begin{macrocode}
       \DeleteShortVerb{\'}%
       \MakePercentComment\input{\lpplfilename}\MakePercentIgnore%
       \MakeShortVerb{\'}%
%    \end{macrocode}
%  ... und jetzt setzen wir die Sprache wieder zurück.
%    \begin{macrocode}
     \end{otherlanguage*}
%    \end{macrocode}
%  Falls die Lizenz-Datei nicht gefunden wurde, geben wir nur eine passende Meldung aus.
%    \begin{macrocode}
   }{%
       \typeout{^^J%
          ^^J%
          Die Datei \lpplfilename{} wurde nicht gefunden.^^J%
          Schade, da wird die Lizenz eben nicht eingebunden.^^J%
          ^^J%
          }%
     }%
   }
%    \end{macrocode}
%  \end{macro}
%  
%  \begin{macro}{\lpplfilename}
%  \changes{v0.2}{2006/02/14}{Dateiname von
%                 'lppl-1-3b.tex' nach 'lppl.tex' geändert.}
%  Ich definiere noch den Dateinamen der Lizenz, unter
%  der die meisten meiner Pakete stehen, zur Zeit ist
%  das die unter dem Namen \texttt{\lpplfilename}
%   verbreitete LPPL.
%    \begin{macrocode}
\AtBeginDocument{%
   \providecommand{\lpplfilename}{lppl.tex}%
}
%    \end{macrocode}
%  \end{macro}
%
%
%  \subsubsection{Kopiert aus \pack{ltxdoc}}
%
%  \changes{v0.1}{2006/02/04}{\cs{cs}, \cs{cmd}, \cs{marg}, \cs{oarg}, \cs{parg}
%                             hinzugefügt aus
%                             \pack{latxdoc}.}
%  Die folgenden vier Kommandos kopierte ich aus \pack{ltxdoc},
%  um sie auch verwenden zu können, wenn ich nicht diese Klasse
%  verwende. Durch die Verwendung von '\providecommand' gibt es
%  keine Konflikte, falls sie doch schon definiert sind.
%
% \begin{macro}{\cmd}
%   Formatiert einen Makronamen, '\cmd{\bla}' ergibt \cmd{\bla}.
%   (Sollte der erste Buchstabe kein '\' sein, wird er damit ersetzt.)
%    \begin{macrocode}
\@ifundefined{cs}
{%
  \providecommand*{\cmd}[1]{\cs{\expandafter\cmd@to@cs\string#1}}
  \def\cmd@to@cs#1#2{\char\number`#2\relax}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\cs}
%   Implementiert wurde '\cmd' mit '\cs' -- '\cs{bla}' ergibt \cs{bla}.
%   Dies funktioniert auch an einigen Stellen, wo '\cmd{\bla}' nicht
%   funktioniert.\footnote{Das steht jedenfalls in der \pack{ltxdoc}-Doku,
%     auch wenn ich das nicht ganz verstanden habe.}
%    \begin{macrocode}
  \DeclareRobustCommand*\cs[1]{\texttt{\char`\\#1}}%
}
{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\marg}
%    |\marg{text}| gibt \marg{text} aus. Die Abkürzung steht für
%   "`mandatory argument"'.
%    \begin{macrocode}
\providecommand\marg[1]{%
  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\oarg}
%    |\oarg{text}| ergibt \oarg{text} ("`optional argument"').
%    \begin{macrocode}
\providecommand\oarg[1]{%
  {\ttfamily[}\meta{#1}{\ttfamily]}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\parg}
%    |\parg{text}| ergibt \parg{text} ("`picture mode argument"').
%    \begin{macrocode}
\providecommand\parg[1]{%
  {\ttfamily(}\meta{#1}{\ttfamily)}}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Bugfixes}
%  Inzwischen\footnote{mit dem \LaTeX-Beta-Release vom 3.Februar 2006 -- \pack{doc} hat das Datum 2006/02/02} ist der folgende Bug korrigiert, daher hier auskommentiert.
% \begin{quote}
%  \begin{macro}{\SpecialEnvIndex}\slshape
%  \changes{v0.1}{2006/02/04}{Bugfix ist überflüssig}
%   Aufgrund eines Bugs in \pack{doc}\footnote{Siehe
%   \texttt{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=tools/3834} --
%   das ist (laut einer E-Mail, die ich als Antwort auf meinen Bug-Report
%   (am 2006/01/30) bekam) schon bekannt und im Code korrigiert, ein
%   Release steht bevor.} definiere ich hier
%   '\SpecialEnvIndex' neu, damit die environment-Verwendungen
%   genauso wie die environment-Definitionen einsortiert werden,
%   nicht als eigener Eintrag namens "`environments:\meta{name}"'.
%\begin{verbatim}
%\renewcommand*{\SpecialEnvIndex}[1]{\@bsphack
%    \index{#1\actualchar{\protect\ttfamily#1}
%           (environment)\encapchar usage}%
%    \index{environments:\levelchar#1\actualchar{%
%                \protect\ttfamily#1}\encapchar
%           usage}\@esphack}
%\end{verbatim}
%  \end{macro}
% \end{quote}
% 
% \subsection{Ende}
%  \ldots und Schluss.
%    \begin{macrocode}
\endinput
%</package>
%    \end{macrocode}
%
% \Finale
%\endinput


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