summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/concepts
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-12-28 22:46:43 +0000
committerKarl Berry <karl@freefriends.org>2012-12-28 22:46:43 +0000
commitaa3041c0939f2447fc48fd4c3ad830dfe75ef401 (patch)
treef72a6d6589b2d2763ad34d7755b94dc8878742d1 /Master/texmf-dist/doc/latex/concepts
parent87e35eb4054f370617fc566daff3a5a6f527211a (diff)
concepts (28dec12)
git-svn-id: svn://tug.org/texlive/trunk@28649 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/concepts')
-rw-r--r--Master/texmf-dist/doc/latex/concepts/concepts.pdfbin339208 -> 326899 bytes
-rw-r--r--Master/texmf-dist/doc/latex/concepts/concepts.tex369
2 files changed, 94 insertions, 275 deletions
diff --git a/Master/texmf-dist/doc/latex/concepts/concepts.pdf b/Master/texmf-dist/doc/latex/concepts/concepts.pdf
index b6c5c697e51..b4418f5522e 100644
--- a/Master/texmf-dist/doc/latex/concepts/concepts.pdf
+++ b/Master/texmf-dist/doc/latex/concepts/concepts.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/concepts/concepts.tex b/Master/texmf-dist/doc/latex/concepts/concepts.tex
index d8582de46e8..7a26c65024c 100644
--- a/Master/texmf-dist/doc/latex/concepts/concepts.tex
+++ b/Master/texmf-dist/doc/latex/concepts/concepts.tex
@@ -20,61 +20,17 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% 'ltxdoc' to typeset the documentation
-%
-\documentclass[a4paper]{ltxdoc}
-
-%%% including the 'concepts' package itself
-%
-\usepackage{concepts}[2012/11/25]
-
-%%% including other packages we need
-%
-\usepackage{etextools}
-\usepackage{etoolbox}
-\usepackage{framed}
-\usepackage{color}
-\usepackage{marginnote}
-\usepackage{listings}
-\usepackage{lstautogobble}
-\usepackage{textcomp}
-\usepackage{ifthen}
-\usepackage{atbegshi}
-\usepackage{tikz}
-\usepackage{amssymb}
-
-%%% including 'internal' package for setting and running
-%%% code examples with a single source
-%
-\usepackage{dry}
+\documentclass[a4paper]{packagedoc}
-%%% skip any indentation directly after a code block or macro signature
-%
-\makeatletter
- \newcommand*{\@noindentnext}{\everypar{{\setbox\z@\lastbox}\everypar{}}}
- \AfterEndEnvironment{codeframe}{\@noindentnext}
- \AfterEndEnvironment{uninterestingcodeframe}{\@noindentnext}
- \apptocmd{\marg}{\@noindentnext}{}{}
- \apptocmd{\oarg}{\@noindentnext}{}{}
- \apptocmd{\parg}{\@noindentnext}{}{}
- \pretocmd{\DescribeMacro}{\noindent\\}{}{}
-\makeatother
-
-%%% documentation options
-%
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Setup %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% title and author information
-%
-\GetFileInfo{concepts.sty}
-\title{The \textsf{concepts} package\thanks{%
- This document corresponds to \textsf{concepts}~\fileversion, dated \filedate.
- Development of this package is organized at \texttt{http://latex-concepts.googlecode.com}.
- I am happy to receive feedback.%
-}}
-\author{Michiel Helvensteijn \\ \texttt{mhelvens+latex@gmail.com}}
+\moretexcs{%
+ NewConcept,ConceptOption,ConceptName,ConceptSymbol,%
+ ConceptSymbols,ConceptNameAndSymbols,delta,d,product,p,%
+ prd%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Changes %
@@ -109,15 +65,17 @@ this information. But I don't want to manually keep track
of all that. It's error-prone and it takes time. I'd rather focus on the theory.
There are already techniques and packages that help lighten the load:
+%
\begin{itemize}
- \item Rather than use any names or symbols directly in the text, declare
- a macro for each one. If you ever need to change one, you'll only
- have to do it in one place. You'll also be far less likely to
- introduce any typos.
- \item There are packages out there to keep track of and output a glossary%
- \footnote{It is sometimes called a nomenclature.
- The distinction is subtle.}.
+ \item Rather than use any names or symbols directly in the text, declare
+ a macro for each one. If you ever need to change one, you'll only
+ have to do it in one place. You'll also be far less likely to
+ introduce any typos.
+ \item There are packages out there to keep track of and output a glossary%
+ \footnote{It is sometimes called a nomenclature.
+ The distinction is subtle.}.
\end{itemize}
+
But I'm not aware of any technique or package to ensure I'm not
using a name or symbol inconsistently, thereby potentially
confusing the reader. And even if there was, using all these techniques at the
@@ -133,125 +91,20 @@ cannot generate a glossary yet. In future versions, it will interface with
the \textsf{glossaries} package to accomplish this, and more.
I'm also planning to implement a rudimentary typesystem, to catch even more
-kinds of mistakes in symbol usage. There will also be additional ways of
-typesetting concept-related stuff, such as useful sentence fragments.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Usage Prep %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%% formatting the code blocks
-%
-\setlength{\FrameSep}{0pt}
-\setlength{\MacroIndent}{16pt}
-\setlength{\MacrocodeTopsep}{2pt}
-\newenvironment{codeframe}{%
- \definecolor{shadecolor}{rgb}{.9,.9,.9}%
- \begin{framed}%
- \begin{shaded}%
-}{%
- \end{shaded}\vspace{-2.8mm}%
- \end{framed}%
-}
-
-%%% meta-optional arguments (that means: without explicit [])
-%
-\makeatletter
- \newcommand*{\movarg}[1]{[ \verb|#1| ]\@noindentnext}
- \newcommand*{\momarg}[1]{[ \meta{#1} ]\@noindentnext}
-\makeatother
-
-%%% listings language for examples
-%
-\lstdefinelanguage{latex}{
- language=[LaTeX]tex,
- moretexcs={detokenize,
- NewConcept,ConceptOption,ConceptName,ConceptSymbol,
- ConceptSymbols,ConceptNameAndSymbols,
- delta,product,p,d,prd}
-}
-
-\makeatletter
-
-%%% adding a border around content without putting it in a TeX group (scope)
-%
-\newcounter{boxcount}[page]
-\newcommand{\boxstart}{%
- \stepcounter{boxcount}%
- \raisebox{1.6ex}{\ensuremath{\vcenter{\hbox{%
- \tikz[remember picture, overlay]{\coordinate (start box \arabic{boxcount});}%
- }}}}%
-}
-\newcommand{\boxend}{%
- \raisebox{-1.6ex}{\ensuremath{\vcenter{\hbox{%
- \tikz[remember picture, overlay]{\coordinate (end box \arabic{boxcount});}%
- }}}}%
-}
-\AtBeginShipout{\AtBeginShipoutUpperLeft{%
- \ifthenelse{\value{boxcount} > 0}{%
- \tikz[remember picture,overlay]{%
- \foreach \boxmarker in {1,...,\arabic{boxcount}}%
- \draw[black]%
- (start box \boxmarker) +(.07mm,0mm) rectangle%
- (end box \boxmarker);%
- }%
- }{}%
-}}
-
-%%% TeX example environments
-%
-\newlength{\texexamplespace}
-\setlength{\texexamplespace}{1.2mm}
-\NewDRYer{latex-example-show}{}{%
- \addvspace{\texexamplespace}%
- \noindent\begin{minipage}{\textwidth}
- \begin{codeframe}%
- \renewcommand{\ttdefault}{pcr}%
- \vspace{-1mm}%
- \lstinputlisting[%
- language=latex,basicstyle=\ttfamily\small,%
- texcsstyle=*\bfseries,%
- upquote=true,%
- tabsize=1%
- ]{\DRYFilename}%
- \vspace{-1mm}%
- \end{codeframe}%
- \end{minipage}\\[-.45mm]
- \boxstart$\ $\DRYContent$\ $\boxend%
- \@noindentnext\par\addvspace{\texexamplespace}%
-}
-\NewDRYer{latex-example}{}{%
- \addvspace{\texexamplespace}%
- \noindent\begin{minipage}{\textwidth}
- \begin{codeframe}%
- \renewcommand{\ttdefault}{pcr}%
- \vspace{-1mm}%
- \lstinputlisting[%
- language=latex,basicstyle=\ttfamily\small,%
- texcsstyle=*\bfseries,%
- upquote=true,%
- tabsize=1%
- ]{\DRYFilename}%
- \vspace{-1mm}%
- \end{codeframe}%
- \end{minipage}%
- \DRYContent%
- \@noindentnext\par\addvspace{\texexamplespace}%
-}
-
-\makeatother
+kinds of mistakes in symbol usage.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Usage} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-In short: every concept first has to be declared using the |\NewConcept| macro.
+Every concept first has to be declared using the |\NewConcept| macro.
Afterwards, its name and associated symbols can by typeset using other macros.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\NewConcept}
- \marg{concept key} \oarg{options}\\
+\describemacro{\NewConcept}{
+ \marg{concept key} \oarg{options}
+}
Every concept needs a unique \meta{concept key}, by which it will be identified
for the rest of the document. This key can also be used to automatically
@@ -280,30 +133,28 @@ options. Note that the option names are case-sensitive:
of this concept, delimited by curly brackets\\
--- default: |{}| (the empty list)
\item[symbolcmd] the `short' command that may be used to typeset a
- specific symbol of this concept, given a numeric index
+ specific symbol
\end{description}
-\noindent Here are a few examples which will also be used to illustrate the other commands:
+Here are a few examples which will also be used to illustrate the other commands:
\begin{latex-example}
- \NewConcept{swproduct}[
- name = software product, % options 'plural', 'Plural'
- Name = Software Product, % are implicitly defined
- namecmd = \product, % defines \product
- symbols = {p}, % p represents a product
- symbolcmd = \p % defines \p
- ]
+\NewConcept{swproduct}[
+ name = software product, % options 'plural', 'Plural'
+ Name = Software Product, % are implicitly defined
+ namecmd = \product, % defines \product
+ symbols = {p}, % p represents a product
+ symbolcmd = \p % defines \p
+]
\end{latex-example}
-
+%
\begin{latex-example}
- \let\delta\relax % I won't be using the greek letter
- \let\d\relax % or the 'dot under a letter' macro
-
- \NewConcept{delta}[
- namecmd, % defines \delta
- symbols = {x, y, z}, % x, y and z represent deltas
- symbolcmd = \d % defines \d
- ]
+\let\delta\relax \let\d\relax % I won't be using these
+\NewConcept{delta}[
+ namecmd, % defines \delta
+ symbols = {x, y, z}, % x, y and z represent deltas
+ symbolcmd = \d % defines \d
+]
\end{latex-example}
There are certain restrictions on new concept declarations. You may
@@ -316,20 +167,21 @@ properly in an expansion-only context, e.g. be robust.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\ConceptOption}
- \marg{concept key} \marg{option key}\\\nopagebreak
+\describemacro{\ConceptOption}{
+ \marg{concept key} \marg{option key}
+}
This command can be used to get back any option value given a
specific \meta{concept~key} and \meta{option key}. For example:
\begin{latex-example-show}
- \ConceptOption{delta}{Plural}
+\ConceptOption{delta}{Plural}
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- \edef\prd{\ConceptOption{swproduct}{namecmd}}%
- {\ttfamily\expandafter\detokenize\expandafter{\prd}}%
- expands to ``\prd''.
+\edef\prd{\ConceptOption{swproduct}{namecmd}}%
+{\ttfamily\expandafter\detokenize\expandafter{\prd}}%
+ expands to ``\prd''.
\end{latex-example-show}
|\ConceptOption| is `fully expandable', meaning that it can expand at
@@ -343,8 +195,9 @@ no further. After that you can expand it further if you wish.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\ConceptName}
- \movarg{\textasciicircum} \movarg{*} \marg{concept key}\\\nopagebreak
+\describemacro{\ConceptName}{
+ \movarg{\textasciicircum} \movarg{*} \marg{concept key}
+}
With this command you can typeset the name of the concept with \meta{concept key}
in any of four forms. The |^| modifier gives you the capitalized version. The |*|
@@ -352,25 +205,27 @@ modifier gives you the plural version. The combination gives you both. The order
between |^| and |*| doesn't matter.
\begin{latex-example-show}
- \ConceptName^*{delta} can transform a \ConceptName{swproduct}.
+\ConceptName^*{delta} can transform a \ConceptName{swproduct}.
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\noindent\\\marginnote{\meta{namecmd}}
- \movarg{\textasciicircum} \movarg{*}\\\nopagebreak
+\describemetamacro{namecmd}{
+ \movarg{\textasciicircum} \movarg{*}
+}
This is the `short' version of |\ConceptName|, specific for each concept that
was declared with the |namecmd| option. It supports the same modifiers.
\begin{latex-example-show}
- \delta^* can easily transform a \product.
+\delta^* can easily transform a \product.
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\ConceptSymbol}
- \marg{concept key} \oarg{symbol index}\\\nopagebreak
+\describemacro{\ConceptSymbol}{
+ \marg{concept key} \oarg{symbol index}
+}
This command typesets a specific symbol associated with a a given concept. It is
always typeset in math mode. Specify the concept with the \meta{concept key}
@@ -381,18 +236,19 @@ concept options. If a concept has only one allocated symbol the index may be
omitted. If there is more than one symbol, the index is mandatory.
\begin{latex-example-show}
- \product^* have symbols like \ConceptSymbol{swproduct}.
+\product^* have symbols like \ConceptSymbol{swproduct}.
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- $\ConceptSymbol{delta}[2] \cdot \ConceptSymbol{delta}[1] =
- \ConceptSymbol{delta}[1] \cdot \ConceptSymbol{delta}[2]$
+$\ConceptSymbol{delta}[2] \cdot \ConceptSymbol{delta}[1] =
+ \ConceptSymbol{delta}[1] \cdot \ConceptSymbol{delta}[2]$
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\noindent\\\marginnote{\meta{symbolcmd}}
- \momarg{symbol index}\\\nopagebreak
+\describemetamacro{symbolcmd}{
+ \momarg{symbol index}
+}
This is the `short' version of |\ConceptSymbol|, specific for each concept that
was declared with the |symbolcmd| option. The optional index is given directly
@@ -401,17 +257,18 @@ allowed to use square brackets. See the list-variation of this short command
below.
\begin{latex-example-show}
- $(\d2 \cdot \d1)(\p) = \d2(\d1(\p)) = \d2(\p') = \p''$
+$(\d2 \cdot \d1)(\p) = \d2(\d1(\p)) = \d2(\p') = \p''$
\end{latex-example-show}
-\noindent As you can see, this short construct requires a lot less space than the
+As you can see, this short construct requires a lot less space than the
full |\ConceptSymbol| command, so its use is recommended for readability.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\ConceptSymbols}
+\describemacro{\ConceptSymbols}{
\marg{concept key} \oarg{separator}
- \oarg{last separator} \marg{symbol indices}\\\nopagebreak
+ \oarg{last separator} \marg{symbol indices}
+}
This command typesets a \meta{separator} separated list of symbols associated
with the given concept, optionally with a different \meta{last separator}. Specify
@@ -424,19 +281,19 @@ The indices are 1-based and point to a place in the symbol list provided with th
concept options. The index-list is mandatory, but can be empty.
\begin{latex-example-show}
- The symbols \ConceptSymbols{delta}{1,2,3} represent \delta*.
+The symbols \ConceptSymbols{delta}{1,2,3} represent \delta*.
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- $\{\ConceptSymbols{delta}[;]{1,1,1}\}$ contains only \d1.
+$\{\ConceptSymbols{delta}[;]{1,1,1}\}$ contains only \d1.
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- What about \ConceptSymbols{delta}[,][$ and $]{3, 2, 1}?
+What about \ConceptSymbols{delta}[,][$ and $]{3, 2, 1}?
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- xx\ConceptSymbols{delta}{}xx
+xx\ConceptSymbols{delta}{}xx
\end{latex-example-show}
If you need any symbol in the resulting list to have some decoration (like a
@@ -446,34 +303,36 @@ accordingly. This currently only works for decorations that would be specified
start with the index itself:
\begin{latex-example-show}
- \ldots such as the symbols in
- $(\ConceptSymbols{delta}{1_1, 2'', 3^{\d1(\p)}})$.
+\ldots such as the symbols in
+ $(\ConceptSymbols{delta}{1_1, 2'', 3^{\d1(\p)}})$.
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\noindent\\\marginnote{\meta{symbolcmd}}
- \oarg{symbol indices}\\\nopagebreak
+\describemetamacro{symbolcmd}{
+ \oarg{symbol indices}
+}
This is the `short' version of |\ConceptSymbols|, specific for each concept that
was declared with the |symbolcmd| option. The \meta{symbol indices} list needs
to be delimited by square brackets as shown below.
\begin{latex-example-show}
- $\forall \d[1,2] \in D:\ \d1 \| \d2\ \Rightarrow\ {}
- \exists \d[3'] \in D:\ \d1 \prec \d3' \land \d2 \prec \d3'$
+$\forall \d[1,2] \in D:\ \d1 \| \d2\ \Rightarrow\ {}
+ \exists \d[3'] \in D:\ \d1 \prec \d3' \land \d2 \prec \d3'$
\end{latex-example-show}
-
+%
\begin{latex-example-show}
- xx\d[]xx\p[]xx
+xx\d[]xx\p[]xx
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DescribeMacro{\ConceptNameAndSymbols}
+\describemacro{\ConceptNameAndSymbols}{
\movarg{\textasciicircum} \marg{concept key}
\oarg{separator} \oarg{last separator}
- \marg{symbol indices}\\\nopagebreak
+ \marg{symbol indices}
+}
This command is the `hybrid' version of |\ConceptName| and |\ConceptSymbols|.
It typesets the name of the concept followed by a \meta{separator} separated list
@@ -490,15 +349,16 @@ You can still supply the |^| modifier to capitalize the name but the choice
between singular and plural form is determined by the number of \meta{symbol indices}.
\begin{latex-example-show}
- We use \ConceptNameAndSymbols{delta}[,][$ and also $]{1,2,3}.
+We use \ConceptNameAndSymbols{delta}[,][$ and also $]{1,2,3}.
\end{latex-example-show}
For some other neat tricks, read the documentation of |\ConceptSymbols| above.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\noindent\\\marginnote{\meta{namecmd}}
- \movarg{\textasciicircum} \oarg{symbol indices}\\\nopagebreak
+\describemetamacro{namecmd}{
+ \movarg{\textasciicircum} \oarg{symbol indices}
+}
This is a `short' version of |\ConceptNameAndSymbols|,
specific for each concept that was declared with the |namecmd| option.
@@ -507,7 +367,7 @@ as shown below. The list is comma-delimited and the last (or only) delimiter is
the word `and'.
\begin{latex-example-show}
- \delta^[1,2] come before \delta[3].
+\delta^[1,2] come before \delta[3].
\end{latex-example-show}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -529,7 +389,6 @@ amount of features we can take advantage of. Secondly, I will program the
Here is an incomplete list of the features I am planning to implement:
\begin{itemize}
\item full integration with the \textsf{glossaries} package
- \item commands to \emph{modify} existing concepts
\item typesetting a \emph{summary} of the concepts introduced in each chapter / section
\item management of \emph{tuples} and \emph{sets} of concept instances
\item management of \emph{subconcepts} plus a rudimentary \emph{typesystem} that
@@ -537,45 +396,5 @@ Here is an incomplete list of the features I am planning to implement:
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Implementation Prep %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\makeatletter
-\renewenvironment{codeframe}{%
- \definecolor{shadecolor}{rgb}{.9,.9,.9}%
- \begin{shaded}%
-}{%
- \end{shaded}%
-}
-
-\newenvironment{uninterestingcodeframe}{%
- \vspace{-5mm}%
- \definecolor{shadecolor}{rgb}{.97,.97,.97}%
- \begin{shaded}%
- \definecolor{uninterestingcodecolor}{rgb}{.4,.4,.4}%
- \let\old@macro@font\macro@font%
- \def\macro@font{\color{uninterestingcodecolor}\old@macro@font}%
-}{%
- \end{shaded}%
-}
-\makeatother
-
-\StopEventually{
- \PrintChanges
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Implementation} %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-We now show and explain the entire implementation in |concepts.sty|.
-
-\DocInput{concepts.sty}
-
-\Finale
-
-\PrintIndex
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%