summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-13 23:45:45 +0000
committerKarl Berry <karl@freefriends.org>2013-05-13 23:45:45 +0000
commit53fd1db4e92c7f40124c92de9c43b455aa7f29bb (patch)
tree11ccb7d70d825bbdc7041923c72034bc89cb27a8
parenta43dfb3aaf9458a242743878b8ddb3ef995f956d (diff)
exsol (13may13)
git-svn-id: svn://tug.org/texlive/trunk@30451 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/exsol/LICENSE11
-rw-r--r--Master/texmf-dist/doc/latex/exsol/exsol.pdfbin0 -> 247965 bytes
-rw-r--r--Master/texmf-dist/source/latex/exsol/exsol.dtx703
-rw-r--r--Master/texmf-dist/source/latex/exsol/exsol.ins59
-rw-r--r--Master/texmf-dist/tex/latex/exsol/exsol.sty202
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/exsol.tlpsrc0
8 files changed, 977 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/exsol/LICENSE b/Master/texmf-dist/doc/latex/exsol/LICENSE
new file mode 100644
index 00000000000..b7669f61b9b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/exsol/LICENSE
@@ -0,0 +1,11 @@
+License
+=======
+All files of the lts package are subject to the LPPL.
+
+The exsol package 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.
+
+The exsol package consists of all files listed in manifest.txt.
diff --git a/Master/texmf-dist/doc/latex/exsol/exsol.pdf b/Master/texmf-dist/doc/latex/exsol/exsol.pdf
new file mode 100644
index 00000000000..6118f6a3f5f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/exsol/exsol.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/exsol/exsol.dtx b/Master/texmf-dist/source/latex/exsol/exsol.dtx
new file mode 100644
index 00000000000..cd111e49251
--- /dev/null
+++ b/Master/texmf-dist/source/latex/exsol/exsol.dtx
@@ -0,0 +1,703 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2012 by Walter Daems <walter.daems@ua.ac.be>
+%
+% 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 `maintained'.
+%
+% The Current Maintainer of this work is Walter Daems.
+%
+% This work consists of the files exsol.dtx and exsol.ins and the derived
+% files:
+% - exsol.sty
+% - example.tex
+% - example-solutionbook.tex
+%
+% \fi
+%
+% \iffalse
+%
+%<package|driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{exsol.dtx}
+%<package>\ProvidesPackage{exsol}
+%<package|driver> [2013/05/12 v0.6 ExSol - Exercises and Solutions package (DMW)]
+\def\fileversion{0.6}
+\def\filedate{2013/05/12}
+%<*driver>
+\documentclass[11pt]{ltxdoc}
+\usepackage[english]{babel}
+\usepackage[exercisesfontsize=small]{exsol}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\usepackage{makeidx}
+\usepackage{alltt}
+\IfFileExists{tocbibind.sty}{\usepackage{tocbibind}}{}
+\IfFileExists{hyperref.sty}{\usepackage[bookmarksopen]{hyperref}}{}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\newcommand{\exsol}{\textsf{ExSol}}
+\StopEventually{\PrintChanges\PrintIndex}
+\begin{document}
+ \DocInput{exsol.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.1}{2012/01/05}{. Initial version}
+% \changes{v0.2}{2012/01/06}{. Minor bug fixes based on first use by
+% Paul Levrie}
+% \changes{v0.3}{2012/01/07}{. Minor bug fixes based on second use by
+% Paul}
+% \changes{v0.4}{2012/01/09}{. Allowed for non-list formatting of
+% exercises (as default)}
+% \changes{v0.5}{2012/01/15}{. Added option to also send exercises to
+% solutions file}
+% \changes{v0.6}{2013/05/12}{. Prepared for CTAN publication}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+% \setlength{\parindent}{0em}
+% \addtolength{\parskip}{0.5\baselineskip}
+%
+% \title{The \exsol{} package\thanks{This document
+% corresponds to exsol~\fileversion, dated \filedate.}}
+% \author{Walter Daems (\texttt{walter.daems@ua.ac.be})}
+% \date{}
+%
+% \maketitle
+%
+% \section{Introduction}
+% %%%%%%%%%%%%%%%%%%%%%%
+% The package \exsol{} provides macros to allow
+% embedding exercises and solutions in the \LaTeX{} source of an
+% instructional text (e.g., a book or a course text) while generating
+% the following separate documents:
+% \begin{itemize}
+% \item your original text that only contains the exercises, and
+% \item a solution book that only contains the solutions to the
+% exercises (a package option exists to also copy the exercises themselves to the solution book).
+% \end{itemize}
+%
+% The former is generated when running \LaTeX{} on your document. This
+% run writes the solutions to a secondary file that can be included
+% into a simple document harness, such that when running \LaTeX{} on
+% the latter, you can generate a nice solution book.
+%
+% Why use \exsol{}?
+% \begin{itemize}
+% \item It allows to keep the \LaTeX{} source of your exercises and their
+% solutions in a single file. Away with the nightmare to keep your
+% solutions in sync with the original text.
+% \item It separates exercises and solutions, allowing you
+% \begin{itemize}
+% \item to only release the solution book to the instructors of the
+% course;
+% \item to encourage students that you provide with the solution
+% book to first try solving the exercises without opening the book;
+% this seems to be easier than not peeking into the solution of an
+% exercise that is typeset just below the exercise itself.
+% \end{itemize}
+% \end{itemize}
+%
+% The code of the \exsol{} package was taken almost literally
+% from \textsf{fancyvrb} \cite{fancyvrb}. Therefore, all credits go to the
+% authors/maintainers of \textsf{fancyvrb}.
+%
+% \section{Installation}
+% %%%%%%%%%%%%%%%%%%%%%%
+% Either you are a package manager and then you'll know how to
+% prepare an installation package for \exsol{}.
+%
+% Either you are a normal user and then you have two options. First,
+% check if there is a package that your favorite \LaTeX{}
+% distributor has prepared for you. Second, grab the TDS package
+% from CTAN \cite{CTAN} (\texttt{exsol.tds.zip}) and unzip it somewhere in your
+% own TDS tree, regenerate your filename database and off you go.
+% In any case, make sure that \LaTeX{} finds the \texttt{exsol.sty} file.
+%
+% The \exsol{} package uses some auxiliary packages: \textsf{fancyverb},
+% \textsf{ifthen}, \textsf{kvoptions} and, optionally,
+% \textsf{babel}. Fetch them from CTAN \cite{CTAN} if your \TeX{}
+% distributor does not provide them.
+%
+% \section{Usage}
+% %%%%%%%%%%%%%%%
+%
+% \subsection{Preparing your document source}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The macro package exsol can be loaded with:
+% \begin{verbatim}
+% \usepackage{exsol}
+% \end{verbatim}
+%
+% Then, you are ready to add some exercises including their solution
+% to your document source. To this end, embed them in a
+% \texttt{exercise} and a corresponding \texttt{solution} environment.
+% Optionally, you may embed several of them in a \texttt{exercises}
+% environment, to make them stand out in your text.
+% E.g.,
+%
+% \begin{VerbatimOut}{exsol.tmp}
+%
+% \begin{exercises}
+%
+% \begin{exercise}
+% Solve the following equation for $x \in C$, with $C$ the set of
+% complex numbers:
+% \begin{equation}
+% 5 x^2 -3 x = 5
+% \end{equation}
+% \end{exercise}
+%
+% \begin{solution}
+% Let's start by rearranging the equation, a bit:
+% \begin{eqnarray}
+% 5.7 x^2 - 3.1 x &=& 5.3\\
+% 5.7 x^2 - 3.1 x -5.3 &=& 0
+% \end{eqnarray}
+% The equation is now in the standard form:
+% \begin{equation}
+% a x^2 + b x + c = 0
+% \end{equation}
+% For quadratic equations in the standard form, we know that two
+% solutions exist:
+% \begin{equation}
+% x_{1,2} = \frac{ -b \pm \sqrt{d}}{2a}
+% \end{equation}
+% with
+% \begin{equation}
+% d = b^2 - 4 a c
+% \end{equation}
+% If we apply this to our case, we obtain:
+% \begin{equation}
+% d = (-3.1)^2 - 4 \cdot 5.7 \cdot (-5.3) = 130.45
+% \end{equation}
+% and
+% \begin{eqnarray}
+% x_1 &=& \frac{3.1 + \sqrt{130.45}}{11.4} = 1.27\\
+% x_2 &=& \frac{3.1 - \sqrt{130.45}}{11.4} = -0.73
+% \end{eqnarray}
+% The proposed values $x = x_1, x_2$ are solutions to the given equation.
+% \end{solution}
+%
+% \begin{exercise}
+% Consider a 2-dimensional vector space equipped with a Euclidean
+% distance function. Given a right-angled triangle, with the sides
+% $A$ and $B$ adjacent to the right angle having lengths, $3$ and
+% $4$, calculate the length of the hypotenuse, labeled $C$.
+% \end{exercise}
+% \begin{solution}
+% This calls for application of Pythagoras' theorem, which
+% tells us:
+% \begin{equation}
+% \left\|A\right\|^2 + \left\|B\right\|^2 = \left\|C\right\|^2
+% \end{equation}
+% and therefore:
+% \begin{eqnarray}
+% \left\|C\right\|
+% &=& \sqrt{\left\|A\right\|^2 + \left\|B\right\|^2}\\
+% &=& \sqrt{3^2 + 4^2}\\
+% &=& \sqrt{25} = 5
+% \end{eqnarray}
+% Therefore, the length of the hypotenuse equals $5$.
+% \end{solution}
+%
+% \end{exercises}
+% \end{VerbatimOut}
+% \VerbatimInput[frame=lines,gobble=2,fontsize=\footnotesize]{exsol.tmp}
+%
+% The result in the original document, can be seen below. As you can
+% see, there's no trace of the solution.
+%
+% \input{exsol.tmp}
+%
+% When running \LaTeX{} on your document (in our case on the
+% \texttt{exsol.dtx} file, as a side effect a file with extension
+% \texttt{.sol.tex} has been written to disk (in our case, the file
+% \texttt{exsol.sol.tex}), containing all solutions in sequence.
+%
+% Generating a solution book is a simple as including the file into a
+% simple harness, that allows you giving it a proper title page and to
+% add other bells and whistles.
+%
+% E.g.,
+% \begin{VerbatimOut}{exsol-solutionbook.tex}
+% \documentclass{article}
+% \usepackage[english]{babel}
+% \title{Solutions to the exercises, specified in the \textsf{ExSol} package}
+% \author{Walter Daems}
+% \date{2013/05/12}
+%
+% \begin{document}
+%
+% \maketitle
+%
+% \input{exsol.sol}
+%
+% \end{document}
+% \end{VerbatimOut}
+% \VerbatimInput[frame=lines,gobble=2,fontsize=\footnotesize]{exsol-solutionbook.tex}
+%
+% You may generate this solution book, by running \LaTeX{} on the
+% file named \texttt{exsol-solutionbook.tex} that is generated when running
+% \LaTeX{} on the \texttt{exsol.dtx} file.
+%
+% The result approximately looks like this:
+%
+% \setcounter{equation}{0}
+% \rule{\linewidth}{.7pt}
+% \begin{center}
+% {\Large Solutions to the exercises, specified in the \textsf{ExSol} package}\\
+% {\large Walter Daems}\\
+% {\large 2013/05/12}
+% \end{center}
+% \par---\newline\textbf{Solution 3.1-1}
+% Let's start by rearranging the equation, a bit:
+% \begin{eqnarray}
+% 5.7 x^2 - 3.1 x &=% 5.3\\
+% 5.7 x^2 - 3.1 x -5.3 &=% 0
+% \end{eqnarray}
+% The equation is now in the standard form:
+% \begin{equation}
+% a x^2 + b x + c = 0
+% \end{equation}
+% For quadratic equations in the standard form, we know that two
+% solutions exist:
+% \begin{equation}
+% x_{1,2} = \frac{ -b \pm \sqrt{d}}{2a}
+% \end{equation}
+% with
+% \begin{equation}
+% d = b^2 - 4 a c
+% \end{equation}
+% If we apply this to our case, we obtain:
+% \begin{equation}
+% d = (-3.1)^2 - 4 \cdot 5.7 \cdot (-5.3) = 130.45
+% \end{equation}
+% and
+% \begin{eqnarray}
+% x_1 &=& \frac{3.1 + \sqrt{130.45}}{11.4} = 1.27\\
+% x_2 &=& \frac{3.1 + \sqrt{130.45}}{11.4} = -0.73
+% \end{eqnarray}
+% The proposed values $x = x_1, x_2$ are solutions to
+% the given equation.
+% \par---\newline\textbf{Solution 3.1-2}
+% This calls for application of Pythagoras' theorem, which
+% tells us:
+% \begin{equation}
+% \left\|A\right\|^2 + \left\|B\right\|^2 = \left\|C\right\|^2
+% \end{equation}
+% and therefore:
+% \begin{eqnarray}
+% \left\|C\right\|
+% &=& \sqrt{\left\|A\right\|^2 + \left\|B\right\|^2}\\
+% &=& \sqrt{3^2 + 4^2}\\
+% &=& \sqrt{25} = 5
+% \end{eqnarray}
+% Therefore, the length of the hypotenuse equals $5$.
+%
+% \rule{\linewidth}{.7pt}
+%
+% \clearpage
+%
+% \section{Implementation}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Auxiliary packages}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The package uses some auxiliary packages:
+% \begin{macrocode}
+\RequirePackage{fancyvrb}
+\RequirePackage{ifthen}
+\RequirePackage{kvoptions}
+% \end{macrocode}
+%
+% \subsection{Package options}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The package offers some options:
+%
+% \changes{v0.2}{2012/01/06}{Added option exercisesfont}
+% \changes{v0.4}{2012/01/09}{Changed name of option to exercisesfontsize}
+%
+% \begin{macro}{exercisesfontsize}
+% This option allows setting the font of the \texttt{exercises}
+% environment. You may chopse one of tiny, scriptsize, footnotesize,
+% small, normalsize, large, etc.\\
+% E.g., \texttt{[exercisesfontsize=small]}.
+% \begin{macrocode}
+\DeclareStringOption[normalsize]{exercisesfontsize}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v0.4}{2012/01/06}{Added option exercisesinlist}
+% \changes{v0.5}{2012/01/09}{Changed option exercisesinlist to exerciseaslist}
+%
+% \begin{macro}{exerciseaslist}
+% This boolean option (true, false) allows setting the typesetting of
+% the \texttt{exercises} in a list environment. This causes the
+% exercises to be typeset in a more compact fashion, with indented
+% left and right margin.
+% \begin{macrocode}
+\DeclareBoolOption[false]{exerciseaslist}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v0.5}{2012/01/09}{Added option copyexercisesinsolutions}
+% \begin{macro}{copyexercisesinsolutions}
+% This boolean option (true, false) allows copying the exercises in
+% the solutions file, to allow for making a complete stand-alone
+% exercises bundle.
+% \begin{macrocode}
+\DeclareBoolOption[false]{copyexercisesinsolutions}
+% \end{macrocode}
+% \end{macro}
+%
+% The options are processed using:
+% \begin{macrocode}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% The options are subsequently handled
+% \begin{macrocode}
+\newcommand{\exercisesfontsize}{\csname \exsol@exercisesfontsize\endcsname}
+% \end{macrocode}
+%
+% \subsection{Con- and destruction of the auxiliary streams}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% At the beginning of your document, we start by opening a stream to a
+% file that will be used to write the solutions to. At the end of your
+% document, the package closes the stream.
+% \begin{macrocode}
+\AtBeginDocument{
+ \newwrite\solutionstream
+ \immediate\openout\solutionstream=\jobname.sol.tex
+}
+\AtEndDocument{
+ \immediate\closeout\solutionstream
+}
+% \end{macrocode}
+%
+% \subsection{Exercises counter}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% By providing an exercise counter, proper numbering of the exercises
+% is provided to allow for good cross referencing of the solutions to
+% the exercises.
+% \changes{v0.2}{2012/01/06}{Removed dash in counter when in document
+% without sectioning commands}
+% \begin{macrocode}
+\newcounter{exercise}[subsection]
+\setcounter{exercise}{0}
+\renewcommand{\theexercise}{%
+ \@ifundefined{c@chapter}{}{\if0\arabic{chapter}\else\arabic{chapter}.\fi}%
+ \if0\arabic{section}\else\arabic{section}\fi%
+ \if0\arabic{subsection}\else.\arabic{subsection}\fi%
+ \if0\arabic{subsubsection}\else.\arabic{subsubsection}\fi%
+ \if0\arabic{exercise}\else%
+ \@ifundefined{c@chapter}%
+ {\if0\arabic{section}\else-\fi}%
+ {-}%
+ \arabic{exercise}%
+ \fi
+}
+% \end{macrocode}
+%
+% \section{The user environments}
+%
+% \begin{macro}{exercise}
+% The \texttt{exercise} environment is used to typeset your
+% exercises, provide them with a nice label and allow for copying
+% the exercise to the solutions file (if the package option
+% \texttt{copyexercisesinsolution}) is set. The label can be
+% set by redefining the \cs{exercisename} macro, or by relying on
+% the \textsf{Babel} provisions. The code is almost litteraly
+% taken from the \textsf{FancyVerb} package.
+% \begin{macrocode}
+\def\exercise{\FV@Environment{}{exercise}}
+\def\FVB@exercise{%
+ \refstepcounter{exercise}%
+ \newwrite\exercisestream
+ \immediate\openout\exercisestream=\jobname.exc.tex
+ \ifexsol@copyexercisesinsolutions
+ \typeout{Writing exercise to \jobname.sol.tex}
+ \immediate\write\solutionstream{\string\par---\string\newline
+ \string\textbf\string{\exercisename{} \theexercise \string}}
+ \else
+ \immediate\write\solutionstream{\string\par---\string\newline}
+ \fi
+ \immediate\write\exercisestream{\string\begin{exsol@exercise}}
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \ifexsol@copyexercisesinsolutions
+ \def\FV@ProcessLine{\immediate\write\solutionstream{\FV@Line}%
+ \immediate\write\exercisestream}%
+ \else
+ \def\FV@ProcessLine{\immediate\write\exercisestream}%
+ \fi
+ \relax
+ \let\FV@FontScanPrep\relax
+ \let\@noligs\relax
+ \FV@Scan
+ }
+\def\FVE@exercise{
+ \endgroup\@esphack
+ \immediate\write\exercisestream{\string\end{exsol@exercise}}
+ \ifexsol@copyexercisesinsolutions
+ \immediate\write\solutionstream{\string~\string\newline}
+ \fi
+ \immediate\closeout\exercisestream
+ \input{\jobname.exc.tex}
+}
+\DefineVerbatimEnvironment{exercise}{exercise}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{exsol@exercise}
+% The \texttt{exsol@exercise} environment is an internal macro used
+% to typeset your exercises and provide them with a nice label and
+% number. Do not use it directly. Use the proper environment
+% \texttt{exercise} instead.
+% \changes{v0.2}{2012/01/06}{Attempted to fix MiKTeX formatting problems}
+% \changes{v0.3}{2012/01/08}{Fixed labelsep to avoid cluttered
+% itemize environments}
+% \changes{v0.4}{2012/01/06}{Added option exercisesinlist such that
+% default results in non list formatting of exercise}
+% \changes{v0.5}{2012/01/09}{Changed implementation to allow for
+% copying the exercises to the solutions file.}
+% \begin{macrocode}
+\newenvironment{exsol@exercise}[0]
+{%
+ \begin{minipage}[t]{\textwidth}%
+ \ifthenelse{\boolean{exsol@exerciseaslist}}
+ {\begin{list}%
+ {%
+ }%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{1em}%
+ \setlength{\rightmargin}{1em}%
+ \setlength{\listparindent}{0em}%
+ \setlength{\itemindent}{0em}%
+ \setlength{\parsep}{\parskip}}%
+ \item[\hspace*{\leftmargin}\textit{\exercisename{}
+ \theexercise:}]
+ }%
+ {
+ \textit{\exercisename{} \theexercise:}~
+ }
+}
+{%
+ \ifthenelse{\boolean{exsol@exerciseaslist}}
+ {\end{list}}{}
+ \end{minipage}
+ \vspace{1ex}\par
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{solution}
+% The \texttt{solution} environment is used to typeset your solutions
+% and provide them with a nice label and number that corresponds to
+% the exercise that preceeded this solution. Theno label can be
+% set by redefining the \cs{solutionname} macro, or by relying on
+% the \textsf{Babel} provisions. The code is almost litteraly
+% taken from the \textsf{FancyVerb} package.
+% \begin{macrocode}
+\def\solution{\FV@Environment{}{solution}}
+\def\FVB@solution{%
+ \typeout{Writing solution to \jobname.sol.tex}
+ \immediate\write\solutionstream{\string\textbf\string{\solutionname{}\string}}
+ \ifexsol@copyexercisesinsolutions
+ \immediate\write\solutionstream{\string\newline}
+ \else
+ \immediate\write\solutionstream{\string\textbf\string{\theexercise\string}%
+ \string\newline}
+ \fi
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \def\FV@ProcessLine{\immediate\write\solutionstream}%
+ \relax
+ \let\FV@FontScanPrep\relax
+ \let\@noligs\relax
+ \FV@Scan
+ }
+\def\FVE@solution{\endgroup\@esphack}
+\DefineVerbatimEnvironment{solution}{solution}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{exercises}
+% The \texttt{exercises} environment helps typesetting your exercises to
+% stand out from the rest of the text. You may use it at the end of
+% a chapter, or just to group some exercises in the text.
+% \changes{v0.2}{2012/01/06}{Attempted to fix MiKTeX formatting problems}
+% \changes{v0.3}{2012/01/07}{Added some extra whitespace below exercisesname}
+% \begin{macrocode}
+\newenvironment{exercises}
+{\par\exercisesfontsize\rule{.25\linewidth}{0.15mm}\\*~\\*%
+ \textbf{\normalsize \exercisesname}\vspace*{1ex}\\}
+{~\\*\rule{.25\linewidth}{0.15mm}\par}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Some Babel provisions}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \changes{v0.2}{2012/01/06}{Fixed babel errors}
+% \begin{macro}{\exercisename}
+% The exercise environment makes use of a label \texttt{\exercisename{}}
+% macro.
+% \begin{macrocode}
+\newcommand{\exercisename}{Exercise}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\exercisesname}
+% The exercises environment makes use of a label \texttt{\exercisesname{}}
+% macro.
+% \begin{macrocode}
+\newcommand{\exercisesname}{Exercises}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\solutionname}
+% The solution environment makes use of a label \texttt{\solutionname{}}
+% macro.
+% \begin{macrocode}
+\newcommand{\solutionname}{Solution}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% You may redefine these macros, but to help you out a little bit, we
+% provide with some basic Babel auxiliaries. If you're a true polyglot
+% and are willing to help me out by providing translations for other
+% languages, I'm very willing to incorporate them into the code.
+%
+% \begin{macrocode}
+\addto\captionsdutch{%
+ \renewcommand{\exercisename}{Oefening}%
+ \renewcommand{\exercisesname}{Oefeningen}%
+ \renewcommand{\solutionname}{Oplossing}%
+}
+\addto\captionsgerman{%
+ \renewcommand{\exercisename}{Aufgabe}%
+ \renewcommand{\exercisesname}{Aufgaben}%
+ \renewcommand{\solutionname}{L\"osung}%
+}
+\addto\captionsfrench{%
+ \renewcommand{\exercisename}{Exercice}%
+ \renewcommand{\exercisesname}{Exercices}%
+ \renewcommand{\solutionname}{Solution}%
+}
+% \end{macrocode}
+%
+%
+%
+% Now the final hack overloads the basic sectioning commands to make
+% sure that they are copied into your solution book.
+%
+% \begin{macrocode}
+\let\exsol@@makechapterhead\@makechapterhead
+\def\@makechapterhead#1{%
+ \immediate\write\solutionstream{\string\chapter{#1}}%
+ \exsol@@makechapterhead{#1}
+}
+\ifdefined\frontmatter
+ \let\exsol@@frontmatter\frontmatter
+ \def\frontmatter{%
+ \immediate\write\solutionstream{\string\frontmatter}%
+ \exsol@@frontmatter
+ }
+\fi
+\ifdefined\frontmatter
+ \let\exsol@@mainmatter\mainmatter
+ \def\mainmatter{%
+ \immediate\write\solutionstream{\string\mainmatter}%
+ \exsol@@mainmatter
+ }
+\fi
+\ifdefined\backmatter
+ \let\exsol@@backmatter\backmatter
+ \def\backmatter{%
+ \immediate\write\solutionstream{\string\backmatter}%
+ \exsol@@backmatter
+ }
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\noexercisesinchapter}
+% If you have chapters without exercises, you may want to indicate
+% this clearly into your source. Otherwise empty chapters may appear
+% in your solution book.
+% \begin{macrocode}
+\newcommand{\noexercisesinchapter}
+{
+ \immediate\write\solutionstream{No exercises in this chapter}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{99}
+%
+% \bibitem{fancyvrb}
+% Timothy Van Zandt, Herbert Vo\ss, Denis Girou, Sebastian Rahtz, Niall
+% Mansfield
+% \newblock The \texttt{fancyvrb} package.
+% \newblock \url{http://ctan.org/pkg/fancyvrb}.
+% \newblock online, accessed in January 2012.
+%
+% \bibitem{CTAN}
+% The Comprehensive TeX Archive Network.
+% \newblock \url{http://www.ctan.org}.
+% \newblock online, accessed in January 2012.
+%
+% \end{thebibliography}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/exsol/exsol.ins b/Master/texmf-dist/source/latex/exsol/exsol.ins
new file mode 100644
index 00000000000..b0b2608abb2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/exsol/exsol.ins
@@ -0,0 +1,59 @@
+%% Copyright (C) 2012 by Walter Daems <walter.daems@ieee.org>
+%%
+%% 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 `maintained'.
+%%
+%% The Current Maintainer of this work is Walter Daems.
+%%
+%% This work consists of the files exsol.dtx and exsol.ins and the derived
+%% files:
+%% - exsol.sty
+%% - example.tex
+%% - example-solutionbook.tex
+
+\input docstrip.tex
+\keepsilent
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2012 by Walter Daems <walter.daems@ieee.org>
+
+This file 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.
+
+\endpreamble
+
+\usedir{tex/latex/exsol}
+\generate{\file{exsol.sty}{\from{exsol.dtx}{package}}}
+
+\obeyspaces
+\Msg{***************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you to move the following files *}
+\Msg{* into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* exsol.sty *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{***************************************************************}
+
+\endbatchfile
diff --git a/Master/texmf-dist/tex/latex/exsol/exsol.sty b/Master/texmf-dist/tex/latex/exsol/exsol.sty
new file mode 100644
index 00000000000..129585d0ad8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/exsol/exsol.sty
@@ -0,0 +1,202 @@
+%%
+%% This is file `exsol.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exsol.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2012 by Walter Daems <walter.daems@ieee.org>
+%%
+%% This file 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.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{exsol}
+ [2013/05/12 v0.6 ExSol - Exercises and Solutions package (DMW)]
+\def\fileversion{0.6}
+\def\filedate{2013/05/12}
+\RequirePackage{fancyvrb}
+\RequirePackage{ifthen}
+\RequirePackage{kvoptions}
+\DeclareStringOption[normalsize]{exercisesfontsize}
+\DeclareBoolOption[false]{exerciseaslist}
+\DeclareBoolOption[false]{copyexercisesinsolutions}
+\ProcessKeyvalOptions*
+\newcommand{\exercisesfontsize}{\csname \exsol@exercisesfontsize\endcsname}
+\AtBeginDocument{
+ \newwrite\solutionstream
+ \immediate\openout\solutionstream=\jobname.sol.tex
+}
+\AtEndDocument{
+ \immediate\closeout\solutionstream
+}
+\newcounter{exercise}[subsection]
+\setcounter{exercise}{0}
+\renewcommand{\theexercise}{%
+ \@ifundefined{c@chapter}{}{\if0\arabic{chapter}\else\arabic{chapter}.\fi}%
+ \if0\arabic{section}\else\arabic{section}\fi%
+ \if0\arabic{subsection}\else.\arabic{subsection}\fi%
+ \if0\arabic{subsubsection}\else.\arabic{subsubsection}\fi%
+ \if0\arabic{exercise}\else%
+ \@ifundefined{c@chapter}%
+ {\if0\arabic{section}\else-\fi}%
+ {-}%
+ \arabic{exercise}%
+ \fi
+}
+\def\exercise{\FV@Environment{}{exercise}}
+\def\FVB@exercise{%
+ \refstepcounter{exercise}%
+ \newwrite\exercisestream
+ \immediate\openout\exercisestream=\jobname.exc.tex
+ \ifexsol@copyexercisesinsolutions
+ \typeout{Writing exercise to \jobname.sol.tex}
+ \immediate\write\solutionstream{\string\par---\string\newline
+ \string\textbf\string{\exercisename{} \theexercise \string}}
+ \else
+ \immediate\write\solutionstream{\string\par---\string\newline}
+ \fi
+ \immediate\write\exercisestream{\string\begin{exsol@exercise}}
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \ifexsol@copyexercisesinsolutions
+ \def\FV@ProcessLine{\immediate\write\solutionstream{\FV@Line}%
+ \immediate\write\exercisestream}%
+ \else
+ \def\FV@ProcessLine{\immediate\write\exercisestream}%
+ \fi
+ \relax
+ \let\FV@FontScanPrep\relax
+ \let\@noligs\relax
+ \FV@Scan
+ }
+\def\FVE@exercise{
+ \endgroup\@esphack
+ \immediate\write\exercisestream{\string\end{exsol@exercise}}
+ \ifexsol@copyexercisesinsolutions
+ \immediate\write\solutionstream{\string~\string\newline}
+ \fi
+ \immediate\closeout\exercisestream
+ \input{\jobname.exc.tex}
+}
+\DefineVerbatimEnvironment{exercise}{exercise}{}
+\newenvironment{exsol@exercise}[0]
+{%
+ \begin{minipage}[t]{\textwidth}%
+ \ifthenelse{\boolean{exsol@exerciseaslist}}
+ {\begin{list}%
+ {%
+ }%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{1em}%
+ \setlength{\rightmargin}{1em}%
+ \setlength{\listparindent}{0em}%
+ \setlength{\itemindent}{0em}%
+ \setlength{\parsep}{\parskip}}%
+ \item[\hspace*{\leftmargin}\textit{\exercisename{}
+ \theexercise:}]
+ }%
+ {
+ \textit{\exercisename{} \theexercise:}~
+ }
+}
+{%
+ \ifthenelse{\boolean{exsol@exerciseaslist}}
+ {\end{list}}{}
+ \end{minipage}
+ \vspace{1ex}\par
+}
+\def\solution{\FV@Environment{}{solution}}
+\def\FVB@solution{%
+ \typeout{Writing solution to \jobname.sol.tex}
+ \immediate\write\solutionstream{\string\textbf\string{\solutionname{}\string}}
+ \ifexsol@copyexercisesinsolutions
+ \immediate\write\solutionstream{\string\newline}
+ \else
+ \immediate\write\solutionstream{\string\textbf\string{\theexercise\string}%
+ \string\newline}
+ \fi
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \def\FV@ProcessLine{\immediate\write\solutionstream}%
+ \relax
+ \let\FV@FontScanPrep\relax
+ \let\@noligs\relax
+ \FV@Scan
+ }
+\def\FVE@solution{\endgroup\@esphack}
+\DefineVerbatimEnvironment{solution}{solution}{}
+\newenvironment{exercises}
+{\par\exercisesfontsize\rule{.25\linewidth}{0.15mm}\\*~\\*%
+ \textbf{\normalsize \exercisesname}\vspace*{1ex}\\}
+{~\\*\rule{.25\linewidth}{0.15mm}\par}
+\newcommand{\exercisename}{Exercise}
+\newcommand{\exercisesname}{Exercises}
+\newcommand{\solutionname}{Solution}
+\addto\captionsdutch{%
+ \renewcommand{\exercisename}{Oefening}%
+ \renewcommand{\exercisesname}{Oefeningen}%
+ \renewcommand{\solutionname}{Oplossing}%
+}
+\addto\captionsgerman{%
+ \renewcommand{\exercisename}{Aufgabe}%
+ \renewcommand{\exercisesname}{Aufgaben}%
+ \renewcommand{\solutionname}{L\"osung}%
+}
+\addto\captionsfrench{%
+ \renewcommand{\exercisename}{Exercice}%
+ \renewcommand{\exercisesname}{Exercices}%
+ \renewcommand{\solutionname}{Solution}%
+}
+\let\exsol@@makechapterhead\@makechapterhead
+\def\@makechapterhead#1{%
+ \immediate\write\solutionstream{\string\chapter{#1}}%
+ \exsol@@makechapterhead{#1}
+}
+\ifdefined\frontmatter
+ \let\exsol@@frontmatter\frontmatter
+ \def\frontmatter{%
+ \immediate\write\solutionstream{\string\frontmatter}%
+ \exsol@@frontmatter
+ }
+\fi
+\ifdefined\frontmatter
+ \let\exsol@@mainmatter\mainmatter
+ \def\mainmatter{%
+ \immediate\write\solutionstream{\string\mainmatter}%
+ \exsol@@mainmatter
+ }
+\fi
+\ifdefined\backmatter
+ \let\exsol@@backmatter\backmatter
+ \def\backmatter{%
+ \immediate\write\solutionstream{\string\backmatter}%
+ \exsol@@backmatter
+ }
+\fi
+\newcommand{\noexercisesinchapter}
+{
+ \immediate\write\solutionstream{No exercises in this chapter}
+}
+\endinput
+%%
+%% End of file `exsol.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 7d614f2b5f3..e12ba8fee35 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -178,7 +178,7 @@ my @TLP_working = qw(
euler eulervm euro euro-ce europecv eurosym
everyhook everypage
exam examdesign examplep exceltex excludeonly exercise exp-testopt
- expdlist export expressg exsheets extarrows exteps
+ expdlist export expressg exsheets exsol extarrows exteps
extpfeil extract extsizes
facsimile factura facture faktor
fancybox fancyhdr fancyhdr-it fancynum fancypar
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index 5233ec45e53..d4ef9d46dc5 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -267,6 +267,7 @@ depend exp-testopt
depend expdlist
depend export
depend exsheets
+depend exsol
depend extract
depend facsimile
depend factura
diff --git a/Master/tlpkg/tlpsrc/exsol.tlpsrc b/Master/tlpkg/tlpsrc/exsol.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/exsol.tlpsrc