summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/concepts
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-12-20 00:30:59 +0000
committerKarl Berry <karl@freefriends.org>2012-12-20 00:30:59 +0000
commit71441df00e80ebb3470475a2317e5b324011624b (patch)
treea37fb136d233dec2919dd2119582762f3017059f /Master/texmf-dist/doc/latex/concepts
parent85a0b806cd76517912b1f46e45876f930920134e (diff)
conceps (19dec12)
git-svn-id: svn://tug.org/texlive/trunk@28579 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/concepts')
-rw-r--r--Master/texmf-dist/doc/latex/concepts/README8
-rw-r--r--Master/texmf-dist/doc/latex/concepts/concepts.pdfbin306995 -> 339208 bytes
-rw-r--r--Master/texmf-dist/doc/latex/concepts/concepts.tex581
3 files changed, 585 insertions, 4 deletions
diff --git a/Master/texmf-dist/doc/latex/concepts/README b/Master/texmf-dist/doc/latex/concepts/README
index bdafc91e1ee..99bf38b3a79 100644
--- a/Master/texmf-dist/doc/latex/concepts/README
+++ b/Master/texmf-dist/doc/latex/concepts/README
@@ -1,6 +1,6 @@
-LaTeX Package : concepts v0.0.4
+LaTeX Package : concepts v0.0.5
-Last Modified : 2012-12-08
+Last Modified : 2012-12-18
Author : Michiel Helvensteijn (www.mhelvens.net)
@@ -48,9 +48,9 @@ it in a place where your LaTeX distribution can find it.
===== Documentation =====
concepts.pdf is provided directly in the package archive. To
-generate the documentation yourself, run LaTeX on concepts.dtx.
+generate the documentation yourself, run LaTeX on concepts.tex.
-(concepts.dtx does not contain the package code itself; it inputs
+(concepts.tex does not contain the package code itself; it inputs
concepts.sty directly to document the implementation)
===== License =====
diff --git a/Master/texmf-dist/doc/latex/concepts/concepts.pdf b/Master/texmf-dist/doc/latex/concepts/concepts.pdf
index 156dc16cbf2..b6c5c697e51 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
new file mode 100644
index 00000000000..d8582de46e8
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/concepts/concepts.tex
@@ -0,0 +1,581 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Copyright (C) 2012 by Michiel Helvensteijn - www.mhelvens.net %
+% %
+% http://latex-concepts.googlecode.com %
+% %
+% This work may be distributed and/or modified under the %
+% conditions of the LaTeX Project Public License, either %
+% version 1.3 of this license or (at your option) any later %
+% version. The latest version of this license is in %
+% http://www.latex-project.org/lppl.txt %
+% and version 1.3 or later is part of all distributions of %
+% LaTeX version 2005/12/01 or later. %
+% %
+% This work has the LPPL maintenance status `author-maintained'. %
+% %
+% The Current Maintainer of this work is Michiel Helvensteijn. %
+% %
+% This work consists of the files concepts.tex and concepts.sty. %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% '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}
+
+%%% 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
+
+%%% 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}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Changes %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\changes{0.0.1}{2012/11/16}{initial version}
+\changes{0.0.2}{2012/11/25}{put the package into a .dtx file}
+\changes{0.0.3}{2012/12/01}{separated the .dtx file from the .sty file}
+\changes{0.0.4}{2012/12/08}{finished the documentation and made a few fixes}
+\changes{0.0.5}{2012/12/18}{implemented symbol-list commands and improved documentation}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document} %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\maketitle
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction and Motivation} %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Documents with a lot of formal notation (such as papers about mathematics or
+theoretical computer science) can introduce a number of concepts that need
+to be managed. They'll have \emph{names}, \emph{descriptions} and associated
+\emph{symbols} that need to be typeset, as well as \emph{relations} between them.
+
+I'm now writing my PhD thesis in the field of Theoretical Computer Science.
+It will be especially heavy with definitions. I need to make sure that every
+symbol is associated with no more than one concept and that all names and
+symbols are consistently used. I'll also need to generate a glossary with
+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.}.
+\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
+same time is still a lot of overhead.
+
+I wrote the \textsf{concepts} package to automate all this stuff for me. Every
+time I introduce a new concept in my thesis I `declare' it once. The package
+then defines all necessary macros for me and checks that I'm using them
+properly.
+
+In \textsf{concepts}~\fileversion{}, most of the above already works but it
+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
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Usage} %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+In short: 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}\\
+
+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
+derive the name of the concept as well as the macro used to typeset the name.
+
+Usually, you'll also want to add \meta{options}. This optional argument takes
+a comma-separated list of |key=value| pairs. The following is a list of available
+options. Note that the option names are case-sensitive:
+%
+\begin{description}
+\item[name] the name of the concept\\
+ --- default: \meta{concept key}
+\item[Name] the capitalized name of the concept, for use in the beginning of
+ a sentence\\
+ --- default: \meta{name} with the first letter capitalized
+\item[plural] the plural form of the name\\
+ --- default: \meta{name}|s|
+\item[Plural] the capitalized, pluralized name of the concept\\
+ --- default: \meta{plural} with the first letter capitalized
+\item[namecmd] the `short' command that may be used to typeset the name of
+ this concept; this option *has* to be specified for
+ any command to be defined, but the |=value| part may
+ be omitted to get the default\\
+ --- default: |\|\meta{concept key}
+\item[symbols] a comma-separated list of symbols that may represent instances
+ 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
+\end{description}
+
+\noindent 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
+ ]
+\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
+ ]
+\end{latex-example}
+
+There are certain restrictions on new concept declarations. You may
+not use the same \meta{concept key} more than once. You may not use the same
+symbol for more than one concept (this is a feature; the package will
+report an error if you do). Also, both \meta{namecmd} and \meta{symbolcmd} are
+subject to the rules governing |\newcommand|. They may not be reused, or you
+will see a standard \LaTeX{} error. Finally, any value you supply must behave
+properly in an expansion-only context, e.g. be robust.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DescribeMacro{\ConceptOption}
+ \marg{concept key} \marg{option key}\\\nopagebreak
+
+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}
+\end{latex-example-show}
+
+\begin{latex-example-show}
+ \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
+least down to the value that was given to the option. (This is not (yet)
+guaranteed for the other commands.)
+
+As you can observe from the |\product| example above, options that expect a
+command sequence are stored with an accompanying |\noexpand|. That means that
+in an |\edef| context, |\ConceptOption| expands down to the stored command but
+no further. After that you can expand it further if you wish.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DescribeMacro{\ConceptName}
+ \movarg{\textasciicircum} \movarg{*} \marg{concept key}\\\nopagebreak
+
+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 |*|
+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}.
+\end{latex-example-show}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\noindent\\\marginnote{\meta{namecmd}}
+ \movarg{\textasciicircum} \movarg{*}\\\nopagebreak
+
+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.
+\end{latex-example-show}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DescribeMacro{\ConceptSymbol}
+ \marg{concept key} \oarg{symbol index}\\\nopagebreak
+
+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}
+and the symbol with the \meta{symbol index}.
+
+The index is 1-based and points to a place in the symbol list provided with the
+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}.
+\end{latex-example-show}
+
+\begin{latex-example-show}
+ $\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
+
+This is the `short' version of |\ConceptSymbol|, specific for each concept that
+was declared with the |symbolcmd| option. The optional index is given directly
+following the command itself. It doesn't need any delimiters. However, you are
+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''$
+\end{latex-example-show}
+
+\noindent 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}
+ \marg{concept key} \oarg{separator}
+ \oarg{last separator} \marg{symbol indices}\\\nopagebreak
+
+This command typesets a \meta{separator} separated list of symbols associated
+with the given concept, optionally with a different \meta{last separator}. Specify
+the concept with the \meta{concept key} and the symbol-list with the
+\meta{symbol indices}. \meta{separator} defaults to |,| and \meta{last separator}
+defaults to \meta{separator}. The whole list is typeset in math mode, so if
+you'd like a non-math delimiter, you need to use \verb|$| tokens.
+
+The indices are 1-based and point to a place in the symbol list provided with the
+concept options. The index-list is mandatory, but can be empty.
+
+\begin{latex-example-show}
+ 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.
+\end{latex-example-show}
+
+\begin{latex-example-show}
+ What about \ConceptSymbols{delta}[,][$ and $]{3, 2, 1}?
+\end{latex-example-show}
+
+\begin{latex-example-show}
+ xx\ConceptSymbols{delta}{}xx
+\end{latex-example-show}
+
+If you need any symbol in the resulting list to have some decoration (like a
+prime, subscript or superscript) you can decorate the corresponding index
+accordingly. This currently only works for decorations that would be specified
+\emph{after} the symbol. Each element of \meta{symbol indices} still needs to
+start with the index itself:
+
+\begin{latex-example-show}
+ \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
+
+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'$
+\end{latex-example-show}
+
+\begin{latex-example-show}
+ xx\d[]xx\p[]xx
+\end{latex-example-show}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DescribeMacro{\ConceptNameAndSymbols}
+ \movarg{\textasciicircum} \marg{concept key}
+ \oarg{separator} \oarg{last separator}
+ \marg{symbol indices}\\\nopagebreak
+
+This command is the `hybrid' version of |\ConceptName| and |\ConceptSymbols|.
+It typesets the name of the concept followed by a \meta{separator} separated list
+of symbols associated with the given concept, optionally with a different
+\meta{last separator}. Specify the concept with the \meta{concept key} and the
+symbol-list with \meta{symbol~indices}. \meta{separator} defaults to |,| and
+\meta{last separator} defaults to |$ and $|. The name is typeset in text mode and
+the list is typeset in math mode.
+
+The indices are 1-based and point to a place in the symbol list provided with the
+concept options. The index-list is mandatory and cannot be empty.
+
+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}.
+\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
+
+This is a `short' version of |\ConceptNameAndSymbols|,
+specific for each concept that was declared with the |namecmd| option.
+The \meta{symbol indices} list needs to be delimited by square brackets
+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].
+\end{latex-example-show}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Future Work} %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Everything up to this version of the package has been a bit of an experiment
+for me. A way to get me started. I may still fix one or two issues for the
+0.0.x series, but I will soon start from scratch with all I've learned.
+
+There will be two major changes starting from version 0.1.0. First of all, the
+package will be built on top of the |glossaries| package, which already does
+much of the work I'm now doing manually. This was always the plan, as we'll
+want to typeset a glossary with our concepts, and I don't want to reinvent
+the wheel. The |glossaries| package is actively developed and has a great
+amount of features we can take advantage of. Secondly, I will program the
+0.1.0 series using \LaTeX3.
+
+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
+ ensures concept instances are not used where a different concept is expected
+\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} %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%