summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-12-19 01:04:11 +0000
committerKarl Berry <karl@freefriends.org>2006-12-19 01:04:11 +0000
commit9a09aff4683470dfbaa491c0e38b230f6c88b6d9 (patch)
tree8fcb8e66e0a1d0ba202f74f7786a5e643a8b98ec /Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls
parent1103128be3749c33d08fd931e52a0b4f07080207 (diff)
new package gmdoc (18dec06)
git-svn-id: svn://tug.org/texlive/trunk@2803 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls')
-rw-r--r--Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls307
1 files changed, 307 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls b/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls
new file mode 100644
index 00000000000..a03d4c4aa43
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gmdoc/gmdocc.cls
@@ -0,0 +1,307 @@
+%
+% \GetFileInfo{gmdocc.cls}
+% \title{The \pk{gmdocc} Class For \pk{gmdoc} Driver Files\thfileinfo}
+% \author{Grzegorz `Natror' Murzynowski}
+% \maketitle
+%
+% \begin{copyrnote}
+%
+%%Written by Grzegorz `Natror' Murzynowski,
+%% natror at o2 dot pl
+%%
+%% \copyright\,2006 by Grzegorz `Natror' Murzynowski.
+%%
+%% This program is subject to the \LaTeX\ Project Public License.
+%% See ^^A
+%% \url{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html} ^^A
+%% for the details of that license.
+%%
+%% LPPL status: "author-maintained".\par
+%%
+%
+%\end{copyrnote}
+%
+% \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}
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{gmdocc}
+ [2006/12/01 v0.73 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.\
+%% with my \pk{gmdoc.sty} package. It's not necessary, of course: most
+%% probably you may use another document class you like.
+%%
+%% By default this class loads \pk{mwart} class with a4paper (default)
+%% option and \pk{lmodern} package with QX 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\^ole 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\'nski's \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 homonimic with the class'es 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.
+%
+% \stanza
+% The \TextUsage\EOFMark\ is in this class typesets like this (of
+% course, you can redefine it as you wish):\par\EOFMark
+%
+% \StopEventually\NoEOF
+%
+% \division{The Code}
+
+% \CodeDefIndex\gmcc@baseclass
+\def\gmcc@baseclass{mwart}% the default is Marcin Woli\'nski's class (\pk{mwcls})
+% analogous to \pk{article}.
+
+% Since you can choose the standard \pk{article} class, 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.
+%\CodeDefIndex*{gmcc@mwcls}
+\newif\ifgmcc@mwcls
+\gmcc@mwclstrue
+% \CodeDefine*{mwart}
+\DeclareOption{mwart}{\def\gmcc@baseclass{mwart}}% The \pk{mwart} class may also
+% be declared explicitly.
+% \CodeDefine*{mwrep}
+\DeclareOption{mwrep}{\def\gmcc@baseclass{mwrep}}% If you need
+% chapters, this option chooses an MW's class that corresponds to
+% \pk{report},
+% \CodeDefine*{mwbk}
+\DeclareOption{mwbk}{\def\gmcc@baseclass{mwbk}}% and this MW's class
+% corresponds to \pk{book}.
+% \CodeDefine*{article}
+\DeclareOption{article}{\gmcc@mwclsfalse}% you can also
+% \emph{choose} \pk{article}.
+
+
+% \CodeDefine*{outeroff}
+\DeclareOption{outeroff}{\let\outer\relax}% This option allows
+% |\outer|-prefixed macros to be \pk{gmdoc}-processed with all the
+% bells and whistles.
+
+% \CodeDefine\if@debug
+\newif\if@debug
+% \CodeDefine*{debug}
+\DeclareOption{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.
+
+% \CodeDefine*{noindex}
+\DeclareOption{noindex}{%
+ \PassOptionsToPackage{\CurrentOption}{gmdoc}}% This
+% option turns the writing outto \file{.idx} file off.
+
+% \CodeDefIndex\if@gmccnochanges
+% \CodeDefIndex*\@gmccnochangestrue
+% \CodeDefIndex*\@gmccnochangesfalse
+\newif\if@gmccnochanges
+% \CodeDefine*{nochanges}
+\DeclareOption{nochanges}{\@gmccnochangestrue}% This option turns the
+% writing outto \file{.glo} file off.
+
+% \CodeDefine*{gmeometric}
+\def\gmTheGeometry{geometry}
+\DeclareOption{gmeometric}{%
+ \IfFileExists{gmeometric.sty}{%
+ \def\gmTheGeometry{gmeometric}}{}}% It's an experimental option
+% that causes the |\geometry| macro provided by \pk{geometry} package
+% is not restricted to the preamble. This option causes the
+% \pk{gmeometric} package is loaded (if available) that works the
+% limitation around.
+
+
+\ProcessOptions
+
+% \newif\ifSecondClass^^A~to assure \TeX knows ifSecondClass
+% ^^A switch and therefore it counts the fis properly.
+% \iffalse It's for cooperation with my another class. (Feature under
+% construction.)
+\@ifundefined{ifSecondClass}{%
+ \newif\ifSecondClass}{}
+%\fi\fi
+
+%\iffalse
+\ifSecondClass\else
+%\fi\fi
+\ifgmcc@mwcls
+ \IfFileExists{\gmcc@baseclass.cls}{}{\gmcc@mwclsfalse}% As
+ % announced, we do the ontological test to any \pk{mwcls}.
+\fi
+\ifgmcc@mwcls
+ \LoadClass[fleqn, oneside, noindentfirst, 11pt, withmarginpar,
+ sfheadings]{\gmcc@baseclass}%
+\else
+ \LoadClass[fleqn, 11pt]{article}% Otherwise the standard \pk{article} is
+ % loaded.
+\fi
+
+\AtBeginDocument{\mathindent=\CodeIndent}
+% The |fleqn| option makes displayed formuals 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 you may display single verbatim lines with |\[...\]|:
+% \[\hbox{\verb+\[\hbox{|\verbatim\stuff|}\]+\,.}\]
+
+\IfFileExists{lmodern.sty}{% We also examine the ontological status of
+ % this package
+ \RequirePackage{lmodern}% and if it shows to be satisfactory (the
+ % package shows \emph{to be}), we load it and set the proper
+ % font encoding.
+ \RequirePackage[QX]{fontenc}%
+}{}
+%\iffalse\iffalse
+\fi
+% of ifSecondClass (a~feature under construction).\fi
+
+\RequirePackage[margin=2.7cm, left=4cm,
+ right=2.2cm]{\gmTheGeometry}% Now we set the
+% page layout.
+
+\def\gmdoccMargins{%
+ \geometry{margin=2.7cm, left=4cm, right=2.2cm}}
+
+\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
+
+%\CodeDefine\ifdtraceon
+%\CodeDefine\ifdtraceoff
+\newcommand*\ifdtraceon{\if@debug\afterfi\traceon\fi}
+\newcommand*\ifdtraceoff{\if@debug\traceoff\fi}
+
+% We load the core package:
+\RequirePackage{gmdoc}
+
+\@ifpackageloaded{lmodern}{% The Latin Modern font family provides
+ % a~light condensed typewriter font that seems to be the most
+ % suitable for the marginpar CS marking.
+ \def\marginpartt{\normalfont\fontseries{lc}\ttfamily}}%
+
+
+% ^^A\setcounter{IndexColumns}{2} narrow columns do spare space and
+% ^^A~look better
+\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}
+ \SetTOCIndents{{}{\bf9.\enspace}{\quad}{\quad}{\quad}{\quad}{\quad}}}% and for the two other \pk{mwcls}s.
+ \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 outto the \file{.glo} file.
+
+\RecordChanges% We turn the writing the |\changes| outto the
+% \file{.glo} file if not the above.
+
+% \CodeUsgIndex\dekclubs \CodeUsgIndex\smartunder
+\dekclubs% We declare the club sign \verb+|+ to be a~shorthand for |\verb*|
+\smartunder% and we declare the |_| char to behave as usual in the
+% math mode and outside math to be just an uderscore.
+
+\exhyphenpenalty\hyphenpenalty% 'cause \pk{mwcls} set it |=10000| due
+% to Polish customs.
+
+\RequirePackage{amssymb}
+\def\EOFMark{\rightline{\ensuremath{\square}}}
+
+
+\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.}
+%
+% \Finale
+
+% (For my GNU Emacs:)
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "e:/LaTeX/TeXGuru/gmdoc/gmdocDoc"
+%%% End: