diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-13 23:45:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-13 23:45:45 +0000 |
commit | 53fd1db4e92c7f40124c92de9c43b455aa7f29bb (patch) | |
tree | 11ccb7d70d825bbdc7041923c72034bc89cb27a8 | |
parent | a43dfb3aaf9458a242743878b8ddb3ef995f956d (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/LICENSE | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/exsol/exsol.pdf | bin | 0 -> 247965 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/exsol/exsol.dtx | 703 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/exsol/exsol.ins | 59 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/exsol/exsol.sty | 202 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/exsol.tlpsrc | 0 |
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 Binary files differnew file mode 100644 index 00000000000..6118f6a3f5f --- /dev/null +++ b/Master/texmf-dist/doc/latex/exsol/exsol.pdf 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 |