From d5c82395b8e4546ed26c18fb456f4653b5753e49 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 24 Feb 2009 01:38:53 +0000 Subject: new latex package gmdoc-enhance (23feb09) git-svn-id: svn://tug.org/texlive/trunk@12221 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/gmdoc-enhance/README | 286 +++++++++ .../doc/latex/gmdoc-enhance/gmdoc-enhance.pdf | Bin 0 -> 226119 bytes .../source/latex/gmdoc-enhance/gmdoc-enhance.dtx | 715 +++++++++++++++++++++ .../source/latex/gmdoc-enhance/gmdoc-enhance.ins | 61 ++ .../tex/latex/gmdoc-enhance/gmdoc-enhance.sty | 241 +++++++ 5 files changed, 1303 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/gmdoc-enhance/README create mode 100644 Master/texmf-dist/doc/latex/gmdoc-enhance/gmdoc-enhance.pdf create mode 100644 Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.dtx create mode 100644 Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.ins create mode 100644 Master/texmf-dist/tex/latex/gmdoc-enhance/gmdoc-enhance.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/gmdoc-enhance/README b/Master/texmf-dist/doc/latex/gmdoc-enhance/README new file mode 100644 index 00000000000..28e8f97e316 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc-enhance/README @@ -0,0 +1,286 @@ +[en] + +LaTeX-package 'gmdoc-enhance' - some enhancements for gmdoc. + +Author: Paul Ebermann +License: LPPL 1.3b or later, maintained + (see http://www.latex-project.org/lppl/). + +All Documentation (other than this file) is in german. + +This package provides some enhancements for the gmdoc package: +nicer formatting for multiple line inline comments, +an ability to "comment out" some code, and a macro to input +other files in "normal" LaTeX mode. + +The package is based on the package gmdoc (from +Grzegorz `Natror' Murzynowski) and needs it and its +required packages (gmutil, gmverb, gmiflink, hyperref, +multicol, color, makeidx). + +The typesetting of the documentation needs additionally +class scrartcl (from KOMA-script) and some LaTeX base +packages. + +The package comes as .dtx + .ins. +Run "latex gmdoc-enhance.ins" to create the style file (and maybe put +it to texmf/tex/latex/paul/, if your docstrip is configured +accordingly), run (after that and maybe updating your TeX hash) +"latex gmdoc-enhance.dtx" to create the documentation. + + Usage +------- + +(1) Write your dtx-files for documenting with gmdoc, not doc. + (See the gmdoc-documentation for details.) + +(2) Put + \usepackage[...]{gmdoc-enhance} + in the preamble of the documentation driver. + (This package itself is calling gmdoc without + any options - if you need options, put + \usepackage[...]{gmdoc} before this line.) + +(3) Use options and/or user macros to change the look. + +(4) If you want visible "commented out" code, change the + code to use the marker. + +Options: +- - - - + + inline - mark more-than-one-line inline comments on the + following lines with %, and change the look of the + inline comments a bit. + + visible - enable special treating of "comment out" (see below), + with blue highlight and "!" as marker. + +User macros: +- - - - - - + + \InlineCommentsWithPercent - same as option 'inline', but can be + switched everywhere. + \normalInlineComments - switch back to normal gmdoc behaviour for + inline comments. + + + \setVisibleCommentChar{} - set the visible comment + marker character to . This should be a + single character, preferably of category "other" (12). + Default is "!" (exclamation mark). + \setVisibleCommentColor[]{} - indicate which color + to use for commented out code. This is simply given to + the color package (more precisely, xcolor), so should + be in a format recognized by this package. + Default is nothing (don't change color). + + \activateVisibleComments - enable using "commented out" code. + + + \normalInput{} - inputs (if existing), but with normal + LaTeX catcode conventions active. + + +How to use the "comment out" feature: +- - - - - - - - - - - - - - - - - - - + +This is useful if you (for debugging purposes, for example) +want to deactivate some code, but also don't want it to be +executed in the documentation part (which would give often some +strange error messages. + +One way to solve this (without this package) would be using +%^^A or %^^B on the beginning of these lines (to ignore these +completely). +With this package, you can show this code as commented out in +the output. + +Some example code: + +--- +\ifx aa + %!\doSomething% do something -- commented out. + \doAnotherthing% do something other instead. +\fi +--- + +So, after the first %, put your comment marker (default !), and +then more TeX code. Until the next %, it is shown as commented out +code, then begins an inline comment. + + +Have fun! + +------------- +[de] + +LaTeX-Paket 'gmdoc-enhance' - Verbesserungen für gmdoc. + +Autor: Paul Ebermann (Paul-Ebermann@gmx.de). +Lizenz: LPPL 1.3b oder später, mit Maintenance-Status + "author-maintained". Siehe http://www.latex-project.org/lppl/. + +Geschrieben für eigenen Gebrauch +(d.h. die Dokumentation von LaTeX-Paketen von Paul Ebermann), aber + vielleicht ist es auch für andere von Nutzen. + +Dieses Package basiert auf gmdoc von Grzegorz `Natror' Murzynowski +zur Dokumentation von (La)TeX-Paketen und fügt ein paar weitere +nützliche Funktionen hinzu, wie Markierung der inline-Kommentare +als solche auch in Folgezeilen, sichtbare Kommentare (auskommentierter +Code), und die Möglichkeit, andere LaTeX-Dateien im normalen Modus +einzubinden (anstatt im gmdoc-Modus). + +Das Paket kommt als .dtx + .ins. +Mit "latex gmdoc-enhance.ins" wird die .sty-Datei erstellt (und +eventuell gleich nach texmf/tex/latex/paul/ installiert, +wenn docstrip entsprechend eingerichtet ist), mit +"latex gmdoc-enhance.dtx" kann (danach und eventuell nach einer +Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu +erstellt werden. + +Zur Verwendung siehe pauldoc.pdf. + +---------- +[eo] + +LaTeX-pakaĵo 'gmdoc-enhance' - plibonigoj por gmdoc. +(Se vi ne scias, kio estas gmdoc, legu sube.) + +Aŭtoro: Paŭlo Ebermann (Paul-Ebermann@gmx.de). +Licenzo: LPPL 1.3, 'maintained' + (-> http://www.latex-project.org/lppl/). + +Kreitaj por propra uzo, sed eble iom de ĝi ankaŭ +uzeblas por aliaj. + +La dokumentaro (escepte tiu ĉi dosiero) estas nur en la germana +lingvo. + +La pakaĵo estas bazita sur la pakaĵo gmdoc (de Grzegorz +`Natror' Murzynowski) kaj bezonas ĝin kaj ĝiajn bezonatajn +pakaĵojn (laŭ ties dokumentaĵo: gmutil, gmverb, gmiflink, +hyperref, multicol, color, makeidx). + +Por produkti la dokumentaĵon, vi ankaŭ bezonas la +dokument-klason scrartcl (de KOMA-script) kaj kelkajn bazajn +LaTeX-pakaĵoj. + +La pakaĵo venas en .dtx + .ins. +Voku "latex gmdoc-enhance.ins" por krei la .sty-dosieron (kaj +eble meti ĝin al texmf/tex/latex/paul/, se via docstrip estis +konfigurita laŭe), voku "latex gmdoc-enhance.dtx" por rekrei +la dokumentaron. + + + Uzado +------- + +Enkonduko (Kio estas gmdoc) +- - - - - - - - - - - - - - + +gmdoc estas alternativa sistemo (al doc) por dokumenti +(La)TeX-pakaĵojn. Oni tiel ne plu bezonas marki ĉiujn +kodo-pecojn, sed gmdoc mem trovas ĝin. +Ankaŭ eblas uzi komentojn en la sama linio kiel kodo, kiu +poste tamen povas daŭrigi en pluraj linioj. + +Se vi volas krei proprajn LaTeX-pakaĵojn, pripensu uzi ĝin +anstataŭ la doc-pakaĵo, kiu estas liverita kun LaTeX mem. + +(La kodo de via pakaĵo ja aspektas iom alie, depende de la + elekto.) + +Por vidi ekzemplojn de gmdoc-komentita kodo, rigardu la +fontokodon de tiu pakaĵo (gmdoc-enhance.dtx), la pakaĵo +monatnomoj, aŭ la pakaĵojn de Grzegorz `Natror' Murzynowski +(gm*.sty/gm*.cls). + +gmdoc-enhance (tiu ĉi pakaĵo) nun aldonas kelkajn funkciojn, +kiujn mi konsideris mankantaj en gmdoc. + + +Kiel uzi +- - - - - + +(1) Kiel supre menciite, necesas formati/dokumenti vian pakaĵon + por uzo kun gmdoc. (Tio fakte estas pli facila ol por doc.) + +(2) Metu + + \usepackage[...]{gmdoc-enhance} + + en la kapliniojn de la dokumentaĵ-stirilo. + +(3) adaptu la opciojn kaj/aŭ uzu individuajn makroojn + (vidu sube). + +(4) Se vi volas forkomenti kodon, uzu la markilon. + +Opcioj: +- - - - + + + inline - marku sekvajn liniojn se en-liniaj komentoj komence + per %, kaj krome iom ŝanĝu la aspekton de tiuj + komentoj. + + visible - ŝaltu la specialan traktadon de for-komentita kodo, + kun blua koloro. + +Uzantaj makrooj: +- - - - - - - - + + \InlineCommentsWithPercent - ŝaltu la 'inline'-opcion, ekde + la loko, kie ĝi aperas. + \normalInlineComments - reŝaltu al la normala gmdoc-aspekto. + + \setVisibleCommentChar{} - indikas, kiu signo estu la + markilo por forkomentita kodo. Tiu estu signo el kategorio + "aliaj" (12). + Defaŭlto estas "!" (eksklamsigno). + \setVisibleCommentColor[]{} - indikas, per kiu + koloro marki la forkomentitan kodon. povas + esti forlasita, tiam estu nomita koloro konata + al la xcolor-pakaĵo. Alikaze indiku iun + kolormodelon konatan al xcolor, kaj iun koloron + en tiu kolormodelo. (Ni nur pludonas la informojn al + xcolor, ne mem traktas ilin.) + Defaŭlto estas nenio, t.e. tute ne ŝanĝi la koloron. + \activateVisibleComments - ŝaltu la uzadon de forkomentita kodo + ekde tiu momento. + + + \normalInput{} - legas kaj interpretas la enhavon de + kun la normalaj \LaTeX-konvencioj aktivaj (ne la gmdoc-specifaj + specialaĵoj). + +Kiel forkomenti kodon +- - - - - - - - - - - + +Tiu funkcio estas uzenda, se vi volas forigi iujn partojn +(kutime tutajn liniojn) de la kodo portempe, sed ilia TeX-codo +ne estu parto de la komento (kiu povas kaŭzi strangajn erarojn), +sed aperu kiel "forkomentita" en la rezulto. + +(Ĉe normala doc-moduso tiu problemo ne okazas, ĉar tie ne + eblas havi tiujn en-liniajn komentojn.) + +Por fari tion, uzu '%!' por komenci vian forkomentitan kodon, +kaj poste aperu '%' kun normala en-linia komento (eble malplena). + +Jen ekzemplo: +--- +\ifx aa + %!\doSomething% faru ion -- forkomentita. + \doAnotherthing% faru ion alian anstataŭe. +\fi +--- + +La ! ne aperas, la '%\doSomething%' ja. +(Kaj anstataŭ ! endas uzi alian signon, se vi ŝanĝis ĝin + per \setVisibleCommentChar.) + + +Bonan dokumentadon! \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/gmdoc-enhance/gmdoc-enhance.pdf b/Master/texmf-dist/doc/latex/gmdoc-enhance/gmdoc-enhance.pdf new file mode 100644 index 00000000000..a12f0db808a Binary files /dev/null and b/Master/texmf-dist/doc/latex/gmdoc-enhance/gmdoc-enhance.pdf differ diff --git a/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.dtx b/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.dtx new file mode 100644 index 00000000000..2f722ac355c --- /dev/null +++ b/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.dtx @@ -0,0 +1,715 @@ +% \iffalse meta-comment +% +%<*package> +%% (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. +% +% \fi +% +% \iffalse +% --------------------------------------------- +%\NeedsTeXFormat{LaTeX2e}[2003/12/01]% +% ----------------------------________________----------------- +%\ProvidesPackage{gmdoc-enhance}[2009/02/20 v0.2 Verbesserungen fuer gmdoc.]% +% ----------------------------________________----------------- +% \fi +% +% \iffalse +% \fi +% +% \CheckSum{0} +% +% \GetFileInfo{gmdoc-enhance.sty} +% +% +% \title{Das \pk{gmdoc-enhance}-Paket -- Verbesserungen für \pk{gmdoc}. \ +% \thanks{ Diese Dokumentation gehört zu \ +% \pk{gmdoc-enhance}~\fileversion, de~\filedate.}} +% \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}} +% +% \maketitle +% +% \begin{abstract} +% Dieses Package basiert auf \pk{gmdoc} von Grzegorz +% \textquoteleft Natror\textquoteright +% Murzynowski zur Dokumentation von \LaTeXpar-Paketen und fügt ein +% paar weitere nützliche Funktionen hinzu, wie Markierung der +% inline-Kommentare als solche auch in Folgezeilen, sichtbare +% Kommentare (auskommentierter Code), und die Möglichkeit, andere +% \LaTeX-Dateien im normalen Modus einzubinden (anstatt im +% \pk{gmdoc}-Modus). +% \end{abstract} +% +% \tableofcontents +% +% \section{Nutzer-Doku} +% +% ^^A etwas tricky ... wir wollen, dass beim +% ^^A reinen LaTeX-Durchlauf der Beispiel-Abschnitt +% ^^A übersprungen wird, also muss ein '\iffalse' da +% ^^A stehen. Beim Doku-Lauf soll dieser Trick nicht +% ^^A auftauchen, also können wir nicht den normalen +% ^^A verbatim-Modus nehmen ... wir brauchen also ein +% ^^A '\iffalse' drumrum. Jetzt wird aber auch das innere +% ^^A '\iffalse' interpretiert, wodurch wir dahinter zwei +% ^^A '\fi' brauchen. Am Ende des Beispiel-Abschnitts dann +% ^^A entsprechend zwei '\iffalse'. (Hmm, und jetzt soll bitte +% ^^A niemand versuchen, diesen '^^A'-Abschnitt hier mit '\iffalse' +% ^^A auszukommentieren ...) +% \iffalse +%<*beispiel> +\iffalse +% \fi\fi +% +% Das Paket sollte -- wie üblich -- mit '\usepackage' geladen werden: +% \begin{quote} +% '\usepackage'\arg[optionen]'{gmdoc-enhance}' +% \end{quote} +% Es lädt selbst das \pk{gmdoc}-Paket, falls dieses nicht schon geladen +% ist. Falls man Optionen an dieses übergeben will, sollte man es vorher +% selbst laden. Ein vollständiges Beispiel gibt es in Abschnitt \ref{driver}. +% +% \subsection{Inline-Kommentare mit \%} +% Diese Funktion erfordert (im Vergleich zum normalen \pk{gmdoc}) keine +% Änderung der zu kommentierenden Datei +% \normalInlineComments (nur das Aktivieren), sondern ändert nur das Aussehen. +\beispiel\zeile% Bei \pk{gmdoc} kann jede Code-Zeile von +% einem Inline-Kommentar gefolgt werden, der dann normal gesetzt +% wird, mit hängendem Einzug. Zu diesem Inline-Kommentar gehören auch +% direkt anschließende Kommentarzeilen. (Hier ein solches Beispiel.) +% +% Dieses Paket ändert das Aussehen eines solchen +% \InlineCommentsWithPercent Absatzes: +\beispiel\zeile% Jetzt wird der Inline-Kommentar mit etwas mehr Abstand +% gesetzt, und das '%'-Zeichen grau (falls \pk{color} geladen wurde). +% Wichtiger aber, in den Folge-Zeilen erscheint jeweils zu Beginn der +% Zeile eine Kommentar-Markierung, so dass man ihn nicht mit einer +% neuen Code-Zeile verwechseln kann. +% +% +% Aktivieren kann man die Funktion mit \TextUsage{\InlineCommentsWithPercent}, +% welches ab der entsprechenden Stelle gilt (es wurde oben zwischen den beiden +% Code-Zeilen im Beispiel verwendet. +% Mit \TextUsage{\normalInlineComments} wird wieder auf den Normal-Modus +% zurückgeschaltet. +% +% Global aktivieren kann man diesen Modus mit der Paket-Option +% \TextUsage*{inline}. +% +% \subsection{Sichtbare Kommentare} +% +% Dieses Paket bietet die Möglichkeit, Teile des +% Quelltextes auszukommentieren, und diese dann auch so zu setzen (anstatt +% dass der auskommentierte Quelltext als Teil der Dokumentation aufgefasst +% wird). +% Dazu verwendet man im Quelltext: +%\begin{verbatim} +%%! \nicht\gebraucht% Und jetzt $e^{i\pi}=-1$. +%\end{verbatim} +% Dies ergibt etwas wie dies: +%! \nicht\gebraucht% Und jetzt $e^{i\pi}=-1$. +% +% Dieser Modus hat zwei Parameter: +% Mit \meta{marker} (ein einzelnes Zeichen, wahrscheinlich muss es +% Kategorie \catother (other) haben) markiert man im Quelltext das +% Auskommentieren, direkt nach dem '%'\footnote{oder ^^B +% was auch immer gerade der durch \cs{CodeDelim} festgelegte ^^B +% Markierer ist.}. +% Der Defaultwert (und im obigen Beispiel verwendet) ist '!'. +% +% \meta{Farbe} ist ein Parameter (oder zwei) für +% \TextUsage{\color}\footnote{ aus dem \pk{color}-Paket}, +% um eine farbliche Markierung des auskommentierten Codes zu aktivieren. +% (Default ist keine farbliche Markierung.) +% +% Die Paket-Option \TextUsage*{visible} aktiviert den Modus und legt +% \meta{Farbe} auf '{blue}' fest, was meine bevorzugte Einstellung ist. +% +% Falls diese Einstellungen nicht zusagen, kann man (statt oder zusätzlich zur +% Option) die folgenden Makros verwenden: +% +% \TextUsage{\activateVisibleComments} aktiviert den Modus, ohne etwas an +% \meta{marker} oder \meta{Farbe} zu ändern. +% +% \TextUsage{\setVisibleCommentChar}\arg{marker} legt \meta{marker} fest. +% +% \TextUsage{\setVisibleCommentColor}\meta{Farbe} legt \meta{Farbe} fest. +% \meta{Farbe} ist entweder von der Form \arg[model]\arg{farbe} (für eine +% Farbe in einem der von \pk{color} bereitgestellten Farbmodelle) oder +% \arg{farbname} für einen der vordefinieren Farbnamen. Beides wird einfach +% an der geeigneten Stelle an 'color' weitergegeben. +% +% Falls eine Farbe festgelegt wird, sollten auskommentierte Code-Stellen +% unbedingt mit einem '%' (und eventuell einem inline-Kommentar danach) beendet +% werden, weil die Farbmarkierung sich sonst fälschlicherweise in die +% nächste Zeile fortsetzt, sogar inklusive der Zeilennummer: +% +%! \auskommentiert +\nicht\auskommentiert +% +% Das ist offenbar nicht so gedacht, aber ich habe keinen (einfachen) Weg +% gefunden, das abzuschalten. +% +% \subsection{Input im normalen Modus} +% +% Wenn man innerhalb eines \pk{gmdoc}-Dokumentes eine andere +% Datei lädt, welche die normalen \LaTeX-Konventionen für '%' und Zeilenenden +% verwendet, gibt es Chaos \dots +% +% \TextUsage{\normalInput}\arg{dateiname} stellt die üblichen +% \LaTeX-Konventionen wieder her, lädt \meta{dateiname} (falls existent), +% und stellt wieder auf den \pk{gmdoc}-Modus zurück. +% +% Dies ist etwa nützlich, falls man eine Beispiel-Datei einlesen möchte, +% um deren Ausgabe zu zeigen. +% +% Die Datei wird innerhalb einer Gruppe geladen -- alle nicht-globalen +% Zuweisungen darin gehen also verloren. +% +% ^^A ------------------------------ +% +% \iffalse\iffalse +\fi +% +% \fi +% +% \section{Der Doku-Treiber für dieses Paket} +% \label{driver} +% +% Der Dokumentations-Treiber dient gleichzeitig als Beispiel für +% die Anwendung (und die Ausgabe) dieses Paketes. +%<*driver> +% Die Dokumentenklasse, mit 'draft'-Option, um zu lange Zeilen +% zu markieren. (Nicht als globale Option, weil sonst \pk{hyperref} +% seine Arbeit verweigert.) +\PassOptionsToClass{draft}{scrartcl} +\documentclass[idxtotoc]{scrartcl} + +% +% Die Standard-Pakete ... +\usepackage[utf8x]{inputenc} +\usepackage[ngerman]{babel} +\usepackage{lmodern} +\usepackage[T1]{fontenc} + + + +\let\orgshow\show% Irgendjemand oder etwas definiert '\show' um -- das ist +% normalerweise ein \TeX-primitiv, und ich benutze es gelegentlich zum +% Debuggen meiner Pakete. Daher machen wir uns eine Kopie davon. + +\usepackage[countalllines, withmarginpar, codespacesgrey]{gmdoc}% Wir laden +% \pk{gmdoc} mit ein paar Optionen: es sollen alle Zeilen gezählt werden, +% nicht nur Code-Linien (das heißt, man kann schnell die passende +% Quelltext-Stelle finden), im Rand sollen verwendete Makros angezeigt +% werden, und Leerzeichen im Code sollen grau markiert werden. +\usepackage[visible, inline]{gmdoc-enhance}% unser eigenes Paket, mit allen +% vorhandenen Optionen. +\renewcommand*{\EOFMark}{}% Das Zeichen \meta{eof} am +% Ende der Datei ist überflüssig, weg damit. + + +%! \def\marginpartt{\normalfont\fontseries{lc}\ttfamily}% Abgeschrieben aus +% \pk{gmdocc}, aber die Schrift ist bei mir offenbar nicht da. Schade. + +\RecordChanges% Wir wollen eine Liste der Änderungen generieren. +\setcounter{IndexColumns}{2} % wir haben ein paar ziemlich lange Makronamen, +% die in dreispaltigem Modus nicht passen. + +\begin{document} + +%! \catcode`\^=7% In einigen Sprachen wurde '^' von \pk{Babel} aktiviert, +% was für die \pk{gmdoc}-Verwendung etwas störend ist, da wir es für '^^A' +% und '^^B' benötigen. Also schalten wir es wieder auf die +% Normalbedeutung (Superscript bzw. doppelt Escape) zurück. Für \pk{ngerman} +% macht Babel das nicht, daher auskommentiert. + + \MakeShortVerb*\'% Wir wollen \verb+'+ im Kommentar als + % verbatim-Markierungs-Zeichen verwenden, mit sichtbaren Leerzeichen. + \DocInput{\jobname.dtx}% Jetzt laden wir uns selbst im Doku-Modus. + +\end{document} +% + +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{Implementation} +% +%<*package> +% +% \subsection{Benötigte Pakete} +% +% Da dieses Paket \pk{gmdoc} erweitert, müssen wir natürlich sicherstellen, +% das es geladen wurde. Zum übergeben von Optionen sollte man es aber vorher +% selbst laden. +\RequirePackage{gmdoc}[2008/10/04]% + +% \subsection[Schönere Inline-Kommentare]{Inline-Kommentare \ +% mit \%-Markierung in den Fortsetzungs-Zeilen} +% +% +% Hier das Nutzer-Makro dieses Abschnittes. +\newcommand*{\InlineCommentsWithPercent}{% + \let\gmde@org@ifilrr = \ifilrr% Wir merken uns dir Original-Einstellung +% für Block- oder Flattersatz. + \ilrrtrue% Wir schalten auf Flatter- statt Blocksatz für die +% Inline-Kommentare. Unsere aktiven Leerzeichen sind ja nicht variabel +% in der Länge (wirklich?), und wir wollen auch keine Zeilenumbrüche +% außerhalb von Leerzeichen (etwa durch Silbentrennung). + \let\gmd@percenthack\gmde@percenthack% Außerdem verwenden wir unsere +% gepatchte Variante von '\gmd@percenthack'. +}% +% +% Der Zurückschalter. +\newcommand*{\normalInlineComments}{% + \let\ifilrr = \gmde@org@ifilrr% Wir setzen die Block/Flattersatz-Einstellung +% zurück auf den Wert, der beim letzten '\InlineCommentsWithPercent' galt. + \let\gmd@percenthack \gmde@org@percenthack% Dies setzen wir auf aufs +% Original zurück. +}% +% +% Wir merken uns die Original-Version von '\gmd@percenthack', damit +% wir wieder zurückschalten können. +\let \gmde@org@percenthack = \gmd@percenthack% +% +% Das ist unsere Variante von '\gmd@percenthack'. +\def\gmde@percenthack{% + \ifprevhmode% +% Bis hier was es auch im Original schon so. + \aftergroup\gmde@specialSpaces% Diese Zeile ist neu -- wir schalten +% um auf unsere neu definierten aktiven Leerzeichen. + \aftergroup\gmde@kommentarStart% Das Original war hier +% '\code@delim\aftergroup~'. +% +% Der Rest ist wieder wie im Original. + \else% + \aftergroup\gmd@narrcheckifds@ne% + \fi% +}% +% +% +% + +% Zunächst ^^A \showthe\font +% \the\hyphenchar\font +% ^^A \expandafter\orgshow\csname gmde@hyphenreset\endcsname +% besorgen wir uns ein aktives Leerzeichen. Dafür schalten +% wir kurzfristig die Kategorie von ' ' um. +\catcode`\ =\active% +\def\gmde@activeSpace{ }% +\catcode`\ =10% + +% '\gmde@specialSpaces' macht die Leerzeichen für den entsprechenden +% Paragraphen aktiv und legt auch ihre Bedeutung fest. +\def\gmde@specialSpaces{% + \catcode`\ =\active% Aktives Leerzeichen. + \@xa\let\gmde@activeSpace=\gmde@discrSpace% Und es soll die +% (unten definierte) Leerzeichenfunktion aufrufen. + \exhyphenpenalty=0% Das setzt die Strafen für Umbrüche an diesen +% Leerzeichen (und ähnlichen '\discretionary's mit leerem +%"`Pre-break"'-Inhalt) auf 0. + \hyphenpenalty=1000% Dafür stellen wir die Strafen für normale +% Silbentrennung hoch -- allerdings schalten wir auch den Bindestrich +% ab, so dass das eigentlich irrelevant sein sollte. Es beeinflusst auch +% andere '\discretionary's mit nichtleerem "`pre-break"'-Text, die +% vielleicht irgendjemand verwendet. +% + \let\@codetonarrskip\gmde@codetonarrskip% Wir sorgen dafür, dass mit +% dem nächsten Paragraphen das alles wieder abgeschaltet wird -- +% '\gmde@codenarrskip' ruft (nach der normalen Aktion von '\@codetonarrskip') +% '\gmde@normalSpaces' auf. +% +% Wir merken uns den alten '\hyphenchar', damit wir +% ihn später zurücksetzen können. + \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}{% +% Die Nummer des '\hyphenchar's merken wir uns jetzt in dieser +% Kontrollsequenz. + \@xa\edef\csname \@tempa\endcsname{% + \the\hyphenchar\font }% + }{% Wenn wir es schon vorher definiert haben, +% definieren wir es nicht noch einmal, denn dann ist jetzt vielleicht +% schon der Code $-1$, wogegen der Original-Code (meist 45) noch dort +% gespeichert ist. + }% + \edef\gmde@hyphenreset{% + \hyphenchar\font=% + \@xa\noexpand% + \csname \@tempa\endcsname% + }% +% Und jetzt setzen wir für diesen Absatz den '\hyphenchar' der aktuellen +% Schrift auf $-1$, um damit Trennungen an -, -- und --- sowie +% Silbentrennungen auszuschließen. + \hyphenchar\font=-1 % Das ist +% aber trotzdem noch ein Hack, denn +% natürlich kann man \textsl{einfach -- zwischendurch -- in eine andere^^B +% Schriftart -- das ist jetzt ein Beispiel mit Hyphenchar ^^B +% \expandafter$\the\hyphenchar\font$ -- schalten}, die dann doch wieder einen +% echten '\hyphenchar' hat. (Nachher wieder +% \expandafter$\the\hyphenchar\font$.) Hmm, +% bessere Vorschläge? +}% + +% noch ein Vorgabewert für dieses Kommando ... es wird regelmäßig +% neu definiert, aber eventuell wird es vor der ersten solchen Definition +% noch geändert. +\def\gmde@hyphenreset{}% + +% Das ist eine Sicherheitskopie von '\@codetonarrskip' aus \pk{gmdoc}. +\let\gmde@org@codetonarrskip = \@codetonarrskip% +% +% Und jetzt unsere Variante, mit einem Aufruf der Rücksetzfunktion. +\let\gmde@codetonarrskip = \@codetonarrskip +\g@addto@macro\gmde@codetonarrskip{\gmde@normalSpaces}% +% + +% Dieses Makro enthält eine Box, die am Start jeder Kommentarzeile +% gesetzt wird. +\def\gmde@kommentarStart{% +% Hmm, wir könnten auch eine save-Box dafür reservieren, +% anstatt es immer neu zu bauen ... aber so passt es sich wenigstens +% an Änderungen des von '\code@delim' an. + \hbox{{% + \@ifpackageloaded{color}{\color{gray}}{}% Falls das \pk{color}-Paket +% geladen ist, zeigen wir das '%'-Zeichen in grau statt dem normalen +% schwarz. Damit sticht es nicht ganz so sehr ins Auge. + \ttfamily\code@delim\quad}}% +}% + + +% +% Hier die Definition unseres merkwürdigen aktiven Leerzeichens. +% +% \dots Ein paar Zahlen: '\hyphenpenalty': +% \expandafter$\the\hyphenpenalty$, '\exhyphenpenalty': \expandafter$\the\exhyphenpenalty$ +\def\gmde@discrSpace{% + \ifx\protect\@typeset@protect% + \ifinner% + \space% Wenn wir in einer inneren Box sind, soll das aktive +% Leerzeichen wie ein normales Leerzeichen funktionieren, da es ja +% hier sowieso keinen Zeilenumbruch gibt. Oder? Egal, unsere +% Code-Kommentare sollten nie im inneren Modus auftauchen. + \else% + \ifhmode% + \unskip% Hmm, ich bin mir nicht ganz sicher, warum dieser +% Befehl hier notwendig ist. Ohne gibt es jedenfalls gelegentlich +% Zeilenumbrüche, die nicht an einen dieser '\discretionary's +% fallen (und entsprechend kein '%' in der nächsten Zeile haben.) +% + \discretionary{% Die "`Expansion"' dieses '\discretionary'-Objektes +% falls es hier einen Zeilenumbruch gibt, ist am Ende der Zeile +% leer. + }{\gmde@kommentarStart% Dafür taucht am Ende der vorherigen Zeile +% die Box auf, die durch '\gmd@kommentarStart' gesetzt wird. + }{% Falls kein Umbruch an dieser Stelle erfolgte, ist es +% ebenfalls leer. + }% + ~% Jetzt setzen wir noch ein nicht-umbrechbares Leerzeichen. Falls +% es einen Umbruch gab, war der ja davor. + \else% + \space% Außerhalb des horizontalen Modus (d.h. im Mathe- und im +% vertikalen Modus) hat unsere Spezialfunktion auch nichts +% zu suchen. + \fi% + \fi% + \afterfi{% + \gmde@gobbleActiveSpaces}% Am Ende fressen wir alle weiteren +% direkt folgenden derartigen aktiven Leerzeichen auf, damit es nicht +% mehrere auf einmal gibt. +% +% Eigentlich sorgt das obige '\unskip' ja schon dafür, dass mehrere +% aufeinanderfolgende aktive Leerzeichen (die ja prinzipiell ein '~' +% als skip einfügen), keine Probleme bereiten, nur das letzte bleibt übrig. +% Damit ist das '\gmd@gobbleActiveSpaces' eigentlich nicht mehr +% nötig. Aber wir entlasten damit den Zeilenumbruch-Algorithmus +% etwas, wenn nicht mehrere '\discretionary's hintereinander kommen. + \else% + \space% Falls wir nicht im Typeset-Modus sind, sondern etwa in eine Datei +% oder auf den Bildschirm schreiben, soll unser ' ' auch wie ein normales +% Leerzeichen wirken. Schließlich findet da kein Zeilenumbruch statt. + \fi% +}% +% +% Hier die Definition unseres Space-Fressers. +\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. +}% +% +% Dieses Makro setzt alles wieder aufs normale zurück. +\def\gmde@normalSpaces{% + \gmde@hyphenreset% Wir rufen das Makro auf, welches den '\hyphenchar' auf +% seinen Original-Wert zurücksetzt. + \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 +% aktiv. + \let\@codetonarrskip = \gmde@org@codetonarrskip% Wir setzen auch dieses +% Makro auf seine Original-Bedeutung zurück. +}% +% + +% +% \subsection{Auskommentierter Quelltext} +% +% +% Aktiviert den Sichtbar-Kommentar-Modus. +\newcommand*{\activateVisibleComments}{% + \let \gmd@narrcheckifds = \gmde@narrcheckifds% + \let \gmd@narrcheckifds@ne = \gmde@narrcheckifds@ne% + \let \gmd@eatlspace = \gmde@eatlspace% +} +% +% Dieses Kommando legt das Zeichen zur sichtbaren Auskommentierung von +% Quelltext fest. +\newcommand*{\setVisibleCommentChar}[1]{% + \let \gmde@visibleCommentChar = #1% +}% + +% Hier ein Default-Wert für das Kommentar-Markierungs-Zeichen. +\setVisibleCommentChar{!}% + +% +% Legt die Farbe, in der sichtbare Kommentare gesetzt +% werden sollen, fest. +% +\newcommand*{\setVisibleCommentColor}{% +% Wir unterscheiden, ob ein optionales Argument gegeben +% wurde, und rufen entsprechend die passende Funktion auf. + \@ifnextchar[\gmde@setVCColor@Opt% + \gmde@setVCColor@% +}% +% Nur, falls \pk{color} geladen wurde, macht der Farbumschalter +% etwas. +\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}}}% +}% + +% Der Default-Wert ist leer, also ohne Farbwechsel. +\let\gmde@visibleCommentColor\@empty + +% Wir machen eine Sicherheitskopie der Original-Version +% von '\gmd@narrcheckifds'. Das ist ein Befehl, der nach +% einem '%' überprüft, ob das nächste Zeichen ein '<' ist, +% und dann eine Docstrip-Direktive setzt, andernfalls den +% normalen Erzählungs-Modus startet. Es gibt zwei Varianten +% davon, die mit '@ne' nimmt einen Parameter (der im +% "`Nicht-'<'-Fall"' ausgeführt wird), die andere nicht. +% +% Die beiden Makros werden aufgerufen, nachdem ein '%' am Anfang +% einer Zeile verarbeitet wurde - eines davon, wenn es vorher +% eine Code-Zeile gab, das andere nach einer Kommentarzeile. +\let\gmde@org@narrcheckifds = \gmd@narrcheckifds +\let\gmde@org@narrcheckifds@ne = \gmd@narrcheckifds@ne + +% Eine neue Version von '\gmd@narrcheckifds'. Wir rufen einfach die Variante +% mit Parameter auf, wobei wir '\ignorespaces' übergeben. (Das ist beim +% Original ähnlich, allerdings dort einzeln analog implementiert.) +\def\gmde@narrcheckifds{% + \gmde@narrcheckifds@ne{\ignorespaces}% +}% +% Die ein-Parameter-Version. +\def\gmde@narrcheckifds@ne#1{% + \@ifnextchar\gmde@visibleCommentChar% Falls das nächste Zeichen +% unser Kommentarzeichen ist, + \gmde@deactivatedCode% setzen wir den Rest als deaktivierten Code. + {\gmde@org@narrcheckifds@ne{#1}}% Ansonsten rufen wir den +% Original-'<'-Test auf. +}% + + +% Das ist (zusammen mit dem nächsten Makro) der Kern von +% '\gmd@codstripdirective', den wir hier brauchen. +\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. +} +% +% Was machen wir mit deaktiviertem Code (am Zeilenanfang)? +\def\gmde@deactivatedcodePrefix{% + \gmde@visibleCommentColor% + \code@delim% Zunächst geben wir ein '%'-Zeichen aus. + \@afternarrgfalse\@aftercodegtrue\@codeskipputgtrue% Diese boolean-Werte +% setzen wir, damit \TeX nachher weiß, wo es ist. + \@firstoftwo% Und jetzt entsorgen wir das zweite +% folgende Token -- das ist das '!'-Zeichen. Das erste ist wohl +% irgendein Makro, welches wichtige Dinge anstellt - wenn wir das +% auch entsorgen, hört die Code-Formatierung nicht am nächsten '%' +% auf. Keine Ahnung, was das ist. +}% + +% +% +% Hier eine leicht geänderte Version von '\gmd@eatlspace'. +% ('%' und '!' bezeichnen im Kommentar nicht unbedingt das entsprechende +% Zeichen, sondern das, was gerade als Code-Delimiter bzw. +% Visible-Comment-Marker festgelegt wurde (mit '%' und '!' +% als Default.) +% +\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, +% und \dots + \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 +% ein '!', dann haben wir es mit einem sichtbaren Kommentar zu tun. + \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. + }{% +% Ist das folgende Zeichen kein '!', so geht jetzt der Kommentar +% der letzten Zeile weiter (das kann entweder ein inline-Kommentar oder ein +% normaler sein). + \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% +}% + +% Noch eine Sicherheitskopie: '\gmd@charbychar' geht zeichenweise +% durch den Code durch, mit Sonderbehandlung für '%', '\', das +% Dateiende sowie ein Zeilenende. +\let\gmde@org@charbychar\gmd@charbychar% + +% Unsere Variante davon, die gesetzt wird, wenn die Zeile +% mit einem '%!' beginnt, +\def\gmde@charbychar{% + \let\gmd@charbychar=\gmde@org@charbychar + \gmde@deactivatedcodePrefix + \gmd@charbychar% +}% + +% +% \subsubsection{Etwas Test-Code} +% +%<*test> + +bla +%bedingter Text % mit Kommentar. +% mehr text % und Kommentar + +% Komentar +%! das gleiche mit! % und Kommentar + %! das gleiche mit! % und Kommentar +%! das gleiche mit! % und Kommentar +% +% Kommentar. +% + + +% \subsection{Weitere Makros} + + + \AtBeginDocument{\QueerCharOne}% \pk{inputenc} mit \pk{utf8x} definiert +% '^^A' um, so dass es Fehlermeldungen gibt. Also stellen wir die +% \pk{gmdoc}-Variante wieder her. + + + +% +% Dieses Makro liest eine Datei im normalen \LaTeX-Modus ein, ohne komische +% EOL-Zeichen oder kaputte '%'. +\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}% +}% +% + +% +% \subsection{Verbatim-docstrip-Modus} +% +% Es wurde wohl vergessen, diese Variable zu initialisieren. +\let\gmd@docstripshook\@empty% +% +%<*test> +% Hier ein Test dafür: +%< + +% \subsection{Optionen des Paketes} +% +% Die Optionen rufen einfach die passenden Deklarationen auf. +% +\DeclareOption{visible}{% + \setVisibleCommentColor{blue}% + \activateVisibleComments% +}% +% +\DeclareOption{inline}{% + \InlineCommentsWithPercent% +}% +% Jetzt veraarbeiten wir alle Optionen in der Reihenfolge, in +% der sie angegeben wurden. (Nicht, dass die Reihenfolge einen +% Unterschied machen sollte ...) +% +\ProcessOptions*\relax% +% +% Und damit sind wir fertig. +\endinput +% +% +% \Finale +%\endinput + + +%%% Folgendes ist nur für meinen Editor. +%%% +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.ins b/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.ins new file mode 100644 index 00000000000..7a0c6fc506a --- /dev/null +++ b/Master/texmf-dist/source/latex/gmdoc-enhance/gmdoc-enhance.ins @@ -0,0 +1,61 @@ +%% +%% (C) 2002-2008 Paul Ebermann - Installationsdatei zu gmdoc-enhance.dtx +%% +%% Der vollstndige Urheberrechtshinweis befindet sich +%% am Begin von gmdoc-enhance.dtx. +%% +%% Ich gebe keine Garantie irgendeiner Art. +%% + +\input docstrip.tex +\usedir{tex/latex/paul} + +\Msg{**********************************************************} +\Msg{* Ich werde Dateien in \showdirectory{tex/latex/paul} } +\Msg{* installieren. Bitte stellen Sie sicher, } +\Msg{* dass dieses Verzeichnis vorhanden ist. } +\Msg{* } + +%% der folgende Text wird in jeder generierten +%% Datei am Anfang eingefgt. +\preamble + + ,--------------------------------------------------. + | Das ist eine generierte Datei. | + | | + | (c) 2008 Paul Ebermann. | + '--------------------------------------------------' +\endpreamble + + +\generate{\file{gmdoc-enhance.sty}{\from{gmdoc-enhance.dtx}{package}}} +%\generate{\file{gmdoc-enhance.cls}{\from{gmdoc-enhance.dtx}{class}}} + +\Msg{#######################} +\Msg{# } +\Msg{# Um die Installation zu beenden, } +\Msg{# mssen Sie die folgenden Dateien } +\Msg{# in Ihrem TeX-Suchbaum unterbringen: } +\Msg{# } +\Msg{# gmdoc-enhance.sty } +%\Msg{# gmdoc-enhance.cls } +\Msg{# } +\Msg{# Um eine Dokumentation zu erzeugen, } +\Msg{# benutzen Sie } +\Msg{# } +\Msg{# latex gmdoc-enhance.dtx } +\Msg{# } +\Msg{# Viel Spa } +\Msg{# Paul Ebermann } +\Msg{# } +\Msg{#######################} + +\endbatchfile + + +%%% Folgendes ist nur fr meinen Editor. +%%% +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/tex/latex/gmdoc-enhance/gmdoc-enhance.sty b/Master/texmf-dist/tex/latex/gmdoc-enhance/gmdoc-enhance.sty new file mode 100644 index 00000000000..594f58fceae --- /dev/null +++ b/Master/texmf-dist/tex/latex/gmdoc-enhance/gmdoc-enhance.sty @@ -0,0 +1,241 @@ +%% +%% 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'. -- cgit v1.2.3