diff options
author | Karl Berry <karl@freefriends.org> | 2010-10-24 23:45:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-10-24 23:45:49 +0000 |
commit | 5d35798dc0ca224df75f912f020c70024e1a1169 (patch) | |
tree | 13119b44bd015581f894a4e81cbffa1af0652a54 /Master/texmf-dist/tex/latex/gmdoc | |
parent | 65cd4524ac65f0d15f8a509678773836c6d312a1 (diff) |
gmdoc (24oct10)
git-svn-id: svn://tug.org/texlive/trunk@20182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/gmdoc')
-rw-r--r-- | Master/texmf-dist/tex/latex/gmdoc/gmdoc.sty | 5229 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls | 397 |
2 files changed, 602 insertions, 5024 deletions
diff --git a/Master/texmf-dist/tex/latex/gmdoc/gmdoc.sty b/Master/texmf-dist/tex/latex/gmdoc/gmdoc.sty index fad28ae1538..90e416a0fa7 100644 --- a/Master/texmf-dist/tex/latex/gmdoc/gmdoc.sty +++ b/Master/texmf-dist/tex/latex/gmdoc/gmdoc.sty @@ -1,1988 +1,52 @@ -% -% \GetFileInfo{gmdoc.sty} -% \title{The \pk{gmdoc.sty} Package\thfileinfo} -% \author{Natror (Grzegorz Murzynowski)} -% \date{\fakeonum[0.6]\today} -% \maketitle -% \label{gmd} %% -%% This is (a~documentation of) file \pk{gmdoc.sty}, -%% intended to be used with \LaTeXe\ as a~package for -%% documenting \LaTeXpar\ files and to be documented with itself. -%% \stanza +%% \iffalse ^^A we skip the debug setting +\IfFileExists{\string~/bin/gen_and_xela}{\errorcontextlines=1000 }{} +%% \fi +%% ^^A $Id: TheUltimateMaster.gmd,v 0.250 2010/10/24 14:42:35 natror Exp natror $ +%% This is file “gmdoc.sty” generated with the DocStrip utility. +%% +%% +%% The original source files were: %% -% \begin{copyrnote} -% -%% Written by Natror (Grzegorz Murzynowski), -%% natror at o2 dot pl +%% gmdoc/gmdoc.gmd (with options: `doc') %% -%% \copyright\,2006, 2007, 2008, 2009, 2010 by Natror (Grzegorz 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.\rrthis +%% Copyright © 2006, 2007, 2008, 2009, 2010 +%% by Grzegorz ‘Natror’ Murzynowski +%% natror (at) o2 (dot) pl +%% +%% 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. %% -%% \acro{LPPL} status: "author-maintained".\par +%% LPPL status: "author-maintained". %% -%% Many thanks to my \TeX\ Guru Marcin Woli\nacute ski for his \TeX nical ^^A -%% support. -% -%\end{copyrnote} -% -% \ChangesStart{v0.98c}{1000/0/0} -% -% \chschange{v0.96}{2006/08/22}{2395} -% \chschange{v0.97}{06/09/04}{3636} -% \chschange{v0.98}{06/09/04}{3636} -% \chschange{v0.98a}{06/09/06}{4092} -% \chschange{v0.98b}{06/9/7}{4119} -% \chschange{v0.98c}{06/9/10}{4299} -% \chschange{v0.98d}{06/9/15}{4409} -% \chschange{v0.98e}{06/9/23}{4420} -% \chschange{v0.98f}{06/9/30}{4430} -% \chschange{v0.98g}{06/10/5}{4294} -% \chschange{v0.98i}{06/10/14}{4352} -% \chschange{v0.98j}{06/10/17}{4372} -% \chschange{v0.98k}{06/10/21}{4416} -% \chschange{v0.98l}{06/10/27}{4401} -% \chschange{v0.98m}{06/11/14}{4349} -% \chschange{v0.99}{06/11/29}{4462} -% \chschange{v0.99a}{2006/12/01}{4479} -% \chschange{v0.99b}{07/01/01}{4479} -% \chschange{v0.99c}{07/3/2}{4486} -% \chschange{v0.99c}{07/3/30}{4475} -% \chschange{v0.99d}{07/4/26}{4555} -% \chschange{v0.99e}{2007/4/29}{4574} -% \chschange{v0.99g}{2007/11/12}{5229} -% \chschange{v0.99i}{2008/8/3}{5247} -% \chschange{v0.99j}{2008/8/3}{5266} -% \chschange{v0.99k}{2008/8/4}{5261} -% \chschange{v0.99l}{2008/8/6}{5225} -% \chschange{v0.99m}{2008/8/9}{5356} -% \chschange{v0.99m}{2008/8/13}{5354} -% \chschange{v0.99n}{2008/8/22}{5409} -% \chschange{v0.99n}{2008/8/30}{5547} -% \chschange{v0.99p}{2008/10/4}{5607} -% \chschange{v0.99q}{2008/10/10}{5603} -% \chschange{v0.99r}{2008/11/22}{5607} -% \toCTAN{2008/11/22 v0.99r} -% \chschange{v0.99s}{2008/12/15}{5974} -% [\env{enumargs} handling the -% argument types of \cmd\DeclareCommand; handling -% \cmd\verbatimspecials, including writing them to index; introduction -% of \cmd\narrativett\ including \cmd\ampulexdef\ of \pk{gmverb} -% internals] -% \chschange{v0.991}{2010/3/2}{6134} -% [compatibilising the \env{enumargs} environment with -% \cmd\DeclareCommand of \pk{gmutils} v.0.991; abandoning -% \pk{gmeometric}] -% \toCTAN{2010/03/04 v0.991} -% -% -% -% -\ifnum\catcode`\@=11 % Why this test here---will come out in chapter -% \gmiflink{The driver}. ^^A~( the very first line -% ^^A and about coming out already! ;-) +%% +%% +%% For the documentation please refer to the file(s) +%% gmdoc.{gmd,pdf}. +%% +%% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{gmdoc} - [2010/03/01 v0.991 a documenting package (GM)] -\fi -% -% -% -% \CharacterTable {In my \TeX\ Guru's opinion the idea of -% checking of the correctness of chars is a~bit obsolete -% nowadays. Therefore I~define the \CharacterTable<#1> -% macro to gobble its argument and to typeout a~request -% for request.} -% -% -% \newcommand*\docfm{\pk{doc}} -% \newcommand*\gmdoc{\pk{gmdoc}} -% -% \tableofcontents -% -% -% \division{Readme} -% -% This package is a~tool for documenting of \LaTeXpar\ -% packages, classes etc., i.e., the \file{.sty}, \file{.cls} files -% etc. The author just writes the code and adds the commentary -% preceded with |%| sign (or another properly declared). No special -% environments are necessary. -% -% The package tends to be (optionally) compatible with the standard -% \pk{doc.sty} package, -% i.e., the \file{.dtx} files are also compilable with \pk{gmdoc} -% (they may need a~tiny adjustment in some special -% cases). -% -% The tools are integrated with \pk{hyperref}'s advantages such as -% hyperlinking of index entries, contents entries and -% cross-references. -% -% The package also works with \XeTeX\ (switches automatically). -% -% \begin{gmlonely} -% \subdivision{Installation} Unpack the \file{gmdoc-tds.zip} archive -% (this is an archive conforming the \acro{TDS} standard, see -% \file{CTAN/tds/tds.pdf})% in a~\file{texmf} directory -% or put the \pk{gmdoc.sty}, \pk{gmdocc.cls} and \pk{gmoldcomm.sty} -% somewhere in the \file{texmf/tex/latex} branch on your own. -% (Creating a~\file{texmf/tex/latex/gm} directory may be -% advisable if you consider using other packages written by me. And -% you \emph{have} to use four of them to make \pk{gmdoc} work.) -% -% You should also install \pk{gmverb.sty}, \pk{gmutils.sty} and -% \pk{gmiflink.sty} (e.g., put them into the same \file{gm} -% directory). These packages are available on \acro{CTAN} as separate -% \file{.zip} archives also in \acro{TDS}-compliant \pk{zip} -% archives. -% -% Moreover, you should put the \file{gmglo.ist} file, a MakeIndex -% style for the changes' history, into some \file{texmf/makeindex} -% (sub)directory. -% -% Then you should refresh your \TeX\ distribution's files' database -% most probably. -% \end{gmlonely} -% -% -% \subdivision{Contents of the \pk{gmdoc.zip} archive} -% -% The distribution of the \pk{gmdoc} package consists of the -% following five files and a~\acro{TDS}-compliant archive. -% \begin{verse} -% \pk{gmdoc.sty}\\ -% \pk{gmdocc.cls}\\ -% \pk{gmglo.ist}\\ -% \pk{README}\\ -% \pk{gmdoc.pdf}\\ -% \pk{gmdoc.tds.zip} -% \end{verse} -% -% -% \begin{gmlonely} -% \subdivision{Compiling of the documentation} -% -% The last of the above files (the \pk{.pdf}, i.e., \emph{this ^^B -% file}) is a~documentation compiled from the \pk{.sty} and -% \pk{.cls} files by running \XeLaTeX\ on the \file{gmdoc.sty} -% twice (|xelatex gmdoc.sty| in the directory you wish the -% documentation to be in, you don't have copy the \file{.sty} file -% there, \TeX\ will find it), then MakeIndex on the \file{gmdoc.idx} and -% \file{gmdoc.glo} files, and then \XeLaTeX\ on \file{gmdoc.sty} -% once more. (Using \LaTeX\ instead of \XeLaTeX\ should do, too.) -% -% MakeIndex shell commands: -%\begin{verbatim} -%makeindex -r gmdoc -%makeindex -r -s gmglo.ist -o gmdoc.gls gmdoc.glo -%\end{verbatim} -% The |-r| switch is to forbid MakeIndex to make implicit ranges since -% the (code line) numbers will be hyperlinks. -% -% Compiling the documentation requires the packages: -% \pk{gmdoc} (\pk{gmdoc.sty} and \pk{gmdocc.cls}), \pk{gmutils.sty}, -% \pk{gmverb.sty}, \pk{gmiflink.sty} and also some standard packages: -% \pk{hyperref.sty}, \pk{xcolor.sty}, \pk{geometry.sty}, -% \pk{multicol.sty}, \pk{lmodern.sty}, \pk{fontenc.sty} that should -% be installed on your computer by default. -% -% If you had not installed the \pk{mwcls} classes (available on -% \acro{CTAN} and present in \TeX\ Live e.g.), the result of your -% compilation might differ a~bit from the \pk{.pdf} provided in this -% \pk{.zip} archive in formatting: If you had not installed -% \pk{mwcls}, the standard \pk{article.cls} class would be used. -% \end{gmlonely} -% -% \subdivision{Dependencies} -% -% The \pk{gmdoc} bundle depends on some other packages of mine: -% \begin{verse} -% \pk{gmutils.sty},\\ -% \pk{gmverb.sty},\\ -% \pk{gmiflink.sty} -%^^A% \pk{gmeometric} (for the driver of The \LaTeXe\ Source)\\ -% \end{verse} -% and also on some standard packages: -% \begin{verse} -% \pk{hyperref.sty},\\ -% \pk{color.sty},\\ -% \pk{geometry.sty},\\ -% \pk{multicol.sty},\\ -% \pk{lmodern.sty},\\ -% \pk{fontenc.sty}\\ -% \end{verse} -% that should -% be installed on your computer by default. -% -% % \subdivision{Bonus: \file{base} drivers} -% As a~bonus and example of \docfm-compatibility -% there are driver files included -% (cf.\ Palestrina, \textit{Missa papae Marcelli} ;-): -% -% \begin{verse} -% \pk{source2e_gmdoc.tex}\\ -% \pk{docstrip_gmdoc.tex}\\ -% \pk{doc_gmdoc.tex} -% -% \pk{gmoldcomm.sty}\\ -% (\pk{gmsource2e.ist} is generated from \pk{source2e_gmdoc.tex})\\ -% \end{verse} -% -% These drivers typeset the respective files from the -%\[\hbox{\file{…/texmf-dist/source/latex/base}}\] -% directory of the \TeX Live2007 distribution (they only read that -% directory). -% -% Probably you should redefine the |\BasePath| macro in them -% so that it points that directory on your computer. -% -% -%\division*{Introduction} -% -% There are very sophisticated and effective tools for documenting -% \LaTeX\ macro packages, namely the \pk{doc} package and the -% \pk{ltxdoc} class. -% Why did I~write another documenting package then? -% -% I~like comfort and \pk{doc} is not comfortable enough for me. It -% requires special marking of the macro code to be properly typeset -% when documented. I~want \TeX\ to know `itself' where the code begins -% and ends, without additional marks. -% -% That's the difference. One more difference, more important for the -% people for whom the \docfm's conventions are acceptable, is that -% \gmdoc\ makes use of \pk{hyperref} advantages and makes -% a~hyperlinking index and toc entries and the -% cross-references, too. (The \CSs in the code maybe in the future.) -% -% The rest is striving to level the very high \pk{doc/ltxdoc}'s -% standard, such as (optional) numbering of the codelines and -% automatic indexing the control sequences e.g. -% -% The \docfm\ package was and still is a~great inspiration for me and -% I~would like this humble package to be considered as a~sort of -% homage to it\footnote{As Grieg's Piano Concerto is a~homage to ^^B -% the Schumann's.}. If I~mention copying some code or narrative but do -% not state the source explicitly, I~mean the \docfm\ package's -% documentation (I~have v2.1b dated 2004/02/09). -% -% -% -% \division{The user interface} -% -% -% \subdivision{Used terms} -% -% When I~write of a~\textbf{macro}, I~mean a~macro in \TeXbook's -% meaning, i.e., a~control sequence whose meaning is -% |\›[e⁄|g⁄|x›]def|ined. By a~\textbf{macro's parameter} I~mean each of -% |#|\<digit>s in its definition. When I~write about ^^A\) -% a~\textbf{macro's argument}, I~mean the value (list of tokens) -% substituting the corresponding parameter of this macro. -% (These understandings are according ^^A( -% to \TeXbook, I~hope: \TeX\ is a~religion of Book ;-)\,.) -% -% I'll use a~shorthand for `control sequence', \textbf{\CS}. -% -% When I~talk of a~\textbf{declaration}, I~mean a~macro that expands -% to a~certain assignment, such as |\itshape| or -% |\@onlypreamble{⁄<⁄CS>}|. -% -% Talking of declarations, I'll use the \textbf{\acro{OCSR}} acronym as -% a~shorthand for 'observes/ing common \TeX\ scoping rules'. -% -% By a~\textbf{command} I~mean a~certain abstract visible to the end -% user as a~\CS but consisting possibly of more than one macro. I'll -% talk of a~\textbf{command's argument} also in -% the `sense\:-for\:-the\:-end\:-user', e.g., I'll talk of the -% |\verb| \emph{command's} argument although \emph{the macro} -% |\verb| has no |#|\<digit> in its definition. -% -% The \textbf{code} to be typeset verbatim (and with all the bells -% and whistles) is everything that's not commented out in the source -% file and what is not a~leading space(s). -% -% The \textbf{commentary} or \textbf{narrative} is everything after -% the comment char till the end of a~line. The \textbf{comment char} -% is a~character the |\catcode| of which is 14 usually i.e., when the -% file works; if you don't play with -% the |\catcode|s, it's just the |%|. When the file is documented with -% \gmdoc, such a~char is re|\catcode|d and its r\ocircum le is else: it -% becomes the \textbf{code delimiter}. -% -% A~line containing any \TeX\ code (not commented out) will be called -% a~\textbf{codeline}. A~line that begins with (some leading spaces -% and) a~code delimiter will be called a~\textbf{comment line} or -% \textbf{narration line}. -% -% The \textbf{user} of this package will also be addressed -% as \textbf{you}.\stanza -% -% Not to favour any particular gender (of the amazingly rich variety, -% I~mean, not of the vulgarly simplified two-element set), in this -% documentation I~use alternating pronouns of third person ^^A( -% (\TextUsage\heshe\ etc. commands provided by \pk{gmutils}), so let -% one be not surprised if `\heshe' sees `\himher self' altered in the -% same sentence :-)\,. -% -% -% \subdivision{Preparing of the source file} -% -% When \LaTeXpar\ with \pk{gmdoc.sty} package loaded typesets the -% comment lines, the code delimiter is omitted. If the comment -% continues a~codeline, the code delimiter is printed. It's done so -% because ending a~\TeX\ code line with a~|%| is just a~concatenation -% with the next line sometimes. Comments longer than one line are -% typeset continuously with the code delimiters omitted. -% -% The user should just write \hisher\ splendid code and brilliant -% commentary. In the latter \heshe\ may use usual \LaTeXpar\ commands. -% The only requirement is, if an argument is divided in two lines, to -% end such a~dividing line with \TextUsage*{\^^M} (|\|\<line end>) or with -% \TextUsage*{^^B} sequence that'll enter the (active) \<char2> which -% shall gobble the line end. ^^A~and the leading code delimiter of -%^^A % the next line---obsoleted by ^^A~making % ignored in the commentary. -% -% But there is also a~\pk{gmdoc} version of |\footnote| provided that -% sets the catcodes so that you don't bother about |^^B| in the -% argument, \TextUsage\qfootnote that takes the same argument(s) as -% the standard |\footnote| and for emphasis there is -% \TextUsage*[\qemph]{\qemph}\arg{text to emphasise}. Both of them -% work also in the ‘straight’ \acro{EOL}s' scope so you don't -% bother. The \TextUsage\arg\ \pk{gmutils}' command also works without -% |^^B|. -% -% Moreover, if \heshe\ wants to add a~meta-comment i.e., a~text that -% doesn't appear in the code layer nor in the narrative, \heshe\ may -% use the \TextUsage*{^^A} sequence that'll be read by \TeX\ as -% \<char1>, which -% in \gmdoc\ is active and defined to gobble the stuff between itself -% and the line end. -% -% Note that |^^A| behaves much like comment char -% although it's active in fact: it re|\catcode|s the special -% characters including |\|, |{| and |}| -% so you don't have to worry about unbalanced braces or \cs{if}s in -% its scope. But |^^B| doesn't re|\catcode| anything (which would be -% useless in an argument) so any text between |^^B| and line end has -% to be balanced. -% -% However, it may be a~bit confusing -% for someone acquainted with the \docfm\ conventions. If you don't -% fancy the |^^B| special sequence, instead you may restore the -% standard meaning of the line end with the \TextUsage\StraightEOL\ -% declaration which -% \acro{OCSR}. As almost all the control -% sequences, it may be used also as an environment, i.e., -% |\begin{StraightEOL}|\ \dots\ |\end{StraightEOL}|. However, if for any -% reason you don't want to make an environment (a~group), there's -% a~|\StraightEOL|'s counterpart, the \TextUsage\QueerEOL\ declaration that -% restores again the -% queer\qfootnote{In my understanding -% `queer' and `straight' are not the opposites excluding each -% other but the counterparts that may cooperate in harmony for -% people's good. And, as I~try to show with the \cs{QueerEOL} and -% \cs{StraightEOL} declarations, `queer' may be very useful and -% recommended while `straight' is the standard but not necessarily -% normative. ^^A% (Remember also Alice's in the Wonderland exclamations -% ^^A % ``What a~queer day is today''.) -% } ^^A -% \gmdoc's meaning of the line end. It \acro{OCSR}, too. One more point to use -% |\StraightEOL| is where you wish some code lines to be executed -% both while loading the file and during the documentation pass -% (it's analogous to \docfm's not embracing some code lines in -% a~\env{macrocode} environment). -% -% ^^A % The \pk{gmdoc}'s ‘queer’ line ends may be surprising at first. For -% ^^A % example they should not occur in the arguments to the commands -% ^^A % because they cause errors then. To suppress the ‘queer’ and active -% ^^A % line end in the arguments of commands you should end a~line with -% ^^A % \TextUsage*{^^B} which will gobble the line end safely. -% -% \stanza -% -% As in standard \TeX ing, one gets a~paragraph by a~blank line. -% Such a~line should be |%|ed of course. A~fully blank line is -% considered a~blank \emph{code line} and hence results in -% a~vertical space in the documentation. As in the environments for -% poetry known to me, subsequent blank lines do not increase such -% a~space. -% -% Then \heshe\ should prepare a~main document file, -% a~\textbf{driver} henceforth, to set all the -% required formattings such as |\documentclass|, paper size -% etc., and load this package with a~standard command -% i.e., |\usepackage{gmdoc}|, just as \docfm's documentation says: -% -% \begin{quotation} -% If one is going to document a set of macros with the \pk{[gm]doc} -% package one has to prepare a special driver file which produces -% the formatted document. This driver file has the following -% characteristics: \par\leftskip\CodeIndent -% \stanza -% -% \noindent|\documentclass[|\<options>|]{|\<document class>|}|\par -% \noindent|\usepackage[|\<options, probably none>|]{gmdoc}|\par -% \<preamble>\par -% \noindent|\begin{document}|\par -% \<special input commands>\par -% \noindent|\end{document}|\par -% \end{quotation} -% -% -% \subdivision{The main input commands} -% -% To typeset a~source file you may use the \TextUsage\DocInput\ -% macro that takes the (path and) name of the file \emph{with ^^B -% the extension} as the only argument, e.g., -% |\DocInput{mybrilliantpackage.sty}|\qfootnote{I~use the ‘broken bar’ -% character as a~hyphen in verbatim texts and hyperlinks. If you -% dont't like it, see \cmd\verbDiscretionaryHyphen\ in \pk{gmverb}.}. -% -% (Note that an \emph{installed} package or class file is findable to -% \TeX\ even if you don't specify the path.) -% -% If a~source file is written with rather \docfm\ than \gmdoc\ in -% mind, then the \TextUsage\OldDocInput\ command may be more -% appropriate (e.g., if you break the arguments of commands in the -% commentary in lines). It also takes the file (path and) name as the -% argument. -% -% When using |\OldDocInput|, you have to wrap all the code in -% \TextUsage*{macrocode} environments, which is not necessary when you -% use |\DocInput|. Moreover, with |\OldDocInput| the\ -% \env{macrocode›[*›]} environments require to be ended with -% \[|% \end{macrocode›[*›]}|\] as in \docfm. (With |\DocInput| you are -% not obliged to precede |\end{macrocode›[*›]}| with The -% Four Spaces.) -% -% \stanza -% If you wish to document many files in one document, you are -% provided \TextUsage\DocInclude\ command, analogous to \LaTeX's -% |\include| and very likely to \pk{ltxdoc}'s command of the same -% name. In \gmdoc\ it has one mandatory argument that should be the -% file name \emph{without extension}, just like for |\include|. -% -% The file extensions\label{docinclude:extensions} supported by -% |\DocInclude| are \pk{.fdd}, \pk{.dtx}, \pk{.cls}, \pk{.sty}, -% \pk{.tex} and \pk{.fd}. The macro looks for one of those extensions -% in the order just given. If you need to document files of other -% extensions, please let me know and most probably we'll make it -% possible. -% -% |\DocInclude| has also an optional first argument that is intended -% to be the path of the included file with the levels separated by |/| -% (slash) and also ended with a~slash. The path given to |\DocInclude| as -% the first and optional argument will not appear in the headings nor -% in the footers. -% -% |\DocInclude| redefines \TextUsage\maketitle\ so that it makes -% a~chapter heading or, in the classes that don't support |\chapter|, -% a~part heading, in both cases with respective toc entries. The -% default assumption is that all the files have the same author(s) so -% there's no need to print them in the file heading. If you wish the -% authors names to be printed, you should write -% \TextUsage\PrintFilesAuthors\ in the preamble or before the relevant -% |\DocInclude|s. If you wish to undeclare printing the authors names, -% there is \TextUsage*[\Skip⁄-Fil⁄-es⁄-Auth⁄-ors]{\SkipFilesAuthors} -% declaration. -% -% Like in \pk{ltxdoc}, the name of an included file appears in the -% footer of each page with date and version info (if they are -% provided). -% -% The |\DocInclude|d files are numbered with the letters, the -% lowercase first, as in \pk{ltxdoc}. Such a~file-marker also precedes -% the index entries, if the (default) codeline index option is in force. -% -% As with |\include|, you may declare -% \TextUsage\includeonly|{⁄<filenames separated with commas>}| for -% the draft versions. -% -% \stanza If you want to put the driver into the same \file{.sty} or -% \file{.cls} file (see chapter \ref{Driver} to see how), you may -% write |\DocInput{\jobname.sty}|, or |\DocInclude{\jobname}|, but -% there's also a~shorthand for the latter \TextUsage\SelfInclude \ -% that takes no arguments. -% By the way, to avoid an infinite recursive input of \file{.aux} -% files in the case of self-inclusion an \file{.auxx} file is used -% instead of (main) \file{.aux}. -% -% By the way, to say \TeX\ to (self)include only the current file, -% most probably you should say |\includeonly{\jobname}| not -% |\includeonly{myfile}| because of the catcodes. -% \stanza -% -% At the default settings, the |\›(Doc⁄|Self›)Include|d files constitute -% chapters if |\chapter| is known and parts otherwise. The -% |\maketitle|s of those files result in the respective headings. -% -% If you prefer more \pk{ltxdoc}ish look, in which the files always -% constitute the parts and those parts have a~part's title -% pages with the file name and the files' |\maketitle|s result in -% (article-like) titles not division headings, then you are provided -% the \TextUsage\ltxLookSetup\ declaration (allowed only in the -% preamble). However, even after this declaration the files will be -% included according to \gmdoc's rules not necessarily to the \docfm's -% ones (i.e., with minimal marking necessary at the price of active -% line ends (therefore not allowed between a~command and its argument -% nor inside an argument)). -% -% On the other hand, if you like the look offered by me but you have -% the files prepared for \docfm\ not for \gmdoc, then you -% should declare \TextUsage\olddocIncludes. Unlike the previous one, -% this may be used anywhere, because I~have the account of including both -% \docfm-like and \gmdoc-like files into one document. This -% declaration just changes the internal input command and doesn't -% change the sectioning settings. -% -% It seems possible that you wish to document the `old-doc' files -% first and the `new-doc' ones after, so the above declaration has its -% counterpart, \TextUsage\gmdocIncludes, that may be used anywhere, -% too. Before the respective |\DocInclude|(s), of course. -% -% Both these declarations \acro{OCSR}. -% -% If you wish to document your files as with \pk{ltxdoc} \emph{and} -% as with \docfm, you should declare -% |\ltxLookSetup| in the preamble \emph{and} |\olddocIncludes|. -% -% \stanza -% Talking of analogies with \pk{ltxdoc}, if you like only the page -% layout provided by that class, there is the -% \TextUsage\ltxPageLayout\ declaration (allowed only in preamble) -% that only changes the margins and the text width (it's intended to -% be used with the default paper size). This declaration is -% contained in the |\ltxLookSetup| declaration. -% -% \stanza -% If you need to add something at the beginning of the input of file, -% there's the \TextUsage\AtBegInput\ declaration that takes one -% mandatory argument which is the stuff to be added. This declaration -% is global. It may be used more than one time and the arguments of -% each occurrence of it add up and are put at the beginning of input -% of every subsequent files. -% -% Simili modo, for the end of input, there's the -% \TextUsage\AtEndInput\ declaration, also one-argument, global and -% cumulative. -% -% If you need to add something at the beginning of input of only one -% file, put before the respective input command an -% \TextUsage\AtBegInputOnce|{|\<the stuff to be added>|}| -% declaration. It's also global which means that the groups do not -% limit its scope but it adds its argument only at the first input -% succeeding it (the argument gets wrapped in a~macro that's |\relax|ed -% at the first use). |\AtBegInputOnce|s add up, too. -% -% \stanza -% One more input command is \TextUsage\IndexInput\ (the name and idea -% of effect comes from \docfm). It takes the same argument as -% |\DocInput|, the file's (path and) name with extension. (It -% \emph{has} |\DocInput| inside). It works properly if the input file -% doesn't contain explicit \<char1> (|^^A| is \acro{OK}). -% -% The effect of this command is typesetting of all the input file -% verbatim, with the code lines numbered and the \CSs automatically -% indexed (\pk{gmdoc.sty} options are in force). -% -% -% \subdivision{Package options} -% -% As many good packages, this also provides some options: -% \stanza -% -% Due to best \TeX\ documenting traditions the codelines will be -% numbered. But if the user doesn't wish that, \heshe\ may turn it off -% with the \TextUsage*{linesnotnum} option. -% -% However, if \heshe\ agrees to have the lines numbered, \heshe\ may wish -% to reset the counter of lines \himher self, e.g., when \heshe\ -% documents many source files in one document. Then \heshe\ may wish -% the line numbers to be reset with every |{section}|'s turn for -% instance. This is the r\ocircum le of the \TextUsage*{uresetlinecount} -% option, which seems to be a~bit obsolete however, since the -% \TextCommonIndex\DocInclude|\DocInclude| command takes care of -% a~proper reset. -% -% Talking of line numbering further, a~tradition seems to exist to -% number only the codelines and not to number the lines of -% commentary. That's the default behaviour of \pk{gmdoc} but, if -% someone wants the comment lines to be numbered too, which may be -% convenient for reference purposes, \heshe\ is -% provided the \TextUsage*{countalllines} option. This option switches -% things to use the \cs{inputlineno} primitive for codeline numbers so -% you get the numbers of the source file instead of number only of the -% codelines. Note however, that there are no hypertargets made to the -% narration lines and the value of \cs{ref} is the number of the most -% recent codeline. -% -% Moreover, if \heshe\ wants to get the narration lines' number -% printed, there is the starred version of that option, -% \TextUsage*{countalllines*}. I~imagine someone may use it for -% debug. This option is not finished in details, it causes errors with -% \cs{addvspace} because it puts a~hyperlabel at every line. When it -% is in force, all the index entries are referenced -% with the line numbers and +\ProvidesClass{gmdoc} + [2010/09/25 v0.993 a documenting package (GM)] + + +%% %% ^^A( -% {\LineNumFont 441}\, the narration acquires a~bit biblical look ;-), -% {\LineNumFont 442}\,as shown in this short example. This option is intended -% {\LineNumFont 443}\,for the draft versions and it is not perfect (as if anything -% {\LineNumFont 444}\,in this package was). As you see, the lines -% {\LineNumFont 445}\,are typeset continuously with the numbers printed. -% -% \stanza -% By default the \pk{makeidx} package is loaded and initialised and -% the \CSs occurring in the code are automatically -% (hyper)indexed thanks to the \pk{hyperref} package. If the user -% doesn't wish to index anything, she should use the -% \TextUsage*{noindex} option. -% -% The index comes two possible ways: with the line numbers (if the -% lines are numbered) and that's the default, or with the page numbers, if -% the \TextUsage*{pageindex}\label{indexoptions} option is set. -% -% The references in the change history are of the same: when index is -% line number, then the changes history too. -% -% \stanza -% By default, \gmdoc\ excludes some 300 \CSs from being indexed. -% They are the most common \CSs, \LaTeX\ internal -% macros and \TeX\ primitives. To learn what \CSs are -% excluded actually, see lines \ref{DIE1}--\ref{DIE2}. -% -% If you don't want all those exclusions, you may turn them off with -% the \TextUsage*{indexallmacros} option. -% -% If you have ambiguous feelings about whether to let the default -% exclusions or forbid them, see p.\,\pageref{IEIDeclarations} to -% feed this ambiguity with a~couple of declarations. -% -% \stanza -% In \docfm\ package there's a~default behaviour of putting marked -% macro's or environment's name to a~marginpar. In the standard -% classes it's alright but not all the classes support marginpars. -% That is the reason why this package enables marginpar-ing when in -% standard classes, enables or disables it due to the respective option -% when with Marcin Woli\nacute ski's classes and in any case provides the -% options \TextUsage*{withmarginpar} and \TextUsage*{nomarginpar}. So, in -% non-standard classes the default behaviour is to disable marginpars. -% If the marginpars are enabled in \pk{gmdoc}, it will put marked -% control sequences and environments into marginpars (see -% \gmiflink[textUsage]{\cs{TextUsage} etc.}). These options do -% not affect common using marginpars, which depends on the -% document class. -% -% \stanza -% My suggestion is to make the spaces in the code visible except the -% leading ones and that's the default. But if you wish all the code -% spaces to be blank, I~give the option \TextUsage*{codespacesblank} -% reluctantly. Moreover, if you wish the code spaces to be blank only -% in some areas, then there's \TextUsage\CodeSpacesBlank\ declaration -% (\acro{OCSR}). -% -% Another space formatting option is \TextUsage*{codespacesgrey} -% suggested by Will Robertson. It makes the spaces of code visible -% only not black but grey. The name of their colour is -% |visspacesgrey| and by default it's defined as |{gray}{.5}|, you -% can change it with \pk{xcolor}'s |\definecolor|. There is also an -% \acro{OCSR} declaration \TextUsage\CodeSpacesGrey. -% -% If for any reason you wish the code spaces blank in general and -% visible and grey in \env{verbatim*}s, use the declaration -% \TextUsage\VisSpacesGrey\ of the \pk{gmverb} package. If you like -% little tricks, you can also specify -% |codespacesgrey, codespacesblank| in \pk{gmdoc} options (in this -% order). -% -% \subdivision{The packages required} -% -% \pk{gmdoc} requires (loads if they're not loaded yet) some other -% packages of mine, namely \pk{gmutils}, \pk{gmverb}, analogous to -% Frank Mittelbach's \pk{shortvrb}, and \pk{gmiflink} for conditional -% making of hyperlinks. It also requires \pk{hyperref}, -% \pk{multicol}, \pk{color} and \pk{makeidx}. -% -% The \pk{gmverb}\gmdmarginpar{\pk{gmverb}} package redefines the -% |\verb| command and the \env{verbatim} environment in such a~way that -% | |, |{| and |\| are breakable, the first with no `hyphen' and the -% other two with the comment char as a~hyphen, i.e., -% |{|\<subsequent text>|}| breaks into -% |{%|\\ \<subsequent text>|}| ^^A] bal. braces for Emacs -% and \<text>|\mylittlemacro| breaks into \<text>|%|\\ -% |\mylittlemacro|. -% -% This package provides the \TextUsage\verbatimspecials\ declaration -% that is used in \pk{gmdocc.cls} as {\noverbatimspecials -% \[|\verbatimspecials⁄«»[¿]|\] to set |⁄| (fractional slash) to the -% escape char, |«| and |»| to group begin and end respectively and -% |¿| to math shift in verbatims (also the short ones). Note -% however that this declaration \qemph{has no effect on the code -% layer}. } -% -% -% As the standard \LaTeX\ one, my |\verb| issues an error when a~line -% end occurs in its scope. But, if you'd like to allow line ends in -% short verbatims, there's the \TextUsage\verbeolOK\ declaration. The -% plain |\verb| typesets spaces blank and |\verb*| makes them visible, -% as in the standard version(s). -% -% Moreover, \pk{gmverb} provides the \TextUsage\MakeShortVerb\ -% declaration -% that takes a~one-char control sequence as the only argument and -% turns the char used into a~short verbatim delimiter, e.g., after -% \[\verb+\MakeShortVerb*\|+\] -% (as you see, the declaration has the starred version, which is for -% visible spaces, and non-starred for blank spaces) to get -% |\mylittlemacro| you may type \verb+|\mylittlemacro|+ instead of -% |\verb+\mylittlemacro+|. Because the char used in the last example -% is my favourite and is used this way by DEK in \TeXbook's -% format, \pk{gmverb} provides a~macro \TextUsage\dekclubs\ that -% expands to the example displayed above. -% -% Be careful because such active chars may interfere with other -% things, e.g., the \verb+|+ with the vertical line marker in \env{tabular}s and -% with the \pk{tikz} package. If this happens, you can declare e.g., -% \TextUsage\DeleteShortVerb\verb+\|+ and the previous meaning of the -% char used shall be restored. -% -% One more difference between \pk{gmverb} and \pk{shortvrb} is that -% the chars |\active|ated by |\MakeShortVerb|, behave as if they were -% `other' in math mode, so you may type e.g., \verb+$k|n$+ to get -% $k|n$ etc. -% \stanza -% -% The \pk{gmutils}\gmdmarginpar{\pk{gmutils}} package provides a~couple of -% macros similar to some basic \LaTeXpar\ ones, rather strictly -% technical and (I~hope) tricky, such as |\afterfi|, |\ifnextcat|, -% |\addtomacro| etc. It's this package that provides the macros for -% formatting of names of macros and files, such as |\cs|, |\marg|, |\pk| -% etc. Moreover, it provides a~powerful tool for defining commands -% with weird optional and Knuthian arguments, |\DeclareCommand|, -% inspired by ancient (pre-expl3) \pk{xparse}'s -% |\DeclareDocumentCommand|.\stanza -% -% The \gmdoc\ package uses a~lot of hyperlinking possibilities -% provided by \pk{hyperref}\gmdmarginpar{\pk{hyperref}} which is therefore -% probably the most important package required. The recommended -% situation is that the user loads \pk{hyperref} package with \hisher\ -% favourite options \emph{before} loading \pk{gmdoc}. -% -% If \heshe\ does not, \pk{gmdoc} shall load it with \emph{my} -% favourite options. -% -% To avoid an error if a~(hyper)referenced label does not exist, -% \pk{gmdoc} uses the \pk{gmiflink}\gmdmarginpar{\pk{gmiflink}} -% package. It works e.g., in the index when the codeline numbers have -% been changed: then they are still typeset, only not as hyperlinks -% but as a~common text. -% -% \stanza -% To typeset the index and the change history in balanced columns -% \gmdoc\ uses the \gmdmarginpar{\pk{multicol}}\pk{multicol} package -% that seems to be standard these days. -% -% Also the \gmdmarginpar{\pk{color}}\pk{multicol} package, required to -% define the default colour of the hyperlinks, seems to be standard -% already, and \pk{makeidx}. -% -% \subdivision[Automatic marking of definitions]{^^B -% \gmhypertarget{Automatic marking of definitions}} -% \gmdoc\ implements automatic detection of a~couple of -% definitions. By default it detects all occurrences of the following -% commands in the code: -%\begin{enumerate}^^B -%\item \label{def type} -% |\def|, -% |\newcount|, -% |\newdimen|, -% |\newskip|, -% |\newif|, -% |\newtoks|, -% |\newbox|, -% |\newread|,\\ -% |\newwrite|, -% |\newlength|, -% |\newcommand›[*›]|, -% |\renewcommand›[*›]|, -% |\providecommand›[*›]|, -% |\DeclareRobustCommand›[*›]|, -% |\DeclareTextCommand›[*›]|,\\ -% |\DeclareTextCommandDefault›[*›]|, -% |\DeclareDocumentCommand|, -% |\Decl⁄-are⁄-Com⁄-mand|\rrthis -% -% \item -% |\newenvironment›[*›]|, -% |\renewenvironment›[*›]|, -% |\DeclareOption|, -%^^A~ |%\DeclareDefining*\@namedef| -% -% \item \label{newctr} -% |\newcounter|, -% -% \xdef\gmdenumi{\arabic{enumi}} -% \end{enumerate} -% -% of the \pk{xkeyval} package: -% \begin{enumerate}\setcounter{enumi}{\gmdenumi}^^B -% \item\label{dk type} |\define@key|, -% |\define@boolkey|, -% |\define@choicekey|, -% |\DeclareOptionX|, -% -% \xdef\gmdenumi{\arabic{enumi}} -% \end{enumerate} -% -% and of the \pk{kvoptions} package: -% \begin{enumerate}\setcounter{enumi}{\gmdenumi}^^B -% \item \label{DSOption} -% |\DeclareStringOption|, -% |\DeclareBoolOption|, -% |\DeclareComplementaryOption|,\\ -% |\DeclareVoidOption|.\rrthis -% \end{enumerate}\par -% -% What does `detects' mean? It means that the main argument of -% detected command will be marked as defined at this point, -% i.e.\ thrown to a~margin note and indexed with a~`definition' entry. -% Moreover, for the definitions \ref*{newctr}--\ref*{DSOption} an -% alternate index entries will be created: of the \CSs underlying those -% definitions, e.g.\ |\newcounter{foo}| in the -% code will result in indexing |foo| and |\c@foo|. -% -% If you want to add detection of a~defining command not listed above, -% use the \TextUsage\DeclareDefining\ declaration. It comes in two -% flavours: `saut\eacute' and with star. The `saut\eacute' version -% (without star and without an optional argument) declares a~defining -% command of the kind of |\def| and |\newcommand|: its main argument, -% whether wrapped in braces or not, is a~\CS. The starred version (without -% the optional argument) declares a~defining command of the kind of -% |\newenvironment| and |\DeclareOption|: whose main mandatory -% argument is text. Both versions provide an optional argument in -% which you can set the keys. -% -% Probably the most important key is \TextUsage*{type}. Its default -% value is |cs| and that is set in the `saut\eacute' version. Another -% possible value is |text| and that is set in the starred version. You -% can also set three other types (any keyval setting of the type -% overrides the default and `starred' setting): |dk|, |dox| or |kvo|. -% -% |dk| stands for |\define@key| and is the type of \pk{xkeyval} -% definitions of keys (group \ref{dk type} commands). When detected, -% it scans further code for an optional \arg[KVprefix], mandatory -% \arg{KVfamily} and mandatory \arg{key name}. The default \<KVprefix> -% is |KV|, as in \pk{xkeyval}. -% -% |dox| stands for |\DeclareOptionX| and launches scanning for an -% optional \arg[KV\-pre\-fix], optional |<|\<KVfamily>|>| and mandatory -% \arg{option name}. Here the default \<KVprefix> -% is also |KV| and the default \<KVfamily> is the input file name. If -% you want to set another default family (e.g.\ if the code of -% \file{foo.sty} actually is in file \file{bar.dtx}), use -% \TextUsage\DeclareDOXHead\arg{KVfamily}. This declaration has an -% optional first argument that is the default \<KVprefix> for -% |\DeclareOptionX| definitions. -% -% |kvo| stands for the \pk{kvoptions} package by Heiko Oberdiek. This -% package provides a~handful of option defining commands (the group -% \ref{DSOption} commands). Detection of such a~command launches -% a~scan for mandatory \arg{option name} and alternate indexing of -% a~\CS |\|\<KVOfamily>|@|\<option name>. The default \<KVOfamily> is -% the input file name. Again, if you want to set something else, you -% are given the \TextUsage\DeclareKVOFam\arg{KVO\-fam\-ily} that sets the -% default family (and prefix: \<KVOfamily>|@|) for all the commands of -% group \ref{DSOption}. -% -% Next key recognised by |\DeclareDefining| is \TextUsage*{star}. It -% determines whether the starred version of a~defining command should -% be taken into account\qfootnote{The \scanverb{star} key is provided -% because the default setting of \cmd\MakePrivateLetters\ is such -% that \scanverb{*} is a~letter so e.g.\ \scanverb{\newcommand*} is -% scanned as one \CS. However, if the \cmd\makestarlow\ declaration -% is in force (e.g.\ with the \pk{gmdocc}) this is not -% so---\scanverb{\newcommand*} is scanned as the \CS\ -% \cmd\newcommand\ \emph{and} a~star.}. For example, |\newcommand| -% should be declared with |[star=true]| while |\def| with -% |[star=false]|. You can also write just |[star]| instead of -% |[star=true]|. It's the default if the |star| key is omitted. -% -% There are also \TextUsage*{KVpref} and \TextUsage*{KVfam} keys if -% you want to redeclare the \pk{xkeyval} definitions with another -% default prefix and family. -% -% For example, if you wish |\@namedef| to be detected (the original -% \LaTeX\ version), declare -% \[|\DeclareDefining*[star=false]\@namedef|\] or -% \[|\DeclareDefining[type=text,star=false]\@namedef|\] (as stated -% above, |*| is equivalent to |[type=text]|). -% -% On the other hand, if you want some of the commands listed above -% \emph{not} to be detected, write \TextUsage\HideDefining|\⁄<command>| -% in the commentary. If both \<command> and \<command\*> are detected, -% then both will be hidden. |\HideDefining| is always |\global|. Later -% you can resume detection of \<command> and \<command\*> with -% \TextUsage\ResumeDefining\<command> which is always |\global| -% too. Moreover, if you wish to suspend automatic detection of the -% defining \<command> only once (the next occurrence), there is -% |\HideDefining*| which suspends detection of the next occurrence of -% \<command>. So, if you wish to `hide' |\providecommand*| once, write -% \[|\HideDefining*\providecommand*|\] -% -% If you wish to turn entire detection mechanism off, write -% \TextUsage\HideAllDefining\ in the narration layer. Then you can -% resume detection with \TextUsage\ResumeAllDefining. Both -% declarations are |\global|. -% -% The basic definition command, |\def|, seems to me a~bit -% ambiguous. Definitely \emph{not always} it defines important -% macros. But first of all, if you |\def| a~\CS excluded from indexing (see -% section \gmiflink{Index ex/inclusions}), it will not be marked even -% if detection of |\def| is on. But if the |\def|'s argument is not -% excluded from indexing and you still don't want it to be marked at -% this point, you can write |\HideDefining*\def| or \TextUsage\UnDef\ -% for short. -% -% If you don't like |\def| to be detected more times, you may write -% |\HideDefining\def| of course, but there's a~shorthand for this: -% \TextUsage\HideDef\ which has the starred version -% \TextUsage\HideDef* -% equivalent to |\UnDef|. To resume detection of -% |\def| you are provided also a~shorthand, \TextUsage\ResumeDef\ (but -% |\ResumeDefining\def| also works). -% -% Since I~use |\pdef| most often, I~provide also \TextUsage\UnPdef, -% analogous to |\UnDef|. -% -% If you define things not with easily detectable commands, you can -% mark them `manually', with the |\Define| declaration described in -% the next section. -% -% -% -% \subdivision[Manual marking of the macros and environments]{^^B -% \gmhypertarget{Manual Marking of the Macros and Environments}} -% -% The concept (taken from \docfm ) is to index virtually all the -% control sequences occurring in the code. \gmdoc\ does that by -% default and needs no special command. (See below about excluding some -% macros from being indexed.) -% -% The next concept (also taken from \docfm) is to distinguish some -% occurrences of some control sequences by putting such a~sequence -% into a~marginpar and by special formatting of its index entry. That -% is what I~call marking the macros. -% \gmdoc\ provides also -% a~possibility of analogous marking for the environments' names and -% other sequences such as |^^A|. -% -% This package provides two kinds of special formatting of the -% index entries: `usage', with the reference number italic by default, -% and `def' (in \docfm\ called `main'), with the reference number -% roman (upright) and underlined by default. All the reference -% numbers, also those with no special formatting, are made hyperlinks -% to the page or the codeline according to the respective indexing -% option (see p.\,\pageref{indexoptions}). -% -% The macros and environments to be marked appear either in the code -% or in the commentary. But all the definitions appear in the code, -% I~suppose. Therefore the `def' marking macro is provided only for -% the code case. So we have\gmhypertarget[textUsage]{} the -% \TextUsage\Define, \TextUsage\CodeUsage\ and -% \TextUsage\TextUsage\ commands. -% -% The arguments to all three are as follows: -% \begin{enumargs} -% \dc s to indicate whether we mark a~single \CS or more than one -% token(s): without star for a~single \CS, with star for environment -% names etc., the starred version executes |\@sanitize|, -% \dc o version to be marginized and printed here, -% \dc m version to be put to the index, and also -% (printed here and) marginized if the previous argument is missing. -% \end{enumargs} -% -% Note that if you give a~single \CS to the starred version (e.g.\ the -% next \cs{MakePrivateLetters} is done so to hyphenate it in -% the text), you have to wrap it in braces because command -% \cs{@⁄hskip0ptsanitize}s the specials including backslash. -% -% \stanza -% You don't have to bother whether |@| is a~letter while documenting -% because even if not, these commands do make it a~letter, or more -% precisely, they execute -% \TextUsage*[\Ma⁄-ke⁄-Priv⁄-ate⁄-Let⁄-ters]{\MakePrivateLetters}\ -% whatever it does: At the default settings this command makes |*| -% a~letter, too, so a~starred version of a~command is a~proper -% argument to any of the three commands unstarred. -% -% The |\Define| and |\CodeUsage| commands, if unstarred, mark the next -% scanned occurrence of their argument in the code. (By `scanned -% occurrence' I~mean a~situation of the \CS having been scanned in the -% code which happens iff its name was preceded by the char declared as -% |\CodeEscapeChar|). The starred versions of those commands mark just -% the next codeline and don't make \TeX\ looks for the scanned -% occurrence of their argument (which would never happen if the -% argument is not a~\CS). Therefore, if you want to mark a~definition -% of an environment \env{foo}, you should put -% \[|%\Define*{foo}|\] -% right before the code line -% \[|\newenvironment{foo}{%|\]^^A] -% i.e., not separated by another code line. The starred versions of -% the |\Code›…| commands are also intended to mark implicit -% definitions of macros, e.g., |\Define*\@foofalse| before -% the line -% \[|\newif\if@foo|.\] -% -% They both are |\outer| to discourage their use inside macros because -% they actually re|\catcode| before taking their arguments. -% -% The |\TextUsage| (one-argument) command is intended to mark usage of -% a~verbatim occurrence of a~\TeX\ object in the commentary. Unlike -% |\CodeUsage| or |\Define|, it typesets its argument which means among others\ that -% the marginpar appears usually at the same line as the text you -% wanted to mark. This command also has the starred version primarily -% intended for the environments names, and secondarily for -% |^^A|-likes and \CSs, too. Currently, the most important difference -% is that the unstarred version executes |\MakePrivateLetters| while -% the starred does both |\MakePrivateLetters| and |\MakePrivateOthers| -% before reading the argument. -% -% If you consider the marginpars a~sort of sub(sub\dots)section -% marks, then you may wish to have a~command that makes a~marginpar of -% the desired \CS (or whatever) at the beginning of its description, -% which may be fairly far from the first occurrence of its -% object. Then you have the \TextUsage\Describe\ command which -% puts its argument in a~marginpar and indexes it as a~`usage' entry -% but doesn't print it in the text. It's |\outer|. -% -% All four commands just described put their (|\string|ed) argument -% into a~marginpar (if the marginpars are enabled) and create an index -% entry (if indexing is enabled). -% -% But what if you want just to make a~marginpar with macro's or -% environment's name? Then you have \TextUsage\CodeMarginize\ -% to declare what to put into a~marginpar in the \TeX\ code (it's -% |\outer|) and -% \TextUsage\TextMarginize\ to do so in the commentary. According to -% the spirit of this part of the interface, these commands also take one -% argument and have their starred versions for strings other than -% control sequences. -% -% The marginpars (if enabled) are `reverse' i.e., at the left margin, and -% their contents is flush right and typeset in a~font declared with -% \TextUsage\marginpartt. By default, this declaration is |\let| to -% |\tt| but it may be advisable to choose a~condensed font if there is -% any. Such a~choice is made by \pk{gmdocc.cls} if the Latin Modern -% fonts are available: in this case \pk{gmdocc.cls} uses Latin Modern -% Typewriter Light Condensed. -% -% If you need to put something in a~marginpar without making it typewriter -% font, there's the \TextUsage\gmdmarginpar\ macro (that takes one -% and mandatory argument) that only flushes its contents right. -% -% \stanza -% On the other hand, if you don't want to put a~\CS (or another -% verbatim text) in a~marginpar but only to index it, then there are -% \TextUsage\DefIndex\ and \TextUsage\CodeUsgIndex\ to declare -% special formatting of an entry. The unstarred versions of these -% commands look for their argument's scanned occurrence in the code -% (the argument should be a~\CS), and the starred ones just take the -% next code line as the reference point. Both these commands are -% |\outer|. -% -% In the code all the control sequences (except the excluded ones, see -% below) are indexed by default so no explicit command is needed for -% that. But the environments and other special sequences are not and -% the two commands described above in their |*|ed versions contain the -% command for indexing their argument. But what if you wish to index -% a~not scanned stuff as a~usual entry? The \TextUsage\CodeCommonIndex*\ -% comes in rescue, starred for the symmetry with the two previous commands -% (without |*| it just gobbles -% it's argument---it's indexed automatically anyway). It's |\outer|. -% -% Similarly, to index a~\TeX\ object occurring verbatim in the -% narrative, you have \TextUsage*[\Text⁄-Usg⁄-Ind⁄-ex]{\TextUsgIndex} -% and \TextUsage\TextCommonIndex\ commands with their starless -% versions for a~\CS argument and the starred for all kinds of the -% argument. -% -% \stanza -% Moreover, as in \docfm, the \TextUsage*{macro} and -% \TextUsage*{environment} environments are provided. Both take one -% argument that should be a~\CS for \env{macro} and `whatever' for -% \env{environment}. Both add the |\MacroTopsep| glue before and after -% their contents, and put their argument in a~marginpar at the first -% line of their contents (since it's done with |\strut|, you should -% not put any blank line (|%|ed or not) between -% |\begin{macro/environment}| and the first line of the -% contents). Then \env{macro} commands the first scanned occurrence of -% its argument to be indexed as `def' entry and \env{environment} -% commands \TeX\ to index the argument as if it occurred in the next -% code line (also as `def' entry). -% -% Since it's possible that you define a~\CS implicitly i.e., in such a~way that it -% cannot be scanned in the definition (with |\csname›…\endcsname| -% e.g.) and wrapping such a~definition (and description) in an -% \env{environment} environment would look misguidedly ugly, there's -% the \env{macro*} environment which \TeX nically is just an alias for -% \env{environment}. -% -% (To be honest, if you give a~\env{macro} environment a~non-\CS -% argument, it will accept it and then it'll work as -% \env{environment}.) -% -% -% \subdivision[Index ex/inclusions]{\gmhypertarget{Index ex/inclusions}} -% -% It's\label{IEIDeclarations} understandable\qfootnote{After reading ^^B( -% \docfm's documentation ;-)\,.} that you don't -% want some control sequences to be indexed in your documentation. The -% \docfm\ package gives a~brilliant solution: the -% \TextUsage\DoNotIndex\ declaration. So do I -% (although here, \TeX nically it's done another -% way). It \acro{OCSR}. This declaration takes one -% argument consisting of a~list of control sequences not to be -% indexed. The items of this list may be separated with commas, as in -% \docfm , but it's not obligatory. The whole list should come in -% curly braces (except when it's one-element), e.g., -% \[|\DoNotIndex{\some@macros,\are* \too\auxiliary\?}|\] -% (The spaces after the control sequences are ignored.) -% You may use as many |\DoNotIndex|es as you wish (about half as many as -% many \CSs may be declared, because for each \CS excluded from indexing -% a~special \CS is declared that stores the ban sentence). -% Excluding the same \CS more than once makes no problem. -% -% I~assume you wish most of \LaTeX\ macros, \TeX\ primitives etc.\ to -% be excluded from your index (as I~do). Therefore \pk{gmdoc} excludes -% some 300 \CSs by default. If you don't like it, just set the -% |indexallmacros| package option. -% -% On the third hand, if you like the default exclusions in general but -% wish to undo just a~couple of them, you are given \TextUsage\DoIndex\ -% declaration (\acro{OCSR}) that removes a~ban on all the \CSs given in the -% argument, e.g., -% \[|\DoIndex{\par \@@par \endgraf}|\] -% -% Moreover, you are provided the \TextUsage\DefaultIndexExclusions\ -% and \Describe\UndoDefaultIndexExclusions^^A -% \cs{Un\-do\-Def\-ault\-Ind\-ex\-Ex\-cl\-us\-ions} declarations that -% act according to their names. You may use them in any configuration -% with the |indexallmacros| option. Both of these declarations \acro{OCSR}. -% -% -% \subdivision{The \ds\ directives} -% -% \gmdoc\ typesets the \ds\ directives and it does it quite likely as -% \docfm, i.e., with math sans serif font. It does it automatically -% whether you use the traditional settings or the new. -% -% Advised by my \TeX\ Guru, I~didn't implement the module nesting -% recognition (MW told it's not that important.) -% -% So far \gmhypertarget{verbatim mode directive} is only -% half-handled. That is, a~line beginning with |%<||<|\<END-TAG> will be -% typeset as a~\ds\ directive, but ^^A~The magical directive divided -% ^^A due to the doctex mode who saw it and coloured all after with -% ^^A~salmon. -% the closing line |%|\<END-TAG> will be not. It doesn't seem to be -% hard to implement, if I~only receive some message it's really useful -% for someone. -% -%^^A If you use the \TextUsage*{macrocode} environment, you don't have to -%^^A add any \CS to get \ds\ directive typeset properly: within -%^^A \env{macrocode} a~|<| sign in a~line commented out is read as -%^^A a~beginning of a~\ds\ directive, which means that \TeX\ looks -%^^A for the closing |>| or the very next |<| as the beginning of the -%^^A special directive |<<|\<any text till the end of line>. In the -%^^A standard case of |<|\<directive>|>| \TeX\ typesets any further text -%^^A in its line as the code. -%^^A -%^^A If you want the \ds\ directives to be typeset without -%^^A \env{macrocode}, you should declare \TextUsage\docstrips\ to make -%^^A \TeX\ read the |<| in the comment layer as the beginning of -%^^A a~\ds\ directive. In |\docstrips|'s scope the |<| signs -%^^A occurring in math mode remain just inequality signs. -%^^A -%^^A If you wish only the first |<| met to start a~\ds\ directive -%^^A typesetting, then there's \TextUsage\docstrip\ declaration that -%^^A restores the previous meaning of |<| after the first using it as -%^^A a~\ds\ directive opener. -%^^A -%^^A Both |\docstrips| and |\docstrip| \acro{OCSR} and, of course you may use -%^^A them as environments (which doesn't make much sense with the -%^^A latter, though). -%^^A -% -% \subdivision{The changes history} -% -% The \docfm's documentation reads: -% \begin{quotation} -% To maintain a change history within the file, the |\changes| command may -% be placed amongst the description part of the changed code. It takes three -% arguments, thus: -% \[|\changes|\arg[\cs{cs}]{version}\relax^^A -% ^^A \TextMarginize\changes^^A~raises an error “not in outer par mode”. -% \arg{\acro{YYYY}/\acro{MM}/\acro{DD} date}{text}\] -% or, if you prefer the |\ProvidesPackage/Class| syntax, -% -% \[|\chgs⁄arg[⁄cs«cs»]{⁄<⁄acro«YYYY/MM/DD»> ⁄<version> ⁄<text>}|\] -% -% The optional \cs{cs} argument may be a~\CS (with backslash) or -% a~string. By default it's the most recently defined \CS\ (see -% section about automatic detection of definitions). -% -% -% The changes may be used to produce an auxiliary file (\LaTeX's -% |\glossary| mechanism is used for this) which may be printed after -% suitable formatting. The |\changes| [command] encloses the \<date> in -% parentheses and appends the \<text> to form the printed entry in -% such a change history [\dots\ obsolete remark omitted]. -% -% To cause the change information to be written out, include -% \TextUsage\RecordChanges\ in the driver['s preamble or just in the -% source file (\pk{gmdocc.cls} does it for you)]. To read in and print -% the sorted change history (in two -% columns), just put the \TextUsage\PrintChanges\ command as the last -% (commented-out, and thus executed during the documentation pass -% through the file) command in your package file [or in the driver]. -% Alternatively, this command may form one of the arguments of the -% |\StopEventually| command, although a change history is probably not -% required if only the description is being printed. The command -% assumes that MakeIndex or some other program has processed the -% \pk{.glo} file to generate a~sorted \pk{.gls} file. You need -% a~special MakeIndex style file; a suitable one is supplied with -% \docfm\ [and \gmdoc], called \iffalse\pk{gglo.ist}\fi^^A -% [\dots\ \textbf{\pk{gmglo.ist}} for \gmdoc]. The \TextUsage\GlossaryMin, -% \TextUsage\GlossaryPrologue\ and \TextUsage\GlossaryParms\ macros are -% analogous to the |\Index›…| versions [see -% sec.~\gmiflink[IndexParams]{The parameters} -% p.\,\pageref*{IndexParams}]. (The \LaTeX\ `glossary' -% mechanism is used for the change entries.) -% \end{quotation} -% -% In \gmdoc\ (unless you turn definitions detection off), you can put -% |\changes| after the line of definition of a~command to set the -% default argument of |\changes| to that command. For example, -%\begin{verbatim} -% \newcommand*\dodecaphonic{›…} -% % \changes{v0.99e}{2007/04/29}{renamed from \cs{DodecaPhonic}} -%\end{verbatim} -% results with a~history (sub)entry: -% \deksmallskip -% v0.99e\par\hspace*{\parindent} (\dots)\par \hspace*{\parindent} -% \cs{dodecaphonic}: \par\hspace*{2\parindent} renamed from -% \cs{DodecaPhonic}, \textit{\arabic{page}} -% \deksmallskip -% -% Such a~setting is in force till the next definition and -% \emph{every} detected definition resets it. -% -% In \gmdoc\ |\changes| is |\outer|. -% -% \stanza -% As mentioned in the introduction, the glossary, the changes history -% that is, uses a~special MakeIndex style, \pk{gmglo.ist}. This style -% declares another set of the control chars but you don't have to -% worry: |\changes| takes care of setting them properly. To be -% precise, |\changes| executes \TextUsage\MakeGlossaryControls\ that -% is defined as -% \begin{verbatim} -% \def\actualchar{=} \def\quotechar{!}% -% \def\levelchar{>} \edef\encapchar{\xiiclub} -%\end{verbatim} -% -% Only if you -% want to add a~control character yourself in a~changes entry, to quote -% some char, that is (using level or encapsulation chars is not -% recommended since |\changes| uses them itself), use rather -% |\quotechar|. -% -% \stanza -% Before writing an entry to the \pk{.glo} file, |\changes| -% checks if the date (the second mandatory\equals the third argument) -% is later than the date stored in the counter -% \TextUsage*{ChangesStartDate}. You may set this counter with a -% \Describe\ChangesStart^^B -% \[|\ChangesStart{|\<version>|}{|\<year>|/|\<month>|/|\<day>|}|\] -% declaration. -% -% If the \env{ChangesStartDate} is set to a~date contemporary to \TeX\ -% i.e., not earlier than September 1982\qfootnote{DEK in \textit{\TeX\ -% The Program} mentions that month as of \TeX\ Version 0 release.}, -% then a~note shall appear at the beginning of the changes history -% that informs the reader of omitting the earlier changes entries. -% -% If the date stored in \env{ChangesStartDate} is earlier than \TeX, -% no notification of omitting shall be printed. This is intended for -% a~rather tricky usage of the changes start date feature: you may -% establish two threads of the changes history: the one for the users, -% dated with four digit year, and the other for yourself only, dated -% with two or three digit year. If you declare -% \[|\ChangesStart{|\<version?>|}{1000/00/00}|\] -% or so, the changes entries dated with less-than-four digit year -% shall be omitted and no notification shall be issued of that. -% -% \stanza -% -% While scanning the \CSs in the code, \gmdoc\ counts them and prints -% the information about their number on the terminal and in -% \pk{.log}. Moreover, you may declare -% \TextUsage\CheckSum|{|\<number>|}| before the code and \TeX\ will -% inform you whether the number stated by you is -% correct or not, and what it is. As you guess, it's not my original idea -% but I~took it from \docfm. -% -% There it is provided as a~tool for -% testing whether the file is corrupted. -% My \TeX\ Guru says it's a~bit old-fashioned nowadays but I~like the -% idea and use it to document the file's growth. For this purpose -% \gmdoc\ types out lines like -% \begin{verbatim} %% \chschange{v0.98j}{2006/10/19}{4372} %% \chschange{v0.98j}{06/10/19}{4372} -%\end{verbatim} -% and you may place them at the beginning of the source file. Such -% a~line results in setting the check sum to the number contained in -% the last pair of braces and in making a~`general' changes entry that -% states the check sum for version \<first brace> dated \<second ^^B -% brace> was \<third brace>. -% -% \stanza -% There is also -% \TextUsage\toCTAN|{|\<date>\textvisiblespace\<version>|}|, -% a~shorthand -% for -% \[|\chgs||{|\<date>\textvisiblespace\<version>^^A -% \textvisiblespace |put to \acro{CTAN} on |\<date>|}|\] -% -% -% \subdivision{The parameters} -% -% The \pk{gmdoc} package provides some parameters specific to -% typesetting the \TeX\ code: -% -% \stanza -% \TextUsage\stanzaskip\ is a~vertical space inserted when a~blank -% (code) line is met. It's equal ^^A|0.75\medskipamount| -% |\medskipamount| by default. -%^^A (with the \emph{entire} |\medskipamount|'s stretch- and -% ^^A~shrinkability). -% Subsequent blank code lines do not increase this -% space. -% -% At the points where narration begins a~new line after the code or an -% in-line comment and where a~new code line begins after the narration -% (that is not an in-line comment), a~\TextUsage\CodeTopsep\ glue is -% added. At the beginning and the end of a~\env{macro} or -% \env{environment} environment a~|\MacroTopsep| glue is added. By -% default, these two skips are set equal |\stanzaskip|. -% -% The |\stanzaskip|'s value is assigned also to the display skips and -% to |\topsep|. This is done with the \TextUsage\UniformSkips\ -% declaration executed by default. If you want to change some of those -% values, you should declare \TextUsage\NonUniformSkips\ in the -% preamble to discard the default declaration. (To be more precise, by -% default |\UniformSkips| is executed twice: when loading \gmdoc\ and -% again |\AtBeginDocument| to allow you to change |\stanzaskip| and -% have the other glues set due to it. |\NonUniformSkips| relaxes the -% |\UniformSkips|'s occurrence at |\begin{document}|.) -% -% If you want to add a~vertical space of |\CodeTopsep| (equal by -% default |\stanzaskip|), you are provided the \TextUsage\stanza\ -% command. Similarly, if you want to add a~vertical space of the -% |\MacroTopsep| amount (by default also equal |\stanzaskip|), you are -% given the \TextUsage\chunkskip\ command. They both act analogously -% to |\addvspace| i.e., don't add two consecutive glues but put the -% bigger of them. -% -% Since |\CodeTopsep| glue is inserted automatically at each -% transition from the code (or code with an in-line comment) to the -% narration and reverse, it may happen that you want not to add such -% a~glue exceptionally. Then there's the \TextUsage\nostanza\ -% command. You can use it before narration to remove the vskip before -% it or after narration to suppress the vskip after it. -% -% \stanza -% The \TeX\ code is indented with the \TextUsage\CodeIndent\ glue -% and a~leading space increases indentation of the line by its -% (space's) width. The default value of |\CodeIndent| is 1.5\,em. -% -% There's also a~parameter for the indent of the narration, -% \TextUsage\TextIndent, but you should use it only in emergency -% (otherwise what would be the margins for?). It's 0\,sp by default. -% -% \stanza -% By default, the end of a~|\DocInput| file is marked with -% -%`\EOFMark' -% -% \noindent given by the -% \TextUsage\EOFMark\ macro. -% -% \stanza -% If you do use the \eTeX's primitive \TextUsage\everyeof, be sure -% the contents of it begins with |\relax| because it's the token that -% stops the main macro scanning the code. -% \stanza -% -% The crucial concept of \gmdoc\ is to use the line end character -% as a~verbatim group opener and the comment char, usually the |%|, as -% its delimiter. Therefore the `knowledge' what char starts -% a~commentary is for this package crucial and utterly -% important. The default assumption is that you use |%| as we -% all do. So, if you use another character, then you should declare it -% with \TextUsage\CodeDelim\ typing the desired char -% preceded by a~backslash, e.g., |\CodeDelim\&|\,. (As just -% mentioned implicitly, \possfil|\CodeDelim\%| is declared by -% default.) -% -% This declaration is always global so when- and wherever you change -% your mind you should express it with a~new |\CodeDelim| -% declaration. -% -% The unstarred version of |\CodeDelim| changes also the verb -% `hyphen', the char appearing at the verbatim line breaks that is and -% affects the \TextUsage\narrationmark\ which by default typesets |%| -% followed by an en space. -% -% The starred version, \TextUsage\CodeDelim*, changes only the code -% delimiter and the char typeset remains untouched. Most probably you -% shouldn't use the starred version. -% -% \stanza -% Talking of special chars, the escape char, |\| by default, is also -% very important for this package as it marks control sequences and -% allows automatic indexing them for instance. Therefore, if you for -% any reason choose another than |\| character to be the escape char, -% you should tell \pk{gmdoc} about it with the -% \TextUsage\CodeEscapeChar\ declaration. As the previous one, this too -% takes its argument preceded by a~backslash, -% e.g., |\CodeEscapeChar\!|. (As you may deduct from the above, -% |\CodeEscapeChar\\| is declared by default.) -% -% The tradition is that in the packages |@| char is a~letter -% i.e., of catcode \catletter. Frank Mittelbach in \docfm\ takes into account -% a~possibility that a~user wishes some other chars to be letters, -% too, and therefore he (F.M.) provides the -% \TextUsage\MakePrivateLetters\ macro. -% So do I~and like in \docfm, this macro makes |@| sign a~letter. It -% also makes |*| a~letter in order to cover the starred versions -% of commands. -% -% Analogously but for a~slightly different purpose, the -% \TextUsage\AddtoPrivateOthers\ macro is provided here. It adds its -% argument, which is supposed to be a~one-char \CS, to the -% |\doprivateothers| list, whose r\ocircum le is to allow some special chars -% to appear in the marking commands' arguments (the commands described -% in section \gmiflink{Macros for marking the macros}). The default -% contents of this list is | | (the space) and |^| so you may mark the -% environments names and special sequences like |^^A| safely. This -% list is also extended with every char that is |\MakeShortVerb|ed. -% (I~don't see a~need of removing chars from this list, but if -% you do, please let me know.) -% -% \stanza -% The line numbers (if enabled) are typeset in the -% \TextUsage\LineNumFont\ declaration's scope, which -% is defined as |{\normalfont\tiny}| by default. Let us also remember, that for -% each counter there is a~|\the|\<counter> macro available. The -% counter for the line numbers is called \TextUsage*{codelinenum} so -% the macro printing it is |\thecodelinenum|. By default we don't -% change its \LaTeX's definition which is equivalent to -% |\arabic{codelinenum}|. -% -% -% Three more parameter macros, are \TextUsage\IndexPrefix, -% \TextUsage\EntryPrefix\ and \TextUsage\HLPrefix. All three are -% provided with the account of including multiple files in one -% document. -% They are equal (almost) |\@empty| by default. The first may store -% main level index entry of which all indexed macros and environments -% would be sub-entries, e.g., the name of the package. The third may or -% even should store a~text to distinguish equal codeline numbers of -% distinct source files. It may be the file name too, of course. The -% second macro is intended for another concept, namely the one from -% \pk{ltxdoc} class, to distinguish the codeline numbers from -% different files \emph{in the index} by the file marker. Anyway, if -% you document just one file per document, there's no need of -% redefining those macros, nor when you input multiple files with -% |\DocInclude|. -% -% \pk{gmdoc} automatically indexes the control sequences -% occurring in the code. Their index entries may be `common' or -% distinguished in two (more) ways. The concept is to distinguish the -% entries indicating the \emph{usage} of the \CS and the entries -% indicating the \emph{definition} of the \CS. -% -% The special formattings of `usage' and `def' index entries are -% determined by \Describe\UsgEntry\cs{Usg\-Ent\-ry} and \TextUsage\DefEntry\ -% one-parameter macros (the parameter shall be substituted with the -% reference number) and by default are defined as |\textit| and -% |\underline| respectively (as in \docfm). -% -% There's one more parameter macro, \TextUsage\CommonEntryCmd\ that -% stores the name of the encapsulation for the `common' index entries -% (not special) i.e., a~word that'll become a~\CS that will be put -% before an entry in the \file{.ind} file. By default it's defined as -% |{relax}| and a~nontrivial use of it you may see in the source of -% chapter \ref*{Driver}, where -% |\def\CommonEntryCmd{UsgEntry}| makes all the index entries of the -% driver formatted as `usage'. -% -% \stanza -% ^^A~Index Parameters -% \gmhypertarget[IndexParams]{The index} comes in a~\env{multicols} -% environment whose columns number is determined by the -% \TextUsage*{IndexColumns} counter set by default to~3. To save space, -% the index begins at the same page as the previous text provided -% there is at least \TextUsage\IndexMin\ of the page height free. By -% default, |\IndexMin|\equals\the\IndexMin. -% -% The text put at the beginning of the index is declared with -% a~one-argument -% \Describe\IndexPrologue\cs{Ind\-ex\-Pro\-lo\-gue}. Its default text -% at current index option you may \gmiflink[DIPrologue]{admire} on -% page \pageref*{DIPrologue}.^^A -% \AtDIPrologue{\raisebox{4cm}[0sp][0sp]{\gmhypertarget[DIPrologue]}} -% Of course, you may write your own |\IndexPrologue{|\<brand new ^^B -% index prologue>|}|, but if you like the default and want only to add -% something to it, you are provided \TextUsage\AtDIPrologue\ -% one-argument declaration that adds the stuff after the default -% text. For instance, I~used it to add a~label and hypertarget that is -% referred to two sentences earlier. -% -% By default the colour of the index entry hyperlinks is set black to -% let Adobe Reader work faster. If you don't want this, -% \Describe\IndexLinksBlack|\let\IndexLinksBlack\relax|. That leaves -% the index links colour alone and hides -% the text about black links from the default index prologue. -% -% Other index parameters are set with the \TextUsage\IndexParms\ macro -% defined in line \gmifref[IndexParms]{sixty-odd} of the code. If you -% want to change some of them, you don't have to use -% |\renewcommand*\IndexParms| and set all of the parameters: you may -% \Describe\gaddtomacro^^A -% |\gaddtomacro\IndexParms{|\<only the desired changes>|}|. -% (|\gaddtomacro| is an alias for \LaTeX's |\g@addto@macro| provided -% by \pk{gmutils}.) -% -% At the default \gmdoc\ settings the \file{.idx} file is prepared for -% the default settings of MakeIndex (no special style). Therefore the -% index control chars are as usual. But if you need to use other -% chars as MakeIndex controls, know that they are stored in the four -% macros: \TextUsage\actualchar, \TextUsage\quotechar, -% \TextUsage\levelchar\ and \TextUsage\encapchar\ whose meaning you -% infer from their names. Any redefinition of them \emph{should be ^^B -% done in the preamble} because the first usage of them takes place at -% |\begin{document}| and on it depends further tests telling \TeX\ -% what characters of a~scanned \CS name it should quote before -% writing it to the \pk{.idx} file. -% -% \stanza -% Frank Mittelbach in \docfm\ provides the |\verbatimchar| macro to -% (re)define the |\verb|'s delimiter for the index entries of the -% scanned \CS names etc. \gmdoc\ also uses \TextUsage\verbatimchar\ but -% defines it as |{&}|. Moreover, a~macro that wraps a~\CS name in |\verb| -% checks whether the wrapped \CS isn't |\&| and if it is, |$| is taken -% as the delimiter. So there's hardly chance that you'll need to -% redefine |\verbatimchar|. -% -% So strange delimiters are chosen deliberately to allow any `other' -% chars in the environments names. -% -% \stanza -% There's a~quadratus of commands taken from \docfm: -% \TextUsage\StopEventually, \TextUsage\Finale,\\ -% \TextUsage\AlsoImplementation\ and \TextUsage\OnlyDescription\ that -% should be -% explained simultaneously (in a~polyphonic song -% e.g.). -% -% The |\OnlyDescription| and |\AlsoImplementation| -% declarations are intended to exclude or include the code part from -% the documentation. The point between the description and the -% implementation part should be marked with |\StopEventually{|\<the ^^B -% stuff to be executed anyway>|}| and |\Finale| should be typed -% at the end of file. Then |\OnlyDescription| defines -% |\StopEventually| to expand to its argument followed by |\endinput| -% and\\ |\AlsoImplementation| defines |\StopEventually| to do nothing -% but pass its argument to |\Finale|. -% -% -% \subdivision{The narration macros} -% -% To print the control sequences' names you have the \TextUsage\verb\ macro and -% its `shortverb' version whatever you define (see the \pk{gmverb} -% package). -% -% For short verbatim texts in the in-line comments \pk{gmdoc} provides -% the \TextUsage\inverb\<a~char>\dots\<a~char> (the name stands for -% `in-line verbatim') command that redefines the \pk{gmverb} breakables -% to break with |%| at the beginning of the -% lower line to avoid mistaking such a~broken verbatim commentary text -% for the code. -% -% But nor |\verb›[*›]| neither |\inverb| will work if -% you put them in an argument of another macro. For such a~situation, -% or if you just prefer, \gmdoc\ (\pk{gmutils}) provides a~robust command -% \TextUsage\cs, which takes one obligatory argument, the macro's name -% without the backslash, e.g., |\cs{mymacro}| produces -% \cs{mymacro}. I~take account of a~need of printing some other text -% verbatim, too, and therefore |\cs| has the first argument -% optional, which is the text to be typeset before the mandatory -% argument. It's the backslash by default, but if you wish to typeset -% something without the |\|, you may write {\verbeolOK |\cs[]{not -% a~macro}|}. Moreover, for typesetting the environments' names, -% \gmdoc\ (\pk{gmutils}) -% provides the \TextUsage\env\ macro, that prints its argument -% verbatim and without a~backslash, e.g., |\env{an environment}| -% produces \env{an environment}. -% -% For usage in the in-line comments there are \TextUsage\incs\ and -% \TextUsage\inenv\ commands that take analogous arguments and precede -% the typeset command and environment names with a~|%| if at the -% beginning of a~new line. To those who like |\cmd|, there is also -% \TextUsage\incmd, an in-line version of the former. -% -% And for line breaking at |\cs| and |\env| there is -% \TextUsage\nlperc\ to ensure |%| at the beginning of a~new line and -% \TextUsage\+ to use in |\cs| and |\env| argument for a~discretionary -% hyphen that'll break to - at the end of the upper line and -% |%| at the beginning of the lower line. By -% default hyphenation of |\cs| and |\env| arguments is off, you can -% allow it only at |\-| or |\+|. -% -% There is also \TextUsage\nlpercent\ if you wish a~discretionary |%| -% without |\incs| or |\inverb|. -% -% \stanza By default the multi-line in-line comments are typeset with -% a~hanging indent (that is constant relatively to the current -% indent of the code) and justified. Since vertical alignment is -% determined by the parameters as they are at the moment of \cs{par}, -% no one can set the code line to be typeset ragged right (to break -% nicely if it's long) and the following in-line comment to be -% justified. Moreover, because of the hanging indent the lines of -% multi-line in-line comments are relatively short, you may get lots of -% overfulls. Therefore there is a~Boolean switch \TextUsage*{ilrr} -% (\acro{OCSR}), -% whose name stands for `In-Line Ragged-Right' and the in-line comments -% (and their codelines) are typeset justified in the scope of -% |\ilrrfalse| which is the default. -% When you write |\ilrrtrue|, then all in-line comments in its scope -% (and their codelines) will be typeset ragged right -% (and still with the hanging indent). Moreover, you are provided -% \TextUsage\ilrr\ and \TextUsage\ilju\ commands that set |\ilrrtrue| -% and |\ilrrfalse| for the current in-line comment only. Note you can -% use them anywhere within such a~comment, as they set |\rightskip| -% basically. |\ilrr| and |\ilju| are no-ops in the stand-alone narration. -% -% -% -% \stanza -% To print packages' names sans serif there is a~\TextUsage\pk\ -% one-argument command, and the \TextUsage\file\ command intended for -% the filenames. -% -% Because we play a~lot with the |\catcode|s here and want to talk -% about it, there are \TextUsage\catletter, \TextUsage\catother\ and -% \TextUsage\catactive\ macros that print \catletter, \catother\ and -% \catactive\ respectively to concisely mark the most used char -% categories. -% -% I~wish my self-documenting code to be able to be typeset each -% package separately or several in one document. Therefore I~need some -% `flexible' sectioning commands and here they are: -% \TextUsage\division, \TextUsage\subdivision\ and -% \TextUsage\subsubdivision\ so far, that by default are |\let| to be -% |\section|, |\subsection| and |\subsubsection| respectively. -% -% \stanza -% One more kind of flexibility is to allow using \pk{mwcls} or the -% standard classes for the same file. There was a~trouble with the -% number and order of the optional arguments of the original -% \pk{mwcls}'s sectioning commands. -% -% It's resolved in \pk{gmutils} so you are free at this point, and -% even more free than in the standard classes: if you give -% a~sectioning command just one optional argument, it will be the -% title to toc and to the running head (that's standard in -% scls\footnote{See \pk{gmutils} for some subtle details.}). If you give -% \emph{two} optionals, the first will go to the running head and the -% other to toc. (In both cases the mandatory argument goes only to the -% page). -% -% \stanza -% If you wish the |\DocInclude|d files make other sectionings than the -% default, you may declare \TextUsage\SetFileDiv|{|\<sec name without ^^B -% backslash>|}|. -% -% \stanza -% -% \pk{gmdoc.sty} provides also an environment \TextUsage*{gmlonely} -% to wrap some text you think you may want to skip some day. When -% that day comes, you write \TextUsage\skipgmlonely\ before the -% instances of \env{gmlonely} you want to skip. This declaration has -% an optional argument which is for a~text that'll appear in(stead of) the -% first \env{gmlonely}'s instance in every |\DocInput| or -% |\DocInclude|d file within |\skipgmlonely|'s scope. -% -% An example of use you may see in this documentation: the repeated -% passages about the installation and compiling the documentation are -% skipped in further chapters thanks to it. -% -% \stanza -% \gmdoc\ (\pk{gmutils}, to be precise) provides some \TeX-related -% logos:\\ -% \Describe\AmSTeX typesets \AmSTeX,\\ -% \Describe\BibTeX\BibTeX,\\ -% \Describe\SliTeX\SliTeX,\\ -% \Describe\PlainTeX\PlainTeX,\\ -% \Describe\Web\Web,\\ -% \Describe\TeXbook\TeXbook,\par^^A~without par there raised error -% ^^A `too many unprocessed floats'. -% \noindent\Describe\TB\TB\par -% \noindent\Describe\eTeX\eTeX,\\ -% \Describe\pdfeTeX\pdfeTeX\\ -% \Describe\pdfTeX\pdfTeX\\ -% \Describe\XeTeX\XeTeX\ (the first |E| will be reversed if the -% \pk{graphics} package is loaded or \XeTeX\ is at work) and\\ -% \Describe\LaTeXpar\LaTeXpar.\par -% -% \noindent\Describe\ds\ds\ not quite a~logo, but still convenient. -% -% \stanza -% The \TextUsage*{copyrnote} environment is provided to format the -% copyright note flush left in |\obeylines|' scope. -% -% \stanza -% -% To put an arbitrary text into a~marginpar and have it flushed right -% just like the macros' names, you are provided the -% \TextUsage\gmdmarginpar\ macro that takes one mandatory argument -% which is the contents of the marginpar. -% -% \stanza -% To make a~vertical space to separate some piece of text you are -% given two macros: \TextUsage\stanza\ and \TextUsage\chunkskip. The -% first adds |\stanzaskip| while the latter |\MacroTopsep|. Both of -% them take care of not cumulating the vspaces. -% -% -%\stanza -% The \TextUsage*{quotation} environment is redefined just to enclose -% its contents in double quotes. -% -% If you don't like it, just call -% |\RestoreEnvironment{quotation}| after loading \pk{gmdoc}. -% Note however that other environments using -% \env{quotation}, such as \env{abstract}, keep their shape. -% -% \stanza -% -% The \TextUsage\GetFileInfo|{|\<file name with extension>|}| command -% defines \TextUsage\filedate, \Describe\fileversion\cs{fil\-e\-vers\-ion} and -% \TextUsage\fileinfo\ as the respective pieces of the info (the -% optional argument) provided -% by \cs{Pro\-vid\-es\-Class/Pack\-age/Fi\-le} declarations. The -% information of the file you process with \gmdoc\ -% is provided (and therefore getable) if the file is also loaded (or -% the |\Provide›…| line occurs in a~|\StraightEOL| scope). -% -% If the input file doesn't contain |\Provides›…| in the code layer, -% there are commands \TextUsage\ProvideFileInfo|{|\<file name with ^^B -% extension>|}[|\<info>|]|. (\<info> should consist of: -% \<year>|/|\<month>|/|\<day>| |\<version number>| |\<a~short note>.) -% -% Since we may documentally input files that we don't load, \docfm\ in -% \pk{gmdoc} e.g., we provide a~declaration to be put (in the comment -% layer) before the line(s) containing |\Provides›…|. The -% \TextUsage\FileInfo\ command takes the subsequent stuff till the -% closing |]| and subsequent line end, extracts from it the info and -% writes it to the \file{.aux} and rescans the stuff. We use an -% \eTeX\ primitive |\scantokens| for that purpose. -% -% A~macro for the standard note is provided, \TextUsage\filenote, that -% expands to ``This file has version number \<version number> dated -% \<date>.'' To place such a~note in the document's title (or heading, -% with |\DocInclude| at the default settings), there's -% \TextUsage\thfileinfo\ macro that puts |\fileinfo| in |\thanks|. -% -% \stanza -% Since |\noindent| didn't want to cooperate with my code and -% narration layers sometimes, I~provide \TextUsage\gmdnoindent\ that -% forces a~not indented paragraph if |\noindent| could not. -% -% \stanza -% If you declare the code delimiter other than |%| and then want |%| -% back, you may write \TextUsage\CDPerc\ instead of |\CodeDelim*\%|. -% -% If you like |&| as the code delimiter (as I~did twice), you may write -% \TextUsage\CDAnd\ instead of |\CodeDelim\&|. -% -% \stanza To get `\CS' which is `CS' in small caps (in |\acro| to be -% precise), you can write \TextUsage\CS. This macro is |\protected| so -% you can use it safely in |\changes| e.g.\ Moreover, it checks -% whether the next token is a~letter and puts a~space if so so you -% don't have to bother about \verb*|\CS\ |. -% -% \stanza -% To enumerate the list of command's arguments or macro's parameters -% there is the \TextUsage*{enumargs} environment which is a~version of -% \env{enumerate} with labels like |#7|. You can use |\item| or, at -% your option, \TextUsage\mand\ which is just an alias for the -% former. For an optional arguments use \TextUsage\opt\ which wraps -% the item label in square brackets. Moreover, to align optional and -% mandatory arguments digit under digit, use -% the \TextUsage*{enumargs*} environment. -% -% Both environments take an optional argument which is the number of -% |#|s. It's 1 by default, but also can be 2 or 4 (other numbers will -% typeset numbers without a~|#|). Please feel free to notify me if you -% really need more hashes in that environment. -% -% \stanza -% For an example driver file see chapter \gmiflink{The driver}. -% -% -% \subdivision{A~queerness of \cs{label}} -% -% You should be loyally informed that |\label| in \gmdoc\ -% behaves slightly -% non-standard in the \cs{Doc\-In\-put/\:Inc\-lud\-e}d files: -% the automatic redefinitions of |\ref| at each code line -% are \emph{global} (since the code is typeset in groups and the -% |\ref|s will be out of those groups), so -% a~|\ref|erence in the narrative will point at the last code line not -% the last section, \emph{unlike} in the standard \LaTeX. -% -% -% \subdivision{\docfm-compatibility} -% -% One of my goals while writing \gmdoc\ was to make compilation of -% \docfm-like files with \gmdoc\ possible. I~cannot guarantee the goal -% has been reached but I~\emph{did} compile \pk{doc.dtx} with not -% a~smallest change of that file (actually, there was a~tiny little -% buggie in line 3299 which I~fixed remotely with -% \cs{AfterMacrocode} tool written specially for that). So, if -% you wish to compile a~\docfm-like file with my humble package, just -% try. -% -% \TextUsage\AfterMacrocode\arg{mc number}\arg{the stuff} defines -% control sequence \cs{gmd@mchook}\<mc number> with the meaning \<the\ -% stuff> which is put at the end of \env{macrocode} and \env{oldmc} -% number \<mc number> (after the group). -% -% The \docfm\ commands most important in my opinion are supported by -% \gmdoc. Some commands, mostly the obsolete in my opinion, are not -% supported but give an info on the terminal and in \pk{.log}. -% -% I~assume that if one wishes to use \docfm's interface then \heshe\ -% won't use \gmdoc's options but just the default. (Some \gmdoc\ -% options may interfere with some \docfm\ commands, they may cancel -% them e.g.) -% -% \stanza -% The main input commands compatible with \docfm\ are -% \TextUsage\OldDocInput\ and \TextUsage\DocInclude, the latter -% however only in the \TextUsage\olddocIncludes\ declaration's scope. -% -% Within their scope/argument the \TextUsage*{macrocode} environments -% behave as in \docfm, i.e.\ they are a~kind of verbatim and require to be -% ended with |% \end{macrocode›[*›]}|. -% -% The default behaviour of \env{macrocode›[*›]} with the `new' input -% commands is different however. Remember that in the `new' fashion the code -% and narration layers philosophy is in force and that is sustained -% within \env{macrocode›[*›]}. Which means basically that with `new' -% settings when you write -%\begin{verbatim} %% \begin{macrocode} -% \alittlemacro % change it to \blaargh %%\end{macrocode} -%\end{verbatim} -% and |\blaargh|'s definition is |{foo}|, you'll get -%\[|\alittlemacro %| change it to foo\] -% (Note that `my' \env{macrocode} doesn't require -% the magical \verb*|% \end|.) -% -% If you are used to the traditional (\docfm's) \env{macrocode} and still wish to -% use \gmdoc\ new way, you have at least two options: there is the -% \TextUsage*{oldmc} environment analogous to the traditional (\docfm's) -% \env{macrocode} (it also has the starred version), that's the first -% option (I~needed the traditional behaviour once in this -% documentation, find out where \& why). The other is to write -% \TextUsage\OldMacrocodes. That declaration (\acro{OCSR}) redefines -% \env{macrocode} and \env{macrocode*} to behave the traditional way. -% (It's always executed by |\OldDocInput| and |\olddocIncludes|.) -% -% -% \stanza -% For a~more detailed discussion of what is \docfm-compatible and how, -% see the code section \gmiflink[doccompa]{\docfm-compatibility}. -% -%^^A \docstrip -%<*package> - -% \division[The driver part]{\gmhypertarget{The driver} part} -% -% In case of a~single package, such as \pk{gmutils}, a~driver part of -% the package may look as follows and you put it before -% \cs{ProvidesPackage/Class}. -% -%\begin{verbatim} %% \skiplines we skip the driver -%\ifnum\catcode`\@=12 -% -%\documentclass[outeroff, pagella, fontspec=quiet]{gmdocc} -%\usepackage{eufrak}% for |\continuum| in the commentary. -%\twocoltoc -%\begin{document} -% -%\DocInput{\jobname.sty} -%\PrintChanges -%\thispagestyle{empty} -%\typeout{% -% Produce change log with^^J% -% makeindex -r -s gmglo.ist -o \jobname.gls \jobname.glo^^J -% (gmglo.ist should be put into some texmf/makeindex directory.)^^J} -%\typeout{% -% Produce index with^^J% -% makeindex -r \jobname^^J} -%\afterfi{\end{document}} -% -%\fi% of driver pass %%\endskiplines -%\end{verbatim} -% -% The advantage of \TextUsage\skiplines…\TextUsage\endskiplines\ over -% |\iffalse…\fi| is that the latter has to contain balanced \cs{if}s -% and \cs{fi}s while the former hasn't because it sanitises the -% stuff. More precisely, it uses the \cs{dospecials} list, so it -% sanitises also the braces. -% -% Moreover, when the |countalllines›[*›]| option is in force, -% |\skipfiles|…|\endskipfiles| keeps the score of skipped lines. -% -% \label{Driver} -% {\def\CommonEntryCmd{UsgEntry}% -% -% Note |%\iffalse| \dots\ |%\fi| in the code layer that protects the -% driver against being typeset. -% -% But \pk{gmdoc} is more baroque and we want to see the driver -% typeset---behold. \ifnum\catcode`\@=12 \errorcontextlines=100 -% \CodeUsgIndex*{outeroff} \CodeUsgIndex*{mwrep} \documentclass[countalllines, codespacesgrey, outeroff, debug, mwrep, -pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} +pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \verbLongDashes @@ -1996,35 +60,25 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} June\or July\or August\or September\or October\or November\or December\fi\ \the\year} -%|%\includeonly{gmoldcomm}| -%^^A\includeonly{gmeometric,gmoldcomm} \begin{document} -%\skiplines \emptify\udigits % because orig. def. raises an error `\cs{@secondoftwo} has % an extra \}' -%\endskiplines \maketitle \setcounter{page}{2}% \pk{hyperref} cries if it sees two pages -% numbered~1. \tableofcontents \DoIndex\maketitle -%^^A\AtBegInputOnce{\showthe\catcode`\^^B} \SelfInclude -% \label{SelfIncludeUsg} \DocInclude{gmdocc} -% 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 omitted.\stanza] -\DocInclude{gmutils} -\DocInclude{gmiflink} +\DocInclude{gmutils} +\DocInclude{gmiflink} \DocInclude{gmverb} -%^^A\DocInclude{gmeometric} \DocInclude{gmoldcomm} \typeout{% Produce change log with^^J% @@ -2038,95 +92,25 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \afterfi{% \end{document} -% MakeIndex shell commands: makeindex -r gmdoc 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'' ;-)\,. }\fi% of |\ifnum\catcode`\@=12|, of the driver that is. -% }^^A~of special \cs{CommonEntryCmd}'s definition. -% -% \StopEventually{\NoEOF} -% -% -% \division{The code} -% -% For debug \catcode`\^^C=9\relax -% We set the |\catcode| of this char to \catactive\ in the comment -% layer. -% \catcode`\^^C\active -% -% \changes[^^C]{v0.98g}{06/10/10}{recatcoded for debug: in the working -% pass it's made ignored and in the documenting pass it's made active} -% -% -% \DoIndex{\par \@@par} -% -% The basic idea of this package is to re|\catcode| |^^M| (the line -% end char) and |%| (or any other comment char) so that they start and -% finish typesetting of what's between them as the \TeX\ code i.e., -% verbatim and with the bells and whistles. -% -% The bells and whistles are (optional) numbering of the codelines, -% and automatic indexing the \CSs, possibly with -% special format for the `def' and `usage' entries. -% -% As mentioned in the preface, this package aims at a~minimal markup -% of the working code. A~package author writes \hisher\ splendid code -% and adds a~brilliant comment in |%|ed lines and that's all. Of -% course, if \heshe\ wants to make a~|\section| or |\emph|asise, -% \heshe\ has to type respective \CSs. -% -% I~see the feature described above to be quite a~convenience, -% however it has some price. See section -% \gmiflink[afc]{Life among queer \acro{EOL}s} for details, -% here I~state only that in my opinion the price is not very high. -% \stanza -% -% More detailedly, the idea is to make |^^M| (end of line char) active -% and to define it to check if the next char i.e., the beginning of the -% next line is a~|%| and if so -% to gobble it and just continue usual typesetting or else to start -% a~verbatim scope. In fact, every such a~line end starts a~verbatim -% scope which is immediately closed, if the next line begins with -% (leading spaces and) the code delimiter. -% -% Further details are typographical parameters of verbatim scope and -% how to restore normal settings after such a~scope so that a~code -% line could be commented and still displayed, how to deal with -% leading spaces, how to allow breaking a~moving argument in two lines -% in the comment layer, how to index and marginpar macros etc. -% -% -%\subdivision{The package options} -% \RequirePackage{gmutils}[2008/08/30]% includes redefinition of -% \incs{newif} to make the switches \incs{protected}. \RequirePackage{xkeyval}% we need key-vals later, but maybe we'll make -% the option key-val as well. -% -% Maybe someone wants the code lines not to be numbered. - \newif\if@linesnotnum \DeclareOption{linesnotnum}{\@linesnotnumtrue} -% And maybe he or she wishes to declare resetting the line counter -% along with some sectioning counter him/herself. \newif\if@uresetlinecount \DeclareOption{uresetlinecount}{\@uresetlinecounttrue} -% And let the user be given a~possibility to count the comment -% lines. \newif\if@countalllines \newif\if@printalllinenos @@ -2141,67 +125,35 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@printalllinenostrue} -% Unlike in \docfm , indexing the macros is the default and the -% default reference is the code line number. - \newif\if@noindex \DeclareOption{noindex}{\@noindextrue} - \newif\if@pageindex \DeclareOption{pageindex}{\@pageindextrue} -% It would be a~great honour to me if someone would like to document -% \LaTeX\ source with this humble package but I~don't think it's -% really probable so let's make an option that'll switch index exclude -% list properly (see sec.\ \gmiflink{Index exclude list}). \newif\if@indexallmacros \DeclareOption{indexallmacros}{\@indexallmacrostrue} -% Some document classes don't support marginpars or disable them by -% default (as my favourite Marcin Woli\nacute ski's classes). -% -% \changes{v0.98e}{06/09/23}{wrapped in \cs{@ifundefined} (a~bug fix: -% before the bare \cs{newif} falsified the \cs{if@marginparsused} -% switch when it had been defined and set True by the \pk{mwart} -% class.)} \@ifundefined{if@marginparsused}{\newif\if@marginparsused}{} -% This switch is copied from \pk{mwbk.cls} for compatibility with -% it. Thanks to it loading an \pk{mwcls} with |[withmarginpar]| option -% shall switch marginpars on in this package, too. -% -% To be compatible with the standard classes, let's |\let|: \@ifclassloaded{article}{\@marginparsusedtrue}{} -%\label{mparclause1} \@ifclassloaded{report}{\@marginparsusedtrue}{} \@ifclassloaded{book}{\@marginparsusedtrue}{} -% \label{mparclause2} And if you don't use \pk{mwcls} nor standard -% classes, then you have the options: \DeclareOption{withmarginpar}{\@marginparsusedtrue} \DeclareOption{nomarginpar}{\@marginparsusedfalse} -% The order of the above conditional switches and options is significant. -% Thanks to it the options are available also in the -% standard classes and in \pk{mwcls}. -% -% \stanza -% To make the code spaces blank (they are visible by default except -% the leading ones). - \DeclareOption{codespacesblank}{% \AtEndOfPackage{% to allow \inverb|codespacesgrey, codespacesblank| \AtBeginDocument{\CodeSpacesBlank}}} - \DeclareOption{codespacesgrey}{% % \changes{v0.99l}{2008/08/06}{added due to Will Robertson's % suggestion} @@ -2211,51 +163,24 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ProcessOptions - -% \subdivision{The dependencies and preliminaries} -% -% We require another package of mine that provides some tricky macros -% analogous to the \LaTeX\ standard ones, such as |\newgif| and -% |\@ifnextcat|. Since 2008/08/08 it also makes \cs{if…} switches -% \cs{protected} (redefines \cs{newif}) \RequirePackage{gmutils}[2008/08/08] -% A~standard package for defining colours, \RequirePackage{xcolor} -% and a~colour definition for the hyperlinks not to be too bright \definecolor{deepblue}{rgb}{0,0,.85} -% And the standard package probably most important for \gmdoc: -% If the user doesn't load \pk{hyperref} with \hisher\ favourite -% options, we do, with \emph{ours}. If \heshe\ has -% done it, we change only the links' colour. -% -% \changes[hyperref]{v0.97}{06/09/04}{linkcolor made deep blue} -% \changes[hyperref]{v0.99g}{2007/10/30}{added bypass of encoding for loading -% \pk{url}} -%^^A\@ifXeTeX{\XeTeXdefaultencoding "cp1250"}{} \@ifpackageloaded{hyperref}{\hypersetup{colorlinks=true, linkcolor=deepblue, urlcolor=blue, filecolor=blue}}{% \RequirePackage[colorlinks=true, linkcolor=deepblue, urlcolor=blue, filecolor=blue, pdfstartview=FitH, pdfview=FitBH, -%^^A \@ifXeTeX{xetex,}{} pdfpagemode=UseNone]{hyperref}} -%^^A\@ifXeTeX{\XeTeXdefaultencoding "utf-8"}{} -% \changes[hyperref]{v0.99k}{2008/08/04}{removed some lines testing if -% \XeTeX\ colliding with \pk{tikz} and most probably obsolete} -% Now a~little addition to \pk{hyperref}, a~conditional hyperlinking -% possibility with the |\gmhypertarget| and |\gmiflink| macros. It -% \emph{has} to be loaded \emph{after} \pk{hyperref}. \RequirePackage{gmiflink} -% And a~slight redefinition of \env{verbatim}, |\verb›[*›]| and -% providing of |\MakeShortVerb›[*›]|. -\RequirePackage{gmverb}[2008/08/20] +\RequirePackage{gmverb}[2010/08/12] -\StoreMacros{\@verbatim\verb} +\Store@Macros{\@verbatim\verb} \if@noindex \AtBeginDocument{\gag@index}% for the latter macro see line @@ -2264,124 +189,43 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \RequirePackage{makeidx}\makeindex \fi -% Now, a~crucial statement about the code delimiter in the input file. -% Providing a~special declaration for the assignment is intended for -% documenting the packages that play with |%|'s -% |\catcode|. Some macros for such plays are defined -% \gmiflink[CDAnd]{further}. -% -% The declaration comes in the starred and unstarred version. The -% unstarred version besides declaring the code delimiter declares -% the same char as the verb(atim) `hyphen'. The starred version -% doesn't change the verb 'hyphen'. That is intended for the special -% tricks e.g.\ for the \env{oldmc} environment. -% -% If you want to change the verb `hyphen', there is the -% |\VerbHyphen\|\<one char> -% declaration provided by \pk{gmverb}. -% -% \changes{v0.98c}{06/9/8}{\cs{CodeDelim} renamed from a~rather confusing -% \cs{NewCommentChar}; also the internal \cs{code@delim} is renamed -% from as much confusing \cs{commentchar} and a~\cs{glet} for -% \cs{verb}s \cs{verbhyphen} is added; similarly -% \cs{›[Un›]CodeDelimAnd} renamed from \cs{›[un›]commentand}} -% -% \changes{v0.98m}{06/11/10}{\cs{CDAnd} and \cs{CDPerc} renamed from -% \cs{CodeDelimAnd} and \cs{UnCodeDelimAnd} and both those commands -% simplified to just declaring the code delimiter} -% -% \changes{v0.99a}{06/12/1}{split into the starred and unstarred -% versions} -% -\def\CodeDelim{\@bsphack\gm@ifstar\Code@Delim@St\Code@Delim} +\def\CodeDelim{\@bsphack\gmu@ifstar\Code@Delim@St\Code@Delim} \def\Code@Delim@St#1{% {\escapechar\m@ne \@xa\gdef\@xa\code@delim\@xa{\string#1}}% \@esphack} -% (|\@xa| is |\expandafter|, see \pk{gmutils}.)\DoNotIndex\@xa \def\Code@Delim#1{\VerbHyphen{#1}\Code@Delim@St{#1}} -% It is an invariant of \gmdoc ing that |\code@delim| stores the -% current code delimiter (of catcode 12). -% -% The |\code@delim| should be \catother\ so a~space is not allowed as -% a~code delimiter. I~don't think it \emph{really} to be a~limitation. -% -% And let's assume you do as we all do: \CodeDelim\% -% And to typeset this code delimiter pretty, let's |\def|: -\pdef\narrationmark{{\tt\verbhyphen}{\normalfont\enspace}\ignorespaces} -% \chgs{2008/11/30 v0.99s added and introduced---\cs{code@delim} forked to what -% delimits the code (\cs{code@delim}) and what is typeset at the -% boundary of code: \cs{narrationmark}} +\pdef\narrationmark{{\codett\verbhyphen}{\normalfont\enspace}\ignorespaces} -% We'll play with |\everypar|, a~bit, and if you use such things as -% the |{itemize}| environment, an error would occur if we didn't -% store the previous value of |\everypar| and didn't restore it at -% return to the narration. So let's assign a~|\toks| list to store the -% original |\everypar|: -\newtoks\gmd@preverypar +\newtoks\gmd@preverypar \newcommand*\settexcodehangi{% \hangindent=\verbatimhangindent \hangafter=\@ne}% we'll use -% it in the in-line comment case. |\verbatimhangindent| is provided by the -% \pk{gmverb} package and\equals3\,em by default. -% \DefIndex\@@settexcodehangi \@ifdefinable\@@settexcodehangi{\let\@@settexcodehangi=\settexcodehangi} -%^^A~\gmdeverycodeline{\@@settexcodehangi} -% We'll play a~bit with |\leftskip|, so let the user have a~parameter -% instead. For normal text (i.e.\ the comment): \newlength\TextIndent -% I~assume it's originally equal to |\leftskip|, i.e.\ |\z@|. And for -% the \TeX\ code: -% \HideAllDefining \newlength\CodeIndent -% \label{CodeIndent} -% \Define\CodeIndent \CodeIndent=1,5em\relax -% And the vertical space to be inserted where there are blank lines in the -% source code: \@ifundefined{stanzaskip}{\newlength\stanzaskip}{} -% I~use |\stanzaskip| in \pk{gmverse} package and -% derivatives for typesetting poetry. A~computer program code \emph{is} -% poetry. -% \Define\stanzaskip \stanzaskip=\medskipamount %^^A \advance\stanzaskip by-.25\medskipamount% to preserve the stretch- and %^^A % shrinkability.\par -% -%\stanza -% A~vertical space between the commentary and the code seems -% to enhance readability so declare \newskip\CodeTopsep \newskip\MacroTopsep -% And let's set them. For \ae sthetic -% minimality\StraightEOL\footnote{The terms `minimal' and `minimalist' -% used in \gmdoc\ are among others\ inspired by the \emph{South Park} -% cartoon's episode \emph{Mr.\ Hankey The~Christmas (\dots)}\/ in -% which `Philip Glass, a~Minimalist New York composer' appears in -% a~`non-denominational non-offensive Christmas play' ^^A( -% ;-)\,. (Philip Glass composed the music to the \emph{Qatsi} -% trilogy among others).}\QueerEOL\ let's unify them and the other most important -% vertical spaces used in \gmdoc. I~think a~macro that gathers all -% these assignments may be handy. -% \ResumeAllDefining -% \Define\MacroTopsep -% \Define\CodeTopsep -% \Define\UniformSkips \def\UniformSkips{%\label{UniformSkips} % \Define\CodeTopsep \Define\MacroTopsep \CodeTopsep=\stanzaskip \MacroTopsep=\stanzaskip \abovedisplayskip=\stanzaskip - %\nostanza \leftskip0sp \gmdnoindent + %\nostanza \leftskip0sp \gmdnoindent % |%% \abovedisplayshortskip| % remains untouched as it is 0.0\,pt plus 3.0\,pt by default. % \nostanza @@ -2396,29 +240,10 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \topsep=\stanzaskip \partopsep=\z@ } -% We make it the default, \UniformSkips -% \gmdnoindent but we allow you to change the benchmark glue -% i.e., |\stanzaskip| in the preamble and still have the other glues -% set due to it: we launch |\UniformSkips| again after the -% preamble. \AtBeginDocument{\UniformSkips} -% So, if you don't want them at all i.e., you don't want to set other -% glues due to |\stanzaskip|, you should use the following -% declaration. That shall discard the unwanted setting already placed -% in the |\begin{document}| hook. -% \newcommand*\NonUniformSkips{\@relaxen\UniformSkips} -% Why do we launch |\UniformSkips| twice then? The first time is -% to set all the \gmdoc-specific glues \emph{somehow}, which allows -% you to set not all of them, and the second -% time to set them due to a~possible change of |\stanzaskip|. -% -% \stanza -% And let's define a~macro to insert a~space -% for a~chunk of documentation, e.g., to mark the beginning of new -% macro's explanation and code. \newcommand*\chunkskip{% \par\addvspace{% \glueexpr\MacroTopsep @@ -2426,50 +251,21 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \relax }\@codeskipputgtrue} -% And, for a~smaller part of text, \pdef\stanza{% \par\addvspace{% \glueexpr\stanzaskip \if@codeskipput-\CodeTopsep\fi \relax}\@codeskipputgtrue} -% Since the stanza skips are inserted automatically most often (cf.\ lines -% \ref{codeskip}, \ref{codeskip2}, \ref{codeskip3}, \ref{codeskip4}, -% \ref{codeskip5}), sometimes you may need to forbid them. \newcommand*\nostanza{% \changes{v0.99n}{2008/08/21}{added adding % negative skip if in vmode and \cs{par}} \par \if@codeskipput\unless\if@nostanza\vskip-\CodeTopsep\relax\fi\fi \@codeskipputgtrue\@nostanzagtrue \@afternarrgfalse\@aftercodegtrue}% In the `code -% to narration' case the first switch is enough but in the counter-case -% `narration to code' both the second and third are necessary while -% the first is not. -% -%\stanza -% To count the lines where they have begun not before them\nostanza \newgif\if@newline -% |\newgif| is |\newif| with a~global effect i.e., it defines |\›…gtrue| -% and |\›…gfalse| switchers that switch respective Boolean switch -% \emph{globally}. See \pk{gmutils} package for details. -% \stanza -% -% To handle the \ds\ directives not \emph{any} |%<›…|\,. -% \Define\if@dsdir \newgif\if@dsdir -% This switch will be falsified at the first char of a~code line. (We -% need a~switch independent of the one indicating whether the line -% has or has not been counted because of two reasons: 1.\ line -% numbering is optional, 2.\ counting the line falsifies that switch -% \emph{before} the first char.) -% -% \subdivision{The core} -% -% Now we define main |\input|ing command that'll change catcodes. -% The macros used by it are defined later. -% - -%^^A\newcommand*\DocInput{\bgroup\@makeother\_\Doc@Input} + \begingroup\catcode`\^^M=\active% \firstofone{\endgroup% @@ -2477,6 +273,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \changes{v0.98}{06/09/05}{\cs{@makeother\protect\bslash_} added} % \DefIndex\gmd@inputname \edef\gmd@inputname{#1}% we'll use it in some notifications. + % + \NamedInput@prepare{#1}% to make this input “named”, as with |\NamedInput|. + % % \DefIndex\gmd@currentlabel@before \let\gmd@currentlabel@before=\@currentlabel% we store it because % we'll do |\xdef|s of |\@currentlabel| to make proper references @@ -2510,14 +309,14 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \edef\gmd@guardedinput{% \@nx\@@input #1\relax% |\@nx| is % |\noexpand|, see \pk{gmutils}.\DoNotIndex\@nx - % \incs{@@input} is the + % \incs{@@input} is the % true \TeX's \incs{input}. \CodeUsgIndex\EOFMark \gmd@iihook% cf.\ line \ref{iihook} \@nx\EOFMark% to pretty finish the input, see % line~\ref{eofMark}.\CodeUsgIndex\code@delim - \@nx\CodeDelim\@xa\@nx\csname\code@delim\endcsname% to + \@nx\CodeDelim\@xanxcs{\code@delim}% to % ensure the code delimiter is the same as at the beginning of - % input. + % input. % \changes[\DocInput]{v0.99c}{2007/03/02}{added ensuring the % code delimiter to be the same at the end as at the beginning} \@nx^^M\code@delim% @@ -2538,17 +337,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % value from before this group. In a~very special case this could % cause unexpected behaviour of cross-refs, but anyway we acted % globally and so acts \pk{hyperref}. + % + \NamedInput@finish% to clean up after a “named” input, as with |\NamedInput|. + % \endgroup% }% end of |\Doc@Input|'s definition. }% end of |\firstofone|'s argument. -% So, having the main macro outlined, let's fill in the details. -% -% First, define the queer \acro{EOL}. We define a~macro that |^^M| will be -% let to. |\gmd@textEOL| -% will be used also for checking the |%^^M| case (|\@ifnextchar| -% does |\ifx|). -% \pdef\gmd@textEOL{ % a~space just like in normal % \TeX. We put it first to % cooperate with \inverb|\^^M|'s @@ -2569,10 +364,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % a~proper point. See line \ref{@trimandstore} for the details. \begingroup%^^A ##### maybe we prefer to restore the genuine |\par| % ^^A~before the group? -% ^^A \let\gmd@narrpar\par% we store the possibly redefined |\par| to -% ^^A~typeset the previous narration appropriately. -% ^^A \def\par{\gmd@narrpar\let\par\@@par}% the first |\par| will be -% ^^A~the one brought from the narration but then, \gmd@setclubpenalty% Most paragraphs will be % one-line most probably. Since some sectioning commands may change % \incs{clubpenalty}, we set it again here and also after this @@ -2580,7 +371,8 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \aftergroup\gmd@setclubpenalty% \let\par\@@par% inside the verbatim group we wish |\par| to be genuine. % \CodeUsgIndex\ttverbatim - \ttverbatim% it does |\tt| and makes specials + \let\verbatimfont\codett % + \ttverbatim% it applies the code-layer font (|\tt| by default) and makes specials % other or |\active|-and-breakable. % to turn verbatim specials off in % \incmd\scanverb s. @@ -2598,48 +390,32 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % previous case or else we typeset the \TeX\ code. \texcode@hook% we add some special stuff, e.g.\ in \pk{gmdocc.cls} we % make star low. - \@xa\@ifnextchar\@xa{\code@delim}{%\label{ifContNarr} + \@xa\@ifnextcharRS\@xa{\code@delim}{%\label{ifContNarr} % \CodeUsgIndex\gmd@continuenarration \gmd@continuenarration}{% \CodeUsgIndex\gmd@dolspaces \gmd@dolspaces% it will launch |\gmd@typesettexcode|. - }% end of |\@ifnextchar|'s else. + }% end of |\@ifnextcharRS|'s else. }% end of |\gmd@textEOL|'s definition. - \emptify\texcode@hook \def\gmd@setclubpenalty{\clubpenalty=3333 } -% \stanza -% For convenient adding things to the begin- and endinput hooks: \def\AtEndInput{\g@addto@macro\@endinputhook} \def\@endinputhook{} -%\label{@endinputhook} -% Simili modo \def\AtBegInput{\g@addto@macro\@beginputhook} \def\@beginputhook{} -% For the index input hooking now declare a~macro, we define it -% another way at line \ref{iihook}. \emptify\gmd@iihook -% And let's use it instantly to avoid a~disaster while reading in the -% table of contents. -% \DefIndex\gmd@@toc \AtBegInput{\let\gmd@@toc\tableofcontents \def\tableofcontents{% \label{straighttoc} - \@ifQueerEOL{\StraightEOL\gmd@@toc\QueerEOL}% - {\gmd@@toc}}} - -% As you'll learn from lines \ref{QueerEOL} and \ref{StraightEOL}, we -% use those two strange declarations to change and restore the very -% special meaning of the line end. Without such changes -% |\tableofcontents| would cause a~disaster (it did indeed). And to -% check the catcode of |^^M| is the r\ocircum le of |\@ifEOLactive|: -% -% \changes{v0.98a}{06/09/06}{\cs{tableofcontents}, \cs{PrintIndex} -% and \cs{PrintChanges} modified to work properly in the `queer line -% ends' environment.} + \@ifQueerEOL + {\StraightEOL\gmd@@toc\QueerEOL}% + {\gmd@@toc}% + }% +} + \def\@ifEOLactive{%\ % \begin{enumargs} @@ -2660,8 +436,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\@secondoftwo}}% of \cs{@ifQueerEOL} }% of \cs{foone} -% A~footnote for the ‘queer’ line ends scope.\nostanza -\pdef\qfootnote{% +\pdef\qfootnote{% \@ifQueerEOL {\begingroup\StraightEOL\qfootnote@}% {\footnote}} @@ -2674,79 +449,32 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmu@tempa{#2}% } -% An emphasis command for ‘queer’ line ends.\nostanza -\pdef\qemph{% +\pdef\qemph{% \@ifQueerEOL {\begingroup\StraightEOL\qemph@}% {\emph}} \pdef\qemph@#1{\endgroup\emph{#1}} - -% The declaration below is useful if you -% wish to put sth.\ just in the nearest input/included file and no -% else: at the moment of putting the stuff it will erase it from the -% hook. You may declare several |\AtBegInputOnce|s, they add up. -% -%^^A Define*{hook@oncecnt} -%^^A CodeDefIndex*\c@hook@oncecnt -%^^A\newcounter{hook@oncecnt} -% \Define\gmd@ABIOnce \@emptify\gmd@ABIOnce \AtEndOfPackage{\AtBegInput\gmd@ABIOnce} -% \chgs{2008/11/30 v0.99s deferred till the end of package to allow -% adding titles \cs{AtBegInputOnce}} \long\def\AtBegInputOnce#1{% -% \changes{v0.98a}{06/09/05}{The counter \cs[]{hook@oncecnt} added -% to number the self-destructing cs's (thence the hooks add up) and -% the prefix changed to \cs[]{gmd/AtBI/NeuroOncer}} -% \changes{v0.98l}{06/10/26}{After the Tiger's suggestion, defining -% a~unique macro for each use of \* substituted with just one macro in -% the begin input hook and adding to this macro.} -%^^A \stepcounter{hook@oncecnt}% -%^^A \@xa\long\@xa\edef% \CodeUsgIndex*{NeuroOncer} -%^^A \csname gmd/AtBI/NeuroOncer\the\c@hook@oncecnt\endcsname{% -%^^A \@nx\glet\csname gmd/AtBI/NeuroOncer\the\c@hook@oncecnt\endcsname\relax}% -%^^A \@xa\addtomacro\csname gmd/AtBI/NeuroOncer\the\c@hook@oncecnt\endcsname{#1}% -%^^A \@xa\AtBegInput\csname gmd/AtBI/NeuroOncer\the\c@hook@oncecnt\endcsname \gaddtomacro\gmd@ABIOnce{\g@emptify\gmd@ABIOnce#1}} -% Many tries of finishing the input cleanly led me to setting the -% guardians as in line \ref{guardians} and to \def\EOFMark{\<eof>} -% \label{eofMark}Other solutions did print the last code delimiter or -% would require managing a~special case for the macros typesetting -% \TeX\ code to suppress the last line's numbering etc. -% -% If you don't like it, see line \ref{NoEOF}. -% \stanza -% -% Due to the |codespacesblank| option in the line \ref{cspb} we launch -% the macro defined below to change the meaning of a~\pk{gmdoc}-kernel -% macro. -% \DefIndex\gmd@DoTeXCodeSpace \begin{obeyspaces}% \gdef\CodeSpacesVisible{% \def\gmd@DoTeXCodeSpace{% \obeyspaces\let =\breakablevisspace}}% -% \stanza -% \Define\CodeSpacesBlank -% \changes{v0.98a}{06/09/06}{a~kernel \cs{gmd@verbatimspace} renamed -% to \cs{gmd@texcodespace} and a~bug fixed.} -% \CodeUsgIndex\gmobeyspaces -% \DefIndex\gmd@texcodespace \gdef\CodeSpacesBlank{% \let\gmd@DoTeXCodeSpace\gmobeyspaces% \let\gmd@texcodespace=\ }% the latter |\let| is for the |\if›…|s. -%\stanza -% \Define\CodeSpacesSmall \gdef\CodeSpacesSmall{% \def\gmd@DoTeXCodeSpace{% \obeyspaces\def {\,\hskip\z@}}% \def\gmd@texcodespace{\,\hskip\z@}}% -%\stanza \end{obeyspaces} \def\CodeSpacesGrey{% @@ -2756,34 +484,17 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \VisSpacesGrey% defined in \pk{gmverb} }% -% Note that \cs{CodeSpacesVisible} doesn't revert \cs{CodeSpacesGrey}. - \CodeSpacesVisible - -% How the continuing of the narration should look like? \def\gmd@continuenarration{% \endgroup \gmd@cpnarrline% see \gmiflink[countnarr]{below}. \@xa\@trimandstore\the\everypar\@trimandstore \everypar=\@xa{\@xa\@codetonarrskip\the\everypar}% \@xa\gmd@checkifEOL\@gobble} -% Simple, isn't it? (We gobble the `other' code delimiter. Despite of -% |\egroup| it's \catother\ because it was touched by |\futurelet| -% contained in |\@ifnextchar| in line \ref{ifContNarr}. And in line -% \ref{ContNarr2} it's been read as \catother. That's why it -% works in spite of that |%| is of category `ignored'.) \if@countalllines -%^^A erased obsolete code is backed up in gmdoc.sty~5~. -%\gmhypertarget[countnarr]{If the} |countalllines| option is in force, -% we get the count of lines from the \cs{inputlineno} primitive. But -% if the option is |countalllines*|, we want to print the line number. -%^^A \def\gmd@countnarrline{% -%^^A \if@newline -%^^A \gmd@countnarrline@ -%^^A \fi}% \DefIndex\gmd@countnarrline \def\gmd@countnarrline@{% \gmd@grefstep{codelinenum}\@newlinegfalse @@ -2805,7 +516,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ifnum\value{#1}<\inputlineno \csname c@#1\endcsname\numexpr\inputlineno-1\relax \ifvmode\leavevmode\fi% this line is added 2008/08/10 after an - % ^^A( + % ^^A( % all-night debuggery ;-) that showed that at one point % \incs{gmd@grefstep} was called in vmode which caused adding % \incs{penalty 10000} to the main vertical list and thus @@ -2842,29 +553,25 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % % not \incs{refstep} it to avoid putting a~hypertarget. \setcounter{codelinenum}{\inputlineno}% it's global. \let\gmd@grefstep\hgrefstepcounter} - + \else% not |countalllines| (and therefore we won't print the narration % lines' numbers either) \@emptify\gmd@cpnarrline \let\gmd@grefstep\hgrefstepcounter% \label{let grefstep} if we don't % want to count all the lines, we only \incs{ref}-increase the - % counter in the code layer. + % counter in the code layer. \emptify\gmd@ctallsetup \fi% of |\if@countalllines| \def\skiplines{\bgroup \let\do\@makeother \dospecials % not \incs{@sanitize} because the % latter doesn't recatcode braces and we want all to be quieten.\ilrr -%^^A \catcode`\^^M\active what was it for? for countalllines, but -%^^A~there's no need of. \gmd@skiplines} \edef\gmu@tempa{% \long\def\@nx\gmd@skiplines##1\bslash endskiplines{\egroup}} \gmu@tempa - -% And typesetting the \TeX\ code? \foone\obeylines{% \DefIndex\gmd@typesettexcode \def\gmd@typesettexcode{% \gmd@parfixclosingspace% it's to eat a~space closing the @@ -2893,9 +600,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \label{codeskip} \fi% \prevhmodegfalse% we want to know later that now we are in the - % vmode. + % vmode. % ^^A\special{color push gray 0.2666}% - \@ifnextchar{\gmd@texcodespace}{% + \@ifnextcharRS{\gmd@texcodespace}{% \@dsdirgfalse\gmd@dolspaces}{\gmd@charbychar}% }% end of |^^M|'s definition.\label{debug!2} % \DefIndex\gmd@texcodeEOL @@ -2933,7 +640,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % hanging indent setting for the same line comment case. \acro{BTW}., % this |%| or rather lack of it costed me five hours of % debugging and rewriting. Active line ends require extreme - % caution. + % caution. \@nx\hangafter=1\space}%^^A~\@nx\relax \else% \glet\settexcodehangi=\@@settexcodehangi%\\ @@ -2958,30 +665,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % launch closing of the verbatim group. }% of |\gmd@typesettexcode|. }% of |\foone\obeylines|. -% -% \stanza -% -% Now let's deal with the leading spaces once forever. We wish not to -% typeset | |s but to add the width of every leading space to the -% paragraph's indent and to the hanging indent, but only if there'll -% be any code character not being |%| in this line (e.g., the end of -% line). If there'll be only |%|, we want just to continue the comment -% or start a~new one. (We don't have to worry about whether we should -% |\par| or not.) -% \DefIndex\gmd@spacewd -\newlength\gmd@spacewd% to store the width of a~(leading) -% | |\catother. -% \DefIndex\gmd@ldspaceswd +\newlength\gmd@spacewd% to store the width of a~(leading) \newlength\gmd@ldspaceswd% to store total length of gobbled leading %spaces. -% It costed me some time to reach that in my verbatim scope a~space -% isn't \catother\ but \catactive, namely |\let| to -% |\breakablevisspace|. -% So let us |\let| for future: -% \Define\gmd@texcodespace \let\gmd@texcodespace=\breakablevisspace -% And now let's try to deal with those spaces. \def\gmd@dolspaces{% \ifx\gmd@texcodespace\@let@token @@ -2998,14 +686,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \if@afternarr\if@aftercode \ifilrr\bgroup \gmd@setilrr\fi \fi\fi - \par% possibly after narration + \par% possibly after narration \if@afternarr\if@aftercode \ifilrr\egroup\fi \fi\fi \gmd@typesettexcode}% \fi} -% And now, the iterating inner macro that'll eat the leading spaces. \def\gmd@eatlspace#1{% \ifx\gmd@texcodespace#1% @@ -3022,22 +709,15 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \fi}% -% We want to know whether we were in hmode before reading current -% |\code@delim|. We'll need to switch the switch globally. - + \newgif\ifprevhmode -% \addvspace\medskipamount -% -% And the main iterating inner macro which eats every single char of -% verbatim text to check the end. The case |\%| should be excluded -% and it is indeed. -\newcommand*\gmd@charbychar[1]{% +\def\gmd@charbychar#1{% \ifhmode\prevhmodegtrue \else\prevhmodegfalse % ^^A~\special{color push gray 0.2789}% - \fi + \fi \if\code@delim\@nx#1% \def\next{% occurs when next a~\cs{hskip4.875pt} is to be put % ^^A\special{color push gray 0.2791}% O.K. @@ -3055,11 +735,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % then we would discard checking for \ds\ directives doable by % the active |%| at the `old macrocode' setting. \def\next{% -%^^A \debug@special{2808}% \gmd@counttheline#1\scan@macro}% \else \def\next{% -%^^A \debug@special{2806}% before penalty \gmd@EOLorcharbychar#1}% \fi \fi @@ -3069,12 +747,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ifhmode\special{color push gray 0.#1}% \else\special{color push gray 0.#1000}\fi} -% One more inner macro because |^^M| in \TeX\ code wants to peek at the -% next char and possibly launch |\gmd@charbychar|. We deal with -% counting the lines thoroughly. Increasing the counter is divided into -% cases and it's very low level in one case because |\refstepcounter| and -% |\stepcounter| added some stuff that caused blank lines, at -% least with \pk {hyperref} package loaded. \def\gmd@EOLorcharbychar#1{% %^^A \debug@special{2829}% \ifx\gmd@texcodeEOL#1% @@ -3103,9 +775,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmd@grefstep{codelinenum}\@newlinegfalse \hyperlabel@line \fi - %^^A\debug@special{2853}% + %^^A\debug@special{2853}% \printlinenumber - % ^^A\debug@special{2855}% + % ^^A\debug@special{2855}% \mark@envir \else% not vmode \if@newline @@ -3115,29 +787,68 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \fi} -% If before reading current |%| char we were in horizontal mode, then -% we wish to print |%| (or another code delimiter). -\def\gmd@percenthack{% +\def\gmd@percenthack{%% \ifprevhmode\aftergroup\narrationmark% We add a~space after |%|, % because I~think it looks better. It's done |\aftergroup| to make % the spaces possible after the |%| not to be % typeset. % \changes{v0.99n}{2008/08/21}{\cs{space} replaced with a~tilde to % forbid a~line break before an in-line comment} - \else\aftergroup\gmd@narrcheckifds@ne% remember that + \else\aftergroup\gmd@dsNarrChecker% remember that % \cs{gmd\-@\-pre\-cent\-hack} is only called when we've the code % delimiter and soon we'll close the verbatim group and right after % |\endgroup| there waits |\gmd@checkifEOLmixd|. \fi} -\def\gmd@narrcheckifds@ne#1{%^^A\typeout{narr@ne if ds \on@line}% - \@dsdirgfalse\@ifnextchar<{% - \@xa\gmd@docstripdirective\@gobble}{#1}} -% The macro below is used to look for the |%^^M| case to make -% a~commented blank line make a~new paragraph. -% Long searched and very simple at last. +\newif\ifgmd@dsVerb + +\foone{\obeylines}% +{% + \def\gmd@dsVerbChecker% + #1% stuff for checking normal directive + #2% line contents + ^^M{%% +\typeout{verb checker l.\the\inputlineno}% + \ifnum\strcmp{\detokenize{#2}}{\gmd@dsVerbDelim}=\z@% + \global\gmd@dsVerbfalse% + \def\gmd@modulehashone{% + \ModuleVerbClose{\gmd@dsVerbDelim}% + \global\emptify\gmd@dsVerbDelim% + \@afternarrgfalse\@aftercodegtrue% + \@codeskipputgfalse % + }% + \@xa\@firstoftwo% + \else \@xa\@secondoftwo % + \fi% + {\gmd@textEOL\gmd@modulehashone^^M}% + {\begingroup% + \endlinechar=\m@ne % + \@XA{% + \endgroup#1}\scantokens{#2}^^M% note that |\scantokens| adds + % char |\endlinechar| which we assure to be |^^M| + }% + }% of |\gmd@dsVerbChecker| +}% of |\obeylines| + +\def\gmd@dsChecker#1{% + \@dsdirgfalse + \ifgmd@dsVerb + \@xa\@firstofone + \else + \@xa\@secondoftwo + \fi + {\gmd@dsVerbChecker}% + {#1}% +}% of |\gmd@dsChecker| + +\def\gmd@dsNarrChecker#1{%% + \gmd@dsChecker + {\@ifnextcharRS<{% + \@xa\gmd@docstripdirective\@gobble}{#1}}% +}% of |\gmd@dsNarrChecker| + \def\gmd@checkifEOL{% \gmd@cpnarrline @@ -3145,36 +856,31 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % macro that'll insert a~vertical space if we leave the code and % enter the narration. \the\gmd@preverypar}% - \@ifnextchar{\gmd@textEOL}{% + \@ifnextcharRS{\gmd@textEOL}{% %^^A\@ifnextMac{%^^A} \@dsdirgfalse \par\ignorespaces}{% \gmd@narrcheckifds}}% -% We check if it's |%<|, a~\ds\ directive that is. \def\gmd@narrcheckifds{%^^A\typeout{narr if ds \on@line}% - \@dsdirgfalse\@ifnextchar<{% - \@xa\gmd@docstripdirective\@gobble}{\ignorespaces}} - + \gmd@dsNarrChecker{\ignorespaces}} -% In the `mixed' line case it should be a~bit more complex, though. On -% the other hand, there's no need to checking for \ds\ directives. \def\gmd@checkifEOLmixd{% \gmd@cpnarrline \everypar=\@xa{\@xa\@codetonarrskip\the\gmd@preverypar}% - % + % % \label{longlinethatshouldbebroken} \@afternarrgfalse\@aftercodegtrue \ifhmode\@codeskipputgfalse\fi - \@ifnextchar{\gmd@textEOL}{% + \@ifnextcharRS{\gmd@textEOL}{% %^^A\@ifnextMac{%^^A} {\raggedright\gmd@endpe\par}% without \incs{raggedright} this % \incs{par} % would be justified which is not appropriate for a~long codeline % that should be broken, e.g., \ref{longlinethatshouldbebroken}. \prevhmodegfalse - \gmd@endpe\ignorespaces}{% + \gmd@endpe\ignorespaces}{% % If a~codeline ends with |%| % (|prevhmode|${}=={}$True) first |\gmd@endpe| sets the parameters % at the \TeX\ code values and |\par| closes a~paragraph and the @@ -3184,7 +890,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \DefIndex\par \def\par{% the narration \cs{par}. \ifhmode% (I~added this |\ifhmode| as a~result of a~heavy - % debug.) + % debug.) \if@afternarr\if@aftercode \unless\if@ilgroup\bgroup\@ilgrouptrue\fi \ifilrr\gmd@setilrr\fi @@ -3195,7 +901,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \if@ilgroup\egroup\fi% \label{inline.egroup.1}if we are both after code % and after narration it means we are after an in-line % comment. Then we probably end a~group opened in line - % \ref{inline.bgroup} + % \ref{inline.bgroup} \if@codeskipput\else\gmd@codeskip2\@aftercodegfalse\fi %\label{codeskip4} \else\gmd@nocodeskip2{naC}% @@ -3211,26 +917,18 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi}% of \cs{par}. \gmd@endpe\ignorespaces}} -% As we announced, we play with |\leftskip| inside the verbatim -% group and therefore we wish to restore normal |\leftskip| when back to -% normal text i.e.\ the commentary. But, if normal text starts in the -% same line as the code, then we still wish to indent such a~line. \def\gmd@endpe{% \ifprevhmode \settexcodehangi%\unskip ndent \leftskip=\CodeIndent -%^^A \typeout{gmd@endpe in prevhmode \on@line}% \else \leftskip=\TextIndent \hangindent=\z@ \everypar=\@xa{% \@xa\@codetonarrskip\the\gmd@preverypar}% -%^^A \typeout{gmd@endpe in not prevhmode \on@line}% \fi} - -% Now a~special treatment for an in-line comment: \newif\ifilrr \def\ilrr{%\changes{v0.99n}{2008/08/21}{added} @@ -3257,15 +955,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\verbcodecorr{%\changes{v0.99n}{2008/08/21}{added} % a~correction of vertical spaces between a~\env{verbatim} and % code. We put also a~\cs{par} to allow parindent in the next - % commentary. + % commentary. \vskip-\lastskip\vskip-4\CodeTopsep\vskip3\CodeTopsep\par} -% -% -% \subdivision{Numbering (or not) of the lines} -% -% Maybe you want codelines to be numbered and maybe you want to -% reset the counter within sections. \if@uresetlinecount% with |uresetlinecount| option\dots \@relaxen\gmd@resetlinecount% \dots\ we turn % resetting the counter by \cs{Doc\+In\+put} off\dots @@ -3273,21 +965,19 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \newcounter{codelinenum}[#1]}% \dots\ and provide a~new % declaration of the counter. \else% With the option turned off\dots - \newcounter{DocInputsCount}% + \newcounter{DocInputsCount}% \newcounter{codelinenum}[DocInputsCount]% \dots\ we declare the % |\DocInput|s' number counter and the codeline counter % to be reset with stepping of it. % \changes[\c@DocInputsCount]{v0.98c}{06/9/8}{added for fixing % duplication of \pk{hyperref} labels in the case of a~multiple % \cs{DocInput}} - \newcommand*\gmd@resetlinecount{\stepcounter{DocInputsCount}}% \dots + \newcommand*\gmd@resetlinecount{\stepcounter{DocInputsCount}}% \dots % and let the |\DocInput| increment the |\DocInput|s number count % and thus reset the codeline count. It's for unique naming of the % \pk{hyperref} labels. \fi -% Let's define printing the line number as we did in \pk{gmvb} -% package. \newcommand*\printlinenumber{% \leavevmode\llap{\rlap{\LineNumFont$\phantom{999}$\llap{\thecodelinenum}}% \hskip\leftskip}} @@ -3305,40 +995,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \HLPrefix\arabic{codelinenum}]{}}% \fi} -% -% \subdivision{Spacing with \cs{everypar}} -% -% Last but not least, let's define the macro inserting a~vertical space -% between the code and the narration. Its parameter is -% a~\gmhypertarget[relic parameter]{relic} of a~very heavy debug of -% the automatic vspacing mechanism. Let it remain at least until this -% package is 2.0 version. \newcommand*\gmd@codeskip[1]{% \@@par\addvspace\CodeTopsep \@codeskipputgtrue\@nostanzagfalse} -%\label{codeskip2} - -% Sometimes we add the |\CodeTopsep| vertical space in -% |\everypar|. When this happens, first we remove the |\parindent| -% empty box, but this doesn't reverse putting |\parskip| to the main -% vertical list. And if |\parskip| is put, |\addvspace| shall see it -% not the `true' last skip. \Describe*{@codeskipput}Therefore we need -% a~Boolean switch to keep the knowledge of putting similar vskip -% before |\parskip|. -% \Define\if@codeskipput + \newgif\if@codeskipput -% A~switch to control |\nostanza|s: \nostanza \newgif\if@nostanza -% The below is another relic of the heavy debug of the automatic -% vspacing. Let's give it the same removal clause as -% \gmiflink[relic parameter]{above}. \newcommand*\gmd@nocodeskip[2]{} -% And here is how the two relic macros looked like during the -% debug. As you see, they are disabled by a~false |\if| (look at it -% closely ;-). \if1 1 \renewcommand*\gmd@codeskip[1]{% \hbox{\rule{1cm}{3pt} #1!!!}} @@ -3346,20 +1012,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \hbox{\rule{1cm}{0.5pt} #1: #2 }} \fi -% We'll wish to execute |\gmd@codeskip| wherever a~codeline (possibly with -% an in-line comment) is followed by a~homogeneous comment line or -% reverse. Let us dedicate a~Boolean switch to this then. -% \Define\if@aftercode \newgif\if@aftercode -% This switch will be set true in the moments when we are able to -% switch from the \TeX\ code into the narration and the below one when -% we are able to switch reversely. -% \Define\if@afternarr \newgif\if@afternarr -% To insert vertical glue between the \TeX\ code and the narration -% we'll be playing with |\everypar|. More precisely, we'll add a~macro -% that the |\parindent| box shall move and the glue shall put. \def\@codetonarrskip{% \if@codeskipput\else \if@afternarr\gmd@nocodeskip4{iaN}\else @@ -3383,16 +1038,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \changes{v0.99o}{2008/09/04}{a~bug fix: added \cs{@nostanzagtrue}} } -% But we play with |\everypar| for other reasons too, and while restoring it, -% we don't want to add the |\@codetonarrskip| macro infinitely many -% times. So let us define a~macro that'll check if |\everypar| begins -% with |\@codetonarrskip| and trim it if so. We'll use this macro with -% proper |\expandafter|ing in order to give it the contents of -% |\everypar|. The work should be done in two steps first of which -% will be checking whether |\everypar| is nonempty (we can't have two -% delimited parameters for a~macro: if we define a~two-parameter -% macro, the first is undelimited so it has to be nonempty; it costed -% me some one hour to understand it). \long\def\@trimandstore#1\@trimandstore{% \def\@trimandstore@hash{#1}% \ifx\@trimandstore@hash\@empty% we check if |#1| is @@ -3411,56 +1056,60 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \else \gmd@preverypar=\@xa{\the\everypar}% \fi} -% We prefer not to repeat |#1| and |#2| within the |\if|s and we even -% define an auxiliary macro because |\everypar| may contain some -% |\if|s or |\fi|s. -% -% -% \subdivision[Life among queer \acro{EOL}s]{Life among queer \gmhypertarget[afc]{\acro{EOL}s}} -% -% When I~showed this package to my \TeX\ Guru he commended it and -% immediately pointed some disadvantages in the comparison with the -% \docfm\ package. -% -% One of them was an expected difficulty of breaking a~moving argument -% (e.g., of a~sectioning macro) in two lines. To work it around let's -% define a~line-end eater: \catcode`\^^B=\active% note we re|\catcode| \<char2> globally, for the -% entire document. +\catcode`\^^V=\active % the same for |^^V|. \foone{\obeylines}%% \Define*{^^B} - {\def\QueerCharTwo{% - \protected\def^^B##1^^M{% - %^^A\@newlinegtrue\gmd@countnarrline - \ifhmode\unskip\space\ignorespaces\fi}}% It shouldn't be \incs{ } not to - % drive \TeX\ into hmode. - } +{\pdef\QueerCharTwo{% + \protected\def^^B##1^^M{% + %^^A\@newlinegtrue\gmd@countnarrline + \ifhmode\unskip\space\ignorespaces\fi}}% It shouldn't be \incs{ } not to + % drive \TeX\ into hmode. + % + % \Define*{^^V} + \pdef\QueerV{% + \unless\ifdefined\gmd@QueerV% + % + \def\gmd@V@percent{\global\let\verb@balance@group\@empty % + \egroup\endgroup % + }% of |\gmd@V@percent| + % + \@xa\def\@xa\verb@egroup@V\@xa{% + \gmd@V@percent ^^M% + }% of |\verb@egroup@V|. + % + \addtomacro\gmd@V@percent{\narrationmark}% + % + \pdef\gmd@QueerV{% + \scantokens\@xa{\code@delim % + \fooatletter{\@ifQueerEOL\@gobble}{}% + }% of |\scantokens| + % + \par% + {\codett\verbhyphen}\narrationmark % + \begingroup % + \catcode`\^^M=\active % + % + \let\verb@egroup=\verb@egroup@V % + \verb^^M%% + % + \begingroup % + \@xa\lccode\@xa`\@xa~\@xa`\code@delim% + \lowercase{\endgroup\let~\gmd@V@percent }% + \@xa\catcode\@xa`\code@delim\active % + }% + % + % + \fi% of unless |\gmd@QueerV| defined + \let^^V\gmd@QueerV% + \catcode`\^^V=\active% + }% of |\QueerV| +}% of |\foone| \QueerCharTwo +\QueerV \AtBegInput{\@ifEOLactive{\catcode`\^^B\active}{}\QueerCharTwo}% \label{QCh2} -% We repeat redefinition of \<char2> at begin of the documenting -% input, because \pk{doc.dtx} suggests that some packages (namely -% \pk{inputenc}) may re|\catcode| such unusual characters. -% -% \changes{v0.98d}{06/9/11}{re\cs{catcode}ing and defining -% \cs{char1} and \cs{char2} added at-to begin doc input} -% -% \stanza -% As you see the |^^B| active char is defined to gobble everything -% since itself till the end of line and the very end of line. This is -% intended for harmless continuing a~line. The price is affecting the -% line numbering when |countalllines| option is enabled. -% -% I~also liked the \docfm's idea of comment${}^2$ i.e., the -% possibility of marking some text so that it doesn't appear nor in the -% working version neither in the documentation, got by making -% |^^A| (i.e., \<char1>) a~comment char. -% -% However, in this package such a~trick would work another way: here -% the line ends are active, a~comment char would disable them and that -% would cause disasters. So let's do it an |\active| way. \catcode`\^^A=\active% note we re|\catcode| \<char1> globally, for the -% entire document. \foone\obeylines{%%\DefIndex\QueerCharOne \Define*{^^A} \def\QueerCharOne{% \def^^A{%^^A no need to write \incs{gmd@countnarrline} because @@ -3472,32 +1121,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \QueerCharOne \AtBegInput{\@ifEOLactive{\catcode`\^^A\active}\QueerCharOne}% see note -% after line \ref{QCh2}.\ilrr - - -% As I~suggested in the users' guide, |\StraightEOL| and |\QueerEOL| are -% intended to cooperate in harmony for the user's good. They take care -% not only of redefining the line end but also these little things -% related to it. -% -% One usefulness of |\StraightEOL| is allowing line-breaking of the -% command arguments. Another---making possible executing some code lines -% during the documentation pass. -% -% \changes{v0.98b}{06/09/07}{\cs{QueerM} and \cs{StraightM} renamed -% to \cs{QueerEOL} and \cs{StraightEOL} and other (internal) macros -% ending with \cs[]{M}} + \def\StraightEOL{%\label{StraightEOL} \catcode`\^^M=5 \catcode`\^^A=14 \catcode`\^^B=14 \def\^^M{\ }} -%^^A \unless\if@countalllines -%^^A \let\StraightEOL\StraightEOLnocount -%^^A \fi -%^^A - \foone\obeylines{% \def\QueerEOL{%\label{QueerEOL} @@ -3508,52 +1138,22 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % hoping no one but me is \emph{that} perverse to make them % |\active| and (re)define. (Let me know if I'm wrong at this point.) \let\^^M=\gmd@bslashEOL}% -%^^A % -%^^A \if@countalllines% -%^^A \def\StraightEOL{% -%^^A \catcode`\^^M=\active% -%^^A \let^^M\gmd@notsostraightEOL% -%^^A \catcode`\^^A=\active% -%^^A \catcode`\^^B=\active% I~only re|\catcode| \<char1> and \<char2> -%^^A % hoping no one but me is \emph{that} perverse to make them -%^^A % |\active| and (re)define. (Let me know if I'm wrong at this point.) -%^^A \let\^^M=\gmd@bslashEOL}% -%^^A % -%^^A \fi% } -%^^A % \skiplines -%^^A % They won't work in \verb+|verbatim|+ scopes but the clubs redefine -%^^A % the active line end to be a~breakable (and visible) space, so -%^^A % breaking a~`clubbed' text in two lines will not cause a~disaster but -%^^A % you get e.g., |›…^^B %›…|. -%^^A % \endskiplines - -% \gmhypertarget[closingspace]{To make} |^^M| behave more like a~`normal' -% line end I~command it to add a~| |${}\subs{10}$ at first. It works -% but has one unwelcome feature: if the line has nearly |\textwidth|, -% this closing space may cause line breaking and setting a~blank line. -% To fix this I~|\advance| the |\parfillskip|: -\def\gmd@parfixclosingspace{{% + +\def\gmd@parfixclosingspace{{% \advance\parfillskip by-\gmd@closingspacewd \if@aftercode\ifilrr \gmd@setilrr \fi\fi - \par}% + \par}% \if@ilgroup\aftergroup\egroup\@ilgroupfalse\fi% we are in the - % verbatim group so we + % verbatim group so we % close the in-line comment group after it if the closing is not yet set. } -% We'll put it in a~group surrounding |\par| but we need to check if -% this |\par| is executed after narration or after the code, -% i.e., whether the closing space was added or not. \newskip\gmd@closingspacewd \newcommand*\gmd@setclosingspacewd{% \global\gmd@closingspacewd=\fontdimen2\font% plus\fontdimen3\font minus\fontdimen4\font\relax} -% -% See also line \ref{noclosingspace} to see what we do in the codeline -% case when no closing space is added. -% And one more detail: \foone\obeylines{%\DefIndex*{\^^M} \if 1 1% \protected\def\gmd@bslashEOL{\ \@xa\ignorespaces^^M}% @@ -3563,51 +1163,18 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ifhmode\unskip\fi\ \ignorespaces} %^^A~\if@countalllines\@newlinegtrue\gmd@cpnarrline\fi% \fi -% \changes{v0.99c}{2007/03/30}{a~bug fix: redefinition of it left -% solely to \cs{QueerEOL}} -% \changes{v0.99m}{2008/08/09}{also \cs{StraightEOL} with -% \env{countalllines} package option lets \cs{}\hathat{M} to it} -% -% The |\QueerEOL| declaration will |\let| it to |\^^M| to make -% |\^^M| behave properly. If this definition was omitted, |\^^M| -% would just expand to |\ | and thus not gobble the leading |%| of the -% next line leave alone typesetting the \TeX\ code. I~type |\ | etc. -% instead of just |^^M| which adds a~space itself because I~take -% account of a~possibility of redefining the |\ | \CS by the user, just -% like in normal \TeX. - - -% We'll need it for restoring queer definitions for \docfm-compatibility. -% -% -% \subdivision{Adjustments of \env{verbatim} and \cs{verb}} -% -% To make \env{verbatim›[*›]} typeset its contents with the \TeX\ code's -% indentation: -% \Define\@verbatim + \gaddtomacro\@verbatim{\leftskip=\CodeIndent} -% And a~one more little definition to accommodate |\verb| and pals for the -% lines commented out. \AtBegInput{\long\def\check@percent#1{% \gmd@cpnarrline% to count the verbatim lines and possibly print % their numbers. This macro is used only by the verbatim end of line. \@xa\ifx\code@delim#1\else\afterfi{#1}\fi}} -% We also redefine \pk{gmverb}'s |\AddtoPrivateOthers| that has been -% provided just with \pk{gmdoc}'s need in mind. \def\AddtoPrivateOthers#1{% \@xa\def\@xa\doprivateothers\@xa{% \doprivateothers\do#1}}% -%^^A \foone\obeylines{% -%^^A \AtBegInput{% -%^^A \prependtomacro{% first the stuff then the macro (see \pk{gmutils}). -%^^A \def\obeylines{\def^^M{\par}\catcode`\^^M\active}}% -%^^A \@verbatim}} -% We also redefine an internal |\verb|'s macro |\gm@verb@eol| to put a~proper -% line end if a~line end char is met in a~short verbatim: we have to -% check if we are in `queer' or `straight' \acro{EOL}s area. \begingroup \obeylines% \DefIndex\gm@verb@eol \AtBegInput{\def\gm@verb@eol{\obeylines% @@ -3616,94 +1183,52 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@ifEOLactive{^^M}{\@ehc}}}}% \endgroup -% To distinguish the code typewriter from the narrative typewriter: -\ampulexdef\@verbatim\ttverbatim\verbatim@specials -{\ttverbatim\narrativett\verbatim@specials} -\ampulexdef\verb\ttverbatim\verbatim@specials -{\ttverbatim\narrativett\verbatim@specials}% +\def\verbatimfont{\narrativett} +\def\codett{\tt} \pdef\texttt#1{{\narrativett#1}} -% We rollback the |\ampulexdef| made to |\verb| in the index, see line \ref{verb:ampulex:index} - - - -% \subdivision{Macros for marking of the macros} -% -% A~great inspiration for this part was the \docfm\ package again. -% I~take some macros from it, and some tasks I~solve a~different way, -% e.g., the |\| (or another escape char) is not active, because anyway -% all the chars of code are scanned one by one. And exclusions from -% indexing are supported not with a~list stored as |\toks| register -% but with separate control sequences for each excluded \CS. -% -% \stanza -% -% The \docfm\ package shows a~very general approach to the indexing -% issue. It assumes using a~special MakeIndex style and doesn't use -% explicit MakeIndex controls but provides specific macros to hide -% them. But here in \pk{gmdoc} we prefer no special style for the -% index. - -% \Define\actualchar \Define\quotechar \Define\encapchar -% \Define\levelchar -% \changes[\actualchar]{v0.98e}{06/09/23}{a~bug fix: making the -% \cs[]{@} \protect\catother\space again} -\edef\actualchar{\string @} + +\VerbatimPitch + +\def\ResultsIn{results in:} + +\DeclareEnvironment{verbatim@p}{} +{\begingroup + \verbatim +} +{\endverbatim + \endgroup + \ResultsIn + \[\parbox{0,85\textwidth}{% + \newlinechar=\endlinechar + \StraightEOL + \scantokens\@xa{\VerbatimContents}% + }% of parbox + \]% +} + + + + + +\edef\actualchar{\string @} \edef\quotechar{\string "} -\edef\encapchar{\xiiclub} +\edef\encapchar{\xiiclub} \edef\levelchar{\string !} -% However, for the glossary, i.e., the change history, a~special style -% is required, e.g., \pk{gmglo.ist}, and the above macros are -% redefined by the |\changes| command due to \pk{gmglo.ist} and -% \pk{gglo.ist} settings. -% -% Moreover, if you insist on using a~special MakeIndex style, you may -% redefine the above four macros in the preamble. The |\edef|s that -% process them further are postponed till |\begin{document}|. -% -% -% \Define\code@escape@char \def\CodeEscapeChar#1{% \begingroup \escapechar\m@ne \xdef\code@escape@char{\string#1}% \endgroup} -% As you see, to make a~proper use of this macro you should give it -% a~|\|\<one char> \CS as an argument. It's an invariant assertion that -% |\code@escape@char| stores `other' version of the code layer -% escape char. -% \CodeUsgIndex\CodeEscapeChar \CodeEscapeChar\\ -% As mentioned in \docfm, someone may have some chars \catletter ed. \@ifundefined{MakePrivateLetters}{%\label{MPL} \def\MakePrivateLetters{\makeatletter\catcode`\*=11 }}{} -% A~tradition seems to exist to write about e.g., `command |\section| and -% command |\section*|' and such an understanding also of `macro' is -% noticeable in \docfm. Making the |*| a~letter solves the problem of -% scanning starred commands. -% -% \stanza -% And you may wish some special chars to be \catother. \def\MakePrivateOthers{\let\do=\@makeother \doprivateothers} -% We use this macro to re|\catcode| the space for marking the -% environments' names and the caret for marking chars such as |^^M|, see -% line \ref{TextUsage}. So let's define the list: \def\doprivateothers{\do\ \do\^} -% Two chars for the beginning, and also the |\MakeShortVerb| command -% shall this list enlarge with the char(s) declared. -% (There's no need to add the backslash to this list since all the -% relevant commands |\string| their argument whatever it is.) -% -% \changes{v0.98c}{06/9/9}{\cs{} removed from \cs{doprivateothers} -% list and \cs{string} added instead to commands that process the -% `environments' names;} - -% Now the main macro indexing a~macro's name. It would be a~verbatim -% :-) copy of the \docfm 's one if I~didn't omit some lines -% irrelevant with my approach. + \foone\obeylines{% \def\scan@macro#1{% @@ -3711,14 +1236,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} }% of |\scan@macro|, }% of |\foone|. - \def\scan@macro@#1{% we are sure to scan at least one token which is % not the line end and % therefore we define this macro as one-parameter.\par -% Unlike in \docfm , here we have the escape char \catother\ so we -% may just have it printed during main scan char by char, i.e., in the -% lines \ref{printhashone1} and \ref{printhashone2}.\par -% So, we step the checksum counter first, \step@checksum% \label{checksumUse}(see line \ref{checksum} for % details),\par % Then, unlike in \docfm , we do \emph{not} check if the scanning is @@ -3741,12 +1261,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % is \catother\ since its argument is \catletter. \afterfi{\@ifnextcat{a}{\gmd@finishifstar#1}{\finish@macroscan}}% \else% |#1| is not a~letter, so we have just scanned a~one-char - % \CS.\par + % \CS.\par % Another reasonable |\catcode|s assumption seems to be that the % digits are \catother. Then we don't have to % type (|%|)|\expandafter\@gobble\string\a|. We do the |\uccode| % trick to be sure that the char we write as the macro's name is - % \catother. + % \catother. {\uccode`9=`#1% \uppercase{\xdef\macro@iname{9}}%\label{x474} }% @@ -3755,12 +1275,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \xdef\macro@pname{\xiistring#1}%\label{stringing1} \afterfi \finish@macroscan \fi}% of |\scan@macro@|. -% The |\xiistring| macro, provided by \pk{gmutils}, is used instead of -% original |\string| because we wish to get | |\catother (`other' space). -% -% \stanza -% Now, let's explain some details, i.e., let's define them. We call -% the following macro having known |#1| to be \catletter. \def\continue@macroscan#1{% \quote@char#1% \xdef\macro@iname{\macro@iname \gmd@maybequote#1}% @@ -3769,13 +1283,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % we don't need \incs{xiistring}. \@ifnextcat{a}{\gmd@finishifstar#1}{\finish@macroscan}% } -% As you may guess, |\@ifnextcat| is defined analogously to |\@ifnextchar| but -% the test it does is |\ifcat| (not |\ifx|). (Note it wouldn't -% work for an active char as the `pattern'.) -%\stanza -% We treat the star specially since in usual \LaTeX\ it should finish -% the scanning of a~\CS name---we want to avoid scanning -% |\command*argum| as one \CS. \def\gmd@finishifstar#1{% \if*\@nx#1\afterfi\finish@macroscan% note we protect |#1| against @@ -3784,7 +1291,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \else\afterfi\continue@macroscan \fi} -% If someone \emph{really} uses |*| as a~letter please let me know. \def\quote@char#1{{\uccode`9=`#1% at first I~took digit 1 for this % |\uccode|ing but then |#1| meant |#|\<\#1> in |\uppercase|'s @@ -3797,73 +1303,18 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} }} -% This macro is used for catching chars that are -% MakeIndex's controls. How does it work? -% -% |\quote@char| sort of re|\catcode|s its argument through the -% |\uccode| trick: assigns the argument as the uppercase code of the -% digit 9 and does further work in the |\uppercase|'s scope so the -% digit 9 (a~benchmark `other') is substituted by |#1| but the -% |\catcode| remains so \cs{gmd\-@\-if\-in\-mean\-ing} gets |\quote@char|'s |#1| -% `other'ed as the first argument. -% -% -% In |\quote@char| the second argument for \pk{gmutils} |\@ifinmeaning| is -% |\indexcontrols| defined as the (expanded and `other') sequence of -% the MakeIndex controls. |\@ifinmeaning| defines its inner macro -% |\gmd@in@@| to take two parameters separated by the first and the -% second |\@ifinmeaning|'s parameter, which are here the char -% investigated by |\quote@char| and the |\indexcontrols| list. The -% inner macro's parameter string is delimited by the macro itself, why -% not. |\gmd@in@@| is put before a~string consisting of -% |\@ifinmeaning|'s second and first parameters (in such a~reversed -% order) and |\gmd@in@@| itself. In such a~sequence it looks for -% something fitting its parameter pattern. |\gmd@in@@| is sure to find -% the parameters delimiter (|\gmd@in@@| itself) and the separator, -% |\ifismember|'s |#1| i.e., the investigated char, because they are -% just there. But the investigated char may be found not near the end, -% where we put it, but among the MakeIndex controls' list. Then the -% rest of this list and |\ifismember|'s |#1| put by us become the -% second argument of |\gmd@in@@|. What |\gmd@in@@| does with its -% arguments, is just a~check whether the second one is empty. This may -% happen \emph{iff} the investigated char hasn't been found among the -% MakeIndex controls' list and then |\gmd@in@@| shall expand to -% |\iffalse|, otherwise it'll expand to |\iftrue|. (The |\after›…| -% macros are employed not to (mis)match just got |\if›…| with the -% test's |\fi|.) ``(Deep breath.) You got that?'' If not, try -% \docfm's explanation of |\ifnot@excluded|, pp.\,36--37 of the v2.1b -% dated 2004/02/09 documentation, where a~similar construction is -% attributed to Michael Spivak. -% -% Since version 0.99g |\@ifinmeaning| is used also in testing -% whether a~detector is already present in the carrier in the -% mechanism of automatic detection of definitions (line \ref{550}). - -% And now let's take care of the MakeIndex control characters. We'll -% define a~list of them to check whether we should quote a~char or -% not. But we'll do it at |\begin{document}| to allow the user to use -% some special MakeIndex style and in such a~case to redefine the four -% MakeIndex controls' macros. We enrich this list with the backslash -% because sometimes MakeIndex didn't like it unquoted. -% \Define\indexcontrols -% \changes{v0.98d}{06/9/15}{relativized to the index control macros: -% previously the controls were given explicitly as the standard ones.} \AtBeginDocument{\xdef\indexcontrols{% \bslash\levelchar\encapchar\actualchar\quotechar}} - - \newif\ifgmd@glosscs% we use this switch to keep the information -% whether a~history entry is a~\CS or not. - \newcommand*\finish@macroscan{%\label{506}\par % First we check if the current \CS is not just being defined. The % switch may be set true in line \ref{519} \ifgmd@adef@cshook% if so, we throw it into marginpar and index as % a~def entry\dots - \gm@ifundefined{gmd/iexcl/\macro@pname\space}{% \dots\ if it's not excluded - % from indexing. + \gmu@ifundefined{gmd/iexcl/\macro@pname\space}{% \dots\ if it's not excluded + % from indexing. \@xa\Code@MarginizeMacro\@xa{\macro@pname}% \@xa\@defentryze\@xa{\macro@pname}{1}}{}%% here we declare the kind of % index entry and define |\last@defmark| used by \cs{changes} @@ -3890,11 +1341,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \maybe@marginpar\macro@pname \if\xiispace\macro@pname\relax\gmd@texcodespace \else - {\noverbatimspecials\RestoreMacro\verb + {\noverbatimspecials\Restore@Macro\verb \@xa\scanverb\@xa{\macro@pname}}% we typeset scanned \CS. \fi % \changes[\finish@macroscan]{v0.99n}{2008/09/30}{the case of - % \cs{\vs} taken care of} + % \cs{\vs} taken care of} \let\next\gmd@charbychar \gmd@detectors% \label{519} for automatic detection of % definitions. Defined and @@ -3905,12 +1356,8 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \label{next 3690} } -% Now, the~macro that checks whether the just scanned macro should be -% put into a~marginpar: it checks the meaning of a~very special \CS: -% whose name consists of |gmd/2marpar/| and of the examined macro's -% name. \def\maybe@marginpar#1{% - \gm@ifundefined{gmd/2marpar/\@xa\detokenize\@xa{#1}}{}{% + \gmu@ifundefined{gmd/2marpar/\@xa\detokenize\@xa{#1}}{}{% \edef\gmu@tempa{% \unexpanded{\Text@Marginize*}% {\bslash\@xa\unexpanded\@xa{#1}}% ^^A @@ -3920,62 +1367,20 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % ^^A % argument. % \incs{macro@pname}, which will be the only possible % argument to - % \incs{may\+be\+@mar\+g\+in\+par}, - % contains the macro's name + % \incs{may\+be\+@mar\+g\+in\+par}, + % contains the macro's name % without the escape char so we added it here. \@xa\g@relaxen \csname gmd/2marpar/\@xa\detokenize\@xa{#1}\endcsname% we reset the switch. }} -% Since version 0.99g we introduce automatic detection of definitions, -% it will be implemented in the next section. The details of indexing -% \CSs are implemented in the section after it. -% -% \subdivision{Automatic detection of definitions} -% -% To begin with, let's introduce a~general declaration of a~defining -% command. \cs{Decl\-are\-Def\-in\-ing} comes in two flavours: `saut\eacute', -% and with star. The `saut\eacute' version without an optional -% argument declares a~defining command of the kind of |\def| and -% |\newcommand|: whether wrapped in braces or not, its main argument -% is a~\CS. The star version without the optional argument declares -% a~defining command of the kind of |\newenvironment| and -% |\DeclareOption|: whose main mandatory argument is text. Both -% versions provide an optional argument in which you can set the keys. -% Probably the most important key is |star|. It determines whether the -% starred version of a~defining command should be taken into account. -% For example, |\newcommand| should be declared with |[star=true]| -% while |\def| with |[star=false]|. You can also write just |[star]| -% instead of |[star=true]|. It's the default if the |star| key is -% omitted. -% -% Another key is |type|. Its possible values are the (backslashless) -% names of the defining commands, see below. -% -% We provide now more keys for the \pk{xkeyval}ish definitions: -% |KVpref| (the key prefix) and |KVfam| (the key family). If not set by -% the user, they are assigned the default values as in \pk{xkeyval}: -% |KVpref| letters |KV| and |KVfam| the input file name. The latter -% assignment is done only for the |\DeclareOptionX| defining command -% because in other \pk{xkeyval} definitions (|\define@›«[…]»key|) the -% family is mandatory. -% -%\stanza -% -% \subsubdivision{\cs{DeclareDefining} and the detectors} -% -% Note that the main argument of the next declaration should be a~\CS -% \emph{without star}, unless you wish to declare only the starred -% version of a~command. The effect of this command is always global. \outer\def\DeclareDefining{\begingroup \MakePrivateLetters - \gm@ifstar + \gmu@ifstar {\gdef\gmd@adef@defaulttype{text}\Declare@Dfng}% {\gdef\gmd@adef@defaulttype{cs}\Declare@Dfng}% } -% The keys except |star| depend of |\gmd@adef@currdef|, therefore we -% set them having known both arguments \newcommand*\Declare@Dfng[2][]{% \endgroup \Declare@Dfng@inner{#1}{#2}% @@ -3987,7 +1392,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % everywhere. \fi} -% \Define\gmd@adef@currdef \def\Declare@Dfng@inner#1#2{% \edef\gmd@resa{% \@nx\setkeys[gmd]{adef}{type=\gmd@adef@defaulttype}}% @@ -3995,16 +1399,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\escapechar\m@ne \xdef\gmd@adef@currdef{\string#2}% % ^^A~\typeout{@@@ gmd@adef@currdef:::\gmd@adef@currdef::::}% - }% + }% \gmd@adef@setkeysdefault \setkeys[gmd]{adef}{#1}% \@xa\@ifinmeaning \csname gmd@detect@\gmd@adef@currdef\endcsname - % \label{550} - \of\gmd@detectors{}{% + % \label{550} + \of\gmd@detectors{}{% \@xa\gaddtomacro\@xa\gmd@detectors\@xa{% \csname gmd@detect@\gmd@adef@currdef\endcsname}}% we add a~\CS\\ - % |%| |\gmd@detect@|\<def name> (a~\textbf{detector}) to the + % |%| |\gmd@detect@|\<def name> (a~\textbf{detector}) to the % meaning of the \textbf{detectors' carrier}. And we define it to % detect the \inverb|#2| command. \@xa\xdef\csname gmd@detectname@\gmd@adef@currdef\endcsname{% @@ -4012,48 +1416,30 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \edef\gmu@tempa{% this |\edef| is to expand |\gmd@adef@TYPE|. \global\@nx\@namedef{gmd@detect@\gmd@adef@currdef}{% \@nx\ifx - \@xa\@nx\csname gmd@detectname@\gmd@adef@currdef\endcsname + \@xanxcs{gmd@detectname@\gmd@adef@currdef}% \@nx\macro@pname \@nx\n@melet{next}{gmd@adef@\gmd@adef@TYPE}% \@nx\n@melet{gmd@adef@currdef}{gmd@detectname@\gmd@adef@currdef}% \@nx\fi}}% \gmu@tempa - \SMglobal\StoreMacro*{gmd@detect@\gmd@adef@currdef}% we store the \CS to + \SMglobal\Store@MacroSt {gmd@detect@\gmd@adef@currdef}% we store the \CS to % allow its temporary discarding later. } - \def\gmd@adef@setkeysdefault{% \setkeys[gmd]{adef}{star,prefix,KVpref}} -% Note we don't set |KVfam|. We do not so because for -% |\define@key|-likes family is a~mandatory argument and for -% |\DeclareOptionX| the default family is set to the input file name -% in line \ref{defDOXfam}. \define@boolkey[gmd]{adef}{star}[true]{} -% The |prefix@|\<command> key-value will be used to create additional -% index entry for detected definiendum (a~\textbf{definiendum} is the -% thing defined, e.g.\ in |\newenvironment{foo}| the env.\ \env{foo}). -% For instance, |\newcounter| is declared with |[prefix=\bslash c@]| -% in line \ref{newcounter} and therefore |\newcounter{foo}| occurring -% in the code will index both |foo| and |\c@foo| (as definition -% entries). \UnDef \define@key[gmd]{adef}{prefix}[]{% \edef\gmd@resa{% - \def\@xa\@nx\csname gmd@adef@prefix@\gmd@adef@currdef \endcsname{% + \def\@xanxcs{gmd@adef@prefix@\gmd@adef@currdef }{% #1}}% \gmd@resa} - \def\gmd@KVprefdefault{KV}% in a~separate macro because we'll need % it in \cs{ifx}. - -% A~macro |\gmd@adef@KVprefixset@|\<command> if defined, will falsify -% an \cs{ifnum} test that will decide whether create additional index -% entry together with the tests for |prefix|\<command> and -% \UnDef \define@key[gmd]{adef}{KVpref}[\gmd@KVprefdefault]{% \edef\gmd@resa{#1}% \ifx\gmd@resa\gmd@KVprefdefault @@ -4064,29 +1450,23 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \edef\gmd@resa{#1}% because |\gmd@adef@setKV| redefined it. \edef\gmd@resa{% - \def\@xa\@nx\csname gmd@adef@KVpref@\gmd@adef@currdef\endcsname{% + \def\@xanxcs{gmd@adef@KVpref@\gmd@adef@currdef}{% \ifx\gmd@resa\empty \else#1@\fi}}% as in \pk{xkeyval}, if the \acro{KV} prefix is not % empty, we add \inverb|@| to it. \gmd@resa} - -% Analogously to |KVpref|, |KVfam| declared in |\DeclareDefining| -% will override the family scanned from the code and, in -% |\DeclareOptionX| case, the default family which is the input file -% name (only for the command being declared). \define@key[gmd]{adef}{KVfam}[]{% \edef\gmd@resa{#1}% \@namedef{gmd@adef@KVfamset@\gmd@adef@currdef}{1}% \edef\gmd@resa{% - \def\@xa\@nx\csname gmd@adef@KVfam@\gmd@adef@currdef\endcsname{% + \def\@xanxcs{gmd@adef@KVfam@\gmd@adef@currdef}{% \ifx\gmd@resa\empty \else#1@\fi}}% \gmd@resa \gmd@adef@setKV}% whenever the |KVfam|ily is set, the declared command is % assumed to be \pk{keyval}ish. - \define@choicekey[gmd]{adef}{type} [\gmd@adef@typevals\gmd@adef@typenr] {% the list of possible types of defining commands @@ -4136,7 +1516,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % explicitly declared. The \pk{kvoptions} prefix/family is % supported in \pk{gmdoc} with \inverb|[KVpref=, KVfam=|\<family>|]|. \fi} - + \def\gmd@adef@settype#1#2{% \def\gmd@adef@TYPE{#1}% \ifnum1=#2 % now we define (or not) a~quasi-switch that fires for @@ -4146,27 +1526,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\gmd@adef@setKV{% \edef\gmd@resa{% - \def\@xa\@nx\csname gmd@adef@KV@\gmd@adef@currdef\endcsname{1}% + \def\@xanxcs{gmd@adef@KV@\gmd@adef@currdef}{1}% }% \gmd@resa} - -% We initialise the carrier of detectors: \emptify\gmd@detectors - -% The definiendum of a~command of the |cs| type is the next control -% sequence. Therefore we only need a~self-relaxing hook in -% |\finish@macroscan|. \newif\ifgmd@adef@cshook \def\gmd@adef@cs{\global\gmd@adef@cshooktrue\gmd@charbychar} -% For other kinds of definitions we'll employ active chars of their -% arguments' opening braces, brackets and sergeants. In \pk{gmdoc} -% code layer scopes the left brace is active so we only add a~hook to -% its meaning (see line \ref{gm@lbracehook} in \pk{gmverb}) and here -% we switch it according to the type of detected definition. \def\gmd@adef@text{\gdef\gmd@lbracecase{1}\gmd@charbychar} @@ -4185,7 +1554,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % the \pk{xkeyval} prefix. Each time again because an assignment % in \inverb|\gmd@adef@dfKVpref| is global.\ilrr \gmd@adef@checklbracket} - + % The detector of \pk{xkeyval} |\DeclareOptionX|: \def\gmd@adef@dox{% \let[\gmd@adef@scanKVpref @@ -4196,36 +1565,24 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gdef\gmd@lbracecase{1}% \gmd@adef@dfKVpref\gmd@KVprefdefault% We set the default values of % the \pk{xkeyval} prefix\dots - \edef\gmd@adef@fam{\gmd@inputname}% \dots\ and family. + \edef\gmd@adef@fam{\gmd@inputname}% \dots\ and family. \gmd@adef@dofam % \label{defDOXfam} \gmd@adef@checkDOXopts}% } -% The case when the right bracket is next to us is special because it -% is already touched by |\futurelet| (of \CSs scanning macro's -% \cs{@ifnextcat}), therefore we need a~`future' test. \def\gmd@adef@checklbracket{% \@ifnextchar[%^^A] \gmd@adef@scanKVpref\gmd@charbychar}% note that -% the prefix scanning macro gobbles its first argument (undelimited) -% which in this case is |[|.\ilrr -%^^A] -% After a~|\DeclareOptionX|-like defining command not only the prefix -% in square brackets may occur but also the family in -% sergeants. Therefore we have to test presence of both of them. \def\gmd@adef@checkDOXopts{% \@ifnextchar[\gmd@adef@scanKVpref%^^A] {\@ifnextchar<\gmd@adef@scanDOXfam\gmd@charbychar}} - -%^^A[ \def\gmd@adef@scanKVpref#1#2]{% \gmd@adef@dfKVpref{#2}% [#2]\gmd@charbychar} - \def\gmd@adef@dfKVpref#1{% \ifnum1=0\csname gmd@adef@KVprefixset@\gmd@adef@currdef\endcsname \relax @@ -4239,7 +1596,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmu@resa \fi} - \def\gmd@adef@scanDOXfam{% \ifnum12=\catcode`\>\relax \let\next\gmd@adef@scanfamoth @@ -4248,7 +1604,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \let\next\gmd@adef@scanfamact \else \PackageError{gmdoc}{> neither `other' nor `active'! Make it - `other' with \bslash AddtoPrivateOthers\bslash\>.}% + `other' with \bslash AddtoPrivateOthers\bslash\>.}{}% \fi \fi \next} @@ -4269,19 +1625,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmd@charbychar}% } - -% The hook of the left brace consists of \cs{ifcase} that logically -% consists of three sub-cases: -% \begin{itemize}^^B -% \item [0]---the default: do nothing in particular; -% \item [1]---the detected defining command has one mandatory -% argument (is of the |text| type, including \pk{kvoptions} option definition); -% \item [2--3]---we are after detection of a~|\define@key|-like command -% so we have to scan \emph{two} mandatory arguments (case 2 is for -% the family, case 3 for the key name). -% \end{itemize} -% -% \def\gm@lbracehook{% \ifcase\gmd@lbracecase\relax \or% when 1 @@ -4301,16 +1644,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\gmd@lbracecase{0}% we initialise the hook caser. -% And we define the inner left brace macros: - \foone{\catcode`\[1 \catcode`\]2 \catcode`\}12 } [% Note that till line \ref{738} the square brackets are grouping % and the right brace is `other'. ^^A{ -%\par Define the macro that reads and processes the |\define@key| -%family argument. It has the parameter delimited with `other' right -%brace. An active left brace that has launched this macro had been -%passed through iterating |\gmd@charbychar| that now stands next right -%to us. \def\gmd@adef@scanDKfam#1}[%^^A{ \edef\gmd@adef@fam[\@gobble#1]% there is always % \cs{gmd@charbychar} first. @@ -4328,7 +1664,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@gobble#1}% \gmd@charbychar] ] -% \label{738} \def\gmd@adef@dofam{% \ifnum1=0\csname gmd@adef@KVfamset@\gmd@adef@currdef\endcsname @@ -4348,13 +1683,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@xa\def\@xa\macro@pname\@xa{\@gobble#1}%% we gobble |\gmd@charbychar|, cf. above. \edef\macro@pname{\@xa\detokenize\@xa{\macro@pname} }% note the % space at the end. - \edef\macro@pname{\@xa\@xiispaces\macro@pname\@@nil}% + \edef\macro@pname{\@xa\@xiispaces\macro@pname\@nil}% \@xa\Text@Marginize\@xa{\macro@pname}% \gmd@adef@indextext \edef\gmd@adef@altindex{% \csname gmd@adef@prefix@\gmd@adef@currdef \endcsname}% %\hskip-\parindent and we add the \pk{xkeyval} header if we are in \pk{xkeyval} - % definition. + % definition. \ifnum1=0\csname gmd@adef@KV@\gmd@adef@currdef \endcsname\relax% The\\ \CS % \inverb|\gmd@adef@KV@|\<def. command> is defined |{1}| (so \cs{ifnum} % gets |1=01\relax|---\hskip0sptrue) iff \<def. command> is a~\pk{keyval} @@ -4379,31 +1714,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % have a~definition entry and should appear % without backslash in the changes history. \gmd@doindexingtext% redefine |\do| to an indexing macro. -% \label{gmd@doindexingtext 2nd use} \@xa\do\@xa{\macro@pname}} -% \stanza -% So we have implemented automatic detection of definitions. Let's now -% introduce some. -% -% \subsubdivision{Default defining commands} -% Some commands are easy to declare as defining: -% \HideAllDefining -% \DeclareDefining\DeclareDefining -%^^A\DeclareDefining[type=dox, star=false]\def \DeclareDefining[star=false]\def \DeclareDefining[star=false]\pdef% it's a~\pk{gmutils}' shorthand for \inverb|\protected\def|. \DeclareDefining[star=false]\provide% a~\pk{gmutils}' conditional \incs{def}. \DeclareDefining[star=false]\pprovide% a~\pk{gmutils}' conditional \incs{pdef}. -%^^A\show\gmd@detectors -% \ResumeAllDefining But |\def| definitely \emph{not always} defines -% an important macro. Sometimes it's just a~scratch assignment. -% Therefore we define the next declaration. It turns the next -% occurrence of |\def| off (only the next one). \def\UnDef{{% \changes{v0.99n}{2008/08/30}{a~bug fixed: % \cs{gmd@charbychar} appended to \cs{next}---without it @@ -4412,22 +1732,18 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmd@adef@selfrestore\def }} -% \UnPdef \def\UnPdef{{\gmd@adef@selfrestore\pdef}} -\StoreMacro\UnDef% because the `hiding' commands relax it. +\Store@Macro\UnDef% because the `hiding' commands relax it. \def\HideDef{% \changes{v0.99n}{2008/08/30}{added the starred version % that calls \cs{UnDef}} - \gm@ifstar\UnDef{\HideDefining\def\relaxen\UnDef}} + \gmu@ifstar\UnDef{\HideDefining\def\relaxen\UnDef}} -\def\ResumeDef{\ResumeDefining\def\RestoreMacro\UnDef} +\def\ResumeDef{% + \ResumeDefining\def + \Restore@Macro\UnDef} - -% Note that I~\emph{don't} declare |\gdef|, |\edef| neither -% |\xdef|. In my opinion their use as `real' definition is very rare -% and then you may use |\Define| implemented later. -% \HideAllDefining \DeclareDefining\DeclareDefining \DeclareDefining[star=false]\newcount \DeclareDefining[star=false]\newdimen \DeclareDefining[star=false]\newskip @@ -4439,8 +1755,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \DeclareDefining[star=false]\newlength \DeclareDefining[star=false]\DeclareDocumentCommand \DeclareDefining[star=false]\DeclareCommand -% \changes{v0.99p}{2008/10/04}{added} - \DeclareDefining\newcommand \DeclareDefining\renewcommand @@ -4452,16 +1766,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \DeclareDefining*\newenvironment \DeclareDefining*\renewenvironment \DeclareDefining*[star=false]\DeclareOption -% \chgs{2008/11/30 v0.99s declared as defining if without star because -% \cs{DeclareOption*} doesn't define a~named option and so it doesn't -% have a~text argument} -%|%\DeclareDefining*\@namedef| -% \HideDefining\DeclareDefining -% \DeclareDefining\bslash \DeclareDefining*[prefix=\bslash c@]\newcounter% \label{newcounter} -% this prefix provides indexing also |\c@|\<counter>. \DeclareDefining[type=dk, prefix=\bslash]\define@key \DeclareDefining[type=dk, prefix=\bslash if]\define@boolkey% the @@ -4470,45 +1777,21 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \DeclareDefining[type=dk, prefix=\bslash]\define@choicekey \DeclareDefining[type=dox, prefix=\bslash]\DeclareOptionX% the -% alternate index entry will be \cs{}\<KVpref>|@|\<KVfam>|@|\<option name>. -% -% For |\DeclareOptionX| the default KVfamily is the input file -% name. If the source file name differs from the name of the goal -% file (you \TeX\ a~\file{.dtx} not \file{.sty} e.g.), there is the -% next declaration. It takes one optional and one mandatory -% argument. The optional is the |KVpref|, the mandatory the |KVfam|. -% \Define\DeclareDOXHead \newcommand*\DeclareDOXHead[2][\gmd@KVprefdefault]{% \csname DeclareDefining\endcsname [type=dox, prefix=\bslash, KVpref=#1, KVfam=#2]% \HideDefining\DeclareOptionX \DeclareOptionX } -% An example: -%\skiplines \iffalse -%\endskiplines \DeclareOptionX[Berg]<Lulu>{EvelynLear}{} -% Check in the index for -% \inverb|EvelynLear| and \inverb|\Berg@Lulu@EvelynLear|. -% Now we set in the comment layer -% |\DeclareDOXHead[Webern]{Lieder}|\DeclareDOXHead[Webern]{Lieder} and \DeclareOptionX<AntonW>{ChneOelze} -% The latter example shows also overriding the option header by -% declaring the default. By the way, both the example options are -% not declared in the code actually. -%\skiplines \fi -%\endskiplines -%\stanza -% Now the Heiko Oberdiek's \pk{kvoptions} package option definitions: \DeclareDefining[type=kvo, prefix=\bslash, KVpref=]\DeclareStringOption \DeclareDefining[type=kvo, prefix=\bslash, KVpref=]\DeclareBoolOption \DeclareDefining[type=kvo, prefix=\bslash, KVpref=]\DeclareComplementaryOption \DeclareDefining[type=kvo, prefix=\bslash, KVpref=]\DeclareVoidOption -% The \pk{kvoptions} option definitions allow setting the default -% family/prefix for all definitions forth so let's provide analogon: \def\DeclareKVOFam#1{% \def\do##1{% \csname DeclareDefining\endcsname @@ -4519,74 +1802,28 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \do\DeclareVoidOption } -% \ResumeAllDefining^^A~ it cancels |\DD\DD| and |\DD\bslash| effect. -% As a~nice exercise I~recommend to think why this list of declarations -% had to be preceded (in the comment layer) with |\HideAllDefining| -% and for which declarations of the above -% |\DeclareDefining\DeclareDefining| did not work. (The answers are -% commented out in the source file.) -%^^A~ I~had to precede the list of |\DeclareDefining|s with -%^^A~ |\HideAllDefining| in the commentary because the detectors of -%^^A~ some commands expect certain configurations of arguments and of -%^^A~ course such arguments do \emph{not} occur when such a~defining -%^^A~ command is being declared. That caused errors. Another reason is -%^^A~ that if not hidden, the detectors fired at the declared definers -%^^A~ of \CSs and marked next |\DeclareDefining| as being defined. -%^^A -%^^A~ |\DD\DD| did not work for those three \pk{xkeyval} definers -%^^A~ declared with |\bslash| in the optional argument. To be precise, -%^^A~ it \emph{did work} perfectly: marked |\bslash| as being defined. -% -% One remark more: if you define (in the code) a~new defining command -% (I~did: a~shorthand for |\DeclareOptionX[gmcc]<>|), declare it as -% defining (in the commentary) \emph{after} it is defined. Otherwise -% its first occurrence shall fire the detector and mark next \CS or -% worse, shall make the detector expect some arguments that it won't -% find. - - -% \subsubdivision{Suspending (`hiding') and resuming detection} -% -% Sometimes we want to suspend automatic detection of definitions. For -% |\def| we defined suspending and resuming declarations in the -% previous section. Now let's take care of detection more generally. -% -% \stanza -% The next command has no arguments and suspends entire detection of -% definitions. + \def\HideAllDefining{% \ifnum0=0\csname gmd@adef@allstored\endcsname - \SMglobal\StoreMacro\gmd@detectors + \SMglobal\Store@Macro\gmd@detectors \global\@namedef{gmd@adef@allstored}{1}% \fi \global\emptify\gmd@detectors}% we make the carrier |\empty| not |\relax| to % be able to declare new defining command in - % the scope of |\HideAll›…| + % the scope of |\HideAll›…| -% The |\ResumeAllDefining| command takes no arguments and restores the -% meaning of the detectors' carrier stored with |\HideAllDefining| \def\ResumeAllDefining{% \ifnum1=0\csname gmd@adef@allstored\endcsname\relax - \SMglobal\RestoreMacro\gmd@detectors - \SMglobal\RestoreMacro\UnDef + \SMglobal\Restore@Macro\gmd@detectors + \SMglobal\Restore@Macro\UnDef \global\@namedef{gmd@adef@allstored}{0}% \fi} -% Note that |\ResumeAllDefining| discards the effect of any -% |\DeclareDefining| that could have occurred between -% |\HideAllDefining| and itself. -% -% \stanza -% -% The |\HideDefining| command takes one argument which should be -% a~defining command (always without star). |\HideDefining| suspends -% detection of this command (also of its starred version) until -% |\ResumeDefining| of the same command or |\ResumeAllDefining|. \def\HideDefining{\begingroup % \changes{v0.99n}{2008/08/30}{Added the starred version that hides % the defining command only once} \MakePrivateLetters - \gm@ifstar\Hide@DfngOnce\Hide@Dfng} + \gmu@ifstar\Hide@DfngOnce\Hide@Dfng} \def\Hide@Dfng#1{%%\UnDef \escapechar\m@ne @@ -4600,61 +1837,51 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \endgroup} \def\gmd@adef@selfrestore#1{% - \escapechar\m@ne - \@ifundefined{gmd@detect@\string#1}{% - \SMglobal\@xa\StoreMacro - \csname gmd@detect@\string#1\endcsname}{}% + \@ifundefined{gmd@detect@\strip@bslash{#1}}{% + \SMglobal\@xa\Store@Macro + \csname gmd@detect@\strip@bslash{#1}\endcsname}{}% % ^^A\typeout{:::::::::::::::gmd@detect@\string#1:::::::::::::}% - \global\@nameedef{gmd@detect@\string#1}{% - \@nx\ifx\@xa\@nx\csname gmd@detectname@\string#1\endcsname - \@nx\macro@pname - \def\@nx\next{% this \incs{next} will be executed in line - % % \ref{next 3690}. - \SMglobal\RestoreMacro % they both are \incs{protected}. - \@xa\@nx\csname gmd@detect@\string#1\endcsname - \@nx\gmd@charbychar}%^^A we define - % ^^A \inverb|\next| not restore the macro here just in case of - % ^^A multiple declaration of |\def| (in that case there would - % ^^A~be - % ^^A multiple occurrences of the macro to be restored in the - % ^^A~carrier - % ^^A \inverb|\gmd@detectors| and we wish - % ^^A all of them not to fire this one time) That's probably too - % ^^A much care since there's the test in line \ref{550}. - \@nx\fi}% of \cs{@nameedef}. + \global\@nameedef{gmd@detect@\strip@bslash{#1}}{% + \@nx\gmu@if x% + {\@xanxcs{gmd@detectname@\strip@bslash{#1}}% + \@nx\macro@pname}% we compare the detect(ed) name with + % |\macro@pname|. + % + {\def\@nx\next{% this \incs{next} will be executed in line + % % \ref{next 3690}. + \SMglobal\Restore@Macro % they both are \incs{protected}. + \@xanxcs{gmd@detect@\string#1}% + \@nx\gmd@charbychar}%^^A we define + % ^^A \inverb|\next| not restore the macro here just in case of + % ^^A multiple declaration of |\def| (in that case there would + % ^^A~be + % ^^A multiple occurrences of the macro to be restored in the + % ^^A~carrier + % ^^A \inverb|\gmd@detectors| and we wish + % ^^A all of them not to fire this one time) That's probably too + % ^^A much care since there's the test in line \ref{550}. + \@nx}% + {}% or do nothing if the \CS' names are unequal. + }% of \cs{@nameedef}. }% of \cs{gmd@adef@selfrestore}. -% The |\ResumeDefining| command takes a~defining command as the -% argument and resumes its automatic detection. Note that it restores -% also the possibly undefined detectors of starred version of the -% argument but that is harmless I~suppose until we have millions of \CSs. \def\ResumeDefining{\begingroup \MakePrivateLetters \gmd@ResumeDfng} \def\gmd@ResumeDfng#1{% \escapechar\m@ne - \SMglobal\RestoreMacro*{gmd@detect@\string#1}% - \SMglobal\RestoreMacro*{gmd@detect@\string#1*}% + \SMglobal\Restore@MacroSt{gmd@detect@\string#1}% + \SMglobal\Restore@MacroSt{gmd@detect@\string#1*}% \endgroup} - -% \subdivision{Indexing of \CSs} -% The inner macro indexing macro. |#1| is the |\verb|'s delimiter; -% |#2| is assumed to be the macro's name with MakeIndex-control chars -% quoted. |#3| is a~macro storing the \catother\ macro's name, usually -% |\macro@pname|, built with |\string|ing every char in lines ^^A -% \ref{stringing0}, \ref{stringing1} and \ref{stringing2}. |#3| is -% used only to test if the entry should be specially formatted. -% \changes{v0.98}{06/09/05}{Indexing the codelines improved to sort -% with account of the \cs{filesep} (\cs{HLPrefix})} \newcommand*\index@macro[3][\verbatimchar]{{% - \gm@ifundefined{gmd/iexcl/\@xa\detokenize\@xa{#3 }}%\label{iexcltest} + \gmu@ifundefined{gmd/iexcl/\@xa\detokenize\@xa{#3 }}%\label{iexcltest} {% |#3| is not excluded from index % ^^A\typeout{@@@ :::\@xa\string\csname gmd/iexcl/\@xa\detokenize\@xa{#3 }\endcsname::::}% - \gm@ifundefined{gmd/defentry/\@xa\detokenize\@xa{#3 }}% \label{pnametestDef} + \gmu@ifundefined{gmd/defentry/\@xa\detokenize\@xa{#3 }}% \label{pnametestDef} {% |#3| is not def entry - \gm@ifundefined{gmd/usgentry/\@xa\detokenize\@xa{#3 }}%\label{pnametestUsg} + \gmu@ifundefined{gmd/usgentry/\@xa\detokenize\@xa{#3 }}%\label{pnametestUsg} {% |#3| is not usg.\ entry \edef\kind@fentry{\CommonEntryCmd}}%\label{CECmd} {% |#3| is usg.\ entry @@ -4669,7 +1896,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % there? Definitely here because we'll wish to switch the switch % with a~declaration. \if@pageinclindex - \edef\gmu@tempa{gmdindexpagecs{\HLPrefix}{\kind@fentry}{\EntryPrefix}}% + \edef\gmu@tempa{gmdindexpagecs{\HLPrefix}{\kind@fentry}{\EntryPrefix}}% \else \edef\gmu@tempa{gmdindexrefcs{\HLPrefix}{\kind@fentry}{\EntryPrefix}}% \fi @@ -4678,7 +1905,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % this line usually means the first two, but in some cases % it's redefined to be empty (when we use |\index@macro| to % index not a~\CS). - \encapchar\gmu@tempa}% + \encapchar\gmu@tempa}% \@xa\special@index\@xa{\gmu@tempa}% We give the % indexing macro the argument expanded so that \pk{hyperref} may % see the explicit encap-char in order not to add its own @@ -4693,8 +1920,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % argument of the very indexing macro} }{}% closing of |gmd/iexcl/| test. }} - - \def\un@defentryze#1{% \ifcsname gmd/defentry/\@xa\detokenize\@xa{#1 }\endcsname @@ -4715,24 +1940,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi} \@emptify\EntryPrefix% this macro seems to be obsolete now -% (v0.98d). -% For the case of page-indexing a~macro in the commentary when -% codeline index option is on: \newif\if@pageinclindex \newcommand*\quoted@eschar{\quotechar\bslash}% we'll redefine it when -% indexing an environment. -% Let's initialise |\IndexPrefix| \def\IndexPrefix{} -% The |\IndexPrefix| and |\HLPrefix| (`HyperLabel Prefix') macros are -% given with account of a~possibility of documenting several files -% in(to) one document. In such case the user may for each file -% |\def\IndexPrefix{|\<package name>|!}| for instance and it will work -% as main level index entry and |\def\HLPrefix{|\<package name>|}| -% as a~prefix in hypertargets in the codelines. They are redefined by -% |\DocInclude| e.g. \if@linesnotnum\@pageindextrue\fi \AtBeginDocument{% @@ -4742,8 +1955,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % to be the entry prefix.\ilrr \let\gmdindexpagecs=\gmdindexrefcs \else -% \DefIndex\gmdindexrefcs -% \DefIndex\gmdindexpagecs \def \gmdindexrefcs#1#2#3#4{\gmiflink[clnum.#4]{% \csname#2\endcsname{#4}}}% \def \gmdindexpagecs#1#2#3#4{\hyperlink{page.#4}{% @@ -4766,56 +1977,25 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \cs{@empty}fied since \cs{hypertarget}ing the codelines names % them \cs[]{clnum} (since v0.98).} \fi} -% The definition is postponed till |\begin{document}| because of the -% |\PageIndex| declaration (added for \docfm-compatibility), see -% line \ref{PageIndex}. -% -% I~design the index to contain hyperlinking numbers whether they are -% the line numbers or page numbers. In both cases the last parameter -% is the number, the one before the last is the name of a~formatting macro -% and in line number case the first parameter is a~prefix for proper -% reference in multi-doc. - - -% I~take account of three kinds of formatting the numbers: 1.~the -% `def' entry, 2.~a~`usage' entry, 3.~a~common entry. As in \docfm , let -% them be underlined, italic and upright respectively. + \def\DefEntry#1{\underline{#1}} \def\UsgEntry#1{\textit{#1}} -% The third option will be just |\relax| by default: \def\CommonEntryCmd{relax} -% In line \ref{CECmd} it's |\edef|ed to allow an `unm\oumlaut glich' -% situation that the user wants to have the common index entries -% specially formatted. I~use this to make \emph{all} the index entries -% of the driver part to be `usage', see the source of chapter -% \ref*{Driver}. - -% Now let's |\def| the macros declaring a~\CS to be indexed -% special way. Each declaration puts the \catother ed name of the -% macro given it as the argument into proper macro to be |\ifx|ed in -% lines \ref{pnametestDef} and \ref{pnametestUsg} respectively. -% Now we are ready to define a~couple of commands. % The |*| versions of -% them are for marking environments and \emph{implicit} \CSs. \outer\def\DefIndex{\begingroup \MakePrivateLetters - \gm@ifstar + \gmu@ifstar {\@sanitize\MakePrivateOthers%^^A\verbatim@specials \Code@DefIndexStar}% {\Code@DefIndex}} -% \changes{v0.98d}{06/9/11}{The macros indexing and marginizing -% macros (and other sequences) made \cs{long}} -%\DefIndex\Code@DefIndex \long\def\Code@DefIndex#1{\endgroup{% \escapechar\m@ne% because we will compare the macro's name with % a~string without the backslash. \@defentryze{#1}{1}}} -% \label{stringamacro} -% \DefIndex\Code@DefIndexStar \long\def\Code@DefIndexStar#1{% \endgroup{% \addto@estoindex{#1}% @@ -4829,12 +2009,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \LaTeX\ \inverb|\@namedef| macro could not be used since it's not % `long'. The space to sound with the checker. \ilrr % \Define\last@defmark - \ifcat\relax\@xa\@nx\@firstofmany#1\@@nil + \ifcat\relax\@xa\@nx\@firstofmany#1\@nil % \nostanza if we meet a~\CS, then maybe it's a~\CS to be % ‘defentryzed’ or maybe it's a~‘verbatim special’ \CS. The only way % to distinguish those cases is to assume there shouldn't be % a~verbatim containing only a~‘verbatim special’ \CS. - \@xa\def\@xa\gmu@tempa\@xa{\@allbutfirstof#1\@@nil}% + \@xa\def\@xa\gmu@tempa\@xa{\@allbutfirstof#1\@nil}% \ifx\gmu@tempa\@empty \afterfifi\@firstoftwo% if |#1| is a~single \CS, we % \incmd\xiistring\ it. Otherwise we \incmd\detokenize\ it. @@ -4849,31 +2029,24 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % |\@defentryze| |\\|). {\xdef\last@defmark{\detokenize{#1}}}% \@xa\gdef\csname gmd/isaCS/\last@defmark\endcsname{#2}% |#2| is -% either 0 or 1. It is the information whether this entry is a~\CS or -% not. }% of |\@defentryze|. \long\def\@usgentryze#1{% \@xa\let\csname gmd/usgentry/\detokenize{#1}\endcsname\gmd@justadot} -% Initialise |\envirs@toindex| \@emptify\envirs@toindex -% Now we'll do the same for the `usage' entries: \outer\def\CodeUsgIndex{\begingroup \MakePrivateLetters - \gm@ifstar + \gmu@ifstar {\@sanitize\MakePrivateOthers%^^A\verbatim@specials \Code@UsgIndexStar}% {\Code@UsgIndex}} -% The |*| possibility is for marking environments etc. -% \DefIndex\Code@UsgIndex \long\def\Code@UsgIndex#1{% \endgroup{% \escapechar\m@ne \global\@usgentryze{#1}}} -% \DefIndex\Code@UsgIndexStar \long\def\Code@UsgIndexStar#1{% \endgroup {%^^A\verbatim@specials @@ -4881,24 +2054,17 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@usgentryze{#1}}% } -% For the symmetry, if we want to mark a~control sequence or an -% environment's name to be indexed as a~`normal' entry, let's have: \outer\def\CodeCommonIndex{\begingroup \MakePrivateLetters - \gm@ifstar + \gmu@ifstar {\MakePrivateOthers\@sanitize\Code@CommonIndexStar}% {\Code@CommonIndex}} -% \DefIndex\Code@CommonIndex \long\def\Code@CommonIndex#1{\endgroup} -% \DefIndex\Code@CommonIndexStar \long\def\Code@CommonIndexStar#1{% \endgroup\addto@estoindex{#1}} - -% And now let's define commands to index the control sequences and -% environments occurring in the narrative. \long\def\text@indexmacro#1{% {\escapechar\m@ne \xdef\macro@pname{\xiistring#1}}% % ^^A \typeout{@@@@ 4803}% @@ -4913,9 +2079,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\do@properindex% see line \ref{do@properindex}. \@xa \index@macro\im@firstpar\macro@iname\macro@pname}} -% The macro defined below (and the next one) are executed only before -% a~\catother\ macro's name i.e.\ a~nonempty sequence of \catother\ -% character(s). This sequence is delimited (guarded) by |\relax|. \def\quote@mname{% \def\macro@iname{}% \quote@charbychar} @@ -4932,14 +2095,14 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ifdefined\verbatim@specials@list \afterfi{% \begingroup - \escapechar\@xa\@xa\@xa`\@xa\@firstofmany\verbatim@specials@list\@@nil + \escapechar\@xa\@xa\@xa`\@xa\@firstofmany\verbatim@specials@list\@nil \@xa\endgroup \@xa\quote@charbychar\detokenize{#1}%% for a~\CS\ % \incs{detokenize} adds a~space but if so, it will be ignored % by the argument scanner. }% of |\afterfi|. \else\PackageError{gmdoc}{Please report a\space bug in - \bslash quote@charbychar in line 4934}% + \bslash quote@charbychar in line 4934}{}% \fi% of |\ifdefined\verbatim@specials@list|. }% of |\afterfifi|. \else @@ -4949,27 +2112,21 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \fi} -% The next command will take one argument, -% which in plain version should be a~control sequence and in the -% starred version also a~sequence of chars allowed in environment names or -% made other by |\MakePrivateOthers| macro, taken in the curly braces. \def\TextUsgIndex{\begingroup \MakePrivateLetters - \gm@ifstar{\MakePrivateOthers\Text@UsgIndexStar}{\Text@UsgIndex}} + \gmu@ifstar{\MakePrivateOthers\Text@UsgIndexStar}{\Text@UsgIndex}} -% \DefIndex\Text@UsgIndex \long\def\Text@UsgIndex#1{% \endgroup\@usgentryze#1% \text@indexmacro#1} -% \DefIndex\Text@UsgIndexStar \long\def\Text@UsgIndexStar#1{\endgroup\@usgentryze{#1}% \text@indexenvir{#1}} \long\def\text@indexenvir#1{% {\verbatim@specials \edef\macro@pname{\xiistring#1}% - \if\bslash\@xa\@firstofmany\macro@pname\@@nil% if + \if\bslash\@xa\@firstofmany\macro@pname\@nil% if % |\string|ed |#1| begins with a~backslash, we will gobble it % to make MakeIndex not see it. \edef\gmu@tempa{\@xa\@gobble\macro@pname}% @@ -4979,7 +2136,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@tempswafalse \fi % ^^A \typeout{@@@@@ 4858}% - \@xa\quote@mname\gmu@tempa\relax% \label{quote@mname comm}we + \@xa\quote@mname\gmu@tempa\relax% \label{quote@mname comm}we % process |\string|ed |#1| char by char and quote MakeIndex % controls. |\relax| is the iterating macro's stopper. The quoted % |\string|ed |#1| shall be the meaning of |\macro@iname|. @@ -4992,54 +2149,36 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\TextCommonIndex{\begingroup \MakePrivateLetters - \gm@ifstar{\MakePrivateOthers\Text@CommonIndexStar}{\Text@CommonIndex}} + \gmu@ifstar{\MakePrivateOthers\Text@CommonIndexStar}{\Text@CommonIndex}} -%\DefIndex\Text@CommonIndex \long\def\Text@CommonIndex#1{\endgroup \text@indexmacro#1} -% \DefIndex\Text@CommonIndexStar \long\def\Text@CommonIndexStar#1{\endgroup \text@indexenvir{#1}} -% As you see in the lines \ref{defentryrs} and \ref{usgentryrs}, the -% markers of special formatting are reset after first use. -% But we wish the \CSs not only to be indexed special way but also -% to be put in marginpars. So: \outer\def\CodeMarginize{\begingroup \MakePrivateLetters - \gm@ifstar + \gmu@ifstar {\MakePrivateOthers\egCode@MarginizeEnvir} {\egCode@MarginizeMacro}} -% One more expansion level because we wish |\Code@MarginizeMacro| not -% to begin with |\endgroup| because in the subsequent macros it's used -% \emph{after} ending the re|\catcode|ing group. -% \DefIndex\egCode@MarginizeMacro \long\def\egCode@MarginizeMacro#1{\endgroup \Code@MarginizeMacro#1} -% \DefIndex\Code@MarginizeMacro \long\def\Code@MarginizeMacro#1{{% |#1| is always a~\CS. % ^^A \typeout{@@@@ :::\xiistring#1:::}% % ^^A \show\detokenize \escapechar\m@ne \@xa\glet\csname gmd/2marpar/\xiistring#1\endcsname\gmd@justadot -%^^A \xdef\mname@tomarginpar{\xiistring#1} }} -% \DefIndex\egCode@MarginizeEnvir \long\def\egCode@MarginizeEnvir#1{\endgroup \Code@MarginizeEnvir{#1}} -% \DefIndex\Code@MarginizeEnvir \long\def\Code@MarginizeEnvir#1{\addto@estomarginpar{#1}} -% And a~macro really putting the environment's name in a~marginpar -% shall be triggered at the beginning of the nearest codeline. -% -% Here it is: \def\mark@envir{%\label{mark@envir} \ifx\envirs@tomarginpar\@empty \else @@ -5059,8 +2198,8 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\do##1{% the |\envirs@toindex| list contains |\string|ed % macros or environments' names in braces and each preceded % with |\do|. We extract the definition because we use it also in - % line \ref{gmd@doindexingtext 2nd use}. - \if\bslash\@firstofmany##1\@@nil% if + % line \ref{gmd@doindexingtext 2nd use}. + \if\bslash\@firstofmany##1\@nil% if % |##1| begins with a~backslash, we will gobble it for % MakeIndex not see it. \edef\gmd@resa{\@gobble##1}% @@ -5077,44 +2216,30 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \index@macro\macro@iname{##1}}}% } - -% One very important thing: initialisation of the list macros: \@emptify\envirs@tomarginpar \@emptify\envirs@toindex - -% For convenience we'll make the `private letters' first not to bother -% ourselves with |\makeatletter| for instance when we want mark some -% \CS. And |\MakePrivateOthers| for the environment and other string -% case. \outer\def\Define{% note that since it's |\outer|, it doesn't have to % be \incmd\protected. \begingroup \MakePrivateLetters -% We do |\MakePrivateLetters| before |\gm@ifstar| in order to avoid -% a~situation that \TeX\ sees a~control sequence with improper name -% (another \CS than we wished) -% (because |\gm@ifstar| establishes the |\catcode|s for the next token): - \gm@ifstar{\@sanitize%^^A\verbatim@specials + \gmu@ifstar{\@sanitize%^^A\verbatim@specials \Code@DefEnvir}{\Code@DefMacro}} \outer\def\CodeUsage{\begingroup \MakePrivateLetters - \gm@ifstar{% + \gmu@ifstar{% \@sanitize%^^A\verbatim@specials \MakePrivateOthers \Code@UsgEnvir}{\Code@UsgMacro}} -% And then we launch the macros that close the group and do the work. \DeclareCommand\Code@DefMacro\long{om}{% \Code@DefIndex#2% we use the internal macro; it'll close the group. \IfValueTF{#1}% {\Code@MarginizeMacro#1}% {\Code@MarginizeMacro#2}% } - -% \DefIndex\Code@UsgMacro \DeclareCommand\Code@UsgMacro\long{om}{% \Code@UsgIndex#2% here also the internal macro; it'll close the % group @@ -5123,20 +2248,15 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\Code@MarginizeMacro#2}% } -% The next macro is taken verbatim ;-) from \docfm\ and the subsequent -% |\let|s, too. -% \DefIndex\codeline@wrindex \def\codeline@wrindex#1{\if@filesw \immediate\write\@indexfile {\string\indexentry{#1}% {\HLPrefix\number\c@codelinenum}}\fi} - - \def\codeline@glossary#1{% It doesn't need to establish a~group since % it is always called in a~group. \if@pageinclindex - \edef\gmu@tempa{gmdindexpagecs{\HLPrefix}{relax}{\EntryPrefix}}% + \edef\gmu@tempa{gmdindexpagecs{\HLPrefix}{relax}{\EntryPrefix}}% \else \edef\gmu@tempa{gmdindexrefcs{\HLPrefix}{relax}{\EntryPrefix}}% \inverb|relax| stands for the formatting command. But we don't want to do anything special with the change history entries. \ilrr \fi @@ -5147,12 +2267,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmu@tempa } -% \changes[\changes]{v0.99m}{2008/08/09}{changed to write the line -% number instead of page number by default and with -% \env{codelineindex} option which seems to be more reasonable -% especially with the \env{countalllines} option} -% We initialise it due to the option (or lack of the option): \AtBeginDocument{% \if@pageindex \let\special@index=\index @@ -5163,34 +2278,15 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \let\gmd@glossary\codeline@glossary % \label{codeline indexnumber declaration} \fi}% postponed till |\begin{document}| with respect of \docfm-like -% declarations. -% And in case we don't want to index: \def\gag@index{\let\index=\@gobble %\label{gag@index} \let\codeline@wrindex=\@gobble} -% We'll use it in one more place or two. And we'll wish to be able to -% undo it so -% let's copy the original meanings: -% \DefIndex\@@index \DefIndex\@@codeline@wrindex -\StoreMacros{\index\codeline@wrindex} +\Store@Macros{\index\codeline@wrindex} -\def\ungag@index{\RestoreMacros{\index\@@codeline@wrindex}} +\def\ungag@index{\Restore@Macros {\index\@@codeline@wrindex}} %\label{ungag@index} - - - -% Our next task is to define macros that'll mark and index an -% environment or other string in the code. Because of lack of -% a~backslash, no environment's name is scanned so we have to proceed -% different way. But we wish the user to have symmetric tools, i.e., -% the `def' or `usage' use of an environment should be declared before -% the line where the environment occurs. Note the slight difference -% between these and the commands to declare a~\CS marking: the latter -% do not require to be used \emph{immediately} before the line containing the -% \CS to be marked. We separate indexing from marginizing to leave -% a~possibility of doing only one of those things. -% + \DeclareCommand\Code@DefEnvir\long{om}{% \endgroup % ^^A \typeout{@@@@@ 5069: \unexpanded{#1}}% @@ -5201,7 +2297,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \addto@estoindex{#2}% \@defentryze{#2}{0}}} -% \DefIndex\Code@UsgEnvir \DeclareCommand\Code@UsgEnvir\long{om}{% \endgroup {%^^A~\verbatim@specials @@ -5211,7 +2306,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \addto@estoindex{#2}% \@usgentryze{#2}}} - \long\def\addto@estomarginpar#1{% % ^^A \def\gmu@tempa{\do{#1}}% we |\string|ed the argument to % ^^A % allow it to be a~control sequence but now (2008/12/14) it's not @@ -5225,21 +2319,14 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % ^^A \@xa\gaddtomacro\@xa\envirs@toindex\@xa{\gmu@tempa} \gaddtomacro\envirs@toindex{\do{#1}}} - -% And now a~command to mark a~`usage' occurrence of a~\CS, environment -% or another string in the commentary. As the `code' commands this also -% has plain and starred version, first for \CSs appearing explicitly and the -% latter for the strings and \CSs appearing implicitly. \def\TextUsage{\begingroup % \chgs{2008/12/8 v0.99s added \cmd\@sanitize\ in the starred - % version} + % version} % \label{TextUsage} \MakePrivateLetters - \gm@ifstar{\@sanitize\MakePrivateOthers -%^^A \verbatim@specials + \gmu@ifstar{\@sanitize\MakePrivateOthers \Text@UsgEnvir}{\Text@UsgMacro}} -% \DefIndex\Text@UsgMacro \DeclareCommand\Text@UsgMacro\long{om}{% \endgroup % \chgs[\narrativett]{2008/12/12 v0.99s introduced in \pk{gmutils} @@ -5251,7 +2338,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \begingroup\Code@UsgIndex#2% we declare the kind of formatting of the entry. \text@indexmacro#2} -% \DefIndex\Text@UsgEnvir \DeclareCommand\Text@UsgEnvir\long{om}{% \endgroup % ^^A \typeout{@@@@ :::\detokenize{#1}::::}% @@ -5263,18 +2349,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % entry and index the sequence |#1|. \text@indexenvir{#2}} -% We don't provide commands to mark a~macro's or environment's -% definition present within the narrative because we think there won't -% be any: one defines macros and environments in the code not in -% the commentary. \pdef\TextMarginize{\@bsphack\begingroup % \chgs{2008/12/8 v0.99s added \cmd\@sanitize\ in the starred - % version} + % version} \MakePrivateLetters - \gm@ifstar{% + \gmu@ifstar{% \MakePrivateOthers\egText@MarginizeEnv}{\egText@MarginizeCS}} -% \DefIndex\egText@Marginize \long\def\egText@MarginizeEnv#1{\endgroup \Text@Marginize*{#1}% \chgs{2008/12/07 v0.99s a~bug fixed: braces % added around \hash1} @@ -5285,8 +2366,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \Text@Marginize*{#1}% } -% We check whether the margin pars are enabled and proceed -% respectively in either case. \if@marginparsused \reversemarginpar \marginparpush\z@ @@ -5294,12 +2373,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % ^^A \settowidth{\marginparsep}{\ \ }% % % You may wish to put not only macros and environments to - % a~marginpar. + % a~marginpar. \long\def\gmdmarginpar#1{% \marginpar{\raggedleft\strut \hskip0ptplus100ptminus100pt% #1}}%\stanza - % + % \else \long\def\gmdmarginpar#1{}% \fi @@ -5312,93 +2391,34 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \addtomacro\verb@lasthook{\marginpartt}% \IfValueTF{#1}{\scanverb#1}{\scanverb}{#2}}% }% of |\Text@Marginize|. -% -% Note that the above command will just gobble its arguments if the -% marginpars are disabled.^^A\NoEOF so far O.K. -% -% It may be advisable to choose a~condensed typewriter font for the -% marginpars, if there is any. (The Latin Modern font family provides -% a~light condensed typewriter font, it's set in \pk{gmdocc} class.) \let\marginpartt\narrativett -% If we print also the narration lines' numbers, then the index entries for \CSs and -% environments marked in the commentary should have codeline numbers -% not page numbers and that is |\let| in line -% \ref{codeline indexnumber declaration}. On the other hand, if we -% don't print narration lines' numbers, then a~macro or an environment marked in -% the commentary should have page number not codeline number. This we -% declare here, among others\ we add the letter |p| before the page number. -% \DefIndex\do@properindex \def\do@properindex{%\label{do@properindex} \if@printalllinenos\else \@pageinclindextrue \let\special@index=\index \fi} -% \stanza -% In \docfm\ all the `working' \TeX\ code should be braced in(to) the -% \env{macrocode} environments. Here another solutions are taken so to -% be \docfm-compatible we only should -% nearly-ignore \env{macrocode›[*›]}s -% with their Percent and The Four Spaces Preceding ;-)\,. I.e., to ensure -% the line ends are `queer'. And that the \ds\ directives will be -% typeset as the \ds\ directives. And that the usual code escape -% char will be restored at |\end{macrocode}|. And to add the vertical -% spaces. -% -% ^^A~\NoEOF so far \acro{OK} -% If you know \docfm\ conventions, note that \gmdoc\ \emph{does not} -% require |\end{macrocode}| to be preceded ^^A( -% with any particular number of any char :-)\,. -% \changes{v0.98b}{06/09/07}{To \env{macrocode›[*›]} default -% definitions \cs{QueerEOL} added} \newenvironment*{macrocode*}{%\label{macrocode*} \if@codeskipput\else\par\addvspace\CodeTopsep\@codeskipputgtrue\fi \QueerEOL}%^^A\docstrips {\par\addvspace\CodeTopsep\CodeEscapeChar\\} % Let's remind that the starred version makes | | -% visible, which is the default in \pk{gmdoc} outside -% \env{macrocode}. -% -% So we should make the spaces \emph{invisible} for the unstarred -% version. \newenvironment*{macrocode}{%\label{macrocode} \if@codeskipput\else\par\addvspace\CodeTopsep\@codeskipputgtrue\fi \QueerEOL}% \changes{v0.99l}{2008/08/06}{removed \cs{CodeSpacesBlank}} {\par\addvspace\CodeTopsep\CodeEscapeChar\\} -% Note that at the end of both the above environments the |\|'s -% r\ocircum le -% as the code escape char is restored. This is crafted for the -% |\SpecialEscapechar| macro's compatibility: this macro influences -% only the first \env{macrocode} environment. The situation that the -% user wants some queer escape char in general and in a~particular -% \env{macrocode} yet another seems to me ``unm\oumlaut glich, -% Prinzessin''\footnote{Richard Strauss after Oscar Wilde, ^^B -% \textit{Salome}.}. -% -% \stanza -% Since the first \file{.dtx} I~tried to compile after the first -% published version of \gmdoc\ uses a~lot of commented out code in -% \env{macrocode}s, it seems to me necessary to add a~possibility to -% typeset \env{macrocode}s as if they were a~kind of \env{verbatim}, -% that is to leave the code layer and narration layer philosophy. -% -%\Define*{oldmc} \let\oldmc\macrocode \let\endoldmc\endmacrocode -%\Define*{oldmc*} \n@melet{oldmc*}{macrocode*} \n@melet{endoldmc*}{endmacrocode*} -% Now we arm \env{oldmc} and \env{olmc*} with -% the macro looking for |% \end|\arg{envir name}. \addtomacro\oldmc{\@oldmacrocode@launch}% \@xa\addtomacro\csname oldmc*\endcsname{% \@oldmacrocode@launch} -% \DefIndex\@oldmacrocode@launch \def\@oldmacrocode@launch{% \emptify\gmd@textEOL% to disable it in |\gmd@docstripdirective| % launched within the code. @@ -5420,19 +2440,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@oldmacrocode} \foone{\catcode`*11 } -{\def\gm@xistar{*}} +{\def\gmu@xistar{*}} \def\gmd@currenvxistar#1*#2\relax{% - \edef\@currenvir{#1\if*#2\gm@xistar\fi}} -% The trick is that |#2| may be either |*|\catother\ or empty. If it's -% |*|, the test is satisfied and |\if›…\fi| expands to -% |\gm@xistar|. If |#2| is empty, the test is also satisfied since -% |\gm@xistar| expands to |*| but there's nothing to expand to. So, if -% the environment's name ends with |*|\catother, it'll be substituted -% with |*|\catletter or else nothing will be added. (Note that a~|*| -% not at the end of env.\ name would cause a~disaster.) - -%^^A~ \Define\@oldmacrocode + \edef\@currenvir{#1\if*#2\gmu@xistar\fi}} + \foone{% \catcode`[=1 \catcode`]=2 \catcode`\{=\active \@makeother\} @@ -5461,41 +2473,27 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmd@mchook}% see line \ref{gmd@mchook} \def\OldMacrocodes{%% \changes{v0.99m}{2008/08/10}{renamed from - %% \cs{VerbMacrocodes}} + %% \cs{VerbMacrocodes}} \let\macrocode\oldmc \n@melet{macrocode*}{oldmc*}} - -% To handle \ds\ directives in the code (in the old macrocodes -% case that is). - -% \begin{oldmc} \foone{\catcode`\%\active} {\def\docstrips@percent{\catcode`\%\active \let%\gmd@codecheckifds}} -% \end{oldmc}\ -% The point is, the active |%| will be expanded when just after it is -% the |\gmd@charbychar| cs token and next is some char, the |^^B| code -% delimiter at least. So, if that char is |<|, we wish to launch -% \ds\ directive typesetting. (Thanks to |\ttverbatim| all the |<| -% are `other'.) \def\gmd@codecheckifds#1#2{% note that |#1| is just to gobble % \inverb|\gmd@charbychar| token. -% ^^A \typeout{code if ds \on@line}% - \if@dsdir\@dsdirgfalse - \if\@nx<\@nx#2\afterfifi\gmd@docstripdirective - \else\afterfifi{\xiipercent#1#2}% - \fi +\typeout{@@@@@ codecheckifds hash 1: »\unexpanded{#1}«, 2: »\unexpanded{#2}«}% + \ifnum \if@dsdir 1\else 0\fi\ifgmd@dsVerb 1\fi>\z@ + \afterfi{% + \gmd@dsChecker{% + \if\@nx<\@nx#2\afterfi\gmd@docstripdirective + \else\afterfi{\xiipercent#1#2}% + \fi}% of the checker's arg + }% of |\afterfi| \else\afterfi{\xiipercent#1#2}% \fi} -% -% \begin{environment}{macro} -% Almost the same we do with the \env{macro›[*›]} environments, stating -% only their argument to be processed as the `def' entry. Of course, -% we should re|\catcode| it first. -% \DefIndex*{\macro} \newenvironment{macro}{%\label{macro} \@tempskipa=\MacroTopsep \if@codeskipput\advance\@tempskipa by-\CodeTopsep\fi @@ -5505,7 +2503,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % argument. (We'll use the |\macro| macro also in the environment % for describing and defining environments.) \gmd@ifonetoken\Hybrid@DefMacro\Hybrid@DefEnvir}% -% \DefIndex*\endmacro {\par\addvspace\MacroTopsep\@codeskipputgtrue} % It came out that the \docfm's author(s) give the \env{macro} % environment also starred versions of commands as argument. It's \acro{OK} @@ -5514,59 +2511,20 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % However, in \pk{doc.dtx} occur \env{macro}s that mark % \emph{implicit} definitions i.e., such that the defined \CS is not % scanned in the subsequent code. -% -% \begin{macro*}{macro*} -% And for those who want to to use this environment -% for marking implicit definitions, define the star -% version: \@namedef{macro*}{\let\gmd@ifonetoken\@secondoftwo\macro} -% \DefIndex*\endmacro* \@xa\let\csname endmacro*\endcsname\endmacro -% Note that \env{macro} and \env{macro*} have the same effect for -% more-than-one-token arguments thanks to |\gmd@ifonetoken|'s meaning -% inside unstarred \env{macro} (it checks whether the argument is -% one-token and if it isn't, |\gmd@ifonetoken| switches execution to -% `other sequence' path). -% -% The two environments behave different only with a~one-token -% argument: \env{macro} postpones indexing it till the first scanned -% occurrence while \env{macro*} till the first code line met. -% \end{macro*} -% \end{environment} -% -% \stanza -% Now, let's complete the details. -% First define an |\if|-like macro that turns true when the string -% given to it consists of just one token (or one |{|\<text>|}|, to -% tell the whole truth). -\def\gmd@ifsingle#1#2\@@nil{% +\def\gmd@ifsingle#1#2\@nil{% \def\gmu@tempa{#2}% \ifx\gmu@tempa\@empty} -% Note it expands to an open |\if›…| test (unbalanced with |\fi|) so it -% has to be used as all the |\if|s, with optional |\else| and -% obligatory |\fi|. And cannot be used in the possibly skipped -% branches of other |\if›…|s (then it would result with `extra -% |\fi|/extra |\else|' errors). But the below usage is safe since both -% |\gmd@ifsingle| and its |\else| and |\fi| are hidden in a~macro -% (that will not be |\expandafter|ed). -% -% Note also that giving |\gmd@ifsingle| an |\if›…| or so as the first -% token of the argument will not confuse \TeX\ since the first token -% is just gobbled. The possibility of occurrence of |\if›…| or so as -% a~not-first token seems to be negligible. \def\gmd@ifonetoken#1#2#3{% \def\gmu@tempb{#3}% We hide |#3| from \TeX\ in case it's |\if›…| or % so. \inverb|\gmu@tempa| is used in \inverb|\gmd@ifsingle|. \ilrr - \gmd@ifsingle#3\@@nil + \gmd@ifsingle#3\@nil \afterfi{\@xa#1\gmu@tempb}% \else \edef\gmu@tempa{\@xa\string\gmu@tempb}% \afterfi{\@xa#2\@xa{\gmu@tempa}}% \fi} -% Now, define the mysterious |\Hybrid@DefMacro| and |\Hybrid@DefEnvir| -% macros. They mark their argument with a~certain subtlety: they put -% it in a~marginpar at the point where they are and postpone indexing -% it till the first scanned occurrence or just the first code line met. \long\def\Hybrid@DefMacro#1{% \Code@DefIndex{#1}% this macro closes the group opened by |\macro|. \Text@MarginizeNext{*{#1}}} @@ -5578,11 +2536,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \long\def\Text@MarginizeNext#1{% \gmd@evpaddonce{\Text@Marginize#1\ignorespaces}} -%^^A~\strut from before Text@Marginize deleted as unnecessary in everypar. -% The following macro adds its argument to |\everypar| using an auxiliary -% macro to wrap the stuff in. The auxiliary macro has -% a~self-destructor built in so it |\relax|es itself after first use. \long\def\gmd@evpaddonce#1{% \global\advance\gmd@oncenum\@ne \@xa\long\@xa\edef% \CodeUsgIndex*{NeuroOncer} @@ -5599,39 +2553,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} } \newcount\gmd@oncenum -%^^A % We store the number uniquifying the auxiliary -%^^A % macro in a~macro to save count registers (cf.\ \pk{gmutils} -%^^A % sec.\ \gmiflink{To Save Precious Count Registers}). - -% \begin{environment}{environment} -% Wrapping a~description and definition of an environment in -% a~\env{macro} environment would look inappropriate (`zgrzyta\l o by' -% in Polish) although there's no \TeX nical obstacle to do -% so. Therefore we define the \env{environment}, because of \ae^^B -% sthetic and psychological reasons. + \@xa\let\@xa\environment\csname macro*\endcsname \@xa\let\@xa\endenvironment\csname endmacro*\endcsname -% \end{environment} -% - - -%\subdivision[Index exclude list]{\gmhypertarget{Index exclude list}} -% We want some \CSs not to be indexed, e.g., the \LaTeX\ -% internals and \TeX\ primitives. -% -% \docfm\ takes |\index@excludelist| to be a~|\toks| register to store -% the list of expelled \CSs. Here we'll deal another way. For each \CS -% to be excluded we'll make (|\let|, to be precise) a~control sequence -% and then we'll be checking if it's undefined (|\ifx|-equivalent to -% |\relax|).\footnote{This idea comes from Marcin Woli\nacute ski.} -% -\def\DoNotIndex{\bgroup\MakePrivateLetters\DoNot@Index} -% \changes{v0.97}{06/09/04}{\cs{MakePrivateLetters} added} -% \changes{v0.98}{06/09/05}{Removed since it had not worked. The -% macros in the argument should be separated with commas. I~understood -% why it didn't work: because 't was inside a~command. So I~put it back} -% \changes{v0.98d}{06/9/11}{Unmade \cs{global}} +\def\DoNotIndex{\bgroup\MakePrivateLetters\DoNot@Index} \long\def\DoNot@Index#1{\egroup% we close the group, \let\gmd@iedir\gmd@justadot% we declare the direction of the \<?>cluding @@ -5639,7 +2565,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % exclusions easily later.\ilrr \dont@index#1.} -% \DefIndex\dont@index \long\def\dont@index#1{% \def\gmu@tempa{\@nx#1}% My \TeX\ Guru's trick to deal with |\fi| % and such, i.e., to hide from \TeX\ when it is processing a~test's @@ -5663,15 +2588,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \fi} -%^^A( -% Let's now give the exclude list copied \texttilde verbatim ;-) from -% \pk{doc.dtx}. I~give it in the code layer because I~suppose one will -% document not \LaTeX\ source but normal packages. -% -% \begin{CodeSpacesSmall} -% \DoNotIndex\DoNotIndex \Define\DefaultIndexExclusions \DoNotIndex\{ \DoNotIndex\}% \label{DNIbraces}the index entries of -% these two \CSs would be rejected by MakeIndex anyway. \begin{MakePrivateLetters}% Yes, |\DoNotIndex| does % |\MakePrivateLetters| on its own but No, it won't have any effect @@ -5689,7 +2606,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \DoNotIndex{\| \~ \ \active \advance \aftergroup \begingroup \bgroup}% \DoNotIndex{\mathcal \csname \def \documentstyle \dospecials \edef}% \DoNotIndex{\egroup}% - \DoNotIndex{\else \endcsname \endgroup \endinput \endtrivlist}% + \DoNotIndex{\else \endcsname \endgroup ⵢendinput \endtrivlist}% \DoNotIndex{\expandafter \fi \fnsymbol \futurelet \gdef \global}% \DoNotIndex{\hbox \hss \if \if@inlabel \if@tempswa \if@twocolumn}% \DoNotIndex{\ifcase}% @@ -5740,7 +2657,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % common definitions, such as |\›(new⁄|provide›)command| and % |\›(e⁄|g⁄|x›)def|s, as the most common, in my opinion excluded should % be.^^A\) - % + % % \stanza % And some my exclusions: \DoNotIndex{\@@input \@auxout \@currentlabel \@dblarg}% @@ -5780,7 +2697,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \DoNotIndex{\@sverb \@sxverbatim}% \DoNotIndex{\@tempcnta \@tempcntb \@tempskipa \@tempskipb}%\\ % I~think the layout parameters even the kernel, should not be - % excluded: \inverb|\@topsep| \inverb|\@topsepadd|^^B + % excluded: \inverb|\@topsep| \inverb|\@topsepadd|^^B % \ \inverb|\abovedisplayskip| \inverb|\clubpenalty| etc. \DoNotIndex{\@writeckpt}% \DoNotIndex{\bfseries \chapter \part \section \subsection}% @@ -5809,58 +2726,27 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % I~put all the expellings into a~macro because I~want them % to be optional. \end{MakePrivateLetters} -% \end{CodeSpacesSmall} \ResumeAllDefining -% And we execute it due to the (lack of) counter-corresponding option: \if@indexallmacros\else \DefaultIndexExclusions \fi - -% If we expelled so many \CSs, someone may like it in general but -% he/she may need one or two expelled to be indexed back. So -% \def\DoIndex{\bgroup\MakePrivateLetters\Do@Index} -% \changes{v0.97}{06/09/04}{\cs{MakePrivateLetters} added.} -% \changes{v0.98}{06/09/05}{\cs{MakePrivateLetters} removed since it -% hadn't worked. I~understood why it didn't work: because -% 't was inside a~command and I~put it back} -% \changes{v0.98d}{06/9/11}{Unmade \cs{global}} \long\def\Do@Index#1{\egroup\@relaxen\gmd@iedir\dont@index#1.}% note -% we only redefine an auxiliary \CS and launch also |\dont@index| inner -% macro. - -% And if a~user wants here make default exclusions and there do not -% make them, \heshe\ may use the |\DefaultIndexExclusions| declaration -% \himher self. This declaration \acro{OCSR}, but anyway let's provide the -% counterpart. It \acro{OCSR}, too. -% + \def\UndoDefaultIndexExclusions{% - \StoreMacro\DoNotIndex + \Store@Macro\DoNotIndex % ^^A\dont@index \let\DoNotIndex\DoIndex % ^^A \let\dont@index=\do@index \DefaultIndexExclusions % ^^A \RestoreMacro\dont@index - \RestoreMacro\DoNotIndex} -% \changes{v0.98d}{06/9/11}{Unmade \cs{global}} - -% -% -% \subdivision{Index parameters} -% -% \begin{quotation}The |\IndexPrologue| macro is used to place a short -% message into the document above the index. It is implemented by -% redefining |\index@prologue|, a macro which holds the default -% text. We'd better make it a |\long| macro to allow |\par| commands -% in its argument.\end{quotation} + \Restore@Macro\DoNotIndex} + \long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack} -% \label{IndexPrologue} \def\indexdiv{\@ifundefined{chapter}{\section*}{\chapter*}} -% \changes{v0.98a}{06/09/06}{modified to contain the star so that -% it may be redefined for tests.} \@ifundefined{index@prologue} {\def\index@prologue{\indexdiv{Index}% \markboth{Index}{Index}% @@ -5869,49 +2755,31 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} corresponding entry is described; numbers underlined refer to the \if@pageindex\else code line of the \fi definition; numbers in roman refer to the \if@pageindex pages\else code lines \fi where - the entry is used. - \if@pageindex\else - \ifx\HLPrefix\@empty + the entry is used. + \if@pageindex\else + \ifx\HLPrefix\@empty The numbers preceded with `p.' are page numbers. \else The numbers with no prefix are page numbers. \fi\fi \ifx\IndexLinksBlack\relax\else All the numbers are hyperlinks. % ^^A, they are made black just to let Adobe Reader work - % ^^A~faster. + % ^^A~faster. \fi \gmd@dip@hook% this hook is intended to let a~user add % something without redefining the entire prologue, see below. }}{} -% During the preparation of this package for publishing I~needed -% only to add something at the end of the default index prologue. So -% \DefIndex\gmd@dip@hook \@emptify\gmd@dip@hook \long\def\AtDIPrologue#1{\g@addto@macro\gmd@dip@hook{#1}} -% \changes{v0.98c}{06/9/8}{added because of need} -% Now we can rollback the |\ampulexdef| made to |\verb|: \AtDIPrologue{%\label{verb:ampulex:index} \ampulexdef\verb\ttverbatim\verbatim@specials {\ttverbatim\verbatim@specials}} - - -% The Author(s) of \docfm\ assume \pk{multicol} is known not to -% everybody. My assumption is the other so \RequirePackage{multicol} -% \begin{quotation}If \pk{multicol} is in use, when the index is -% started we compute -% the remaining space on the current page; if it is greater than -% |\IndexMin|, the first part of the index will then be placed in the -% available space. The number of columns set is controlled by the -% counter |\c@IndexColumns| which can be changed with a -% |\setcounter| declaration.\end{quotation} \newdimen\IndexMin \IndexMin = 133pt\relax% originally it was set -% 80\,pt, but with my default prologue there's at least 4.7\,cm needed -% to place the prologue and some index entries on the same page. \newcount\c@IndexColumns \c@IndexColumns = 3 \renewenvironment{theindex} {\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]% @@ -5920,7 +2788,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\end{multicols}} \def\IndexLinksBlack{\hypersetup{linkcolor=black}}% To make Adobe -% Reader work faster. \@ifundefined{IndexParms} {\def\IndexParms{% @@ -5953,75 +2820,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@ifQueerEOL{\StraightEOL\printindex\QueerEOL}% {\printindex}} -% Remember that if you want to change not all the parameters, you -% don't have to redefine the entire |\IndexParms| macro but you may -% use a~very nice \LaTeX\ command |\g@addto@macro| (it has |\global| -% effect, also with an apeless name (|\gaddtomacro|) provided by -% \pk{gmutils}. (It adds its second argument at the end of definition -% of its first argument provided the first argument is a~no-argument -% macro.) Moreover, \pk{gmutils} provides also -% |\addtomacro| that has the same effect except it's not |\global|. -% -% -% -% \subdivision{The \ds\ directives} -% -%^^A \StraightEOL -%^^A \iffalse ^^A~ this passage is obsoleted -%^^A -%^^A This passage is obsoleted on 2006/11/30. -%^^A -%^^A In the \gmdoc\ thinking, the \ds\ directives belong to the -%^^A narration layer since they all begin with |%|. For now I~don't -%^^A have a~more minimal idea than to define a~pair of macros the first of -%^^A which would |\active|ate the |<| and the other, assigned to the -%^^A active |<|, would do the work and re`other' the |<| back. -%^^A -%^^A We provide two versions of the sergeant-activating macro: the first -%^^A makes only the first subsequent sergeant typeset a~\ds\ -%^^A directive (and the previous meaning of the |<| will be restored, the -%^^A latter doesn't restore the previous meaning of |<| after (by) the -%^^A first occurrence and the latter obeys usual scoping rules while the -%^^A scoping rules of the first (|\docstrip|) are more strict: the scope -%^^A is delimited by the first occurrence of the subject~|<|. -%^^A -%^^A Let us remember that, just as all the control sequences except -%^^A |\relax|, you can use |\docstrips| as an environment, i.e., in the -%^^A |\begin{docstrips}|\dots |\end{docstrips}| syntax. And, that -%^^A \env{macrocode} environment declares it. -%^^A \bgroup\catcode`\<=\active -%^^A \firstofone{\egroup -%^^A % \stanza -%^^A \newcommand*\docstrip{% -%^^A \gmd@storesearg -%^^A \catcode`\<=\active -%^^A \gmd@setdocstrips -%^^A \let\gmd@docstripshook=\gmd@restoresearg}% -%^^A % \stanza -%^^A \newcommand*\docstrips{% -%^^A \catcode`\<=\active -%^^A \gmd@setdocstrips -%^^A \@emptify\gmd@docstripshook}% -%^^A % \stanza -%^^A \def\gmd@setdocstrips{% -%^^A \def<{\ifmmode\sgtleftxii\else\afterfi\gmd@docstripdirective\fi}} -%^^A %\stanza -%^^A \def\gmd@storesearg{% -%^^A \edef\gmd@SeargantCat{\the\catcode`\<}% -%^^A \ifnum\gmd@SeargantCat=\active -%^^A \let\gmd@SeargantMng=<% -%^^A \fi} -%^^A % \stanza -%^^A \def\gmd@restoresearg{% -%^^A \catcode`\<=\gmd@SeargantCat\relax -%^^A \ifnum\gmd@SeargantCat=\active -%^^A \let<=\gmd@SeargantMng -%^^A \fi}% -%^^A % \stanza -%^^A }% of |\active| |<|'s |\firstofone| -%^^A -%^^A \fi ^^A~of the obsoletion iffalse -%^^A \QueerEOL \foone{\@makeother\<\@makeother\> \glet\sgtleftxii=<} @@ -6047,7 +2845,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % close the group for changed |\catcode|s; the directive's text has its % |\catcode|s fixed. Then we put the directive's text wrapped with the % formatting macro into one macro in order to give just one token - % the \gmdoc's \TeX\ code scanner. + % the \gmdoc's \TeX\ code scanner. % ^^A But before we launch the \TeX\ code % ^^A scanning with all the b\&w, we virtually restore the meaning of % ^^A further |<|s to let them start further \ds\ directives, @@ -6058,11 +2856,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % line end. This macro opens the verbatim group and launches the % char-by-char scanner. That is this scanner because of what we % encapsulated the directive's text with the formatting into one - % macro: to let it pass the scanner. - % + % macro: to let it pass the scanner. + % % That's why in the `old' macrocodes case the active |%| closes the % group before launching |\gmd@docstripdirective|. - % + % % \stanza % The `verbatim' directive macro works very similarly. } @@ -6070,67 +2868,35 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \foone{\@makeother\<\@makeother\> \glet\sgtleftxii=< \catcode`\^^M=\active}% -{ +{% \def\gmd@docstripverb<#1^^M{% \endgroup% \def\gmd@modulehashone{% \ModuleVerb{#1}\@afternarrgfalse\@aftercodegtrue% \@codeskipputgfalse}% - \gmd@docstripshook% + \xdef\gmd@dsVerbDelim{\detokenize{#1}}% \gmd@textEOL\gmd@modulehashone^^M}% } -% (\texttilde Verbatim ;-) from \docfm:) -\providecommand*\Module[1]{{\mod@math@codes$\langle\mathsf{#1}\rangle$}} +\edef\gmd@dsVerbDelim{\detokenize{#@$$$$#_()(_)*981-71092519-40^^A^^B}} + + +\pdef\dsVerbClose{% + \global\gmd@dsVerbtrue} -\providecommand*\ModuleVerb[1]{{\mod@math@codes$\langle\langle\mathsf{#1}$}} +\providecommand*\Module[1]{{% + \mod@math@codes$\langle\mathsf{#1}\rangle$}} + +\providecommand*\ModuleVerb[1]{{% + \mod@math@codes$\langle\langle\mathsf{#1}$}} + +\def\ModuleVerbClose#1{{% + \xiipercent + \mod@math@codes$\mathsf{#1}$ + {\normalfont[\ds\ verbatim closing dir.]}}} \def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026 } -% \subdivision{The changes history} -% -% The contents of this section was copied \texttilde verbatim from the -% \docfm's documentation, with only smallest necessary changes. Then -% my additions were added \balsmiley(( :-))\,. -% -% \begin{quotation}To provide a change history log, the |\changes| -% command has been -% introduced. This takes [one optional and] three [mandatory] -% arguments, respectively, [the macro that'll become the entry's -% second level,] the version -% number of the file, the date of the change, and some detail -% regarding what change has been made [i.e., the description of the -% change]. The [second] of these arguments -% is otherwise ignored, but the others are written out and may be -% used to generate a history of changes, to be printed at the end of -% the document. [\dots\ I~omit an obsolete remark about then-older -% MakeIndex's versions.] -% -% The output of the |\changes| command goes into the -% \<Glossary_File> and therefore uses the normal |\glossaryentry| -% commands. Thus MakeIndex or a~similar program can be used to -% process the output into a sorted ``glossary''. The |\changes| -% command commences by taking the usual measures to hide its -% spacing, and then redefines |\protect| for use within the argument -% of the generated |\indexentry| command. We re-code nearly all -% chars found in |\@sanitize| to letter since the use of special -% package which make some characters active might upset the -% |\changes| command when writing its entries to the file. However -% we have to leave |%| as -% comment and | | as \<space> otherwise chaos will happen. And, of -% course the |\| should be available as escape character.\end{quotation} -% -% We put the definition inside a~macro that will be -% executed by (the first use of) |\RecordChanges|. And we provide -% the default definition of |\changes| as a~macro just gobbling its -% arguments. We do this to provide no changes' writing out if -% |\RecordChanges| is not used. -% -% -% \changes[\changes]{v0.98e}{06/09/23}{definition put into a~macro that shall -% launch it when \cs{RecordChanges} is executed and the default -% defining it as a~gobbling macro} -% \def\gmd@DefineChanges{% \outer\long\def\changes{% \gmd@changes@init @@ -6139,6 +2905,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\gmd@changes@init{% \@bsphack\begingroup\@sanitize \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore +\catcode`\^=7 \MakePrivateLetters \StraightEOL \MakeGlossaryControls} @@ -6157,10 +2924,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % |!| and |>|, the `encap' char remains untouched. I~decided to % preserve the \docfm's settings for the compatibility. - \newcommand\changes@[4][\generalname]{% -% \changes[\changes]{v0.97}{06/09/04}{The optional pseudo-argument -% added intended to be the macro-entry.} \if@RecentChange{#3}% if the date is later than the one stored in % \cs{c@Chang\+es\+Start\+Date}, \@tempswafalse @@ -6173,10 +2937,10 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \edef\gmu@tempb{% it's a~bug fix: while typesetting traditional % \file{.dtx}es, \inverb|\last@defmark| came out with \inverb|\| at the % beginning (which resulted with \inverb|\\|\<name> in the change - % log) but while typesetting the `new' way, it occurred + % log) but while typesetting the `new' way, it occurred % without the bslash. So we gobble the bslash if it's % present and two lines below we handle the exception of - % \inverb|\last@defmark|\equals|{\}| (what would happen if + % \inverb|\last@defmark|\equals|{\}| (what would happen if % a~definition of \inverb|\\| was marked in new way \gmdoc ing).%^^A] \if\bslash\last@defmark\else\last@defmark\fi}% \ifx\last@defmark\bslash\let\gmu@tempb\last@defmark\fi% @@ -6189,7 +2953,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@tempswatrue {\escapechar\m@ne \xdef\gmu@tempb{\string#1}}% - \if\bslash\@xa\@firstofmany\string#1\relax\@@nil% we check + \if\bslash\@xa\@firstofmany\string#1\relax\@nil% we check % whether \inverb|#1| is a~\CS\dots\ilrr \def\gmd@glossCStest{1}%\dots\ and tell the glossary if so. \fi @@ -6211,7 +2975,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \actualchar\bslash verb*% \if\verbatimchar\gmu@tempb$\else\verbatimchar\fi \if1\gmd@glossCStest\quotechar\bslash\fi \gmu@tempb - \if\verbatimchar\gmu@tempb$\else\verbatimchar\fi + \if\verbatimchar\gmu@tempb$\else\verbatimchar\fi \else \space\actualchar\generalname \fi @@ -6224,51 +2988,28 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} %^^A\gmd@countlines{#4}% \endgroup\@esphack} -% Let's initialise |\last@defmark| and |\GeneralName|. \@relaxen\last@defmark \@emptify\GeneralName \def\ChangesGeneral{\grelaxen\last@defmark}% If automatic detection of -% definitions is on, the default entry of |\changes| is the meaning of -% |\last@defmark|, the last detected definiendum that is. The -% declaration defined here serves to start a~scope of `general' -% \cs{changes}' entries. \AtBegInput{\ChangesGeneral} -% Let's explain |\if@RecentChange|. We wish to check whether the -% change's date is later than date declared (if any limit date -% \emph{was} declared). First of all, let's establish a~counter to store -% the declared date. The untouched counters are equal 0 so if no date -% is declared there'll be no problem. The date will have the -% \<YYYYMMDD> shape both to be easily compared and readable. \newcount\c@ChangesStartDate - \def\if@RecentChange#1{% - \gmd@setChDate#1\@@nil\@tempcnta + \gmd@setChDate#1\@nil\@tempcnta \ifnum\@tempcnta>\c@ChangesStartDate} -\def\gmd@setChDate#1/#2/#3\@@nil#4{% the last parameter will be a~|\count| +\def\gmd@setChDate#1/#2/#3\@nil#4{% the last parameter will be a~|\count| % register. - #4=#1\relax - \multiply#4 by\@M - \count8=#2\relax% I~know it's a~bit messy not to check whether the - % |#4| |\count| is |\count8| but I~know this macro will only be used - % with |\count0 | \nlpercent(\cs{@\+te\+m\+p\+cn\+ta}) and some - % higher (not a~scratch) one. - \multiply\count8 by100 % - \advance#4 by\count8 \count8=\z@ - \advance#4 by#3\relax} - -% Having the test defined, let's define the command setting the date -% counter. |#1| is to be the version and |#2| the date -% \cs[]{\{\<year>/\<month>/\<day>\}}. + #4=\numexpr#1*\@M+#2*100+#3\relax + %\CH{2010/06/23 changed from \TeX's arithmetic to \cmd\numexpr} +} + \def\ChangesStart#1#2{% -% \changes{v0.98e}{06/09/23}{\cs{string}s added before the sergeants -% in the message with account of \cs{docstrip(s)}} - \gmd@setChDate#2\@@nil\c@ChangesStartDate + \gmd@setChDate#2\@nil\c@ChangesStartDate \typeout{^^JPackage gmdoc info: ^^JChanges' start date #1 memorised as \string<\the\c@ChangesStartDate\string> \on@line.^^J} \advance\c@ChangesStartDate\m@ne% we shall show the changes \emph{at ^^B @@ -6285,150 +3026,37 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} #1 \if\relax#1\relax #2\else(#2)\fi\space are not shown.}}% \gmu@tempa \fi} -% (Explanation to line \ref{TeXVer0}.) -% \gmhypertarget[personalchanges]{My} \TeX\ Guru has remarked that the -% change history tool should be used for documenting the changes that -% may be significant for the users not only for the author and talking -% of what may be significant to the user, no changes should be hidden -% since the first published version. However, the changes' start date -% may be used to provide hiding the author's `personal' notes: \heshe\ -% should only date the `public' changes with the four digit year and -% the `personal' ones with two digit year and set -% |\ChangesStart{}{1000/0/0}| or so. -% -% In line \ref{TeXVer0} I~establish a~test value that corresponds to -% a~date earlier than any \TeX\ stuff and is not too small (early) to -% ensure that hiding the two digit year changes shall not be mentioned -% in the changes prologue. -% -% \changes{v0.98d}{2006/9/15}{An entry to show the change history -% works: watch and admire. Some sixty \cs{changes} entries irrelevant -% for the users-other-than-myself are hidden due to the trick -% described on -% p.\protect\,\protect\pageref{personalchanges}.% -% \protect\StoreMacro\protect\hyperpage -% \protect\def\protect\hyperpage#1{\protect\RestoreMacro\protect\hyperpage}% -% \protect\gobble} -% \stanza -% \begin{quotation}The entries [of a~given version number] are sorted -% for convenience by the name of [the macro explicitly specified as -% the first argument or] the most recently introduced macro name -% (i.e., that in the most recent |\begin{macro}| command [or -% |\Define|]). We therefore provide [|\last@defmark|] to -% record that argument, and provide a default definition in case -% |\changes| is used outside a \env{macro} environment. (This is a -% wicked hack to get such entries at the beginning of the sorted -% list! It works providing no macro names start with |!| or |"|.) -% -% This macro holds the string placed before changes entries on -% top-level.\end{quotation} \def\generalname{General} -% \changes[\chschange]{v0.98a}{06/09/06}{added.} -% -% \stanza -% \begin{quotation}To cause the changes to be written (to a \pk{.glo}) -% file, we define |\RecordChanges| -% to invoke \LaTeX's usual |\makeglossary| command.\end{quotation} -% -% I~add to it also the |\write|ing definition of the |\changes| macro -% to ensure no changes are written out without |\RecordChanges|. -% \def\RecordChanges{\makeglossary\gmd@DefineChanges \@relaxen\RecordChanges} -% \changes{v0.98c}{06/09/08}{made self-\cs{relax}ing} -% \changes{v0.98e}{06/09/23}{made it defining \cs{changes}} -% \begin{quotation}The remaining macros are all analogues of those used -% for the \env{theindex} environment. -% When the glossary is started we compute the space which remains at -% the bottom of the current page; if this is greater than |\GlossaryMin| then the -% first part of the glossary will be placed in the available space. The number of -% columns set [is] controlled by the counter |\c@GlossaryColumns| which can be -% changed with a |\setcounter| declaration.\end{quotation} -% \begin{CodeSpacesBlank} \newdimen\GlossaryMin \GlossaryMin = 80pt -% \DefIndex*\c@GlossaryColumns \newcount\c@GlossaryColumns \c@GlossaryColumns = 2 -% \end{CodeSpacesBlank} -%\begin{quotation}The environment \env{theglossary} is defined in the -%same manner as the \env{theindex} -% environment.\end{quotation} -% \newenvironment{theglossary}{% -% \changes{v0.99m}{2008/08/10}{added \cs{IndexLinksBlack}} \begin{multicols}\c@GlossaryColumns [\glossary@prologue][\GlossaryMin]% \GlossaryParms \IndexLinksBlack \let\item\@idxitem \ignorespaces}% {\end{multicols}} -% Here is the MakeIndex style definition: -% \index{gmglo.ist@\file{gmglo.ist}} -%^^A \begin{docstrips} -%</package> -%<+gmglo>preamble -%<+gmglo>"\n \\begin{theglossary} \n -%<+gmglo>\\makeatletter\n" -%<+gmglo>postamble -%<+gmglo>"\n\n \\end{theglossary}\n" -%<+gmglo>keyword "\\glossaryentry" -%<+gmglo>actual '=' -%<+gmglo>quote '!' -%<+gmglo>level '>' -%<*package> -%^^A \end{docstrips} -% The MakeIndex shell command for the glossary should look as -% follows: -% \[|makeindex -r -s gmglo.ist -o |\<myfile>|.gls |\<myfile>|.glo|\] -% ^^B -% ^^B makeindex -r -s gmglo.ist -o <myfile>.gls <myfile>.glo -% ^^B -% where |-r| commands MakeIndex not to make implicit page ranges, -% |-s| commands MakeIndex to use the style stated next not the -% default settings and the |-o| option with the subsequent filename -% defines the name of the output. -% -% \begin{quotation}The |\GlossaryPrologue| macro is used to place -% a~short message above the glossary into the document. It is -% implemented by redefining |\glossary@prologue|, a macro which -% holds the default text. We better make it a long macro to allow -% |\par| commands in its argument.\end{quotation} -% \long\def\GlossaryPrologue#1{\@bsphack \def\glossary@prologue{#1}% \@esphack} -% \begin{quotation}Now we test whether the default is already defined -% by another package file. If not we define it.\end{quotation} -% \changes{v0.98a}{06/09/06}{a~bug fixed: \cs{filediv} replaced with -% \cs{indexdiv} in the default prologue.} \@ifundefined{glossary@prologue} {\def\glossary@prologue{\indexdiv{{Change History}}% \markboth{{Change History}}{{Change History}}% }}{} -%\begin{quotation}Unless the user specifies otherwise, we set the -%change history using the same parameters as for the index.\end{quotation} -% \Define\GlossaryParms \AtBeginDocument{% \@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms}{}} -%\begin{quotation} -% To read in and print the sorted change history, just put the -% |\PrintChanges| command as the last (commented-out, and thus -% executed during the documentation pass through the file) command in -% your package file. Alternatively, this command may form one of the -% arguments of the |\StopEventually| command, although a change history -% is probably not required if only the description is being printed. -% The command assumes that MakeIndex or some other program has -% processed the \pk{.glo} file to generate a sorted \pk{.gls} -% file.\end{quotation} \Define\PrintChanges \def\PrintChanges{% to avoid a~disaster among queer EOLs: \@ifQueerEOL {\StraightEOL\@input@{\jobname.gls}\QueerEOL}% {\@input@{\jobname.gls}}% \g@emptify\PrintChanges} -\pdef\toCTAN{%\ +\pdef\toCTAN{%\ % \begin{enumargs} % \item \<year/month/day>\textvisiblespace\<version number> % \end{enumargs} @@ -6439,86 +3067,58 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \gmd@toCTAN@} \def\gmd@toCTAN@#1{% - \edef\gmu@tempa{\gmd@chgs@parse#1 \@@nil}% + \edef\gmu@tempa{\gmd@chgs@parse#1 \@nil}% \edef\gmu@tempa{% \unexpanded{\changes@[\generalname]}% {\@xa\@firstofthree\gmu@tempa}% {\@xa\@secondofthree\gmu@tempa}% {put to \acro{CTAN} on \@xa\@secondofthree\gmu@tempa}}% \gmu@tempa} - -% To make writing changes easier, to allow copying the date \& version -% string from the |\ProvidesPackage/Class| optional argument. + \outer\pdef\chgs{\gmd@changes@init\gmd@chgs} -% \chgs{2008/11/30 v0.99s added} -\DeclareCommand\gmd@chgs{o>!m}{% -% \chgs{2010/03/01 v1.0 made \cmd\long\ (consider it a~bug fix)} - %^^A\typeout{@@@@ \unexpanded{#1}::::\unexpanded{#2}}% - \IfValueTF{#1}{% - %^^A\typeout{@@@@ 6198}% +\DeclareCommand\gmd@chgs{% + o % the optional \CS the change refers to + >!m % change's date, version and text +}{% + \IfValueTF{#1}{%% \edef\gmu@tempa{\@nx\changes@[\unexpanded{#1}]% - \@xa\unexpanded\@xa{\gmd@chgs@parse#2\@@nil}}}% + \@xa\unexpanded\@xa{\gmd@chgs@parse#2\@nil}}}% {\edef\gmu@tempa{\@nx\changes@ - \@xa\unexpanded\@xa{\gmd@chgs@parse#2\@@nil}}}% - \gmu@tempa} + \@xa\unexpanded\@xa{\gmd@chgs@parse#2\@nil}}}% + \gmu@tempa}% of |\gmd@chgs| + +\long\def\gmd@chgs@parse#1 #2 #3\@nil{{#2}{#1}{#3}}% + +\outer\pdef\CH{% + \gmd@changes@init\gmd@chgsplus} + +\DeclareCommand\gmd@chgsplus{\SameAs\gmd@chgs}{% + \DCUse\gmd@chgs{#1}{#2}% + \gmd@threeway{#1}#2\@nil +} + +\long\def\gmd@threeway +#1% opt. \CS that |\CH| refers to +#2 % (delimd.\ with a blank) date +#3 % (delimd.\ with a blank) version +#4\@nil % text +{% + \par (#2, #3\IfValueT{#1}{, \texttt{\detokenize\@xa{\string#1}}}:) + #4\scantokens{}% to provide proper line end which'll take care of + % |\par| \&c. +} -\long\def\gmd@chgs@parse#1 #2 #3\@@nil{{#2}{#1}{#3}}% -% \chgs{2010/03/01 v1.0 made \cmd\long\ (consider it a~bug fix)} - - -% -% \subdivision{The checksum} -% -% -% \docfm\ provides a~checksum mechanism that counts the backslashes -% in the scanned code. Let's do almost the same. -% -% At the beginning of the source file you may put the |\CheckSum| -% macro with a~number (in one of \TeX's formats) as its argument and -% \TeX\ with \pk{gmdoc} shall count the number of the \emph{escape ^^B -% chars} in the source file and tell you in the \file{.log} file (and -% on the terminal) -% whether you have typed the right number. If you don't type |\CheckSum|, -% \TeX\ anyway will tell you how much it is. \newcount\check@sum \def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack} \newcounter{CheckSum} -% \label{checksum} \newcommand*\step@checksum{\stepcounter{CheckSum}} -% And we'll use it in the line \ref{checksumUse} (|\stepcounter| is -% |\global|). See also the |\chschange| declaration, -% l.\,\ref{chschange}. -% -% However, the check sum mechanism in \gmdoc\ behaves slightly -% different than in \docfm\ which -% is nicely visible while \pk{gmdoc}ing \docfm: \docfm\ states its -% check sum to be 2171 and our count counts 2126. The mystery lies in -% the fact that \docfm's CheckSum mechanism counts the code's -% backslashes no matter what they mean and the \gmdoc's the escape -% chars so, among others, |\\| at the default settings increases \docfm's -% CheckSum by 2 while the \gmdoc's by 1. (There are 38 occurrences of |\\| -% in \pk{doc.dtx} \env{macrocode}s, I~counted -% myself.)\begin{StraightEOL}\footnote{My opinion is that nowadays -% a~check sum -% is not necessary for checking the completeness of a~file but -% I~like it as a~marker of file development and this more than -% that is its r\ocircum le in \gmdoc.} -% \end{StraightEOL} -% -% -% \begin{quotation}But |\Finale| will be called at the very end of a -% file. This is exactly the point were we want to know if the file -% is uncorrupted. Therefore we also call |\check@checksum| at this -% point.\end{quotation} -% In \pk{gmdoc} we have the |\AtEndInput| hook. \AtEndInput{\check@checksum} -% Based on the lines 723--741 of \pk{doc.dtx}. \def\check@checksum{\relax \ifnum\check@sum=\z@ \edef\gmu@tempa{% why \cs{edef}---see line \ref{wypis sumy} @@ -6553,20 +3153,13 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi \fi \gmu@tempa - \@xa\AtEndDocument\@xa{\gmu@tempa}%\label{wypis sumy} we print + \@xa\AtEndDocument\@xa{\gmu@tempa}%\label{wypis sumy} we print % the checksum notification on the terminal immediately and at end % of \TeX ing not to have to scroll the output far nor search the log. \global\check@sum\z@} \def\gmd@wykrzykniki{! ! ! ! ! ! ! ! ! ! ! !} -% \chgs{2008/12/01 v0.99s added} -% to be able to change it when we don't want \XeTeX\ to finish with -% Code 1 what usually breaks \pk{make}. - -% As I~mentioned above, I~use the check sum mechanism to mark the file -% growth. Therefore I~provide a~macro that produces a~line on the -% terminal to be put somewhere at the -% beginning of the source file's commentary for instance. + \def\gmd@chschangeline{% \xiipercent\space\string\chschange {\@ifundefined{fileversion}{v???}{\fileversion}}% @@ -6578,7 +3171,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {% with two di\-g\-it year in case you use |\ChangesStart|. \the\c@CheckSum}^^J} -% And here the meaning of such a~line is defined: \outer\pdef\chschange{% \ % \begin{enumargs} % \dc m file version, @@ -6606,75 +3198,14 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} }% of |\afterfi|, \fi}% of no value of |#4|, }% of |\chschange@|.\nostanza -% It will make a~`General' entry in the change history unless -% used in some |\Define|'s scope or inside a~\env{macro} -% environment. It's intended to be put -% somewhere at the beginning of the documented file. -% -% -% \changes[\CheckSum]{v0.98a}{06/09/06}{`package gmdoc info' -% statement moved to the end of the checksum messages.} -% \changes[\CheckSum]{v0.98b}{06/09/07}{typing out the -% \cs{chschange} line added} - -% -% -% \subdivision{Macros from \pk{ltxdoc}} -% -% I'm not sure whether this package still remains `minimal' but -% I~liked the macros provided by \pk{ltxdoc.cls} so much\dots -% \stanza -% -% The next page setup declaration is intended to be used -% with the \pk{article}'s default Letter paper size. But since + \newcommand*\ltxPageLayout{% -%\begin{quotation}Increase the text width slightly so that width the standard fonts -% 72 columns of code may appear in a |macrocode| environment.\end{quotation} -% \setlength{\textwidth}{355pt}% -% \begin{quotation}Increase the marginpar width slightly, for long -% command names. And increase the left margin by a similar -% amount.\end{quotation} -% To make these settings independent from the defaults (changed e.g.\ -% in \pk{gmdocc.cls}) we replace the original |\addtolength|s with -% |\setlength|s. -%^^A \addtolength\marginparwidth{30pt}% -%^^A \addtolength\oddsidemargin{20pt}% -%^^A \addtolength\evensidemargin{20pt} \setlength\marginparwidth{95pt}% \setlength\oddsidemargin{82pt}% \setlength\evensidemargin{82pt}} -% %\skiplines -% \def\task#1#2{} -% % What is this for? Probably to turn an obsolete command off. Or maybe -% % a~\acro{TO-DO}? -% % \endskiplines - -%\subdivision{\cs{DocInclude} and the \pk{ltxdoc}-like setup} -% -% Let's provide a~command for including -% multiple files into one document. In the \pk{ltxdoc} class such -% a~command is defined to include files as parts. But we prefer to -% include them as chapters in the classes that provide -% |\chapter|. We'll redefine |\maketitle| so that it make a~chapter or -% a~part heading \emph{unlike} in \pk{ltxdoc} where the file parts -% have their title pages with only the filename and \pk{article}-like titles -% made by |\maketitle|. -% -% But we will also provide a~possibility of typesetting multiple files -% exactly like with the \pk{ltxdoc} class. -% -% \begin{macro}{\DocInclude} -% -% So, define the |\DocInclude| command, that acts -% \begin{quotation}more or less exactly the same as |\include|, but -% uses |\DocInput| on a \pk{dtx} [or \pk{.fdd}] file, not |\input| on -% a \pk{tex} file.\end{quotation} -% Our version will accept also \pk{.sty}, \pk{.cls}, and \pk{.tex} -% files. -% -% \changes{v0.98}{06/09/05}{\cs{@makeother\protect\bslash_} added} + \DeclareCommand\DocInclude{O{}mO{}}{%\ % \begin{enumargs} % \dc o path (with closing slash), will not be printed @@ -6687,19 +3218,19 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % be the path (with the closing \inverb |/|). This is intended not to print % the path in the page footers only the filename.\par % \CodeUsage\HLPrefix - \gdef\HLPrefix{\filesep}% + \gdef\HLPrefix{\filesep}% \gdef\EntryPrefix{\filesep}% we define two rather kernel parameters % to expand to the file marker. The first will bring the information % to one of the default \inverb|\IndexPrologue|'s - % |\if|s. Therefore the + % |\if|s. Therefore the % definition is global. The latter is such for symmetry. \def\GeneralName{#2\actualchar\pk{#2} }% \label{GeneralName} for the % changes' history main level entry. - % + % % Now we check whether we try to include ourselves and if % so---we'll (create and) read an \file{.auxx} file instead of % (the main) \file{.aux} to avoid an infinite recursion of |\input|s. - % + % \edef\gmd@jobname{\jobname}% \edef\gmd@difilename{% we want the filename all `other', just as % in \inverb|\jobname|. @@ -6717,15 +3248,15 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \let\fullcurrentfile\currentfile \@ifnonempty{#3}% {% - \unless\if.\@firstofmany#3\relax\@@nil + \unless\if.\@firstofmany#3\relax\@nil \PackageError{gmdoc}{Optional \xiihash3 of - \string\DocInclude\space - if present has to begin with a dot (.)}% + \string\DocInclude\space + if present has to begin with a dot (.)}{}% \fi \edef\currentfile{#2#3}% \IfFileExists{#1\currentfile}{}% {\PackageError{gmdoc}{\string\DocInclude\space file - \currentfile\space not found}}% + \currentfile\space not found}{}}% }% of if extension given. {% if extension not given: \IfFileExists{#1#2.fdd}{\edef\currentfile{#2.fdd}}{% it's not \pk{.fdd}, @@ -6740,7 +3271,8 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \IfFileExists{#1#2.fd}{\edef\currentfile{#2.fd}}{% so it % must be \pk{.fd} or error. \PackageError{gmdoc}{\string\DocInclude\space file - #1#2.fdd/dtx/sty/cls/tex/fd not found.}}}}}}}% + #1#2.fdd/dtx/sty/cls/tex/fd not found.}{}% + }}}}}}% }% of if no extension given % \changes{v0.98j}{06/10/16}{\pk{.fdd} added in \cs{DocInclude}'s % search for the extension.} @@ -6749,11 +3281,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \ifnum\@auxout=\@partaux \@latexerr{\string\DocInclude\space cannot be nested}\@eha \else \@docinclude{#1}#2#3 \fi}% Why is |#2| delimited with | | not -% braced as we are used to, one may ask. -% \changes[\DocInclude]{v0.97}{06/09/03}{\cs{@docinclude} gets 2 params -% in order to \cs{includeonly} work as expected, with only the names -% (w.o. the paths)} \def\@docinclude#1#2 {% To match the macro's parameter string, is an % answer. But why is |\@docinclude| defined so? Originally, in % \pk{ltxdoc} it takes one argument and it's delimited with a~space @@ -6770,7 +3298,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@for \gmu@tempa:=\@partlist\do{\ifx\gmu@tempa\gmu@tempb\@tempswatrue\fi}% \fi \if@tempswa% the file is on |\@partlist| - \let\@auxout\@partaux + \let\@auxout\@partaux \if@filesw \immediate\openout\@partaux #2.\gmd@auxext\relax% Yes, only |#2|. It's to % create and process the partial \pk{.aux(x)} files always in the main @@ -6813,23 +3341,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \g@emptify\gmd@ABIOnce \fi \let\@auxout\@mainaux}% end of |\@docinclude|. -% \end{macro} -% -% (Two is a~sufficient number of iterations to define a~macro for.) \def\xdef@filekey{{\@relaxen\narrativett% \label{LetTTFRelax}This % assignment is very trickily crafted: it makes \emph{all} % |\narrativett|s present in the |\filekey|'s expansion unexpandable % not only the one added in this step. \xdef\filekey{\filekey, \thefilediv={\narrativett\currentfile}}}} - -% To allow |_| in the filenames we must assure |_| will be \catother\ -% while reading the filename. Therefore define -% \DefIndex\gmd@writemauxinpaux \def\gmd@writemauxinpaux#1{% \label{gmd@writemauxinpaux} % this name comes from `\emph{write} out to \emph main % \emph{\pk{.aux}} to \emph{in}put \emph partial - % \emph{\pk{.aux}}'.\par + % \emph{\pk{.aux}}'.\par % We wrap |\@input{|\<partial \pk{.aux}>|}| in a~|_|\catother\ % hacked scope. This hack is especially recommended here since the % \pk{.aux} file may contain a~non-|\global| stuff that should not @@ -6846,11 +3367,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \firstofone}{\egroup \string\@input{#1}}}} -% We also slightly modify a~\LaTeX\ kernel macro |\@writeckpt| to -% allow |_| in the file name. -% \changes[\DocInclude]{v0.98a}{06/09/06}{\cs{@writeckpt} wrapped -% with \cs{firstofone} hack to allow \cs[]{_} in the file names.} -% \DefIndex\gmd@writeckpt \def\gmd@writeckpt#1{% \immediate\write\@partaux{% \unexpanded{% @@ -6866,11 +3382,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \do\PrintIndex \do\printindex \do\RecordChanges \do\PrintChanges \do\theglossary \do\endtheglossary} - \@emptify\filesep -% The \pk{ltxdoc} class establishes a~special number format for -% multiple file documentation numbering needed to document the \LaTeX\ -% sources. I~like it too, so \def\aalph#1{\@aalph{\csname c@#1\endcsname}} \def\@aalph#1{% \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or @@ -6880,7 +3392,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else\@ctrerr\fi} -% A~macro that initialises things for |\DocInclude|. \def\gmd@docincludeaux{% % We set the things for including the files only once. \global\@relaxen\gmd@docincludeaux @@ -6893,9 +3404,9 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % \changes[\filediv]{v0.98a}{06/09/06}{definition moved into % \cs{DocInclude} and let \cs{relax} by default ($\quotechar=$a~bug fix).} \@ifundefined{chapter}{% - \SetFileDiv{part}}%\changes[\DocInclude]{v0.98f}{06/9/29}{\cs{filediv(name)} + \SetFileDiv{part}}%\changes[\DocInclude]{v0.98f}{06/9/29}{\cs{filediv(name)} % defined as \cs[]{(\protect\bslash)part} for the classes that - % don't know \cs{chapter}} + % don't know \cs{chapter}} {\SetFileDiv{chapter}}% \else% (|\filedivname| is defined by the user, |\filediv| is not) \SetFileDiv{\filedivname}% why not? Inside is |\edef| so it'll work. @@ -6903,7 +3414,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \else% (|\filediv| is defined by the user \ifx\filedivname\relax% and |\filedivname| is not) %^^A~I~deleted a~six level test which one sectioning command - %^^A~|\filedivname| isx. + %^^A~|\filedivname| isx. \PackageError{gmdoc}{You've redefined \string\filediv\space without redefining \string\filedivname.}{Please redefine the two macros accordingly. You may use \string\SetFileDiv{name @@ -6929,7 +3440,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \raggedright{\bfseries File Key:} \filekey}}% The footer for % the pages of index. \glet\@evenfoot\@oddfoot}% \label{oneside}anyway, it's intended to - % be oneside. + % be oneside. \g@addto@macro\glossary@prologue{% \gdef\@oddfoot{\strut Change History\hfill\thepage}% The footer % for the changes history. @@ -6964,28 +3475,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % divisions. \fi}% end of |\gmd@docincludeaux|. -% The |\filediv| and |\filedivname| macros should always be set -% together. Therefore provide a~macro that takes care of both at -% once. Its |#1| should be a~sectioning name without the backslash. \def\SetFileDiv#1{% \edef\filedivname{#1}% \@xa\let\@xa\filediv\csname#1\endcsname} -% \changes{v0.98c}{06/9/10}{added and a~bug fixed in \cs{docincludeaux}} - \def\SelfInclude{\DocInclude{\jobname}} -% \changes{v0.98a}{06/09/06}{added in response to the needs of the -% first user, of me that is} -% \changes{v0.99l}{2008/08/05}{Made a~shorthand for -% \cs{Docinclude}\cs{jobname} instead of repeating 99\% of -% \cs{DocInclude}'s code} - -% The \pk{ltxdoc} class makes some preparations for inputting multiple -% files. We are not sure if the user wishes to use \pk{ltxdoc}-like -% way of documenting (maybe \heshe\ will prefer what I~offer, -% \pk{gmdocc.cls} e.g.), so we put -% those preparations into a~declaration. -% + \newif\if@ltxDocInclude \newcommand*\ltxLookSetup{% @@ -6996,54 +3491,16 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@onlypreamble\ltxLookSetup -% The default is that we |\DocInclude| the files due to the original -% \gmdoc\ input settings. \let\incl@DocInput=\DocInput \@emptify\currentfile% for the pages outside the -% |\DocInclude|'s scope. In force for all includes. -% -%^^A \iffalse -%^^A % \stanza -%^^A % But it may be not a~usual situation to include the source files -%^^A % as with \pk{ltxdoc} but with the \emph{new} |\DocInput| macro. So -%^^A % let's |\def| -%^^A % \Define\ltxMultidocOldSetup -%^^A \newcommand*\ltxMultidocOldSetup{% -%^^A \ltxMultidocSetup -%^^A \let\incl@DocInput=\OldDocInput} -%^^A -%^^A \@onlypreamble\ltxMultidocOldSetup -%^^A -%^^A And, for the symmetry, if you prefer the look offered by -%^^A me, but -%^^A \fi - -% If you want to |\Doc/SelfInclude| \docfm-likes: + \newcommand*\olddocIncludes{% \let\incl@DocInput=\OldDocInput} -% And, if you have set the previous and want to set it back: \newcommand*\gmdocIncludes{% \let\incl@DocInput=\DocInput \AtBegInput{\QueerEOL}}% to move back the |\StraightEOL| declaration put -% at begin input by |\olddocIncludes|. -% -% -% \subdivision{Redefinition of \cs{maketitle}} -% -% A~not-so-slight alteration of the \TextUsage\maketitle\ command in -% order it allow multiple titles in one document seems to me very -% clever. So let's copy again (\pk{ltxdoc.dtx} the lines 643--656): -% -% \begin{quotation}The macro to generate titles is easily altered in -% order that it can be used more than once (an article with many -% titles). In the original, diverse macros were concealed -% after use with |\relax|. We must cancel anything that may have been -% put into |\@thanks|, etc., otherwise all titles will carry forward -% any earlier such setting!\end{quotation} -% But here in \pk{gmdoc} we'll do it locally for (each) input -% not to change the main title settings if there are any. \AtBegInput{%^^A~ why provide not just \cs{def}? \providecommand*\maketitle{\par \begingroup \def \thefootnote {\fnsymbol {footnote}}% @@ -7054,14 +3511,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% \if@twocolumn \twocolumn [\@maketitle ]% \else \newpage \global \@topnum \z@ \@maketitle \fi -% \begin{quotation}For special formatting requirements (such as in -% \acro{TUG}boat), we use page style |titlepage| for this; this is later defined -% to be |plain|, unless already defined, as, for example, by -% \pk{ltugboat.sty}.\end{quotation} - \thispagestyle{titlepage}\@thanks \endgroup -%\begin{quotation}If the driver file -% documents many files, we don't want parts of a title of one to -% propagate to the next, so we have to cancel these:\end{quotation} + \thispagestyle{titlepage}\@thanks \endgroup \setcounter {footnote}\z@ \gdef\@date{\today}\g@emptify\@thanks% \g@relaxen\@author\g@relaxen\@title% @@ -7109,31 +3559,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % And finally, let's initialise \cs{tit\+le\+set\+up} if it is not yet. \providecommand*\titlesetup{}% }% end of |\AtBegInput|. -% -% \changes[\titlesetup]{v0.98c}{06/09/08}{\cs{provide}d \cs[]{\{\}}} -% -% -% The \pk{ltxdoc} class redefines the |\maketitle| command to allow -% multiple titles in one document. We'll do the same and something -% more: our |\Doc/SelfInclude| will turn the file's |\maketitle| into -% a~part or chapter heading. But, if the |\ltxLookSetup| declaration -% is in force, |\Doc/SelfInclude| will make for an included file -% a~part's title page and an \pk{article}-like title. -% -% \stanza -% Let's initialise the file division macros. \@relaxen\filediv \@relaxen\filedivname \@relaxen\thefilediv -% \changes[\thefilediv]{v0.99m}{2008/08/06}{let to \cs{relax} by -% default} -% If we don't include files the \pk{ltxdoc}-like way, we wish to -% redefine |\maketitle| so that it typesets a~division's heading. -% -% Now, we redefine |\maketitle| and its relatives. -% \def\InclMaketitle{% % \changes{v0.98a}{06/09/05}{renamed from \cs{incl@maketitle} because % I~needed it in self-input hacks.} @@ -7147,7 +3577,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@title\@ifauthor{% \protect\space(\@author)}{}}% we add the author iff the `files have % different authors' \emph{and} author exists \nlpercent(|@variousauthors|) - }% + }% \def\thanks##1{\footnotemark \protected@xdef\@thanks{\@thanks% to keep the previous |\thanks| % if there were any. @@ -7172,12 +3602,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % the headings. Otherwise we wish to print them. The % information which case are we in is brought by the % |\if@variousauthors| switch defined in line \ref{@variousauthors}. -% -% If we wish to print the author's name -% (|\if@variousauthors|), then we'll print the date after the author, separated -% with a~comma. If we don't print the author, there still may be -% a~date to be printed. In such a~case we break the line, too, and -% print the date with no comma. \protect\@date}}% end of |\incl@filedivtitle|'s brace (2nd % or 3rd argument). }% end of |\incl@filedivtitle|'s |\protected@xdef|.\par @@ -7191,18 +3615,10 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \g@emptify\@thanks }% end of |\InclMaketitle|. -% What I~make the default, is an assumption that all the -% multi-documented files have the same author(s). -% And with the account of the other possibility I~provide -% the below switch and declaration. - \newif\if@variousauthors -% \label{@variousauthors} (its name comes from \textit file\textit s -% \textit have \textit different \textit authors). \newcommand*\PrintFilesAuthors{\@variousauthorstrue} -% And the counterpart, if you change your mind: \newcommand*\SkipFilesAuthors{\@variousauthorsfalse} \def\@ifauthor{%\ @@ -7218,11 +3634,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi } -% \subdivision{The file's date and version information} - -% Define |\filedate| and friends from info in the -% |\ProvidesPackage| etc.\ commands. \def\GetFileInfo#1{% \def\filename{#1}% \def\gmu@tempb##1 ##2 ##3\relax##4\relax{% @@ -7232,14 +3644,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \edef\gmu@tempa{\csname ver@#1\endcsname}% \@xa\gmu@tempb\gmu@tempa\relax? ? \relax\relax} -% Since we may documentally input files that we don't load, as \docfm\ -% e.g., let's define a~declaration to be put (in the comment layer) -% before the line(s) containing |\Provides›…|. The |\FileInfo| -% command takes the stuff till the closing |]| and subsequent line -% end, extracts from it the info and writes it to the \file{.aux} and -% rescans the stuff. \eTeX\ provides a~special primitive for that -% action but we remain strictly \TeX nical and do it with writing to -% a~file and inputting that file. \newcommand*\FileInfo{% \bgroup @@ -7251,7 +3655,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \let\do\@makeother \do\ \do\{\do\}\do\^^M\do\\% \gmd@fileinfo} -% \changes{v0.99d}{2007/04/26}{added} \foone{% \catcode`!\z@ @@ -7264,14 +3667,8 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} (% !def!gmd@fileinfo#1Provides#2{#3}#4[#5]#6^^M% (!egroup% we close the group of changed catcodes, the catcodes -% of the arguments are set. And we are still in the group for -% \incs{gmd@ctallsetup}. !gmd@writeFI(#2)(#3)(#5)% !gmd@FIrescan(#1Provides#2{#3}#4[#5]#6)% this macro will close the group. -%\changes[\FileInfo]{v0.99m}{2008/08/09}{\cs{egroup} of the -% inner macro moved to the end to allow \cs{gmd@ctallsetup}. From the -% material passed to \cs{gmd@FIrescan} ending \hathat{M} stripped not -% to cause double labels.} )% \CodeEscapeChar\\ ) @@ -7281,7 +3678,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % of \cmd\newlinechar} \immediate\write\@auxout{% \global\@nx\@namedef{% - ver@#2.\if P\@firstofmany#1\@@nil sty\else cls\fi}{#3}}}} + ver@#2.\if P\@firstofmany#1\@nil sty\else cls\fi}{#3}}}} \foone\obeylines{% \def\gmd@FIrescan#1{% @@ -7292,18 +3689,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\newlinechar=\endlinechar\scantokens{#1}}\egroup^^M}} -% And, for the case the input file doesn't contain |\Provides›…|, -% a~macro for explicit providing the file -% info. It's written in analogy to |\ProvidesFile|, \pk{source ^^B -% 2${}_\epsilon$}, file L v1.1g, l.\,102. - \def\ProvideFileInfo#1{% \begingroup \catcode`\ 10 \catcode\endlinechar 10 % \@makeother\/\@makeother\&% \kernel@ifnextchar[{\gmd@providefii{#1}}{\gmd@providefii{#1}[]}%^^A] } -% \changes{v0.98a}{06/09/06}{added} % \DefIndex\gmd@providefii \def\gmd@providefii#1[#2]{%\\ @@ -7311,52 +3702,83 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@xa\xdef\csname ver@#1\endcsname{#2}% \endgroup} -% And a~self-reference abbreviation (intended for providing file info -% for the driver): \def\ProvideSelfInfo{\ProvideFileInfo{\jobname.tex}} -% A~neat conventional statement used in \docfm's documentation e.g., -% to be put in |\thanks| to the title or in a~footnote: -\newcommand*\filenote{This file has version number \fileversion{} dated \filedate{}.} -% And exactly as |\thanks|: -\newcommand*\thfileinfo{\thanks\filenote} - - -% -% -% \subdivision{Miscellanea} -% -% The main inputting macro, |\DocInput| has been provided. But there's -% another one in \docfm\ and it looks very reasonably: -% \gmhypertarget[IndexInput]{\cs{IndexInput}}. Let's make analogous one -% here: + +\def\gmd@upperDIV#1{% + \if d#1D\fi + \if i#1I\fi + \if v#1V\fi +} + +\def\edefInfo +#1% name +#2% datum +{% + \edef\gmd@edefInfo@resa{\gmd@upperDIV #2}% + \@nameedef{file#2}{% + \ifcsname #1Leaf\gmd@edefInfo@resa\endcsname % e.g.~|gmbaseLeafVersion| + \xA\xA\xA\detokenize\xA\xA\xA{% + \csname #1Leaf\gmd@edefInfo@resa\endcsname + }% + \else + \ifcsname #1\gmd@edefInfo@resa\endcsname % e.g.~|gmbaseVersion| + \xA\xA\xA\detokenize\xA\xA\xA{% + \csname #1\gmd@edefInfo@resa\endcsname + }% + \else + \ifcsname \gmBundleFile \gmd@edefInfo@resa\endcsname % e.g.~|gmutilsVersion| + \xA\xA\xA\detokenize\xA\xA\xA{% + \csname \gmBundleFile \gmd@edefInfo@resa\endcsname + }% + \fi + \fi + \fi + }% of edefined macro +}% of |\edefInfo| + +\def\FileInfoFromName#1{% + \edefInfo{#1}{date}% + \edefInfo{#1}{version}% + \edefInfo{#1}{info}% + \def\GeneralName{#1\actualchar\pk{#1} }% for the changes' history. +} + +\def\BundleInfoFromName#1{% + \def\gmBundleFile{#1}% + \Store@MacroSt {#1LeafDate}% + \Store@MacroSt {#1LeafVersion}% + \Store@MacroSt {#1LeafInfo}% + \n@melet{#1LeafDate}{@undefined}% + \n@melet{#1LeafVersion}{@undefined}% + \n@melet{#1LeafInfo}{@undefined}% + \FileInfoFromName{#1}% + \Restore@MacroSt {#1LeafDate}% + \Restore@MacroSt {#1LeafVersion}% + \Restore@MacroSt {#1LeafInfo}% +} + +\pdef\filenote{This file has version number \fileversion{} dated \filedate{}.} +\pdef\thfileinfo{\thanks\filenote} + +\pdef\fnfileinfo{% + \gmu@ifedetokens{\@currext}{toc}% + {}% + {\footnote\filenote}% +} + \foone{\obeylines}% {% \pdef\IndexInput#1{% \changes{v0.98b}{06/09/07}{\cs{StoreMacro}ing %% and \cs{RestoreMacro}ing % \cs{code@delim} added} - \StoreMacro\code@delim% + \Store@Macro\code@delim% \CodeDelim*\^^Z% \def\gmd@iihook{% \label{iihook}this hook is |\edef|ed! \@nx^^M% \code@delim\relax\@nx\let\@nx\EOFMark\relax}%^^A\@nx^^M - \DocInput{#1}\RestoreMacro\code@delim}% + \DocInput{#1}\Restore@Macro\code@delim}% } -% How does it work? We assume in the input file is no explicit -% \<char1>. This char is chosen as the code delimiter and will be put -% at the end of input. So, entire file contents will be scanned char -% by char as the code. -% \stanza -% -% \skiplines First I~tried to use \specialcomment{gmlonely} provided by -% the \pk{comment} package, but it caused errors.\endskiplines -% -% The below environment I~designed to be able to skip some repeating -% texts while documenting several packages of mine into one -% document. At the default settings it's just a~|\StraightEOL| group -% and in the |\skipgmlonely| declaration's scope it gobbles its -% contents. -% \newenvironment{gmlonely}{\StraightEOL}{} \newcommand\skipgmlonely[1][]{% @@ -7374,10 +3796,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \@fileswfalse% to forbid writing to \pk{.toc}, \pk{.idx} etc. \setbox0=\vbox\bgroup}{\egroup\gmd@skipgmltext}} -% Sometimes in the commentary of this package, so maybe also others, -% I~need to say some char is of category 12 (`other sign'). This I'll -% mark just as \catother\ got by |\catother|. -% \foone{\catcode`\_=8 }% we ensure the standard |\catcode| of |_|. {% @@ -7388,17 +3806,10 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % and a~letter, \catletter \newcommand*\catletter{${}_{11}$}%. } -% -% For the copyright note first I~used just \env{verse} but it requires -% marking the line ends with |\\| and indents its contents while -% I~prefer the copyright note to be flushed left. So \newenvironment*{copyrnote}{% \StraightEOL\everypar{\hangindent3em\relax\hangafter1 }% \par\addvspace\medskipamount\parindent\z@\obeylines}{% \@codeskipputgfalse\stanza} -% -% I~renew the \env{quotation} environment to make the fact of quoting -% visible. \StoreEnvironment{quotation} \def\gmd@quotationname{quotation} \renewenvironment{quotation}{% @@ -7417,28 +3828,12 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \else\afterfi{\storedcsname{endquotation}}% \fi} -% \chunkskip -% For some mysterious reasons |\noindent| doesn't work with the first -% (narrative) paragraph after the code so let's work it around: \def\gmdnoindent{% \ifvmode\leavevmode\hskip-\parindent\ignorespaces \fi}% \incs{ignorespaces} is added to eat a~space inserted% by -% \incs{gmd@textEOL}. Without -% it it% also worked but it was a~bug: since% \incs{parindent} is -% a~dimen not% skip, \TeX\ looks forward and % expands macros to check -% whether% there is a~stretch or shrink part%% and therefore it -% gobbled the% \incs{gmd@textEOL}'s space. -% -% When a~verbatim text occurs in an in-line comment, it's advisable to -% precede it with |%| if it begins a~not first line of such a~comment -% not to mistake it for a~part of code. Moreover, if such a~short verb -% breaks in its middle, it should break with the percent at the -% beginning of the new line. For this purpose provide |\inverb|. It -% breaks with a~|%| at the beginning of new line. Ist starred version -% puts |%| also at the end of the upper line. \pdef\inverb{% % \changes{v0.99g}{2007/11/12}{added} - \gm@ifstar{% + \gmu@ifstar{% \def\gmu@tempa{\verbhyphen}% the pre-break. \@emptify\gmu@tempb% the no-break. \gmd@inverb}% @@ -7484,7 +3879,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} {\narrationmark}% {\xiilbrace}}% \gm@verb@eol - %^^A \gm@ifstar {\@sverb@chbsl} + %^^A \gmu@ifstar {\@sverb@chbsl} %^^A~ {\gmobeyspaces\frenchspacing\@sverb@chbsl} \@sverb@chbsl% It's always with visible spaces. } @@ -7492,7 +3887,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \pdef\nlperc{\newline\narrationmark\ignorespaces} \pdef\nlpercent{% - % ^^A \gm@ifstar{\def\gmu@tempa{{\tt\xiipercent}}% + % ^^A \gmu@ifstar{\def\gmu@tempa{{\tt\xiipercent}}% % ^^A \@emptify\gmu@tempb % ^^A \gmd@nlperc}% % ^^A { @@ -7505,12 +3900,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} % ^^A} } - \pdef\incs{% an in-line \cs{cs} % \changes{v0.99m}{008/08/07}{added} % \chgs{200/12/7 v0.99s starred version discarded as never used and % undocumented} - % ^^A \gm@ifstar{\def\gmu@tempa{{\tt\xiipercent}}% + % ^^A \gmu@ifstar{\def\gmu@tempa{{\tt\xiipercent}}% % ^^A \@emptify\gmu@tempb % ^^A \gmd@nlperc\cs}% % ^^A { @@ -7529,74 +3923,27 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\inhash{\nlpercent\hash} -% As you see, |\inverb| and |\nlpercent| insert a~discretionary that -% breaks to |%| -% at the beginning of the lower line. Without the break it's a~space -% (alas at its natural width i.e., not flexible) or, with the starred -% version, nothing. The starred version puts |%| also at the end of -% the upper line. Then |\inverb| starts sth. like -% |\verb*| but the breakables of it break to |%| in the -% lower line. -% -% \acro{TO-DO}: make the space flexible (most probably it requires using sth.\ -% else than |\discretionary|). -%\stanza -% -% An optional hyphen for \CSs in the in-line comment: -% \Define*{\cs} - -\@xa\ampulexdef\csname\string\cs\endcsname -[\ampulexhash1] [{{\ampulexhash1}}] {\begingroup} {\ifdefined} + +\@xa\ampulexdef\csname\@dc@InnerName\cs\endcsname +[#1] [#1] {\begingroup} {\ifdefined} {\begingroup \def\+{\discre{\gmv@hyphen}{\narrationmark}{}}% \ifdefined} -%^^A\nameshow{\string\cs} \providecommand*\ds{DocStrip} -% A~shorthand for |\CS|: -\pdef\CS{% \changes{v0.99n}{2008/08/30}{added} - \acro{CS}% - \@ifnextcat a{ }{}}% we put a~space if the next token is -% \catletter. It's the next best thing to checking whether the \CS -% consisting of letters is followed by a~space. -\pdef\CSs{\CS{}es\@ifnextcat a{ }{}}% for pluralis. -% \changes{v0.99n}{2008/08/30}{added} -\pdef\CSes{\CS{}es\@ifnextcat a{ }{}}% for pluralis. -% \changes{v0.99n}{2008/08/30}{added} - - -% \gmhypertarget[CDAnd]{Finally,} a~couple of macros for documenting -% files playing with |%|'s -% catcode(s). Instead of |%| I~used |&|. They may be at the end -% because they're used in the commented thread i.e.\ after package's -% |\usepackage|. \newcommand*\CDAnd{\CodeDelim\&} \newcommand*\CDPerc{\CodeDelim\%} -% And for documenting in general: -% -% A~general sectioning command because I~foresee a~possibility of -% typesetting the same file once as independent document and another -% time as a~part of bigger whole. -% \Define\division \let\division=\section -% \Define\subdivision \let\subdivision=\subsection -% \Define\subsubdivision \let\subsubdivision=\subsubsection -% -% -% \stanza -% To kill a~tiny little bug in \file{doc.dtx} (in line 3299 |\gmu@tempb| and -% |\gmu@tempc| are written plain not verbatim): \newcounter{gmd@mc} -% Note it is after the \env{macrocode} group \def\gmd@mchook{\stepcounter{gmd@mc}% \label{gmd@mchook} \gmd@mcdiag \ifcsname gmd@mchook\the\c@gmd@mc\endcsname @@ -7604,15 +3951,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \fi} \long\def\AfterMacrocode#1#2{\@namedef{gmd@mchook#1}{#2}} -% What have I~done? I~declare a~new counter and employ it to count the -% \env{macrocode›[*›]}s (and \env{oldmc›[*›]}s too, in fact) and attach -% a~hook to (after) the end of every such environment. That lets us to -% put some stuff pretty far inside the compiled file (for the buggie -% in \file{doc.dtx}, to redefine |\gmu@tempb/c|). - -% One more detail to explain and define: the |\gmd@mcdiag| macro may -% be defined to type out a~diagnostic message (the -% \env{macrocode›[*›]}'s number, code line number and input line number). + \@emptify\gmd@mcdiag \def\mcdiagOn{\def\gmd@mcdiag{% @@ -7620,21 +3959,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \space\on@line, cln.\the\c@codelinenum.}}} \def\mcdiagOff{\@emptify\gmd@mcdiag} -% -% An environment to display the meaning of macro parameters: its -% items are automatically numbered as |#1|, |#2| etc. \DeclareEnvironment{enumargs}{o}%\ -% the optional argument specifies number of \inverb|#|'s; it's of the -% |o| type to inform if it was not given by the user to handle -% a~possible active char touched by argument's catcher; can be 1 (the -% default), 2 or 4; any else produces one \inverb|#|. -% \changes{v0.99n}{2008/08/21}{developed for the case of in-line -% comment} -% \changes{v0.99o}{2008/09/04}{added the optional argument which is -% the number of hashes (1 by default or 2 or 4)} -% \changes{v0.99p}{2008/10/4}{added optional arguments' handling} -% \chgs{2008/12/8 v0.99s added \cmd\StraightEOL to let the in-line -% comment continue after this environment} {% \StraightEOL \if@aftercode @@ -7654,7 +3979,7 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \relax% to stop |\ignorespaces| \gmd@ea@bwrap \gmd@ea@hashes - \csname the\@enumctr\endcsname + \csname the\@enumctr\endcsname \gmd@ea@ewrap}}% of |\label⁄<@enumctr>|. \let\mand\item \provide\gmd@ea@wraps{% @@ -7671,49 +3996,49 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} %\stanza \DeclareCommand\dc !{% Q{*>} % (1) we check whether there's a~sergeant right of the prefix or - % a~star to suppress parentheses, + % a~star to suppress parentheses, Q{P!lL\long iI} % (2) an optional ‘bare’ prefix for a~‘long’ argument % or for ignored b % (3) prefix(es) in curly braces % ( % This way we allow the prefix(es) to be braced or not % at the author's option), - S{bBcCmoOQsSTAGK\afterassignment} % (4) (optional) argument type + >\@xa T{\@dc@argtypes} % (4) (optional) argument type % specifier, b % (5) (optional) default value of the specified argument or % (for |K| and |G|) mandatory. b % (6) default of |K| and |G|. }{% - \IfAmong *\among{##1}% + \gmu@ifxany *{##1}% {% a~|*| suppresses bracket/brace/parentheses decoration. \def\gmd@ea@bwrap{\hbox to \gmd@ea@xxxwd\bgroup\hss}% \def\gmd@ea@ewrap{\hss\egroup}% }% {% if there's no |*| in \hash1, be wrap the item label in - % braces/brackets/parentheses. - \IfAmong ##4\among{bB}{% I~decide not to print |m| type + % braces/brackets/parentheses. + \gmu@ifxany ##4{bB}{% I~decide not to print |m| type % arguments in braces because the braces are not mandatory for % this type. \def\gmd@ea@bwrap{\{}% \def\gmd@ea@ewrap{\}}% }{}% - \IfAmong ##4\among{cC}{% + \gmu@ifxany ##4{cC}{% \def\gmd@ea@bwrap{(}% \def\gmd@ea@ewrap{)}% }{}% - \IfAmong ##4\among{oO}{% + \gmu@ifxany ##4{oO}{% \def\gmd@ea@bwrap{[}% \def\gmd@ea@ewrap{]}% }{}% - \IfAmong ##4\among{G}{% + \gmu@ifxany ##4{G}{% \def\gmd@ea@bwrap{\detokenize\@xa{\@firstoftwo##5}}% \def\gmd@ea@ewrap{\detokenize\@xa{\@secondoftwo##5}}%% }{}% - \IfAmong ##4\among{A}{% + \gmu@ifxany ##4{A}{% \def\gmd@ea@bwrap{<}% \def\gmd@ea@ewrap{>}% }{}% }% of if no |*| in \hash1. - \IfAmong ##4\among{mQsSTK\afterassignment}{% + \gmu@ifxany ##4{mQsSTK\afterassignment}{% \def\gmd@ea@bwrap{\hbox to \gmd@ea@xxxwd\bgroup\hss}% \def\gmd@ea@ewrap{\hss\egroup}% }{}% @@ -7745,18 +4070,18 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \addtomacro\gmd@ea@bwrap{% \begingroup \relaxen\gmd@ea@hashes - \@namedef{the\@enumctr}{\<ign.>}% + \@namedef{the\@enumctr}{\<ign.>}% }% \prependtomacro\gmd@ea@ewrap{% \endgroup}% \addtomacro\gmd@ea@ewrap{% \global \advance \csname c@\@enumctr\endcsname \m@ne - }% + }% \emptify\gmd@blubra }% - \IfIntersect {##2}{Ii}{\gmd@blubra}{}% - \IfIntersect {##3}{Ii}{\gmd@blubra}{}% - \IfAmong ##4\among{\afterassignment}{\gmd@blubra}{}% + \gmu@ifsbintersect {##2}{Ii}{\gmd@blubra}{}% + \gmu@ifsbintersect {##3}{Ii}{\gmd@blubra}{}% + \gmu@ifxany ##4{\afterassignment}{\gmd@blubra}{}% \item\relax}% % \stanza \IfNoValueT{#1}{\@ifnextac\@gobble{}}% to gobble a~possible active line end or @@ -7766,33 +4091,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} }% of begin definition \ResumeDef {\endenumerate} -% The starred version is intended for lists of arguments some of which -% are optional: to align them in line. \newenvironment*{enumargs*}{% \def\gmd@ea@wraps{% \HideDef \def\gmd@ea@bwrap{ }\def\gmd@ea@ewrap{ }}% \ResumeDef \enumargs}{\endenumargs} -% -% \subdivision[\docfm-compatibility]{\gmhypertarget[doccompa]{\docfm-compatibility}} -% -% \gmhypertarget[doc-likeness]{My} \TeX\ Guru recommended me to write -% hyperlinking for \docfm. The suggestion came out when writing of -% \gmdoc\ was at such a~stage that I~thought it to be much easier to write -% a~couple of |\let|s to make \gmdoc\ able to typeset -% sources written for \docfm\ than to write a~new package that adds -% hyperlinking to \docfm. So\dots -% -% \stanza -% The \docfm\ package makes |%| an ignored char. Here the |%| delimits -% the code and therefore has to be `other'. But only the first one -% after the code. The others we may re|\catcode| to be ignored and we -% do it indeed in line \ref{ignorePercent}. -% \stanza -% -% At the very beginning of a~\docfm-prepared file we meet a~nice -% command \cs{Char\-act\-er\-Tab\-le}. My \TeX\ Guru says it's a~bit old -% fashioned these days so let's just make it notify the user: \def\CharacterTable{\begingroup \@makeother\{\@makeother\}% @@ -7810,50 +4113,21 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} ==== given in the legal notice in gmdoc.sty.^^J^^J]% %^^A~\gmd@countlines[#1]\gmd@countlines[#2] ]] -% Similarly as \docfm, \gmdoc\ provides \env{macrocode}, \env{macro} -% and \env{environment} environments. Unlike in \docfm, -% |\end{macrocode}| \emph{does not} require to be preceded with any -% particular number of spaces. Unlike in \docfm, it \emph{is not} -% a~kind of \env{verbatim}, however, which means the code and -% narration layers remains in force inside it which means that any -% text after the first |%| in a~line will be processed as narration -% (and its control sequences will be executed). For a~discussion of -% a~possible workaround see line \ref{AVerySpecialMacro}. -% -% \stanza -% Let us now look over other original \docfm's control sequences and -% let's `domesticate' them if they are not yet. -% -% The \TextUsage\DescribeMacro\ and \TextUsage\DescribeEnv\ commands -% seem to correspond with my |\TextUsage| macro in its plain and starred -% version respectively except they don't typeset their arguments in the text -% i.e., they do two things of the three. So let's |\def| them to do these -% two things in this package, too: \outer\def\DescribeMacro{% \@bsphack \begingroup\MakePrivateLetters \gmd@ifonetoken\Describe@Macro\Describe@Env} -% Note that if the argument to |\DescribeMacro| is not -% a~(possibly starred) control sequence, then as an environment's name -% shall it be processed \emph{except} the \cs{Mak\-ePriv\-at\-e\-Oth\-ers} -% re|\catcode|ing shall not be done to it. \outer\def\DescribeEnv{% \@bsphack \begingroup\MakePrivateOthers\Describe@Env} -% Actually, I've used the |\Describe›…| commands myself a~few times, so -% let's |\def| a~common command with a~starred -% version: \outer\def\Describe{% It doesn't typeset its argument in the point of - % occurrence. + % occurrence. \leavevmode \@bsphack \begingroup\MakePrivateLetters - \gm@ifstar{\MakePrivateOthers\Describe@Env}{\Describe@Macro}} + \gmu@ifstar{\MakePrivateOthers\Describe@Env}{\Describe@Macro}} -% The below two definitions are adjusted \texttilde s of |\Text@UsgMacro| and -% |\Text@UsgEnvir|. -% \DefIndex\Describe@Macro \long\def\Describe@Macro#1{% \endgroup \strut\Text@Marginize*{#1}% @@ -7861,7 +4135,6 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \text@indexmacro#1% \@esphack} -% \DefIndex\Describe@Env \def\Describe@Env#1{% \endgroup \strut\Text@Marginize*{#1}% @@ -7870,120 +4143,48 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \text@indexenvir{#1}% \@esphack} -% Note that here the environments' names are typeset in |\narrativett| font -% just like the macros', \emph{unlike} in \docfm. -% -% \stanza -% My understanding of `minimality' includes avoiding too much freedom -% as causing chaos not beauty. That's the philosophical and \ae^^B -% sthetic reason why I~don't provide \TextUsage\MacroFont. In -% my opinion there's a~noble tradition of typesetting the \TeX\ code -% in |\tt| font and this tradition sustained should be. If one wants -% to change the tradition, let \himher\ redefine |\tt|, in \TeX\ it's -% no problem. I~suppose |\MacroFont| is not used explicitly, and that -% it's (re)defined at most, but just in case let's |\let|: \let\MacroFont\tt -% -% \stanza -% We have provided \TextUsage\CodeIndent\ in line -% \ref{CodeIndent}. And it corresponds with \docfm's -% \Describe\MacroIndent\cs{Mac\-ro\-In\-dent} so -% \Define\MacroIndent \let\MacroIndent\CodeIndent -% And similarly the other skips: \Define\MacrocodeTopsep \let\MacrocodeTopsep\CodeTopsep -% Note that \TextUsage\MacroTopsep\ is defined in \gmdoc\ and has -% the same r\ocircum le as in \docfm. -% \Define\SpecialEscapechar \let\SpecialEscapechar\CodeEscapeChar -% \TextUsage\theCodelineNo\ is not used in -% \pk{gmdoc}. Instead of it there is \TextUsage\LineNumFont\ -% declaration and a~possibility to redefine |\thecodelinenum| as for -% all the counters. Here the |\LineNumFont| is used two different -% ways, to set the benchmark width for a~line number among others, so it's not -% appropriate to put two things into one macro. Thus let's give the -% user a~notice if \heshe\ defined this macro: -% -% Because of possible localness of the definitions it seems to be -% better to add a~check at the end of each |\DocInput| or -% |\IndexInput|. \AtEndInput{\@ifundefined{theCodelineNo}{}{\PackageInfo{gmdoc}{The \string\theCodelineNo\space macro has no effect here, please use \string\LineNumFont\space for setting the font and/or \string\thecodelinenum\space to set the number format.}}} -% I~hope this lack will not cause big trouble. -% -% \stanza -% For further notifications let's define a~shorthand: \def\noeffect@info#1{\@ifundefined{#1}{}{\PackageInfo{gmdoc}{^^J% The \bslash#1 macro is not supported by this package^^J and therefore has no effect but this notification.^^J If you think it should have, please contact the maintainer^^J indicated in the package's legal note.^^J}}} -% The four macros formatting the macro and environment names, namely -% \possfil\TextUsage\PrintDescribeMacro, -% \possfil\TextUsage\PrintMacroName, -% \possfil\TextUsage\PrintDescribeEnv\ and -% \possfil\TextUsage\PrintEnvName\ are not -% supported by \pk{gmdoc}. They seem to me to be too internal to take -% care of them. Note that in the name of (\ae sthetic) minimality -% and (my) convenience I~deprive you of easy knobs to set strange -% formats for verbatim bits: I~think they are not advisable. -% -% Let us just notify the user. \AtEndInput{% \noeffect@info{PrintDescribeMacro}% \noeffect@info{PrintMacroName}% \noeffect@info{PrintDescribeEnv}% \noeffect@info{PrintEnvName}} - -% The \TextUsage\CodelineNumbered\ declaration of \docfm\ seems to be -% equivalent to our |noindex| option with the |linesnotnum| option set -% off so let's define it such a~way. + \def\CodelineNumbered{\AtBeginDocument{\gag@index}} \@onlypreamble\CodelineNumbered -% Note that if the |linesnotnum| option is in force, this declaration -% shall not revert its effect. -% -% I~assume that if one wishes to use \docfm's interface then \heshe'll -% not use \gmdoc's options but just the default. -% -% \stanza -% The |\CodelineIndex| and |\PageIndex| declarations -% correspond with the \pk{gmdoc}'s default and the |pageindex| option -% respectively. -% Therefore let's |\let| \let\CodelineIndex\@pageindexfalse \@onlypreamble\CodelineIndex \let\PageIndex\@pageindextrue -% \label{PageIndex} \@onlypreamble\PageIndex -% The next two declarations I~find useful and -% smart: \def\DisableCrossrefs{\@bsphack\gag@index\@esphack} \def\EnableCrossrefs{\@bsphack\ungag@index \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack} -% The latter definition is made due to the footnote 6 on p.\,8 of the -% Frank Mittelbach's \docfm's documentation and both of them are -% copies of lines 302--304 of it modulo |\›[un›]gag@index|. -% -% \stanza -% The subsequent few lines I~copy almost verbatim \balsmiley( ;-) from the lines -% 611--620. \newcommand*\AlsoImplementation{\@bsphack \long\def\StopEventually##1{\gdef\Finale{##1}}% we define % \incs{Fi\+n\+a\+le} just to expand to the argument of \incs{StopEventually} not % to to add anything to the end input hook because \incs{Finale} should % only be executed if entire document is typeset.\nostanza\par - % + % % \hangindent\verbatimhangindent \hangafter1\relax % \gmdnoindent \leftskip\CodeIndent % |%\init@checksum| is obsolete in @@ -7994,40 +4195,20 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \AlsoImplementation -% \begin{quotation} When the user places an |\OnlyDescription| -% declaration in the driver file the document should only be typeset -% up to |\StopEventually|. We therefore have to redefine this -% macro.\end{quotation} \def\OnlyDescription{\@bsphack\long\def\StopEventually##1{% % \begin{quotation} In this case the argument of |\StopEventually| % should be set and afterwards \TeX\ should stop reading from % this file. Therefore we finish this macro with\end{quotation} - ##1\endinput}\@esphack} + ##1ⵢendinput}\@esphack} -% \begin{quotation} If no |\StopEventually| command is given we -% silently ignore a~|\Finale| issued.\end{quotation} \@relaxen\Finale -% The \TextUsage\meta\ macro is so beautifully crafted in \docfm\ that -% I~couldn't resist copying it into \pk{gmutils}. It's also available -% in Knuthian (\TeXbook\ format's) disguise -% \Describe*{\<⁄kern⁄string-3pt›…>}|\<⁄<the argument>>|. -% \stanza -% The checksum mechanism is provided and developed for a~slightly -% different purpose. -% \stanza -% Most of \docfm's indexing commands have already been `almost -% defined' in \pk{gmdoc}: \let\SpecialMainIndex=\DefIndex -% \DoNotIndex\endcsname* \def\SpecialMainEnvIndex{\csname CodeDefIndex\endcsname*}% we don't -% type |\DefIndex| explicitly here because it's |\outer|, remember? -% \Define\SpecialIndex \Define\SpecialUsageIndex -% \Define\SpecialEnvIndex \Define\SortIndex \let\SpecialIndex=\CodeCommonIndex \let\SpecialUsageIndex=\TextUsgIndex @@ -8035,111 +4216,24 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \def\SpecialEnvIndex{\csname TextUsgIndex\endcsname*} \def\SortIndex#1#2{\index{#1\actualchar#2}} -% \begin{quotation}All these macros are usually used by other macros; -% you will need them only in an emergency.\end{quotation} -% -% Therefore I~made the assumption(s) that `Main' indexing macros are -% used in my `Code' context and the 'Usage' ones in my `Text' context. -% -% \stanza -% Frank Mittelbach in \docfm\ provides the \TextUsage\verbatimchar\ -% macro to (re)define the |\verb›[*›]|'s delimiter for the index -% entries. The \gmdoc\ package uses the same macro and its default definition -% is |{&}|. When you use \docfm\ you -% may have to redefine |\verbatimchar| if you use (and index) the |\+| -% control sequence. \pk{gmdoc} does a~check for the analogous situation -% (i.e., for processing |\&|) and -% if it occurs it takes |$| as the |\verb*|'s delimiter. So strange -% delimiters are chosen deliberately to allow any `other' chars in the -% environments' names. If this would cause problems, please -% notify me and we'll think of adjustments. -% \def\verbatimchar{&} -% \changes{v0.98c}{06/9/10}{put into all indexing macros for the -% accordance of the `macro' and the `environment' index entries; the -% \cs[]{\$} sign set as its alternative} -% ^^A % One more a~very neat macro provided by \docfm. I~copy it -% ^^A % verbatim and put into \pk{gmutils}, too. (|\DeclareRobustCommand| -% ^^A % doesn't issue an error if its argument has been defined, it only -% ^^A % informs about redefining.) -% ^^A \pdef\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}} -% ^^A % \changes{v0.98}{06/09/05}{made robust.} -% \TextUsage\IndexPrologue\ is defined in line -% \ref{IndexPrologue}. And other \docfm\ index commands too. - \@ifundefined{main}{}{\let\DefEntry=\main} \@ifundefined{usage}{}{\let\UsgEntry=\usage} -% About how the \ds\ directives are supported by \pk{gmdoc}, -% see section \gmiflink[docstrip]{The \ds\dots}. -% This support is not \emph{that} sophisticated as in \docfm, among others, it -% doesn't count the modules' nesting. Therefore if we don't want an -% error while \pk{gmdoc}umenting \docfm-prepared files, better let's -% define \docfm's counter for the modules' depths. \newcounter{StandardModuleDepth} -% \stanza -% For now let's just mark the macro for further development -% \Define*\DocstyleParms \noeffect@info{DocstyleParms} -% For possible further development or to notify the user once and -% forever: -% \Define\DontCheckModules \Define\CheckModules \@emptify\DontCheckModules \noeffect@info{DontCheckModules} \@emptify\CheckModules \noeffect@info{CheckModules} -% The \TextMarginize\Module|\Module| macro \emph{is} provided exactly -% as in \docfm. -% \Define\AltMacroFont \@emptify\AltMacroFont \noeffect@info{AltMacroFont} -% \begin{quotation} And finally the most important bit: we change the -% |\catcode| of |%| so that it is ignored (which is how we are able to -% produce this \pk{doc}ument!). We provide two commands to do the -% actual switching.\end{quotation} \def\MakePercentIgnore{\catcode`\%9\relax} \def\MakePercentComment{\catcode`\%14\relax} -% -% -% \subdivision{\gmdoc ing \file{doc.dtx}} -% -% The author(s) of \docfm\ suggest(s): \begin{quotation}For examples -% of the use of most---if not all---of the features described above -% consult the \file{doc.dtx} source itself.\end{quotation} -% Therefore I~hope that after \file{doc.dtx} has been \gmdoc-ed, one -% can say \gmdoc\ is \docfm-compatible ``at most---if not at all''. -% -% \TeX ing the original \docfm\ with my humble\footnote{What ^^B( -% a~\emph{false} modesty! ;-)} package was a~challenge and -% a~milestone experience in my \TeX\ life. -% -% \stanza -% One of minor errors was caused by my understanding of a~`shortverb' -% char: due to \pk{gmverb}, in the math mode an active `shortverb' char -% expands to itself's `other' version thanks to |\string| (It's done -% with \verb+|+ in mind). \docfm's -% concept is different, there a~`shortverb' char should in the math -% mode work as shortverb. So let it be as they wish: \pk{gmverb} -% provides |\OldMakeShortVerb| and the old-style input commands change -% the inner macros so that also |\MakeShortVerb| works as in \docfm -% (cf.\ line \ref{oldmkshvrrb}). -% -% We also redefine the \env{macro} environment to make it mark the -% first code line as the point of defining of its argument, because -% \pk{doc.dtx} uses this environment also for implicit definitions. -% -% \changes[\OldMakeShortVerb]{v0.98a}{06/09/05}{and pals moved to -% \pk{gmverb}.} -%\Define\OldDocInput -% \changes{v0.98}{06/09/05}{\cs{@makeother\protect\bslash_} added} -% \changes{v0.98a}{06/09/05}{\cs{AtBegInput} changed into -% \cs{AtBegInputOnce}.} -% \changes{v0.98b}{06/09/07}{enrichments of the \env{macrocode›[*›]} -% definitions moved to the default definitions of these envs.} \def\OldDocInput{% \changes{v0.99g}{2007/11/11}{obsolete redefinition % of the \env{macro} environment removed} \AtBegInputOnce{\StraightEOL @@ -8149,65 +4243,10 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \bgroup\@makeother\_% it's to allow |_| in the filenames. The next % macro will close the group. \Doc@Input} -% We don't switch the |@codeskipput| switch neither we check it because -% in `old' world there's nothing to switch this switch in the -% narration layer. -% -% \stanza -% I~had a~hot and wild \TeX\ all the night and what a~bliss when -% the `Successfully formated 67 page(s)' message appeared. -% -% My package needed fixing some bugs and adding some compatibility -% adjustments (listed in the previous section) and the original -% \pk{doc.dtx} source file needed a~few adjustments too because some -% crucial differences came out. I'd like to write a~word about them now. -% -% \stanza -% The first but not least is that the author(s) of \docfm\ give the -% \CS marking commands non-macro arguments sometimes, e.g., -% |\DescribeMacro{StandardModuleDepth}|. Therefore we should launch -% the \emph{starred} versions of corresponding \gmdoc\ commands. This -% means the \docfm-like commands will not look for the \CS's occurrence -% in the code but will mark the first codeline met. -% \stanza -% -% Another crucial difference is that in \gmdoc\ the narrative and the -% code layers are separated with only the code delimiter and -% therefore may be much more mixed than in \docfm. among others, the \env{macro} -% environment is \emph{not} a~typical \env{verbatim} like: the texts -% commented out within \env{macrocode} are considered a~normal -% commentary i.e., not verbatim. Therefore some macros `commented out' -% to be shown verbatim as an example source must have been `additionally' -% verbatimized for \gmdoc\ with the shortverb chars e.g.\ You may also -% change the code delimiter for a~while, e.g., the line -% \CodeDelim\. -% \AVerySpecialMacro % delete the first % when.\unskip|..|\par\CDPerc -% -% \gmdnoindent\label{AVerySpecialMacro} -% was got with -% \begin{verbatim} -%\CodeDelim\. %% \AVerySpecialMacro % delete the first % when.\unskip|..|\CDPerc -%\end{verbatim} -% -% \leftskip0sp\relax -% One more difference is that my shortverb chars expand to their -% \catother\ versions in the math mode while in \docfm\ remain -% shortverb, so I~added a~declaration |\OldMakeShortVerb| etc. -% -% \stanza -% Moreover, it's \TeX ing \docfm\ what inspired adding the -% |\StraightEOL| and |\QueerEOL| declarations. -% -% \division{\cs{OCRInclude}} -% I~realised that I~want to print all my \TeX\ source files verbatim -% just in case my computers and electronic memories break so that -% I~can reconstruct them via \ac{OCR} . For this purpose I~provide -% \cmd\OCRInclude. It takes the same arguments as |\DocInclude| only -% typesets a~file with no index nor line numbers. \DeclareCommand\OCRInclude{O{}mO{}}{% - \StoreMacro\incl@DocInput + \Store@Macro\incl@DocInput \def\incl@DocInput##1{% \begingroup \CodeSpacesBlank @@ -8216,230 +4255,30 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc} \noverbatimspecials \relaxen\@xverbatim \relaxen\check@percent - \RestoreMacro\@verbatim + \Restore@Macro\@verbatim \verbatimleftskip\z@skip \verbatim \@makeother\|% because |\ttverbatim| doesn't do that. \texcode@hook% we add some special stuff, e.g.\ in \pk{gmdocc.cls} we \@input{##1}% \endgroup}% - \csname\string\DocInclude\endcsname{#1}{#2}{#3}% - \RestoreMacro\incl@DocInput + \csname\@dc@InnerName\DocInclude\endcsname{#1}{#2}{#3}% + \Restore@Macro\incl@DocInput } -% -% -% \division{Polishing, development and bugs} -% -% \begin*{bulletpars} -% \everypar{$\bullet$ } -% \label{Tasks}|\MakePrivateLetters| theoretically may interfere -% with |\active|ating some chars to allow line breaks. But making -% a~space or an opening brace a~letter seems so perverse that we may -% feel safe not to take account of such a~possibility. -% -% When |countalllines*| option is enabled, the comment lines -% that don't produce any printed output result with a~(blank) line too -% because there's put a~hypertarget at the beginning of them. But for -% now let's assume this option is for draft versions so hasn't be -% perfect. -% -% Marcin Woli\nacute ski suggests to add the marginpar clauses for the -% \acro{AMS} classes as we did for the standard ones in the lines -% \ref{mparclause1}--\ref{mparclause2}. Most probably I~can do it on -% request when I~only know the classes' names and their `marginpar -% status'. -% -% When the |countalllines*| option is in force, some |\list| -% environments shall raise the `missing |\item|' error if you don't -% put the first |\item| in the same line as -% |\begin{|\<environment>|}| because the (comment-) line number is -% printed.^^A~\end{} -% -% I'm prone to make the control sequences hyperlinks to the(ir) -% `definition' occurrences. It doesn't seem to be a~big work compared -% with what has been done so far. -% -% Is |\RecordChanges| really necessary these days? Shouldn't be the -% |\makeglossary| command rather executed by default?\footnote{It's ^^B -% understandable that ten years earlier writing things out to the files ^^B -% remarkably decelerated \TeX, but nowadays it does not in most ^^B -% cases. That's why \cs{makeindex} is launched by default in \gmdoc.} -% -% Do you use |\listoftables| and/or |\listoffigures| in your -% documentations? If so, I~should `\acro{EOL}-straighten' them like -% |\tableofcontents|, I~suppose (cf.\ line \ref{straighttoc}). -% -% Some lines of non-printing stuff such as |\Define›…| and -% |\changes| connecting the narration with the code resulted with -% unexpected large vertical space. Adding a~fully blank line between -% the printed narration text and not printed stuff helped. -% -% Specifying |codespacesgrey, codespacesblank| results in typesetting -% all the spaces grey including the leading ones. -% -% -% About the \ds\ \gmiflink{verbatim mode directive} see above. -% -% \end{bulletpars} -% \ \par\vspace*{-\baselineskip} -% -% \def\EOFMark{\<eof>} -% \division{{\mch[No\mch]} \EOFMark} -% -% Until version 0.99i -% a~file that is |\DocInput| had to be ended with a~comment line with -% an |\EOF| or |\NoEOF| \CS that -% suppressed the end-of-file character to make input end -% properly. Since version 0.99i however the proper ending of input is -% achieved with |\everyeof| and therefore |\EOF| and |\NoEOF| become -% a~bit obsolete. -% -% If the user doesn't wish the documentation to be ended by -% `\EOFMark', \heshe\ should redefine the |\EOFMark| \CS or end the -% file with a~comment ending with |\NoEOF| macro defined -% below\qfootnote{Thanks to Bernd Raichle at Bacho\TeX\ 2006 Pearl -% % Session where he presented \cs{input}ing a~file inside -% \cs{edef}.}: -% \foone{\catcode`\^^M\active }{% \def\@NoEOF#1^^M{% - \@relaxen\EOFMark\endinput}% - \def\@EOF#1^^M{\endinput}} + \@relaxen\EOFMarkⵢendinput}% + \def\@EOF#1^^M{ⵢendinput}} \def\NoEOF{\QueerEOL\@NoEOF} \def\EOF{\QueerEOL\@EOF} -% \changes{v0.98}{06/09/05}{extended to add it the \cs{endinput} effect} -% \changes{v0.98l}{06/10/27}{divided in two macros first of which -% makes queer \acro{EOL} and the latter gobbles the stuff till the \acro{EOL} to -% suppress possible \cs{endinput} when used in \cs{StopEventually}} -% \label{NoEOF} As you probably see, |\›[No›]EOF| have the `immediate' -% |\endinput| effect: the file ends even in the middle of a~line, the -% stuff after \cs{(No)EOF} will be gobbled unlike with a~bare -% |\endinput|. - - - - -\endinput -%^^A~\docstrip -%</package> -%\PrintChanges \PrintIndex -% -% -%^^A~place for general changes: -% \ChangesGeneral -% -% \changes{v0.98a}{06/09/06}{\cs{AtBeginput}, \cs{AtEndinput}, -% \cs{AtBeginputOnce} renamed to \cs{AtBegInput}, \cs{AtEndInput} -% \cs{AtBegInputOnce} respect.} -% -% \changes{v0.98c}{06/9/9}{making \cs{Define} and \cs{CodeUsage} -% markers to add up; bug fixes in indexing macros and change of -% concept of \cs{Code(Define$\quotechar|$Usage)*}: hence they serve not only for -% environments but also for implicit def/use of macros} -% -% \changes{v0.98d}{06/9/11}{mostly editing the narrative, marking -% special index entries etc.; queering \cs{char1} and \cs{char2} -% repeated \cs{AtBegInput}} -% -% \changes{v0.98e}{06/09/24}{Some macros moved to \pk{gmutils}: -% \cs{cs} and pals and one-chars with queer \cs{catcode}s} -% -% \changes{v0.98f}{06/09/27}{A~bug fixed: \cs{Code@MarginizeMacro} set -% to define a~\CS and the corresponding test set to check if it's -% undefined. In all three such definitions and resets after the use, -% \cs{def} is changed to \cs{(g)let}} -% -% \changes{v0.98g}{06/10/10}{among others, \cs{discretionary}s for breaking -% a~\CS to percent at the beginning of the lower line. Moreover, fixing -% a~bug/feature that leaves the code leftskip in the narration when an -% in-line comment is followed by another codeline (w.o.\ explicit -% \cs{par}). And lots of finishing touches to the text. A~special font -% for the marginpar \CSs among others} -% -% \changes{v0.98l}{06/10/26}{in \cs{AtBegInputOnce} an auxiliary macro -% for each use substituted with one macro added at begin input. In -% \cs{gmd@evpaddonce} a~counter substituted with a~numeric -% macro. \cs{@ifQueerEOL} made polite i.e., a~two-argument not -% expanding to an open \cs{if›…}} -% -% \changes{v0.99}{06/11/24}{\env{oldmc›[*›]} implemented that's -% (hope)fully compatible with \docfm's \env{macrocode›[*›]}. Moreover, -% a~declaration letting \gmdoc's \env{macrocode} to \env{oldmc›[*›]}} -% -% \changes{v0.99a}{06/11/30}{The \ds\ directives implemented fully -% automatic (no more need of \cs{docstrip(s)} declarations). Moreover, -% some minor changes due to \TeX ing The Source.} -% -% \changes{v0.99b}{2007/01/01}{Thanks to the \cs{edverbs} declaration -% in the class, displayed shortverbs simplified; Emacs mode changed to -% doctex. Author's true name more exposed} -% -% \changes{v0.99c}{2007/03/02}{A~bug fixed in \cs{DocInput} and all -% \cs{expandafter}s changed to \cs{@xa} and \cs{noexpand}s to -% \cs{@nx}} -% -% \changes{v0.99c}{2007/03/12}{The \TeX-related logos now are declared -% with \cs{DeclareLogo} provided in \pk{gmutils}} -% -% \changes{v0.99d}{2007/04/13}{\cs{afterfi} \& pals made two-argument} -% -% \changes{v0.99d}{2007/04/24}{\cs{@namelet} renamed to \cs{n@melet} -% to solve a~conflict with the \pk{beamer} class (in \pk{gmutils} at -% first)} -% -% \changes{v0.99e}{2007/04/29}{a~bug fixed in \cs{DocInput} and -% \cs{IndexInput}} -% -% \changes{v0.99g}{2007/11/12}{The bundle goes \XeTeX. The -% \TeX-related logos now are moved to \pk{gmutils}. \hathat{A} -% becomes more comment-like thanks to re\cs{catcode}'ing. Automatic -% detection of definitions implemented} -% -% \changes{v0.99h}{2007/11/16}{Fixed behaviour of sectioning commands -% (optional two heading skip check) of \pk{mwcls/gmutils} and -% respective macro added in \pk{gmdocc}. I~made a~\file{tds} archive} -% -% \changes{v0.99i}{2008/08/03}{A~“feature not bug” fix: thanks to -% \cs{everyeof} the \cs{\mch[No\mch]EOF} is now not necessary at the end of -% \cs{DocInput} file.} -% -% \changes{v0.99m}{2008/08/08}{Counting of all lines developed (the -% \env{countalllines} package option), now it -% uses \cs{inputlineno}} -% -% \changes{v0.99n}{2008/08/24}{In-line comments' alignment developed} -% -% \chgs{2008/12/05 v0.99s \cs{gmd@ifinmeaning} moved to \pk{gmutils} -% and renamed to \cs{@ifinmeaning}} -% -% \chgs{2008/12/07 v0.99s \cmd\@bsphack---\cmd\@esphack\ added to -% \cmd\TextMarginize, \cmd\Describe, \cmd\DescribeMacro\ and -% \cmd\DescribeEnv} -% -% % \chgs{2010/03/01 v0.99t Since \pk{geometry} v.5.2 \pk{gmeometric} -% % is obsolete so was removed} -% -% \Finale - -% (For my GNU Emacs:) -%%% Local Variables: +%%% (For my GNU Emacs:) +%%% Local Variables: %%% mode: doctex -%%% mode: flyspell -%%% ispell-local-dictionary: "british" -%%% End: - -% LocalWords: onlypreamble defentryze MarginizeMacro NoEOF UsgMacro UsgEnvir -% LocalWords: indexmacro indexenvir estomarginpar tomarginpar toindex DefIndex -% LocalWords: DefIndexStar usgentryze UsgIndex UsgIndexStar estoindex justadot -% LocalWords: CommonIndex CommonIndexStar isaCS MarginizeCS marginparsused ea -% LocalWords: MarginizeNext DefEnvir defentryzed KVOfamily delim dolspaces -% LocalWords: DoTeXCodeSpace continuenarration setclubpenalty LocalWords bwrap -% LocalWords: ewrap PrintEnvName DefMacro MarginizeEnv lasthook texcodespace -% LocalWords: pname charbychar firstpar docincludeaux writemauxinpaux mainaux -% LocalWords: writeckpt variousauthors ifauthor variousauthorsfalse textEOL -% LocalWords: variousauthorstrue beginputhook aftercodegtrue CheckSum -% LocalWords: StopEventually -4
\ No newline at end of file +%%% coding: utf-8 +%%% End: +\endinput +%% +%% End of file `gmdoc.sty'. diff --git a/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls b/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls index ff4015c5963..36344bf900c 100644 --- a/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls +++ b/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls @@ -1,57 +1,38 @@ -% -% \GetFileInfo{gmdocc.cls} -% \title{The \pk{gmdocc} Class For \pk{gmdoc} Driver Files\thfileinfo} -% \author{Natror (Grzegorz Murzynowski)} -% \maketitle -% -% \begin{copyrnote} -% -%% Written by Natror (Grzegorz Murzynowski), -%% natror at o2 dot pl +%% +%% \iffalse ^^A we skip the debug setting +\IfFileExists{\string~/bin/gen_and_xela}{\errorcontextlines=1000 }{} +%% \fi +%% ^^A $Id: TheUltimateMaster.gmd,v 0.250 2010/10/24 14:42:35 natror Exp natror $ +%% This is file “gmdocc.cls” generated with the DocStrip utility. +%% %% -%% ©\,2006–2010 by Natror (Grzegorz Murzynowski). +%% The original source files were: %% -%% This program is subject to the \LaTeX\ Project Public License. -%% See ^^A -%% \url{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html} ^^A -%% for the details of that license.\rrthis +%% gmdoc/gmdoc.gmd (with options: `docc') %% -%% LPPL status: "author-maintained".\par +%% +%% Copyright © +%% by Grzegorz ‘Natror’ Murzynowski +%% natror (at) o2 (dot) pl +%% +%% 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. %% -% -%\end{copyrnote} -% -% \RecordChanges -% \ChangesStart{v0.677}{1000/00/00} -% -% \chschange{v0.69}{06/10/1}{81} -% \chschange{v0.70}{06/10/10}{98} -% \chschange{v0.71}{06/10/21}{114} -% \chschange{v0.72}{06/11/14}{122} -% \chschange{v0.73}{06/12/1}{128} -% \chschange{v0.75}{2007/3/2}{130} -% \chschange{v0.76}{2007/11/13}{257} -% \chschange{v0.77}{2007/11/16}{262} -% \chschange{v0.78}{2007/11/19}{267} -% \chschange{v0.79}{2008/8/3}{271} -% \chschange{v0.79}{2008/8/9}{271} -% \chschange{v0.80}{2008/8/30}{276} -% \chschange{v0.80}{2008/10/8}{275} -% \toCTAN{2008/11/22 v0.81} -% \chschange{v0.82}{2008/12/2}{320} -% \chschange{v0.82}{2008/12/10}{303} -% \chschange{v0.82}{2008/12/14}{316} -% [\cmd\verbatimspecials, hyphenation in verbatims etc.] -% \chschange{v0.83}{2010/3/2}{332} -% [abandoning \pk{gmeometric} since \pk{geometry} v.5.2 provides -% \cmd\newgeometry] - +%% LPPL status: "author-maintained". +%% +%% +%% +%% For the documentation please refer to the file(s) +%% gmdoc.{gmd,pdf}. +%% +%% \NeedsTeXFormat{LaTeX2e} \ProvidesClass{gmdocc} - [2010/03/02 v0.84 a class for gmdoc driver files (GM)] + [2010/08/15 v0.993 a class for gmdoc driver files (GM)] -% -% \division{Intro} + +%% %% %% This file is a~part of \pk{gmdoc} bundle and provides a~document %% class for the driver files documenting \LaTeXpar\ packages \&a.\ @@ -62,137 +43,22 @@ %% option and \pk{lmodern} package with T1 fontencoding. It loads also %% my \pk{gmdoc} documenting package which loads some auxiliary %% packages of mine and the standard ones. -%% +%% %% If the \pk{mwart} class is not found, the standard \pk{article} %% class is loaded instead. Similarly, if the \pk{lmodern} is not %% found, the standard Computer Modern font family is used in the %% default font encoding. -%% -% -% \division{Usage} -% -% For the ideas and details of \pk{gmdoc}ing of the \LaTeXpar\ files -% see the \pk{gmdoc.sty} file's documentation (chapter \ref{gmd}). The -% r\ocircum le of the \pk{gmdocc} document class is rather auxiliary and -% exemplary. Most probably, you may use your favourite document class -% with the settings you wish. This class I~wrote to meet my needs of -% fine formatting, such as not numbered sections and sans serif demi -% bold headings. -% -% However, with the users other than myself in mind, I~added some -% conditional clauses that make this class works also if an \pk{mwcls} -% class or the \pk{lmodern} package are unknown. \dekmedskip -% -% Of rather many options supported by \pk{gmdoc.sty}, this class -% chooses my favourite, i.e., the default. An exception is made for -% the \TextUsage*{noindex} option, which is provided by this class and -% passed to \pk{gmdoc.sty}. This is intended for the case you don't -% want to make an index. -% -% Simili modo, the \TextUsage*{nochanges} option is provided to turn -% creating the change history off. -% -% Both of the above options turn the \emph{writing out to the files} -% off. They don't turn off |\PrintIndex| nor |\PrintChanges|. (Those -% two commands are no-ops by themselves if there's no \file{.ind} -% (n)or \file{.gls} file respectively.) -% \dekmedskip -% -% One more option is \TextUsage*{outeroff}. It's intended for -% compiling the documentation of macros defined with the |\outer| -% prefix. It |\relax|es this prefix so the `|\outer|' macros' names can -% appear in the arguments of other macros, which is necessary to -% pretty mark and index them. -% -% I~decided not to make discarding |\outer| the default because -% it seems that \LaTeX\ writers don't use it in general and -% \pk{gmdoc.sty} \emph{does} make some use of it. -% \dekmedskip -% -% This class provides also the \TextUsage*{debug} option. It turns the -% |\if@debug| Boolean switch True and loads the \pk{trace} package that -% was a~great help to me while debugging \pk{gmdoc.sty}. -% \dekmedskip -% -% The default base document class loaded by \pk{gmdocc.cls} is Marcin -% Woli\nacute ski \pk{mwart}. If you have not installed it on your -% computer, the standard \pk{article} will be used. -% -% Moreover, if you like MW's classes (as I~do) and need |\chapter| -% (for multiple files' input e.g.), you may declare another \pk{mwcls} -% with the option homonymic with the class's name: \TextUsage*{mwrep} -% for \pk{mwrep} and \TextUsage*{mwbk} for \pk{mwbk}. For the symmetry -% there's also \TextUsage*{mwart} option (equivalent to the default -% setting). -% -% The existence test is done for any MW class option as it is in the -% default case. -% -% Since version 0.99g (November 2007) the bundle goes \XeTeX\ and that -% means you can use the system fonts if you wish, just specify the -% \TextUsage*{sysfonts} option and the three basic \XeTeX-related -% packages (\pk{fontspec}, \pk{xunicode} and \pk{xltxtra}) will be -% loaded and then you can specify fonts with the \pk{fontspec} -% declarations. For use of them check the driver of this documentation -% where the \TeX\ Gyre Pagella font is specified as the default Roman. -% -% \stanza There are also some options for mono and sans fonts, see the -% changes history for details. -% -% The \TextUsage*{minion} option sets Adobe Minion Pro as the main -% font, the \TextUsage*{pagella} sets \TeX\ Gyre Pagella as the main -% font. -% -% The \TextUsage*{cronos} option sets Adobe Cronos Pro as the -% sans serif font, the \TextUsage*{trebuchet} option sets \ac{MS} -% Trebuchet as sans serif. -% -% The \TextUsage*{cursor} (working only -% with \XeTeX\ \& \pk{fontspec}) option sets \TeX\ Gyre Cursor as the -% typewriter font. It emboldens it to the optical weight of -% Computer/Latin Modern Mono in the code (|embolden=2.5|) and leaves -% light (|embolden=1|) for verbatims in the narrative. Moreover, this -% option also prepares a~condensed version (|extend=0.87|) for -% verbatims in the marginpars. -% -% Note that with no option for the monospaced font the default (with -% \XeTeX) will be Latin Modern Mono and then Latin Modern Mono Light -% Condensed is set for verbatims in marginpars (if available). -% -% \stanza -% This class sets -% \TextUsage\verbatimspecials{\noverbatimspecials|⁄«»[¿]|} if the -% engine is \XeTeX, see the -% \pk{gmverb} documentation to learn about this declaration. Remember -% that |\verbatimspecials| whatever would they be, have no effect on -% the code layer. -% -% \stanza -% The \TextUsage\EOFMark\ in this class typesets like this (of -% course, you can redefine it as you wish):\par\EOFMark -% -% \StopEventually\NoEOF -% -% \division{The Code} +%% + +\PassOptionsToPackage{rgb}{xcolor} \RequirePackage{xkeyval} -% A~shorthands for options processing (I~know \pk{xkeyval} to little -% to redefine the default prefix and family). -% \HideDefining\DeclareOptionX \newcommand*\gm@DOX{\DeclareOptionX[gmcc]<>} \newcommand*\gm@EOX{\ExecuteOptionsX[gmcc]<>} -% \ResumeDefining\DeclareOptionX -% \DeclareDefining*[prefix=\bslash gmcc@]\gm@DOX - -% We define the |class| option. I~prefer the \pk{mwcls}, but you can -% choose anything else, then the standard \pk{article} is loaded. -% Therefore we'd better provide a~Boolean switch to keep the score of -% what was chosen. It's to avoid unused options if \pk{article} is -% chosen. + \newif\ifgmcc@mwcls -% Note that the following option defines |\gmcc@class#1|. \gm@DOX{class}{% the default will be Marcin Woli\nacute ski class % (\pk{mwcls}) analogous to \pk{article}, see line \ref{EOXmwart}. \def\gmcc@CLASS{#1}% @@ -201,85 +67,32 @@ } \gm@DOX{mwart}{\gmcc@class{mwart}}% The \pk{mwart} class may also -% be declared explicitly. \gm@DOX{mwrep}{\gmcc@class{mwrep}}% If you need -% chapters, this option chooses an MW class that corresponds to -% \pk{report}, \gm@DOX{mwbk}{\gmcc@class{mwbk}}% and this MW class -% corresponds to \pk{book}. \gm@DOX{article}{\gmcc@class{article}}% you can also -% \emph{choose} \pk{article}. -% A~meta-remark: When I~tried to do the most natural thing, to -% |\ExecuteOptionsX| inside such declared option, an error occurred: -% 'undefined control sequence \inverb|\XKV@resa -> \@nil|'. - - \gm@DOX{outeroff}{\let\outer\relax}% This option allows -% |\outer|-prefixed macros to be \pk{gmdoc}-processed with all the -% bells and whistles. \newif\if@debug \gm@DOX{debug}{\@debugtrue}% This option causes \pk{trace} to -% be loaded and the Boolean switch of this option may be used to hide -% some things needed only while debugging. - \gm@DOX{noindex}{% \PassOptionsToPackage{noindex}{gmdoc}}% This -% option turns the writing out to \file{.idx} file off. - \newif\if@gmccnochanges \gm@DOX{nochanges}{\@gmccnochangestrue}% This option turns the -% writing out to \file{.glo} file off. - - -% ^^A \gm@DOX{gmeometric}{}% The \pk{gmeometric} package -% ^^A % causes the |\geometry| macro provided by \pk{geometry} package -% ^^A % is not restricted to the preamble. -% ^^A % -% ^^A % Since version 0.99g of \pk{gmdoc} the bundle goes \XeTeX\ and that -% ^^A % means \pk{geometry} should be loaded with |dvipdfm| option and the -% ^^A % |\pdfoutput| counter has to be declared and that's what -% ^^A % \pk{gmeometric} does by default if with \XeTeX. And \pk{gmeometric} -% ^^A % has passed enough practical test. Therefore the |gmeometric| option -% ^^A % becomes obsolete and the package is loaded always instead of -% ^^A % original \pk{geometry}. -% -% ^^A~As already mentioned, -% Since version -% 0.99g the \pk{gmdoc} bundle goes \XeTeX. That means that if \XeTeX\ -% is detected, we may load the \pk{fontspec} package and the other two -% of basic three \XeTeX-related, and then we |\fontspec| the fonts. -% But the default remains the old way and the new way is given as the -% option below. + \newif\ifgmcc@oldfonts \gm@DOX{sysfonts}{\gmcc@oldfontsfalse} -%^^A % Now we define a~key-val option that sets the version of marginpar -%^^A % typewriter font definition (relevant only with the |sysfonts| -%^^A % option). 0 for OpenType \acro{LMTT LC} visible for the system (not on my -%^^A % computer), 1 for \acro{LMTT LC} specially on my computer, any else number to avoid an -%^^A % error if you don't have OpenType \acro{LMTT LC} installed (and leave the -%^^A % default \pk{gmdoc}'s definition of |\marginpartt|; all the versions -%^^A % allow the user to define marginpar typewriter \himher self). \gm@DOX{mptt}[17]{\relax}% now a~no-op, left only for backwards -% compatibility. It was an option for setting the marginpar -% typewriter font. -%^^A % ^^A~\def\mpttversion{#1} -%^^A % the default value (17) works if -%^^A % the user puts the |mptt| option with no value. In that case leaving -%^^A % the default \pk{gmdoc}'s definition of marginpar typewriter and -%^^A % letting the user to redefine it \himher self seemed to me most natural. - \def\gmcc@tout#1{\typeout{^^J@@@@ gmdocc class: #1^^J}} @@ -301,7 +114,7 @@ % ^^A % and \incs{textsl} with \incs{def} to allow consistent font % ^^A % change later. \@xa\defaultfontfeatures\@xa{\gmcc@dff, Scale=MatchLowercase}%\ - % when put before \incs{setmainfont}, + % when put before \incs{setmainfont}, \gmath \def\LineNumFont{% \chgs{2008/11/30 v0.82 added} \normalfont\scriptsize\addfontfeature{Numbers=Monospaced}}% @@ -339,89 +152,57 @@ ]{TeX Gyre Cursor}% \def\marginpartt{\tt\addfontfeature{FakeBold=2, FakeStretch=0.609}% - \color{black}}% to provide proper color when marginpar occurs + \color{black}}% to provide proper color when marginpar occurs % between lines that break a~coloured text. \def\narrativett{\ttfamily\addfontfeature{FakeBold=1}}% \let\UrlFont\narrativett }% of |\AtEndOfClass|. }% of the |cursor| option. - - - - \gm@DOX{fontspec}{\PassOptionsToPackage{#1}{fontspec}} -% \changes{v0.80}{2008/08/30}{added} - \gm@EOX{class=mwart}% \label{EOXmwart}We set the default basic class to -% be \pk{mwart}. -%^^A \gm@EOX{mptt=0}% We default to set the marginpar typewriter font to -%^^A % OpenType \acro{LMTT LC}. -\PassOptionsToPackage{countalllines}{gmdoc}% \chgs[countalllines]{2008/11/30 -% v0.82 \pk{gmdoc} option here executed by % default} +\newif\if@gmcc@tikz@ +\gm@DOX{tikz}{\@gmcc@tikz@true} + +\PassOptionsToPackage{countalllines}{gmdoc}% \chgs[countalllines]{2008/11/30 -% \HideDefining\DeclareOptionX \DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{gmdoc}} \ProcessOptionsX[gmcc]<> -%^^A \nameshow{\@currname.\@currext-h@@k} +\long\def\@gobble#1{} +\long\def\@firstofone#1{#1} +\if@gmcc@tikz@\expandafter\@firstofone\else\expandafter\@gobble\fi +{\RequirePackage{tikz}} -% \newif\ifSecondClass^^A~to assure \TeX knows ifSecondClass -% ^^A switch and therefore it counts the |\fi|s properly. -% \iffalse It's for cooperation with my another class. (Feature under -% construction.) \XKV@ifundefined{ifSecondClass}{% \newif\ifSecondClass}{} -%\fi\fi - -% \skiplines \ifSecondClass\else -% \endskiplines \ifgmcc@mwcls \IfFileExists{\gmcc@CLASS.cls}{}{\gmcc@mwclsfalse}% As % announced, we do the ontological test to any \pk{mwcls}. -\fi +\fi \ifgmcc@mwcls -%^^A \XKV@ifundefined{XeTeXdefaultencoding}{}{% -%^^A \XeTeXdefaultencoding "cp1250"}% \pk{mwcls} are encoding-sensitive -%^^A % because MW uses Polish diacritics in the commentaries. \LoadClass[fleqn, oneside, noindentfirst, 11pt, withmarginpar, - sfheadings]{\gmcc@CLASS}% -%^^A \XKV@ifundefined{XeTeXdefaultencoding}{}{% -%^^A \XeTeXdefaultencoding "utf-8"}% + sfheadings]{\gmcc@CLASS}% \else \LoadClass[fleqn, 11pt]{article}% Otherwise the standard \pk{article} is - % loaded. + % loaded. \fi -% \skiplines \fi -% of |\ifSecondClass|'es \cs{else} (a~feature under construction).\endskiplines - - -\RequirePackage{gmutils}[2008/10/08]% we load it early to provide -% \incs{@ifXeTeX}, but after loading the base class since this package -% redefines some environments. +\RequirePackage[mw=on]{gmutils}[2008/10/08]% we load it early to provide \ifgmcc@mwcls\afterfi\ParanoidPostsec\fi - \@ifXeTeX{}{\gmcc@oldfontstrue} -% \label{ofstrue} \AtBeginDocument{\mathindent=\CodeIndent} -% The |fleqn| option makes displayed formul\ae\ be flushed left and -% |\mathindent| is their indentation. Therefore we ensure it is always -% equal |\CodeIndent| just like |\leftskip| in \env{verbatim}. Thanks -% to that and the |\edverbs| declaration below you may display single -% verbatim lines with |\[...\]|: -% \[\verb+\[|\verbatim\stuff|\]+\,.\] \ifgmcc@oldfonts \IfFileExists{lmodern.sty}{% We also examine the ontological status of @@ -431,9 +212,6 @@ % font encoding. \RequirePackage[T1]{fontenc}% }{}% -% A~couple of diacritics I~met while \pk{gmdoc}ing{} these files and The -% Source etc. Some why the accents didn't want to work at my \XeTeX\ -% settings so below I~define them for \XeTeX\ as respective chars. \def\agrave {\`a}% \def\cacute {\'c}% \def\eacute {\'e}% @@ -464,20 +242,17 @@ }% \fi -% Now we set the page layout. \RequirePackage{geometry} \def\gmdoccMargins@params{{top=77pt, height=687pt, % =53 lines but the % |lines| option seems not to work 2007/11/15 with \TeX\ Live 2007 - % and \XeTeX 0.996-patch1 + % and \XeTeX 0.996-patch1 left=4cm, right=2.2cm}} \def\gmdoccMargins{% \@xa \newgeometry\gmdoccMargins@params} \@xa\geometry\gmdoccMargins@params - \if@debug% For debugging we load also the \pk{trace} package that was -% very helpful to me. \RequirePackage{trace}% \errorcontextlines=100 % And we set an error info parameter. \fi @@ -485,7 +260,6 @@ \newcommand*\ifdtraceon{\if@debug\afterfi\traceon\fi} \newcommand*\ifdtraceoff{\if@debug\traceoff\fi} -% We load the core package: \RequirePackage{gmdoc} \ifgmcc@oldfonts @@ -497,103 +271,68 @@ \def\marginpartt{\fontspec{LMTypewriter10 LightCondensed}}% \fi -%^^A \ifnum1=0\csname gmcc@PAGELLA\endcsname\relax -%^^A \RequirePackage{pxfonts,tgpagella,qpxmath}% -%^^A \fi \raggedbottom \setcounter{secnumdepth}{0}% We wish only the parts and chapters to be -% numbered. \renewcommand*\thesection{\arabic{section}}% isn't it redundant at the -% above setting? \@ifnotmw{}{% \@ifclassloaded{mwart}{% We set the indentation of Contents: \SetTOCIndents{{}{\quad}{\quad}{\quad}{\quad}{\quad}{\quad}}}{% for \pk{mwart} …\ilrr \SetTOCIndents{{}{\bf9.\enspace}{\quad}{\quad}{\quad}{\quad}{\quad}}}% and for the two other \pk{mwcls}s. \ilrr \pagestyle{outer}}% We set the page numbers to be printed in the -% outer and bottom corner of the page. \def\titlesetup{\bfseries\sffamily}% We set the title(s) to be -% boldface and sans serif. \if@gmccnochanges\let\RecordChanges\relax\fi% If the |nochanges| -% option is on, we discard writing out to the \file{.glo} file. \RecordChanges% We turn the writing the |\changes| out to the -% \file{.glo} file if not the above. -% \CodeUsgIndex\dekclubs \CodeUsgIndex\smartunder +\RequirePackage{amsfonts} +\RequirePackage[intlimits]{amsmath} +\RequirePackage{amssymb} + \dekclubs*% We declare the club sign \verb+|+ to be a~shorthand for -% |\verb*|\,. -% \changes[\edverbs]{v0.74}{2007/01/01}{used to simplify displaying -% shortverbs} \edverbs% to redefine |\[| so that it puts a~shortverb in a~|\hbox|. \smartunder% and we declare the |_| char to behave as usual in the -% math mode and outside math to be just an underscore. \exhyphenpenalty\hyphenpenalty% 'cause \pk{mwcls} set it |=10000| due -% to Polish customs. - -%^^A\VerbT1% to ensure T1 font encoding in verbatims (in code). -\RequirePackage{amssymb} \def\EOFMark{\rightline{\ensuremath{\square}}} \DoNotIndex{\@nx \@xa %^^A\count \dimen \box \setbox \copy } \provide\ac{\acro} -% \chgs{2008/11/30 v0.82 added} -\def\+{\-\hskip\z@\penalty\@M} % a~discretionary hyphen that allows -% further hyphenation +\def\+{\-\penalty\@M\hskip\z@} % a~discretionary hyphen that allows \Xedekfracc - \let\mch\metachar \ATfootnotes \AtBegInput{\ATfootnotes} - \UrlFix \GMverbatimspecials -\let\texcode@hook\makestarlow +\def\texcode@hook{\makestarlow} + +\let\lv\leavevmode +\CommandLet\ac\acro + +\def\OK{\acro{OK}\spifletter} -\endinput -% \changes{v0.677}{06/9/23}{Added checkings if \pk{mwart.cls} and -% \pk{lmodern.sty} are available and more standard behaviour if they -% are not} -% -% \changes{v0.70}{06/10/10}{Added some options and Latin Modern Light -% Condensed to the marginpar CSs.} -% -% \changes{v0.76}{2007/10/30}{The \cs[]{gmeometric} option made -% obsolete and the \pk{gmeometric} package is loaded always, for -% \XeTeX-compatibility. And the class options go \pk{xkeyval}.} -% -% \changes{v0.77}{2007/11/16}{Bug fix of sectioning commands in -% \pk{mwcls} and the default font encoding for \TeX ing old way -% changed from \acro{QX} to \acro{T1} because of the `corrupted -% \acro{NTFS} tables' error} -% -% \changes{v0.78}{2007/11/19}{Added the \env{pagella} option not to -% use Adobe Minion Pro that is not freely licensed} -% -% -% \Finale - -% (For my GNU Emacs:) -%%% Local Variables: -%%% mode: doctex -%%% mode: flyspell -%%% ispell-local-dictionary: "british" -%%% End: -% LocalWords: lowstar +%%% (For my GNU Emacs:) +%%% Local Variables: +%%% mode: doctex +%%% coding: utf-8 +%%% End: +\endinput +%% +%% End of file `gmdocc.cls'. |