%% %% This is file `gmdoc-enhance.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% gmdoc-enhance.dtx (with options: `package') %% %% ,--------------------------------------------------. %% | Das ist eine generierte Datei. | %% | | %% | (c) 2008 Paul Ebermann. | %% '--------------------------------------------------' %% (C) 2009 Paul Ebermann %% %% Package gmdoc-enhance - Verbesserungen für gmdoc. %% %% Die Datei gmdoc-enhance.dtx sowie die dazugehörige %% gmdoc-enhance.ins sowie die damit generierte %% gmdoc-enhance.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. \NeedsTeXFormat{LaTeX2e}[2003/12/01]% \ProvidesPackage{gmdoc-enhance}[2009/02/20 v0.2 Verbesserungen fuer gmdoc.]% \RequirePackage{gmdoc}[2008/10/04]% \newcommand*{\InlineCommentsWithPercent}{% \let\gmde@org@ifilrr = \ifilrr% Wir merken uns dir Original-Einstellung \ilrrtrue% Wir schalten auf Flatter- statt Blocksatz für die \let\gmd@percenthack\gmde@percenthack% Außerdem verwenden wir unsere }% \newcommand*{\normalInlineComments}{% \let\ifilrr = \gmde@org@ifilrr% Wir setzen die Block/Flattersatz-Einstellung \let\gmd@percenthack \gmde@org@percenthack% Dies setzen wir auf aufs }% \let \gmde@org@percenthack = \gmd@percenthack% \def\gmde@percenthack{% \ifprevhmode% \aftergroup\gmde@specialSpaces% Diese Zeile ist neu -- wir schalten \aftergroup\gmde@kommentarStart% Das Original war hier \else% \aftergroup\gmd@narrcheckifds@ne% \fi% }% \catcode`\ =\active% \def\gmde@activeSpace{ }% \catcode`\ =10% \def\gmde@specialSpaces{% \catcode`\ =\active% Aktives Leerzeichen. \@xa\let\gmde@activeSpace=\gmde@discrSpace% Und es soll die \exhyphenpenalty=0% Das setzt die Strafen für Umbrüche an diesen \hyphenpenalty=1000% Dafür stellen wir die Strafen für normale \let\@codetonarrskip\gmde@codetonarrskip% Wir sorgen dafür, dass mit \def\@tempa{gmde@hyphenchar-% \@xa\string\the\font}% der Name für unsere zu definierende % Kontrollsequenz. Er enthält den internen Namen der Schrift. \@ifundefined{\@tempa}{% \@xa\edef\csname \@tempa\endcsname{% \the\hyphenchar\font }% }{% Wenn wir es schon vorher definiert haben, }% \edef\gmde@hyphenreset{% \hyphenchar\font=% \@xa\noexpand% \csname \@tempa\endcsname% }% \hyphenchar\font=-1 % Das ist }% \def\gmde@hyphenreset{}% \let\gmde@org@codetonarrskip = \@codetonarrskip% \let\gmde@codetonarrskip = \@codetonarrskip \g@addto@macro\gmde@codetonarrskip{\gmde@normalSpaces}% \def\gmde@kommentarStart{% \hbox{{% \@ifpackageloaded{color}{\color{gray}}{}% Falls das \pk{color}-Paket \ttfamily\code@delim\quad}}% }% \def\gmde@discrSpace{% \ifx\protect\@typeset@protect% \ifinner% \space% Wenn wir in einer inneren Box sind, soll das aktive \else% \ifhmode% \unskip% Hmm, ich bin mir nicht ganz sicher, warum dieser \discretionary{% Die "`Expansion"' dieses '\discretionary'-Objektes }{\gmde@kommentarStart% Dafür taucht am Ende der vorherigen Zeile }{% Falls kein Umbruch an dieser Stelle erfolgte, ist es }% ~% Jetzt setzen wir noch ein nicht-umbrechbares Leerzeichen. Falls \else% \space% Außerhalb des horizontalen Modus (d.h. im Mathe- und im \fi% \fi% \afterfi{% \gmde@gobbleActiveSpaces}% Am Ende fressen wir alle weiteren \else% \space% Falls wir nicht im Typeset-Modus sind, sondern etwa in eine Datei \fi% }% \def\gmde@gobbleActiveSpaces{% \@xa\@ifnextchar\gmde@activeSpace% Wir überprüfen, ob das % nächste Token ein aktives Leerzeichen ist. {% Falls ja, \dots \@xa\gmde@gobbleActiveSpaces\@gobble% entsorgen wir es % mit '\@gobble' und rufen uns dann selbst rekursiv auf. }{}% Im anderen Fall machen wir gar nichts, womit die Rekursion % beendet ist. }% \def\gmde@normalSpaces{% \gmde@hyphenreset% Wir rufen das Makro auf, welches den '\hyphenchar' auf \exhyphenpenalty=50 \hyphenpenalty=50 % Die Strafen erhalten auch ihren normalen Wert. \@xa\let\gmde@activeSpace = \space% Das aktive Leerzeichen wird ein normales, \catcode`\ = 10% und Leerzeichen sind ab jetzt nicht mehr \let\@codetonarrskip = \gmde@org@codetonarrskip% Wir setzen auch dieses }% \newcommand*{\activateVisibleComments}{% \let \gmd@narrcheckifds = \gmde@narrcheckifds% \let \gmd@narrcheckifds@ne = \gmde@narrcheckifds@ne% \let \gmd@eatlspace = \gmde@eatlspace% } \newcommand*{\setVisibleCommentChar}[1]{% \let \gmde@visibleCommentChar = #1% }% \setVisibleCommentChar{!}% \newcommand*{\setVisibleCommentColor}{% \@ifnextchar[\gmde@setVCColor@Opt% \gmde@setVCColor@% }% \def\gmde@setVCColor@#1{% \def\gmde@visibleCommentColor{\@ifpackageloaded{color}{\color{#1}}{}}% }% \def\gmde@setVCColor@Opt[#1]#2{% \def\gmde@visibleCommentColor{\@ifpackageloaded{color}{\color[#1]{#2}}}% }% \let\gmde@visibleCommentColor\@empty \let\gmde@org@narrcheckifds = \gmd@narrcheckifds \let\gmde@org@narrcheckifds@ne = \gmd@narrcheckifds@ne \def\gmde@narrcheckifds{% \gmde@narrcheckifds@ne{\ignorespaces}% }% \def\gmde@narrcheckifds@ne#1{% \@ifnextchar\gmde@visibleCommentChar% Falls das nächste Zeichen \gmde@deactivatedCode% setzen wir den Rest als deaktivierten Code. {\gmde@org@narrcheckifds@ne{#1}}% Ansonsten rufen wir den }% \def\gmde@deactivatedCode{% \gmd@textEOL% Wir tun so, als wäre das eine neue Zeile. \gmde@deactivatedcodePrefix% Das wird als erstes Token an '\gmd@textEOL' % übergeben. Dadurch, dass es nur eines ist, wird es nicht als '%' % erkannt, sondern (nachdem wieder in den Verbatim-Modus gewechselt wurde) % ausgegeben. } \def\gmde@deactivatedcodePrefix{% \gmde@visibleCommentColor% \code@delim% Zunächst geben wir ein '%'-Zeichen aus. \@afternarrgfalse\@aftercodegtrue\@codeskipputgtrue% Diese boolean-Werte \@firstoftwo% Und jetzt entsorgen wir das zweite }% \def\gmde@eatlspace#1{% \ifx\gmd@texcodespace#1% Wenn das nächste Zeichen ein Leerzeichen, so \dots \advance\gmd@ldspaceswd by \gmd@spacewd% erhöhen wir die Einrückung, \afteriffifi{\gmde@eatlspace}% \dots wiederholen das ganze. \else% \if\code@delim\@nx#1% Wenn das nächste Zeichen '%' ist \dots \afterfifi{% \@ifnextchar\gmde@visibleCommentChar{% \dots und das folgende Zeichen \let\gmd@charbychar=\gmde@charbychar% Wir merken uns also, dass % dessen Präfix gezeigt werden muss, \dots \gmd@typesettexcode% \dots und rufen die normale Code-Formatierungs-Funktion auf, wobei das '!' dabei weggeworfen wird. }{% \gmd@ldspaceswd=\z@% \gmd@continuenarration#1% }% }% \else% % Ist das nächste Zeichen weder ' ' noch '%', so fängt hier der % Quelltext an. \afterfifi{\gmd@typesettexcode#1}% \fi% \fi% }% \let\gmde@org@charbychar\gmd@charbychar% \def\gmde@charbychar{% \let\gmd@charbychar=\gmde@org@charbychar \gmde@deactivatedcodePrefix \gmd@charbychar% }% \AtBeginDocument{\QueerCharOne}% \pk{inputenc} mit \pk{utf8x} definiert \newcommand*{\normalInput}[1]{% % Wir packen alles in eine Gruppe, dann ist das Wiederherstellen der % Einstellungen nicht so schwer. \begin{StraightEOL}% \gmde@normalSpaces% \catcode`\%=14% \InputIfFileExists{#1}{}{}% \end{StraightEOL}% }% \let\gmd@docstripshook\@empty% \DeclareOption{visible}{% \setVisibleCommentColor{blue}% \activateVisibleComments% }% \DeclareOption{inline}{% \InlineCommentsWithPercent% }% \ProcessOptions*\relax% \endinput %% %% End of file `gmdoc-enhance.sty'.