From 9a09aff4683470dfbaa491c0e38b230f6c88b6d9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 19 Dec 2006 01:04:11 +0000 Subject: new package gmdoc (18dec06) git-svn-id: svn://tug.org/texlive/trunk@2803 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/gmdoc/README | 108 ++++ .../doc/latex/gmdoc/basedrivers/doc_gmdoc.tex | 129 +++++ .../doc/latex/gmdoc/basedrivers/docstrip_gmdoc.tex | 49 ++ .../doc/latex/gmdoc/basedrivers/gmeometric.sty | 184 ++++++ .../doc/latex/gmdoc/basedrivers/oldcomm.sty | 111 ++++ .../doc/latex/gmdoc/basedrivers/source2e_gmdoc.tex | 623 +++++++++++++++++++++ Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.pdf | Bin 0 -> 2256761 bytes Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.tex | 67 +++ 8 files changed, 1271 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/gmdoc/README create mode 100644 Master/texmf-dist/doc/latex/gmdoc/basedrivers/doc_gmdoc.tex create mode 100644 Master/texmf-dist/doc/latex/gmdoc/basedrivers/docstrip_gmdoc.tex create mode 100644 Master/texmf-dist/doc/latex/gmdoc/basedrivers/gmeometric.sty create mode 100644 Master/texmf-dist/doc/latex/gmdoc/basedrivers/oldcomm.sty create mode 100644 Master/texmf-dist/doc/latex/gmdoc/basedrivers/source2e_gmdoc.tex create mode 100644 Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.pdf create mode 100644 Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.tex (limited to 'Master/texmf-dist/doc') diff --git a/Master/texmf-dist/doc/latex/gmdoc/README b/Master/texmf-dist/doc/latex/gmdoc/README new file mode 100644 index 00000000000..6c3d638d171 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/README @@ -0,0 +1,108 @@ +The gmdoc.zip package +is a work of Grzegorz `Natror' Murzynowski, + + + +1. Copyright 2006 by Grzegorz `Natror' Murzynowski + +This program is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + + +2. Introduction + +This package provides a tool for documenting of (La)TeX +packages, classes etc., i.e., the .sty, .cls +etc. The author just writes the code and adds the commentary +preceded with % sign (or another sign properly declared). No special +environments are necessary. + +The package tends to be compatible with the standard doc.sty +package, i.e., the .dtx files are also compilable with +gmdoc (they may need very little adjustment, in some rather +special cases). + +The tools are integrated with hyperref.sty's advantages such as +hyperlinking of index entries, of contents entries and +of cross-references. + + +3. Installation + +Just put the gmdoc.sty and gmdocc.cls somewhere in the texmf/tex/latex +branch and also the gmiflink.sty, gmverb.sty and gmiflink.sty files +(available on CTAN in separate packages). Creating a +/texmf/tex/latex/gm directory may be advisable if you consider using +other packages written by me. + +Moreover, you should put the gmglo.ist file, a MakeIndex style for the +changes' history, into some texmf/makeindex directory. + +Then you should refresh your TeX distribution's files' +database most probably. + + +4. Contents + +The distribution of this package consists of the following six files. + +gmdoc.sty +gmdocc.cls +gmglo.ist +README +gmdocDoc.tex +gmdocDoc.pdf + + +5. Documentation + +The last of the above files (the .pdf) is a documentation compiled +from the .sty file by running LaTeX on the gmdocDoc.tex file twice, +then MakeIndex on the gmdoc.idx and gmdoc.glo files, and then LaTeX +on gmdocDoc.tex twice again. + +MakeIndex shell commands: + makeindex -r gmdocDoc + makeindex -r -s gmglo.ist -o gmdocDoc.gls gmdocDoc.glo +The -r switch is to forbid MakeIndex make implicit ranges since the +(code line) numbers will be hyperlinks. +The -s switch makes MakeIndex use the style file instead of the +default settings and the -o switch declares the not-default name of +the output file + +Compiling of the documentation requires the packages gmdoc.sty +(with the gmdocc.cls class), gmverb.sty, gmutils.sty and also some +standard packages: hyperref.sty, color.sty, geometry.sty, +multicol.sty, lmodern.sty, fontenc.sty that should be installed +on your computer by default. + +The gmglo.ist file, a MakeIndex style for the changes' history, is +provided on CTAN in the gmdoc .zip archive and should +be put into some texmf/makeindex directory. + +If you have not installed the mwcls classes (available on CTAN and +present in TeX Lives e.g.), the result of your compilation may differ +a bit from the .pdf provided in this .zip archive in formattings: If +you have not installed mwcls, the standard article.cls will be +used. + + +BONUS: Base drivers + +As a bonus and example of doc-compatibility +there are driver files included +(cf. Palestrina, Missa papae Marceli ;-): + +source2e_gmdoc.tex +docstrip_gmdoc.tex +doc_gmdoc.tex + +oldcomm.sty +gmeometric.sty + +These drivers typeset the respective files from the +.../texmf-dist/source/latex/base +directory of TeXLive2005 distribution. +Probably you should redefine the \BasePath macro in them +so that it points that directory on your computer. diff --git a/Master/texmf-dist/doc/latex/gmdoc/basedrivers/doc_gmdoc.tex b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/doc_gmdoc.tex new file mode 100644 index 00000000000..34c5457e78a --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/doc_gmdoc.tex @@ -0,0 +1,129 @@ +%^^A%%%&--translate-file=cp1250pl -*- coding: cp1250 -*- + +\PassOptionsToPackage{hyperindex=false}{hyperref}% Because FM writes some almost +% explicit indexing commands where he uses `encapsulating' i.e., +% a~command to encapsulate the page number, which would interfere with +% \pk{hyperref}'s default \verb+|hyperpage+. +\documentclass[outeroff]{gmdocc} +\usepackage{array} + +\def\BasePath{c:/TeXLive2005/texmf-dist/source/latex/base/}% Probably +% you should write the respective path on your computer. + + +\ltxLookSetup +\gmdoccMargins +\olddocIncludes% This is the crucial declaration. +\twocoltoc + +\DeleteShortVerb\| +\OldMakeShortVerb*\| + +\makeatletter + +\author{Frank Mittelbach \and David Carlisle} +\title{The \pk{doc} and \pk{shortvrb} Packages\\ and\\ + the \pk{ltxdoc} Class} +\date{Typeset with the \pk{gmdoc} package by Natror\\\today} + +\begin{document} + +\smartunder + +\maketitle + + +\addtocontents{toc}{% to discard |\begin{multicols}{2}| of one + % included document. (Table of contents is declared twocolumn with + % |\twocoltoc| above.) + \let\protect\begin\protect\@gobbletwo + \protect\StoreMacro\protect\end + \def\protect\end{\protect\RestoreMacro\protect\end\protect\@gobble}% +}% Because one document has a~\env{multicols} twocolumn table of +% contents and the other has usual one column, this will put entire +% toc in(to) \env{multicols}. + + +\tableofcontents + +%^^A TODO Old comments i.e. authomatic verbatimization of all the cs's +%^^A met in the comment layer. + +\makeatletter +\AfterMacrocode{161}{% it's for a~tiny little typo in line 3299: They + % forgot to wrap |\@tempb| and |\@tempc| in shortverbs. + \def\@tempb{\cs{@tempb} }\def\@tempc{\cs{@tempc} }} + +\AtBegInputOnce{% + \chschange{v2.1b}{2006/10/20}{2126}% + \let\CheckSum\gobble + % \par Of course, none of the documents is not loaded, so we give the + % fileinfo explicitly. + \def\filedate{2004/02/09}\def\fileversion{v2.1b}% + % \label{explicit fileinfo} + \let\GetFileInfo\relax + \addtomacro\IndexParms{\arraybackslash}}% because |\IndexParms| use +% |\raggedright| and FM executes |\IndexParms| inside a~\env{tabular}. + +\DocInclude[\BasePath]{doc} + +\AtBegInputOnce{% + \chschange{v2.0u}{2006/10/20}{410}% + \let\CheckSum\gobble + \def\filedate{1999/08/08} \def\fileversion{v2.0u}% see line + % \ref{explicit fileinfo}. + \let\GetFileInfo\relax + % The rest of this |\AtBegInputOnce|'s contents is necessary since + % DC wrote it not commented out, which with \pk{doc} results with + % printing it both to the package (class) and the documentation, but + % with \pk{gmdoc} it puts this stuff in the code layer that'll be + % only printed verbatim. + \providecommand\dst{\expandafter{\normalfont\scshape docstrip}} + \title{The file \texttt{ltxdoc.dtx} for use with + \LaTeXe.\thanks{This file has version + number \fileversion, dated \filedate.}\\[2pt] + It contains the code for \texttt{ltxdoc.cls}} + \date{\filedate} + \author{David Carlisle} + \maketitle} + +\DocInclude[\BasePath]{ltxdoc}% + +\gmdocIncludes + +\SelfInclude{% + \title{\pk{doc_by_gmdoc.tex} The Driver\thanks{As mentioned in the + title, I~typeset these package and class with the \pk{gmdoc} + package, for which are they a~great inspiration and the base. + The typesetting needed only a~few tricks, so here i~give the +%^^A( + code of the `driver': a~snake eats its tail ;-) .}} + \author{Grzegorz `Natror' Murzynowski}% + \date{\today}% + \maketitle} + +\typeout{% + Produce change log with^^J% + makeindex -r -s gmglo.ist -o \jobnamewoe.gls \jobnamewoe.glo^^J + (gmglo.ist should be put into some texmf/makeindex directory.)^^J} +\PrintChanges +\typeout{% + Produce index with^^J% + makeindex -r \jobnamewoe^^J} + \PrintIndex + +\end{document} + +% MakeIndex shell commands: + +makeindex -r doc_gmdoc +makeindex -r -s gmglo.ist -o doc_gmdoc.gls doc_gmdoc.glo + +% \NoEOF +% \_ {\bf bf: \_} {\bfseries bfseries \_} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/gmdoc/basedrivers/docstrip_gmdoc.tex b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/docstrip_gmdoc.tex new file mode 100644 index 00000000000..6866649c2d9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/docstrip_gmdoc.tex @@ -0,0 +1,49 @@ +% +% A~driver file to typeset \pk{dostrip.dtx} with the \pk{gmdoc} +% package. +% +% GM 2006/12/1 +% + +\PassOptionsToPackage{indexallmacros}{gmdoc} + +\if1 1 + \documentclass[debug]{gmdocc}% + \mcdiagOn +\else + \documentclass{gmdocc}% +\fi + +\ltxLookSetup +\gmdoccMargins +\twocoltoc% For towocolumn table of contents. + +\DeleteShortVerb\| +\OldMakeShortVerb*\|% To define shortverb \verb+|+ such that it +% remains shortverb in math mode (by default I~define it to be $\vert$ in +% math mode. + +\relaxen\ds +\emptify\EOFMark + +\begin{document} + \def\BasePath{C:/TeXLive2005/texmf-dist/source/latex/base/} +%^^A \tableofcontents + \addtomacro\endabstract{\aftergroup\tableofcontents} + \AtBegInputOnce{\date{Printed \today\\ with \pk{gmdoc} package by + Natror}\let\date\gobble + \let\renewenvironment\gobbletwo}% the only renewed env.\ in + % \file{docstrip.dtx} is \env{theglossary}. I~prefer it to be twocolumn. + + \OldDocInput{\BasePath docstrip.dtx} + + \typeout{% + ^^JProduce change log with^^J% + makeindex -r -s gmglo.ist -o \jobnamewoe.gls \jobnamewoe.glo^^J} + + \typeout{% + ^^JProduce index with^^J% + makeindex -r \jobnamewoe.idx^^J} + +\end{document} +%\NoEOF diff --git a/Master/texmf-dist/doc/latex/gmdoc/basedrivers/gmeometric.sty b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/gmeometric.sty new file mode 100644 index 00000000000..bf9d573c66e --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/gmeometric.sty @@ -0,0 +1,184 @@ +% +% \GetFileInfo{gmeometric.sty} +% \title{The \pk{gmeometric} Package\thfileinfo} +% \author{Grzegorz `Natror' Murzynowski} +% \maketitle +% +% +% \begin{copyrnote} +% +%%Written by Grzegorz `Natror' Murzynowski, +%% natror at o2 dot pl +%% +%% \copyright\,2006 by Grzegorz `Natror' Murzynowski. +%% +%% This program is subject to the \LaTeX\ Project Public License. +%% See \url{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html}^^A +%% for the details of that license. +%% +%% LPPL status: "author-maintained".\par +% +%\end{copyrnote} +% +% \CheckSum{61} +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{gmeometric} + [2006/10/11 v0.67 to allow geometry macro in the document (GM)] + +%% +%% \division{Introduction, usage} +%% +%% This package allows you to use the |\geometry| macro provided by +%% the \pk{geometry} v3.2 by Hideo Umeki anywhere in a~document: +%% originally it's claused |\@onlypreamble| and the main work of +%% \pk{gmeometric} is to change that. +%% +%% Note it's rather queer to change the page layout \emph{inside} +%% a~document and it should be considered as drugs or alcohol: it's +%% O.K.\ only if you \emph{really} know what you're doing. +%% +%% In order to work properly, the macro should launch the |\clearpage| +%% or the |\cleardoublepage| to `commit' the changes. So, the +%% unstarred version trigges the first while the starred the +%% latter. If that doesn't work quite as expected, try to precede or +%% succede it with |\onecolumn| or |\twocolumn|. +%% +%% It's important that |\clear(double)page| launched by |\geometry| +%% not to be a~no-op, i.e., |\clear(double)page| immediately +%% preceding |\geometry| (nothing is printed in between) discards the +%% `commitment'. +%% +%% \stanza +%% You may use \pk{gmeometric} just like \pk{geometry} i.e., to specify +%% the layout as the package options: they shall be passed to +%% \pk{geometry}. +% +% +% \begin{gmlonely} +% \subdivision{Installation} +% +% Just put the \pk{gmeometric.sty} somewhere in the \file{texmf/\:tex/\:latex} +% branch. Creating a~\file{texmf/\:tex/\:latex/\:gm} directory may be advisable +% if you consider using other packages written by me. +% +% Then you should refresh your \TeX\ distribution's files' database +% most probably. +% \end{gmlonely} +% +% +% \subdivision{Contents of the \pk{gmeometric.zip} archive} +% +% The distribution of the \pk{gmeometric} package consists of the +% following four files. +% \begin{verse} +% \pk{gmeometric.sty}\\ +% \pk{README}\\ +% \pk{gmeometricDoc.tex}\\ +% \pk{gmeometricDoc.pdf} +% \end{verse} +% +% +% \begin{gmlonely} +% \subdivision{Compiling of the Documentation} +% +% The last of the above files (the \pk{.pdf}, i.e., \emph{this +% file}) is a~documentation compiled from the \pk{.sty} file by +% running \LaTeX\ (twice) on the \pk{gmeometricDoc.tex} file. +% Compiling of the documentation requires the packages: \pk{gmdoc} +% (\pk{gmdoc.sty} and \pk{gmdocc.cls}), \pk{gmverb.sty}, +% \pk{gmutils.sty}, \pk{gmiflink.sty} and also some standard +% packages: \pk{hyperref.sty}, \pk{color.sty}, \pk{geometry.sty}, +% \pk{multicol.sty}, \pk{lmodern.sty}, \pk{fontenc.sty} that should +% be installed on your computer by default. +% +% If you have not installed the \pk{mwart.cls} class (available on +% CTAN in \pk{mwcls} package), the result of your compilation may +% differ a bit from the \pk{.pdf} provided in this \pk{.zip} archive +% in formattings: If you have not installed \pk{mwart.cls}, the +% standard \pk{article.cls} class will be used. +% \end{gmlonely} +% +% +% \division{Usage} +% The only use of this package is to allow the |\geometry| command +% also inside the \env{document} (originally it's +% |\@onlypreamble|). To make |\geometry| work properly it may be +% advisable to `commit' the layout changes with (|\clearpage|, +% |\cleardoublepage| or |\newpage|) and maybe |\one/twocolumn|. +% +% Some layout commands should be put before |\one/twocolumn| and other +% after it. An example: +% +%\begin{verbatim} +% \thispagestyle{empty} +% +% \advance\textheight 3.4cm\relax +% \onecolumn +% \newpage +% +% \advance\footskip-1.7cm +% \geometry{hmargin=1.2cm,vmargin=1cm} +%\end{verbatim} +% +% And another: +%\begin{verbatim} +% \geometry{bottom=3.6cm} +% \clearpage +%\end{verbatim} +% +% +% \division{The Code} + +\RequirePackage{gmutils}% this package defines the storing and +% restoring commands. + +%^^A\let\gm@compactBDhook\@begindocumenthook +%^^A\def\@begindocumenthook{\gm@compactBDhook} + + +% redefine |\@onlypreamble|, add storing to BeginDocument. +\newcommand*\gme@tobestored{{% + \Gm@cnth \Gm@cntv \c@Gm@tempcnt \Gm@bindingoffset \Gm@wd@mp + \Gm@odd@mp \Gm@even@mp \Gm@orgw \Gm@orgh \Gm@dimlist}} + + +\AtBeginDocument{\expandafter\StoreMacros\gme@tobestored} + +\StoreMacro\@onlypreamble +\let\@onlypreamble\@gobble + + +\RequirePackageWithOptions{geometry} + + +% Restore |\@onlypreamble|: +\RestoreMacro\@onlypreamble + +% Add restore to BeginDocument: + +\AtBeginDocument{\expandafter\RestoreMacros\gme@tobestored} + + +% Redefine |\geometry| +% \CodeDefine\geometry +\def\geometry{% + \@ifstar{\gm@geometry{double}}{\gm@geometry{}}} + +% \CodeDefine\gm@geometry +\def\gm@geometry#1#2{% + \Gm@clean + \setkeys{Gm}{#2}% + \Gm@process + \csname clear#1page\endcsname}% + + +\endinput +% \NoEOF + +% (For my GNU Emacs:) +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "e:/LaTeX/TeXGuru/gmeometric/gmeometricDoc" +%%% End: diff --git a/Master/texmf-dist/doc/latex/gmdoc/basedrivers/oldcomm.sty b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/oldcomm.sty new file mode 100644 index 00000000000..a278a1bfd22 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/oldcomm.sty @@ -0,0 +1,111 @@ +% +% This is a~fragment of the \pk{ltxdoc} class by David Carlisle +% for handling the old comments in \LaTeXe\ Source Files. +% +% +% \section{Old Comments} +% +% The \LaTeXe\ sources contain a lot of code inherited from +% \LaTeX2.09. The comments in this code were not designed to be +% typeset, and do not contain the necessary \LaTeX\ markup. The +% \texttt{oldcomments} environment typesets these comments, +% automatically sensing when any control sequence appears, and +% implicitly adding the |\verb|. This procedure does not produce +% particularly beautiful pages, but it allows us to fully document new +% sections, and have some form of typeset comments on all the old +% code. +% \changes{v2.0e}{1994/03/18}{Use a fixed font.} +% +% Scan control names and put them in tt. +% will actually (incorrectly) scan past |\\| but this does not matter as +% this is almost never followed by a letter in practice. +% (ie |\\foo|) would put |foo| in |\ttfamily|. +% \begin{macrocode} +\def\oc@scan#1{% + \ifx\oc@bslash#1% + \egroup\let\next\oc@bslash\else + \ifcat a\noexpand#1% + #1\let\next\oc@scan\else + \ifx\oc@percent#1% + \def\next{\char`\%\egroup}% + \else + #1\let\next\egroup + \fi\fi\fi\next} +% \end{macrocode} +% +% \begin{macrocode} +\def\oc@bslash{\bgroup\oc@ttf\char`\\\oc@scan}% +% \end{macrocode} +% +% \begin{macrocode} +\def\oc@verb#1{% + \catcode`#1\active + \uccode`\~`#1% + \uppercase{\def~{{\oc@ttf\char`#1}}}} +% \end{macrocode} +% +% \begin{macrocode} +\begingroup + \obeyspaces% + \catcode`\/=\catcode`\\ +% \CodeEscapeChar\/ + /catcode`/\/active + /catcode`<=/catcode`{% + /catcode`>=/catcode`}% + /catcode`/{/active% + /catcode`/}/active% + /gdef/oldc< \end{oldcomments}>% + /gdef/begmac< \begin{macrocode}>% + /gdef/obs>>% +/endgroup% +% \end{macrocode} +% +% \begin{macrocode} +\begingroup + \catcode`\/=\catcode`\\ + \catcode`\\=13 +% \CodeEscapeChar\/ + /catcode`/|=/catcode`/% + /catcode`/%=13 + /gdef/oldcomments{| + /makeatletter + /let/do/oc@verb/dospecials + /frenchspacing/@vobeyspaces/obs + /raggedright + /oc@verb/>| + /oc@verb/<| + /let\/oc@bslash + /let%/oc@percent + /obeylines + /parindent/z@ + /ttfamily/expandafter/let/expandafter/oc@ttf/the/font + /rmfamily + /hfuzz/maxdimen + } +/endgroup +% \end{macrocode} +% +% \begin{macrocode} +\begingroup + \sloppy% + \obeylines% + \gdef\oc@percent#1^^M{% + \ifvmode% + \def\commentline{#1}% + \ifx\commentline\oldc% + \end{oldcomments}% + \else% + \ifx\commentline\begmac% + \begin{macrocode}% + \else% + \leavevmode% + #1^^M% + \fi\fi% + \else% + {\oc@ttf\char`\%}#1^^M% + \fi}% +\endgroup% +% \end{macrocode} +% +% +\def\task#1#2{} \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/gmdoc/basedrivers/source2e_gmdoc.tex b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/source2e_gmdoc.tex new file mode 100644 index 00000000000..c74380c813e --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/basedrivers/source2e_gmdoc.tex @@ -0,0 +1,623 @@ +% \iffalse meta-comment +% +% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2006 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This I~hope would be part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% \fi +% +% \division{Some Typesetting Remarks} +% +% This driver typesets The Source $2_\varepsilon$ included in the +% \TeX Live 2005 distribution. Some tricks here are done just for +% fixing typos in the Source Files. The Source Files themselves are +% intact. +% +% Most probably you should redefine the |\BasePath| macro so that it +% was the path of the \file{\dots/source/latex/base} directory on your +% system. The path levels should be separated with slashes (even on +% Windows) and should also end with a~slash (to concatenate well with +% the file name). +% +% \stanza +% While \TeX ing The Source again after a~fatally erroneous pass there +% happened the `\TeX\ capacity exceded error' sometimes. \TeX ing once +% again was the right thing to do. +% +% The \pk{hyperref} package usually issues some warnings about non +% existence of some hypertargets. I~consider it rather a~feature of +% \pk{hyperref} (a~bug?) than a~bug in the typeset file(s). +% +% \stanza +% One more thing you shouldn't bother of is the differences of the +% checksums, I~mean the usual \pk{gmdoc} message that the checksum +% stated in the file differs from \pk{gmdoc}'s own count. That is +% O.K.\ since the checksum stated in a~traditional \file{.dtx} +% is the number of backslashes in the macrocodes while the checksum +% handled and expected by \pk{gmdoc} is the number of \emph{the escape ^^B +% chars}. Don't get the difference? Assume the declared code escape +% char is |\| (as usual) and consider |\\| in the code. Due to +% the traditional counting this CS increases the checksum by 2 while +% due to mine by 1: the second bslash is \emph{not} escape char: it's +% the CS name. +% +% Moreover, when you declare |\CodeEscapeChar\!| e.g., the code +%\[\hbox{|!Alice !\!has !an !aligator|}\] +% increases the `new way' checksum by 5 not by 1 as it would do the +% traditional one. +% +% \stanza +% This driver uses an unofficial little package \pk{gmeometric} to +% allow the |\geometry| command also inside \env{document}. This +% package is included in the drivers' directory. +% +% +% \division{The Body} +% +% ``This document will typeset the \LaTeX\ sources as a single document. +% This will produce quite a large file (roughly 555 pages) and may +% take a long time. +% +% Some notes on processing this document are contained at the end +% of this document's source file, after |\end{document}| (not typeset).'' +% +% GM 2006/12/1 +% +% First a special index style for makeindex. +% + +\begin{filecontents}{gmsource2e.ist} +preamble +"\n \\begin{theindex} \n" +postamble +"\n\n \\end{theindex}\n" +% The next lines will produce some warnings when +% running Makeindex as they try to cover two different +% versions of the program: +lethead_prefix "{\\bfseries\\hfill " +lethead_suffix "\\hfill}\\nopagebreak\n" +lethead_flag 1 +heading_prefix "{\\bfseries\\hfill " +heading_suffix "\\hfill}\\nopagebreak\n" +headings_flag 1 + +% and just for source2e:\\ +% Remove R so I is treated in sequence I J K not I II III +page_precedence "rnaA" +\end{filecontents} + + +\PassOptionsToPackage{indexallmacros}{gmdoc} + +\if1 1 + \documentclass[debug,gmeometric]{gmdocc}% + \mcdiagOn +\else + \documentclass[gmeometric]{gmdocc}% +\fi + +\bgroup\catcode`_=12 +\firstofone{\egroup + \if1 1\includeonly{source2e_by_gmdoc}\fi} + + + +%^^A\usepackage[margin=2cm,b5paper]{geometry}% and this +\usepackage{oldcomm}% Definitions of \env{oldcomments} and |\task| +% copied from \file{ltxdoc.dtx}. + +\listfiles + +\ltxLookSetup +\gmdoccMargins +\olddocIncludes% This is the crucial declaration to drive \pk{gmdoc} into +% the traditional settings. +\twocoltoc% For towocolumn table of contents. + +\DeleteShortVerb\| +\OldMakeShortVerb*\|% To define shortverb \verb+|+ such that it +% remains shortverb in math mode (by default I~define it to be $\vert$ in +% math mode. + + + +% Do not index some TeX primitives, and some common plain TeX commands. + +\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global} +\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,% + \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi} +\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,% + \vbox,\vtop,\vcenter} +\DoNotIndex{\@empty,\immediate,\write} +\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup} +\DoNotIndex{\divide,\advance,\multiply,\count,\dimen} +\DoNotIndex{\relax,\space,\string} +\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,% + \closein,\closeout} +\DoNotIndex{\catcode,\endinput} +\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand} +\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss} +\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@} +\DoNotIndex{\dp,\wd,\ht,\vss,\unskip} + +% Set up the Index and Change History to use |\part|. +\makeatletter +\def\indexdiv{\part*} +\AtDIPrologue{\@ifnotmw{% + \markboth{Index}{Index}% + \addcontentsline{toc}{part}{Index}}{}% +} + +\GlossaryPrologue{\part*{Change History}% + % Allow control names to be hyphenated here\dots + {\GlossaryParms\ttfamily\hyphenchar\font=`\-}% + \@ifnotmw{% + \markboth{Change History}{Change History}% + \addcontentsline{toc}{part}{Change History}}{}% +} + +% ``The standard |\changes| command modified slightly to better cope with +% this multiple file document.''--- Not quite: +\makeatletter +% \begin{verbatim} +% % \def\changes@#1#2#3{% +% % \let\protect\@unexpandable@protect +% % \edef\@tempa{\noexpand\glossary{#2\space\currentfile\space#1\levelchar +% % \ifx\saved@macroname\@empty +% % \space +% % \actualchar +% % \generalname +% % \else +% % \expandafter\@gobble +% % \saved@macroname +% % \actualchar +% % \string\verb\quotechar*% +% % \verbatimchar\saved@macroname +% % \verbatimchar +% % \fi +% % :\levelchar #3}}% +% % \@tempa\endgroup\@esphack} +%\end{verbatim} +\makeatother + +% Produce a Change Log and (2 column) Index. +\RecordChanges +\CodelineIndex +\EnableCrossrefs +\setcounter{IndexColumns}{2} + +% Needed for documentation in \file{ltoutenc.dtx}. +\usepackage{textcomp} + +\olddocIncludes + +\begin{document} + \title{The \LaTeXe\ Sources\thanks{Typeset with \pk{gmdoc} by Natror + on \today.}} + \author{% + Johannes Braams\\ + David Carlisle\\ + Alan Jeffrey\\ + Leslie Lamport\\ + Frank Mittelbach\\ + Chris Rowley\\ + Rainer Sch\"opf} + + +\def\BasePath{C:/TeXLive2005/texmf-dist/source/latex/base/} + + +% This command will be used to input the patch file +% if that file exists. +\newcommand{\includeltpatch}{% + \def\currentfile{ltpatch.ltx} + \part{ltpatch} + {\let\ttfamily\relax + \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}% + Things we did wrong\ldots + \IndexInput{ltpatch.ltx}} + + + +% Get the date from \file{ltvers.dtx} +\makeatletter +\let\patchdate=\@empty +\begingroup + \def\ProvidesFile#1\fmtversion#2{\date{#2}\endinput} + \input{\BasePath ltvers.dtx} +\global\let\X@date=\@date + +% Add the patch version if available. + \long\def\Xdef#1#2#3\def#4#5{% + \xdef\X@date{#2}% + \xdef\patchdate{#5}% + \endinput}% + \InputIfFileExists{ltpatch.ltx} + {\let\def\Xdef}{\global\let\includeltpatch\relax} +\endgroup + +\ifx\@date\X@date + \def\Xpatch{0} + \ifx\patchdate\Xpatch\else + \edef\@date{\@date\space Patch level \patchdate} + \fi +\else + \@warning{ltpatch.ltx does not match ltvers.dtx!} + \let\includeltpatch\relax +\fi +\makeatother + + \pagenumbering{roman} + \thispagestyle{empty} + \maketitle + \emptify\maketitle + + \tableofcontents + + \clearpage + + \pagenumbering{arabic} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%``Each of the following |\DocInclude| lines includes a file with extension +% \file{.dtx}. Each of these files may be typeset separately. For instance +%\[\hbox{|latex ltboxes.dtx|}\] +% will typeset the source of the \LaTeX\ box commands.'' +% +% (Well, I~(Natror) prepared only this common driver.) +% +% If this file is processed, each of these separate \file{.dtx} files will be +% contained as a part of a single document. Using \file{ltxdoc.cfg} you can +% then optionally produce a combined index and/or change history for +% the entire source of the format file. Note that such a document will +% be quite large (about 555 pages). +% + + \DocInclude[\BasePath]{ltdirchk} % System dependent initialisation + +\AfterMacrocode{53}{\def\do{\cs{do}}}% A~bare |\do| in narration on +% line 161. + \DocInclude[\BasePath]{ltplain} % LaTeX version of Knuth's \file{plain.tex}. + + \DocInclude[\BasePath]{ltvers} % Current version date. + + \DocInclude[\BasePath]{ltdefns} % Initial definitions. + + \DocInclude[\BasePath]{ltalloc} % Allocation of counters and others. + + \DocInclude[\BasePath]{ltcntrl} % Program control macros. + + \DocInclude[\BasePath]{lterror} % Error handling. + + \DocInclude[\BasePath]{ltpar} % Paragraphs. + + \DocInclude[\BasePath]{ltspace} % Spacing, line and page breaking. + + \DocInclude[\BasePath]{ltlogos} % Logos. + + \DocInclude[\BasePath]{ltfiles} % |\input| files and related commands. + +\AtBegInputOnce{\let\task\gobble}% In general |\task| gobbles two, but +% in this file it's used with one argument and next to it is +% |\changes| (which in \pk{gmdoc} is |\outer| so gobbling it raises an +% error). + \DocInclude[\BasePath]{ltoutenc} % Output encoding interface. + + \DocInclude[\BasePath]{ltcounts} % Counters. + + \DocInclude[\BasePath]{ltlength} % Lengths. + + \DocInclude[\BasePath]{ltfssbas} % NFSS Base macros. + +%^^A\AtBegInputOnce{\addtomacro\maketitle{\traceoff}\traceon}%{\nameshow{@author}\show\maketitle\nameshow{@maketitle}} + \DocInclude[\BasePath]{ltfsstrc} % NFSS Tracing (and \file{tracefnt.sty}). + + \DocInclude[\BasePath]{ltfsscmp} % NFSS1 Compatibility. + + \DocInclude[\BasePath]{ltfssdcl} % NFSS Declarative interface. + + \DocInclude[\BasePath]{ltfssini} % NFSS Initialisation. + + \DocInclude[\BasePath]{fontdef} % \file{fonttext.ltx/fontmath.ltx} + + \DocInclude[\BasePath]{preload} % \file{preload.ltx} + + \DocInclude[\BasePath]{ltfntcmd} % |\textrm| etc. + + \DocInclude[\BasePath]{ltpageno} % Page numbering. + + \DocInclude[\BasePath]{ltxref} % Cross referencing. + + \AfterMacrocode{1137}{\let\GMDebugCS\cs + \def\cs##1{\expandafter\GMDebugCS\expandafter{\string##1}}} + % |\cs{\@defaultsubs}| on line 257, |\cs{\@refundefined}| on line + % 263. It's the first step. The next is done before |\PrintChanges|. + \AfterMacrocode{1139}{\let\cs\GMDebugCS} + \AfterMacrocode{1183}{% The last |\changes| have second argument + % |{1994/05/26/16}|. + \csname changes\endcsname{v0.9i}{1993/12/16}{\cs{literal} added}% + \csname changes\endcsname{v1.0r}{1994/05/26}{\cs{literal} removed}% + \gdef\GMdebugChanges{\expandafter\def\csname + changes\endcsname####1####2####3{}}% + \aftergroup\GMdebugChanges}% A~trick with |\aftergroup| 'cause + % that \env{macrocode} is inside \env{macro}. + \DocInclude[\BasePath]{ltmiscen} % Miscellaneous environment definitions. + + \DocInclude[\BasePath]{ltmath} % Mathematics set up. + + \DocInclude[\BasePath]{ltlists} % List and related environments. + + \DocInclude[\BasePath]{ltboxes} % Parbox and friends. + + \DocInclude[\BasePath]{lttab} % \env{tabbing}, \env{ tabular} and \env{array}. + + \DocInclude[\BasePath]{ltpictur} % Picture mode. + + \DocInclude[\BasePath]{ltthm} % Theorem environments. + + \DocInclude[\BasePath]{ltsect} % Sectioning. + + \DocInclude[\BasePath]{ltfloat} % Floats. + + \DocInclude[\BasePath]{ltidxglo} % Index and Glossary. + + \DocInclude[\BasePath]{ltbibl} % Bibliography. + + \DocInclude[\BasePath]{ltpage} % |\pagestyle|, |\raggedbottom|, |\sloppy|. + + \DocInclude[\BasePath]{ltoutput} % Output routine. + + \DocInclude[\BasePath]{ltclass} % Package \& Class interface. + + \DocInclude[\BasePath]{lthyphen} % Hyphenation (\file{hyphen.ltx}). + + \DocInclude[\BasePath]{ltfinal} % Last minute initialisations and dump. + + \includeltpatch % Corrections distributed after the full release. + +% Stop here if \file{ltxdoc.cfg} says |\AtEndOfClass{\OnlyDescription}| +\StopEventually{\end{document}} + +\clearpage +\pagestyle{headings} + +% Make \TeX\ shut up. +\hbadness=10000 +\newcount\hbadness +\hfuzz=\maxdimen + +\typeout{% + ^^JProduce change log with^^J% + makeindex -r -s gmglo.ist -o \jobnamewoe.gls \jobnamewoe.glo^^J} + +{%^^A\def\.{\cs{.}}% 'cause there's |\cs {\.}| in change log on l.4314 + % The next step of debug of \file{ltmiscen.dtx}'s + % |\changes...{...\cs{\@defaultsubs...}}| etc.\\ How does it work? + % Remember |\cs| is robust. The typo lies in giving it a~CS argument + % instead of expected CS name without backslash. So, in the step 1 + % we only |\string| the argument CS to let it be written outto the + % \file{.glo} file. Then, in step 2, we redefine |\cs| to first + % |\string| its argument inside an |\if|. Remember that |\if| + % expands two tokens next to it until it finds sth.\ unexpandable, + % so it'll execute |\string|. Then, if the first char of the + % |\stringed| argument is |\|\catother, the condition is satisfied + % and |\if...\fi| expands to what follows that backslash and + % precedes |\else|. So if the argument was a~CS, its backslash will + % be gobbled by |\if|. Otherwise |\if...\fi| expands to what is + % between |\else| and |\fi|, to the unchanged argument that is. Then + % to that expanded list of tokens the original |\cs| is applied. + \let\GMDebugCS\cs + \def\cs#1{\edef\AtTempa{\if\bslash\string#1\else#1\fi}% + \GMDebugCS{\AtTempa}} +\PrintChanges} + +\typeout{% + ^^JProduce index with^^J% + makeindex -r -s gmsource2e.ist \jobnamewoe.idx^^J} + +% ``Makeindex needs a symbol between the parts of composite page numbers +% but we dont want one, so:''---I~skip that. +% +%\begin{verbatim} +%% \begingroup +%% \def\endash{--} +%% \catcode`\-\active +%% \def-{\futurelet\temp\indexdash} +%% \def\indexdash{\ifx\temp-\endash\fi} +%\end{verbatim} + +\geometry{bottom=3.6cm} +%^^A\onecolumn +%^^A~\clearpage is contained in |\geometry|. + + +\PrintIndex +%^^A\endgroup + +% Make sure that the index is not printed twice +% (ltxdoc.cfg might have a second \PrintIndex command) +\let\PrintChanges\relax +\let\PrintIndex\relax + +\gmdoccMargins +\clearpage +\csname @ifnotmw\endcsname{\pagestyle{headings}}{\pagestyle{outer}} + +\gmdocIncludes +\SelfInclude{%^^A\def\CommonEntryCmd{UsgEntry}%\label{UsgHack} + % ^^A\label{SelfIncludeUsg} + \csname gag@index\endcsname% we tur writing outto the \file{.idx} + % out for the driver since it's \emph{not} a~part of The Source. +%^^A \filediv[The New Driver?]{How I~did It or \gmhypertarget{The Driver} File}% +} + +\end{document} +%\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +To use this file to produce a fully indexed source code +you need to execute the following (or equivalent) commands: + + latex source2e_by_gmdoc.tex + + makeindex -s gmsource2e.ist source2e_by_gmdoc.idx + makeindex -s gmglo.ist -o source2e_by_gmdoc.gls source2e_by_gmdoc.glo + + latex source2e_by_gmdoc.tex + latex source2e_by_gmdoc.tex + + +The makeindex style gmsource2e.ist is used in place of the usual +doc gind.ist to ensure that I is used in the sequence I J K +not I II II, which would be the default makeindex behaviour. + +The third run with latex is only required to get the table of +contents entries for the change log and index. You may speed things up +by using the \includeonly mechanism so as not to typeset the source +files on the second run. This involves changing the file +ltxdoc.cfg +between the latex runs. + +The following unix script automates this. + (It could easily be ported to scripts for DOS or VMS, + rm is ReMove a file, and echo "..." > file writes ... to "file".) + + +After this script (after the second ==============) is a similar script +that will produce the documentation for all the files in the base +distribution that are *not* included in source2e.dvi. This second script +was requested, but before using it, beware it will take a long time! +It may however be modified as required, eg to not typeset the fdd files +or whatever... + + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Natror (GM): I~didn't touch the following so it's probably not quite suitable +for gmdoc-ing. +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +============== +#!/bin/sh + +rm -f source2e_by_gmdoc.gls source2e_by_gmdoc.ind source2e_by_gmdoc.toc + +# First run: +# Create new standard ltxdoc.cfg file +# Pass the (possibly empty) list of arguments supplied on the +# command line to article class. +# +# If you use A4 paper, running this script with argument +# a4paper +# may save about 30 pages. +# +echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg + + +# Now LaTeX the file with this cfg file. +# +latex source2e.tex + + +# Make the Change log and Glossary. +# +makeindex -s source2e.ist source2e.idx +makeindex -s gglo.ist -o source2e.gls source2e.glo + + +# Second run: append \includeonly{} to ltxdoc.cfg to speed up things +# (this run needed only to get changes and index listed in .toc file) +# +# Note that the index will not be made incorrect by the insertion +# of the table of contents as the front matter uses a diferent page +# numbering scheme. +# +echo "\includeonly{}" >> ltxdoc.cfg + +latex source2e.tex + + +# Third and final run, to put everything together. +# First restore the cfg file: +# +echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg +latex source2e.tex + + +============== +#!/bin/sh + +# Running this script will process all the dtx fdd and *guide.tex +# and ltnews*.tex files in the LaTeX distribution, except the dtx +# files included in source2e.tex. +# (The shell first script in the comments of source2e.tex will +# process those.) + +# Any command line arguments (eg a4paper) are taken as options to the +# article class. + +# This script is likely to take ages! + +echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg +echo "\batchmode" >> ltxdoc.cfg + +# The next four lines produce full indexes and change logs +# you may not want those. +echo "\AtBeginDocument{\RecordChanges}" >> ltxdoc.cfg +echo "\AtEndDocument{\PrintChanges}" >> ltxdoc.cfg +echo "\AtBeginDocument{\CodelineIndex\EnableCrossrefs}" >> ltxdoc.cfg +echo "\AtEndDocument{\PrintIndex}" >> ltxdoc.cfg + +# If you do not want any code listings, just documentation, then instead +# of the above four lines, uncomment the following: +# echo "\AtBeginDocument{\OnlyDescription}" >> ltxdoc.cfg + +echo "\PassOptionsToClass{$*}{article}" > ltxguide.cfg +echo "\batchmode" >> ltxguide.cfg + +cp ltxguide.cfg ltnews.cfg + + +for i in *dtx *fdd *guide.tex ltnews*.tex +do +B=`basename $i .dtx` + +if (grep "Include{$B}" source2e.tex >/dev/null ; ) +then +echo In source2e: $i +else +echo latex $i + if (latex $i > /dev/null) + then + echo latex $i + latex $i > /dev/null + echo makeindex -s gind.ist $B.idx + makeindex -s gind.ist $B.idx > /dev/null 2> /dev/null + echo makeindex -s gglo.ist -o $B.gls $B.glo + makeindex -s gglo.ist -o $B.gls $B.glo > /dev/null 2> /dev/null + echo latex $i + latex $i > /dev/null + else + echo "!!! LaTeX ERROR: $i. (See $B.log.)" + fi +fi + +done diff --git a/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.pdf b/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.pdf new file mode 100644 index 00000000000..c1752c65b69 Binary files /dev/null and b/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.pdf differ diff --git a/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.tex b/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.tex new file mode 100644 index 00000000000..01909867964 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gmdoc/gmdocDoc.tex @@ -0,0 +1,67 @@ +%^^A This file is just a~driver. To learn how to use it, read the README +%^^A or the documentation in .pdf +% +% \ChangesStart{vNo}{1000/0/0} +% \chschange{vNo}{06/9/30}{27} +% \chschange{vNo}{06/10/12}{28} +% \chschange{vNo}{06/10/27}{35} +% \chschange{?}{06/12/1}{40} +% +% \CodeUsgIndex*{outeroff} \CodeUsgIndex*{mwrep} +\documentclass[outeroff,mwrep]{gmdocc} +%^^A\OnlyDescription +%^^A\usepackage{graphics} +\twocoltoc +\title{The \pk{gmdoc} Package\\ i.e., \pk{gmdoc.sty} and + \pk{gmdocc.cls}} +\author{Grzegorz `Natror' Murzynowski} +\date{Warszawa, 2006} +\begin{document} +\maketitle +\setcounter{page}{2}% \pk{hyperref} cries if it sees two pages +% numbered~1. +\tableofcontents +\DoIndex\maketitle +\DocInclude{gmdoc} +%^^A~.sty +\DocInclude{gmdocc} +\SelfInclude{\def\CommonEntryCmd{UsgEntry}%\label{UsgHack} + % \label{SelfIncludeUsg} + \filediv[\file{gmdocDoc.tex}, The Driver + File]{\file{gmdocDoc.tex}, \gmhypertarget{The Driver} File}% + \label{Driver}} + +% For your convenience I~decided to add the documentations of the +% three auxiliary packages: +\skipgmlonely[\stanza The remarks about installation and compiling + of the documentation are analogous to those in the chapter + \pk{gmdoc.sty} and therefore ommitted.\stanza] +\DocInclude{gmutils} +\DocInclude{gmiflink} +\DocInclude{gmverb} +\typeout{% + Produce change log with^^J% + makeindex -r -s gmglo.ist -o \jobnamewoe.gls \jobnamewoe.glo^^J + (gmglo.ist should be put into some texmf/makeindex directory.)^^J} +\PrintChanges +\typeout{% + Produce index with^^J% + makeindex -r \jobnamewoe^^J} + \PrintIndex +\end{document} +% MakeIndex shell commands: + makeindex -r gmdocDoc + makeindex -r -s gmglo.ist -o gmdocDoc.gls gmdocDoc.glo +% (\pk{gmglo.ist} should be put into some \pk{texmf/makeindex} +% directory.) + +%^^A( +% And ``That's all, folks'' ;-)\,. +% \NoEOF + +% The following is just my GNU Emacs stuff. +% +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: \ No newline at end of file -- cgit v1.2.3