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 --- .../tex/latex/gmdoc-enhance/gmdoc-enhance.sty | 241 +++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/gmdoc-enhance/gmdoc-enhance.sty (limited to 'Master/texmf-dist/tex/latex/gmdoc-enhance') 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