summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-09-20 21:18:47 +0000
committerKarl Berry <karl@freefriends.org>2016-09-20 21:18:47 +0000
commit61a904cd1a5937bb93de96ec42b8fcfddeadf8fa (patch)
treee41cd7c486ed1458bff006cb0f1cc7c9e99b2aa2 /Master/texmf-dist/source
parentd37cc0c40375e871a7a084f033c6075a99957853 (diff)
filecontentsdef (20sep16)
git-svn-id: svn://tug.org/texlive/trunk@42107 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.dtx851
-rw-r--r--Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.ins47
2 files changed, 898 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.dtx b/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.dtx
new file mode 100644
index 00000000000..27eb4ebbdbc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.dtx
@@ -0,0 +1,851 @@
+% -*- coding: utf-8; time-stamp-format: "%02d-%02m-%:y at %02H:%02M:%02S %Z" -*-
+% N.B.: this dtx file is NOT for use with \DocInput. The latex source of the
+% user manual isn't prefixed with percent signs.
+%<*none>
+\def\dtxtimestamp {Time-stamp: <19-09-2016 at 11:46:39 CEST>}%
+%</none>
+%<*!readme>
+%%
+%% Package: filecontentsdef
+%% Version: 1.2 (2016/09/19)
+%% License: LPPL 1.3c
+%% Copyright (C) 2016 Jean-Francois Burnol <jfbu at free dot fr>
+%%
+%</!readme>
+%<*insfile>
+\def\pkgname {filecontentsdef}
+\def\pkgdate {2016/09/19}
+\def\pkgdocdate {2016/09/19}
+\def\pkgversion {v1.2}
+\def\pkgdescription {filecontents + macro + verbatim (JFB)}
+%</insfile>
+%<*none>
+\iffalse
+%</none>
+%<*readme>
+<!-- -->
+
+ Source: filecontentsdef.dtx (v1.2 2016/09/19)
+ Author: Jean-Francois Burnol
+ Info: filecontents + macro + verbatim
+ License: LPPL 1.3c
+ Copyright (C) 2016 Jean-Francois Burnol.
+ <jfbu at free dot fr>
+
+ABSTRACT
+========
+
+This lightweight LaTeX2e package provides two environments called
+`filecontentsdef` and `filecontentshere`. They are derived from the
+LaTeX `filecontents` environment as extended by Scott Pakin's
+[filecontents] [1] package. In addition to the file creation they
+either store the (verbatim) contents in a macro (`filecontentsdef`)
+or typeset them (verbatim) on the spot (`filecontentshere`).
+
+I developed this to display TeX code verbatim in documentation and
+simultaneously produce during the LaTeX run the corresponding files
+in order to embed them in the PDF as _file attachment annotations_
+(via the services of Scott Pakin's further package [attachfile] [2].)
+
+[1]: http://www.ctan.org/pkg/filecontents "filecontents package"
+[2]: http://www.ctan.org/pkg/attachfile "attachfile package"
+
+INSTALLATION
+============
+
+To extract the package (.sty) run etex on the dtx file. To produce
+the PDF documentation, either:
+
+1. latex (twice) filecontentsdef.dtx, then dvips, then ps2pdf
+2. or pdflatex (twice),
+3. or latex (twice) then dvipdfmx
+
+This will also extract automatically the style file.
+
+Installation:
+
+ filecontentsdef.sty -> TDS:tex/latex/filecontentsdef/filecontentsdef.sty
+ filecontentsdef.dtx -> TDS:source/latex/filecontentsdef/filecontentsdef.dtx
+ filecontentsdef.pdf -> TDS:doc/latex/filecontentsdef/filecontentsdef.pdf
+
+ README.md -> TDS:doc/latex/filecontentsdef/README.md
+
+The other files may be discarded.
+
+LICENSE
+=======
+
+This Work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License 1.3c.
+This version of this license is in
+
+> <http://www.latex-project.org/lppl/lppl-1-3c.txt>
+
+and 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.
+
+The Author of this Work is:
+
+- Jean-Francois Burnol `<jfbu at free dot fr>`
+
+This Work consists of the main source file filecontentsdef.dtx and
+the derived files filecontentsdef.sty, filecontentsdef.ins,
+filecontentsdef.pdf, filecontentsdef.dvi, README.md.
+
+
+CHANGE LOG
+==========
+
+v1.2 \[2016/09/19\]
+-------------------
+
+Initial version.
+%</readme>
+%<*tex>-------------------------------------------------------------------------
+\chardef\Withdvipdfmx 1 % replace 1 by 0 for using pdflatex
+\chardef\NoSourceCode 0 % replace 0 by 1 for the doc *without* the source code
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile {filecontentsdef.tex}[Driver for filecontentsdef documentation]%
+\PassOptionsToClass {a4paper,fontsize=11pt,oneside}{scrdoc}
+\PassOptionsToPackage {english}{babel}
+\input filecontentsdef.dtx
+%%% Local Variables:
+%%% mode: latex
+%%% End:
+%</tex>-------------------------------------------------------------------------
+%<*insfile>---------------------------------------------------------------------
+\input docstrip.tex
+\askforoverwritefalse
+\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
+\string\NeedsTeXFormat{LaTeX2e}^^J%
+\string\ProvidesPackage{filecontentsdef}^^J%
+\space[\pkgdate\space\pkgversion\space\pkgdescription]}%
+\generate{\nopreamble\nopostamble
+\file{README.md}{\from{\pkgname.dtx}{readme}}%
+\usepostamble\defaultpostamble
+\file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}%
+\usepreamble\pkgpreamble
+\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}%
+\catcode32=13\relax% active space
+\let =\space%
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \pkgname.sty}
+\Msg{*}
+\Msg{* To produce the documentation run latex twice on file \pkgname.tex}
+\Msg{* and then run dvipdfmx on \pkgname.dvi.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+\ifx\numexpr\undefined
+\Msg{* warning: to get correct utf-8 encoded README.md }%
+\Msg{* do etex \pkgname.ins and not tex \pkgname.ins }%
+\Msg{************************************************************************}
+\fi
+\endbatchfile
+%</insfile>---------------------------------------------------------------------
+%<*none>------------------------------------------------------------------------
+\fi
+%
+\chardef\noetex 0
+\ifx\numexpr\undefined\chardef\noetex 1 \fi
+\ifnum\noetex=1 \chardef\extractfiles 0 % extract files, then stop
+\else
+ \ifx\ProvidesFile\undefined
+ \chardef\extractfiles 0 % etex etc.. on dtx, only file extraction.
+ \else % latex/pdflatex
+ \ifx\Withdvipdfmx\undefined
+ % latex/pdflatex on dtx
+ \chardef\extractfiles 1 % 1 = extract files and typeset manual, 2 = only typeset
+ \chardef\Withdvipdfmx 1 % 0 = pdflatex or latex+dvips, 1 = dvipdfmx
+ \chardef\NoSourceCode 0 % 0 = include source code, 1 = do not
+ \NeedsTeXFormat {LaTeX2e}%
+ \PassOptionsToClass {a4paper,fontsize=11pt,oneside}{scrdoc}%
+ \PassOptionsToPackage {english}{babel}%
+ \else % latex on tex
+ \chardef\extractfiles 2 % do not extract files, only typeset
+ \fi
+ \ProvidesFile{\pkgname.dtx}%
+ [\pkgname\space source and documentation (\dtxtimestamp)]%
+ \fi
+\fi
+\ifnum\extractfiles<2 % extract files
+\def\MessageDeFin{\newlinechar10 \let\Msg\message
+\Msg{********************************************************************^^J}%
+\Msg{*^^J}%
+\Msg{* To finish the installation you have to move the following^^J}%
+\Msg{* file into a directory searched by TeX:^^J}%
+\Msg{*^^J}%
+\Msg{*\space\space\space\space \pkgname.sty^^J}%
+\Msg{*^^J}%
+\Msg{* To produce the documentation with source code included run latex^^J}%
+\Msg{* twice on file \pkgname.tex and then dvipdfmx on \pkgname.dvi^^J}%
+\Msg{*^^J}%
+\Msg{* Happy TeXing!^^J}%
+\Msg{*^^J}%
+\Msg{********************************************************************^^J}%
+}%
+\begingroup
+ \input docstrip.tex
+ \askforoverwritefalse
+ \def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
+ \string\NeedsTeXFormat{LaTeX2e}^^J%
+ \string\ProvidesPackage{\pkgname}^^J%
+ \space[\pkgdate\space\pkgversion\space\pkgdescription]}%
+ \generate{\nopreamble\nopostamble
+ \file{README.md}{\from{\pkgname.dtx}{readme}}%
+ \usepostamble\defaultpostamble
+ \file{\pkgname.ins}{\from{\pkgname.dtx}{insfile}}%
+ \file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}%
+ \usepreamble\pkgpreamble
+ \file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}%
+\endgroup
+\fi % end of file extraction (from etex/latex/pdflatex run)
+\ifnum\noetex=1 % warning for README.md
+ \expandafter\def\expandafter\MessageDeFin\expandafter
+{\MessageDeFin
+\Msg{* warning: to get correct utf-8 encoded README.md ^^J}%
+\Msg{* do etex \pkgname.dtx and not tex \pkgname.dtx ^^J}%
+\Msg{********************************************************************^^J}}%
+\fi
+\ifnum\extractfiles=0 % tex/etex/xetex/etc files extracted, stop
+ \MessageDeFin\expandafter\end
+\fi
+% From this point on, run is necessarily with e-TeX.
+% Check if \MessageDeFin got defined, if yes put it at end of run.
+\ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi
+%-------------------------------------------------------------------------------
+% START OF USER MANUAL TEX SOURCE
+\documentclass[abstract]{scrdoc}
+
+\ifnum\NoSourceCode=1 \OnlyDescription\fi
+
+\usepackage{ifpdf}
+\ifpdf\chardef\Withdvipdfmx 0 \fi
+
+\makeatletter
+\ifnum\Withdvipdfmx=1
+ \@for\@tempa:=hyperref,bookmark,graphicx,xcolor,pict2e\do
+ {\PassOptionsToPackage{dvipdfmx}\@tempa}
+ %
+ \PassOptionsToPackage{dvipdfm}{geometry}
+ \PassOptionsToPackage{bookmarks=true}{hyperref}
+ \PassOptionsToPackage{dvipdfmx-outline-open}{hyperref}
+ \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark}
+ %
+ \def\pgfsysdriver{pgfsys-dvipdfm.def}
+\else
+ \PassOptionsToPackage{bookmarks=true}{hyperref}
+\fi
+ \let\original@check@percent\check@percent
+ \let\check@percent\relax
+\makeatother
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[hscale=0.66,vscale=0.75]{geometry}
+\pagestyle{headings}
+
+\def\MacroFont{\ttfamily\small\hyphenchar\font45 \baselineskip11pt\relax}
+
+% ATTENTION: (avec doc.sty ou les classes scrdoc ou ltxdoc)
+%
+% - l'environnement macrocode se fait avec \macro@font qui est le
+% \MacroFont du \begin{document}.
+%
+% - les environnements verbatim utilisent le \MacroFont courant.
+%
+% - \verb utilise un \ttfamily !! et non pas \verbatim@font que l'on
+% peut customiser.
+%
+% - (9 mars 2015) il ne faut PAS commencer des macrocode directement après
+% un \section, il faut un paragraphe (par exemple un \indent\par)
+
+\usepackage{xspace}
+\usepackage[dvipsnames]{xcolor}
+
+\definecolor{joli}{RGB}{225,95,0}
+\definecolor{JOLI}{RGB}{225,95,0}
+
+\newcommand\fcdname{%
+ \texorpdfstring{{\color{joli}\ttfamily\bfseries \pkgname}}{\pkgname}\xspace}
+
+\DeclareRobustCommand\csa [1] {{\ttfamily\hyphenchar\font45 \char`\\ #1}}
+
+\newcommand\csh[1]{\texorpdfstring{\csa{#1}}{\textbackslash\detokenize{#1}}}
+
+\usepackage {babel} % ngerman and english options have been passed to babel
+\AtBeginDocument {%
+ \renewcommand\partname{Part}%
+ \addto\captionsenglish {\renewcommand\partname{Part}}%
+}
+
+\usepackage[pdfencoding=pdfdoc]{hyperref}
+\hypersetup{%
+linktoc=all,%
+%% bookmarksdepth=3,%
+breaklinks=true,%
+colorlinks,%
+linkcolor=OliveGreen,%RoyalBlue,%
+urlcolor=RoyalBlue,%OliveGreen,%
+pdfauthor={Jean-Fran\c cois Burnol},%
+pdftitle={The \pkgname\space package},%
+pdfsubject={\pkgdescription},%
+pdfkeywords={LaTeX, files, verbatim},%
+pdfstartview=FitH,%
+pdfpagemode=UseOutlines}
+\usepackage{bookmark}
+
+\usepackage[zerostyle=a,scaled=0.95,straightquotes]{newtxtt}
+\renewcommand\familydefault\sfdefault
+\frenchspacing
+
+\usepackage{framed}
+
+%\usepackage{varioref}
+
+%\usepackage{footnotehyper}
+
+\usepackage{filecontentsdef}
+
+\makeatletter
+\newcommand\inmarg [1]{\@bsphack
+ \vadjust{\vskip-\dp\strutbox
+ \smash{\hbox to 0pt
+ {\color[named]{PineGreen}\normalfont\small
+ \hsize 2.5cm\rightskip.5cm minus.5cm
+ \hyphenpenalty\z@\exhyphenpenalty\z@
+ \doublehyphendemerits\z@\baselineskip9pt
+ \hss\vtop{\noindent#1}\kern.25cm }}%
+ \vskip\dp\strutbox }\strut\@esphack}
+\makeatother
+
+\begin{document}
+\rmfamily
+\thispagestyle{empty}
+
+\bookmark[named=FirstPage,level=1]{Title page}
+
+%\ttzfamily
+
+{%
+\normalfont\Large\parindent0pt \parfillskip 0pt\relax
+ \leftskip 2cm plus 1fil \rightskip 2cm plus 1fil
+ The \fcdname package\par
+}
+
+{\centering
+ \textsc{Jean-François Burnol}\par
+ \footnotesize
+ jfbu (at) free (dot) fr\par
+ Package version: \pkgversion\ (\pkgdate);
+ documentation date: \pkgdocdate.\par
+ {From source file \texttt{\pkgname.dtx}. \dtxtimestamp.}\par
+}
+
+\begin{abstract}
+ This lightweight \LaTeX2e package provides environments
+ |filecontentsdef| and |filecontentshere|. They are derived from
+ the \LaTeX\ |filecontents| environment as extended by
+ \textsc{Scott Pakin}'s
+ \href{http://www.ctan.org/pkg/filecontents}{filecontents}
+ package.\footnote{\fcdname works independently from
+ \href{http://www.ctan.org/pkg/filecontents}{filecontents} and
+ does not load it.} In addition to the file creation they either
+ store the (verbatim) contents in a macro (|filecontentsdef|) or
+ typeset them (verbatim) on the spot (|filecontentshere|).
+
+ I developed this to display \TeX\ code verbatim in documentation
+ and simultaneously produce during the LaTeX run the corresponding
+ files in order to embed them in the PDF as \emph{file attachment
+ annotations} (via the services of \textsc{Scott Pakin}'s
+ further package
+ \href{http://www.ctan.org/pkg/attachfile}{attachfile}.)
+\end{abstract}
+
+\section{Description}
+
+The environment\inmarg{|file\-contents\-here|}
+\begin{verbatim}
+ \begin{filecontentshere}{<filename>}
+ ... arbitrary contents ...
+ \end{filecontentshere}
+\end{verbatim}
+creates on the fly a file with these contents, and simultaneously
+it typesets them in a verbatim environment. There is no syntax
+ highlighting whatsoever.
+\begin{footnotesize}
+\begin{enumerate}
+\item
+ The contents are not completely arbitrary, as they may not contain
+ |\end{filecontentshere}| itself...\par
+\item This uses underneath the |verbatim| environment and this has been
+ tested to be compatible with the standard |verbatim|, with the one from
+ package \href{http://www.ctan.org/pkg/doc}{doc} (classes |ltxdoc.cls|,
+ |scrdoc.cls|) and also with the one from package
+ \href{http://www.ctan.org/pkg/verbatim}{verbatim} (whose mechanism is quite
+ different from the one of the default |verbatim| environment.)
+\end{enumerate}
+\end{footnotesize}
+
+\medskip
+The other environment is |filecontentsdef|.\inmarg{|file\-contents\-def|}
+It has a second mandatory argument, a macro.
+
+\begin{verbatim}
+ \begin{filecontentsdef}{<filename>}{\macro}
+ ... arbitrary contents ...
+ \end{filecontentsdef}
+\end{verbatim}
+
+
+It creates the file and rather than typesetting it verbatim
+simultaneously, it stores its (verbatim) contents in its second argument
+|\macro|.
+
+\begin{enumerate}
+\item the scope of the macro definition is global,
+\item |filecontentshere| is a wrapper of the |filecontentsdef|
+ environment using \csa{filecontentsheremacro} as the macro where the
+ contents are stored.\inmarg{\csa{file\-contents\-here\-macro}} This macro
+ can then be reused elsewhere if wanted.
+\item both environments admit the starred form which does \emph{not} add
+the usual three comment lines at the top of the written file (those lines
+are anyhow not typeset by |filecontentshere| nor are they included in the
+macro by |filecontentsdef|).
+\end{enumerate}
+
+\begin{framed}
+ Please note that |filecontentsdef| basically stores sanitized
+ (i.e. verbatim) tokens in its macro argument |\macro|.
+
+ If the material consists of \LaTeX\ code, the expansion of the
+ macro will only typeset some \emph{verbatim} rendering of the
+ \LaTeX\ code.
+\end{framed}
+
+\begin{footnotesize}
+ \def\MacroFont{\ttfamily\footnotesize\hyphenchar\font45
+ \baselineskip\the\baselineskip\relax} Using \eTeX's
+ \csa{scantokens}, one can re-tokenize the macro contents and (here
+ naturally, we are talking about the situation where the macro
+ contains \TeX/\LaTeX\ code): we obtain its ``execution'' via
+ |\scantokens\expandafter{\macro}|. Due to the way |\scantokens|
+ works, this must be done with |\newlinechar| set to |13| (to match
+ the |^^M|'s; see later in this documentation). Example:
+\begin{verbatim}
+\begin{filecontentsdef}{\jobname.test}{\macro}
+ \begin{framed}
+ \noindent
+ We have coded this in \LaTeX: both
+ $E=mc^2$ (input as |$E=mc^2$|)
+ and $E=h\nu$ owe much to \textsc{Albert Einstein}.
+ \end{framed}
+\end{filecontentsdef}
+{\newlinechar13 \scantokens\expandafter{\macro}}
+\end{verbatim}
+\begin{filecontentsdef}{\jobname.test}{\macro}
+ \begin{framed}
+ \noindent
+ We have coded this in \LaTeX: both
+ $E=mc^2$ (input as |$E=mc^2$|)
+ and $E=h\nu$ owe much to \textsc{Albert Einstein}.
+ \end{framed}
+\end{filecontentsdef}
+\filecontentsexec\macro Notice\footnote{The absence of indentation
+ at the start of this paragraph is a funny effect due to it
+ immediately following |framed| which itself immediately follows a
+ |verbatim|.} that a space token will generally appear at the end of
+the expansion, due to |\scantokens|'s way of working. This is an
+end-of-line space, which we could suppress via |\endlinechar-1\relax|
+before the |\scantokens|, but that is an option only in the case of
+single-line contents. If we had written above \verb|\end{framed}%| or
+|\end{framed}\relax| in our use of |filecontentsdef| this would have
+prevented |\scantokens| from inserting this final space (naturally in
+this example the space is issued while \TeX\ is in vertical mode and
+leaves no trace anyhow).\footnote{for basic information on this issue,
+ see:
+\url{http://tex.stackexchange.com/questions/117906/use-of-everyeof-and-endlinechar-with-scantokens}}
+
+Although \fcdname itself makes no use of \eTeX, it provides as a
+convenience
+\csa{filecontentsexec}\inmarg{\csa{file\-contents\-exec}\csa{macro}}
+which will use |\scantokens| to execute a |\macro| as above (thus
+assuming it contains legitimate but possibly verbatimized \LaTeX\
+code.) Rather than using a group (possibly |\macro| makes some
+non-global definitions) it issues |\newlinechar10\relax| (as this is
+the default -- we could have stored and restored current value, but
+well...) after the |\scantokens|.\par
+\end{footnotesize}
+
+As an example consider the following (with some |utf8| characters
+among those which are available in |T1|-encoded \TeX-fonts as used
+by this document with the help of |fontenc| and |inputenc|):
+\begin{verbatim}
+\begin{filecontentsdef}{filecontentsdef.license}{\fcdlicense}
+This Work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License 1.3c.
+This version of this license is in
+
+> <http://www.latex-project.org/lppl/lppl-1-3c.txt>
+
+and 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.
+
+The Author of this Work is:
+
+- Jean-François Burnol `<jfbu at free dot fr>`
+
+This Work consists of the main source file filecontentsdef.dtx and
+the derived files filecontentsdef.sty, filecontentsdef.ins,
+filecontentsdef.pdf, filecontentsdef.dvi, README.md.
+
+CHANGE LOG
+==========
+
+v1.2 \[2016/09/19\]
+-------------------
+
+Initial version.
+
+test: éèàùÉÈÇÀÙÛÎåðñòóôõöœøùúûüýþߟŽ§
+\end{filecontentsdef}
+\end{verbatim}
+
+\begin{filecontentsdef}{filecontentsdef.license}{\fcdlicense}
+This Work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License 1.3c.
+This version of this license is in
+
+> <http://www.latex-project.org/lppl/lppl-1-3c.txt>
+
+and 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.
+
+The Author of this Work is:
+
+- Jean-François Burnol `<jfbu at free dot fr>`
+
+This Work consists of the main source file filecontentsdef.dtx and
+the derived files filecontentsdef.sty, filecontentsdef.ins,
+filecontentsdef.pdf, filecontentsdef.dvi, README.md.
+
+CHANGE LOG
+==========
+
+v1.2 \[2016/09/19\]
+-------------------
+
+Initial version.
+
+test: éèàùÉÈÇÀÙÛÎåðñòóôõöœøùúûüýþߟŽ§
+\end{filecontentsdef}
+
+The file |filecontentsdef.license| is created with the usual three commentary
+lines at top of it. And macro \csa{fcdlicense} contains the verbatim material.
+It can then be expanded anywhere in the document. Here are some relevant
+details:
+
+\begin{enumerate}
+\item the usual special characters are sanitized like in a verbatim
+ environment,
+\item spaces become the active character of ascii code |32|, and
+ end of lines are converted into the active character of ascii
+ code |13| (i.e. |^^M|),
+\item the tabs |CTRL-I| have been converted to active spaces,
+\item the form feeds |CTRL-L| have been converted to blank lines (|^^M^^M|),
+\item the characters of ascii code between |128| and |255| have been
+ either given the catcode |letter|, or if they were active (which
+ will be the case with package |inputenc|), they are just inserted in
+ the produced macro as active characters.
+\end{enumerate}
+
+Thus what is needed before inserting \csa{fcdlicense} in the document
+is to give definitions to the active space and the active |^^M|.
+\LaTeX\ and \TeX\ both provide \csa{obeyspaces} and \csa{obeylines}.
+For a true verbatim printout, these are usually not enough because
+spaces at start of lines will disappear, and multiple empty lines give
+multiple |\par|'s which collapse into a single one (hence no empty
+line can be observed in the output). The usual |verbatim| environment
+uses a special definition of |\par| which prevents the disappearance
+of empty lines, and for the spaces it has macro \csa{@vobeyspaces}
+which makes the spaces issue |\leavevmode| so they are not skipped at
+the start of lines. Let's define:
+
+\begin{verbatim}
+\makeatletter
+% this redefines active spaces, but does not make spaces active
+\def\niceactivespaces{\@vobeyspaces\catcode32=10\relax}%
+\makeatother
+\begingroup
+% this redefines active end of lines, but does not make them active
+ \catcode`\^^M\active %
+ \gdef\niceactiveCRs{\def^^M{\leavevmode\par}}%
+\endgroup %
+\end{verbatim}
+
+Then we can issue something like (the output is not shown):
+\begin{verbatim}
+{\setlength{\parindent}{1cm}\niceactivespaces\niceactiveCRs\fcdlicense}
+\end{verbatim}
+Notice however this will still allow hyphenation and ligatures, which
+are usually inhibited in standard |verbatim| (and also we have not
+switched to the monospace font.) To emulate exactly what a real
+|verbatim| would give, \fcdname provides
+\csa{filecontentsprint}\inmarg{\csa{file\-contents\-print}\csa{macro}}
+which is a command with one mandatory argument whose invocation will
+produce the same as what
+\begingroup\makeatletter\def\x{\let\@xverbatim\relax
+ \verbatim
+\string\begin\string{verbatim\string}\par
+<contents of \string\macro>\par
+\string\end\string{verbatim\string}\par
+\endverbatim%
+\endgroup}\x
+
+% % bizarre
+% % \texttt{\parindent0pt\relax\niceactivespaces\niceactiveCRs\fcdlicense}%
+% % crée l'indentation il faut faire le \parindent0pt avant !
+% % hmm, bon pas envie de regarder ce que fait \texttt
+
+% % pour le fun
+% % {\setlength{\parindent}{11cm}\niceactivespaces\niceactiveCRs\ttfamily\fcdlicense}
+
+\noindent would have given.\footnote{This is compatible with
+ \href{http://www.ctan.org/pkg/verbatim}{verbatim.sty}'s |verbatim| and
+ hopefully also with other packages modifiying the way the |verbatim|
+ environment works.} The tokens stored in the macro must be of the type
+described above. As an illustration, here is the output from
+|\filecontentsprint\fcdlicense|:
+
+
+\filecontentsprint\fcdlicense
+
+
+\StopEventually{\end{document}}
+
+\makeatletter
+ \let\check@percent\original@check@percent
+\makeatother
+
+\small
+
+\section{Implementation}
+
+\indent % !!!!!!!!!!!!!!!!! Lundi 09 mars 2015 à 09:32:22
+
+
+\makeatletter
+\begingroup
+\topsep\MacrocodeTopsep
+\trivlist\parskip\z@\item[]
+\macro@font
+\leftskip\@totalleftmargin \advance\leftskip\MacroIndent
+\rightskip\z@ \parindent\z@ \parfillskip\@flushglue
+\global\@newlistfalse \global\@minipagefalse
+\ifcodeline@index
+ \everypar{\global\advance\c@CodelineNo\@ne
+ \llap{\theCodelineNo\ \hskip\@totalleftmargin}}%
+\fi
+\string\NeedsTeXFormat\string{LaTeX2e\string}[1999/12/01]\par
+\string\ProvidesPackage\string{\pkgname\string}\par
+\noindent\space [\pkgdate\space\pkgversion\space\pkgdescription]\par
+\nointerlineskip
+\global\@inlabelfalse
+\endtrivlist
+\endgroup
+\makeatother
+
+% The catcode hackery next is to avoid to have <*package> to be listed
+% in the commented source code...
+% (c) 2012/11/19 jf burnol ;-)
+
+\MakePercentIgnore
+
+%
+% \catcode`\<=0 \catcode`\>=11 \catcode`\*=11 \catcode`\/=11
+% \let</none>\relax
+% \def<*package>{\catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\/=12}
+%
+%</none>
+%<*package>
+% Most of
+% the code is still identical to the one in \textsc{Scott Pakin}'s
+% \href{http://www.ctan.org/pkg/filecontents}{filecontents} hence to
+% the original one in \LaTeX's sources.
+% \begin{macrocode}
+\begingroup
+\catcode`\^^M\active%
+\catcode`\^^L\active\let^^L\relax%
+\catcode`\^^I\active%
+\gdef\filec@ntentsdef#1#2{%
+ \let#2\@empty%
+ \openin\@inputcheck#1 %
+ \ifeof\@inputcheck%
+ \@latex@warning@no@line%
+ {Writing file `\@currdir#1'}%
+ \else%
+ \@latex@warning@no@line%
+ {Overwriting file `\@currdir#1'}%
+ \fi%
+ \closein\@inputcheck%
+ \chardef\reserved@c15 %
+ \ch@ck7\reserved@c\write%
+ \immediate\openout\reserved@c#1\relax%
+ \if@tempswa%
+ \immediate\write\reserved@c{%
+ \@percentchar\@percentchar\space%
+ \expandafter\@gobble\string\LaTeX2e file `#1'^^J%
+ \@percentchar\@percentchar\space generated by the %
+ `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
+ \@percentchar\@percentchar\space from source `\jobname' on %
+ \number\year/\two@digits\month/\two@digits\day.^^J%
+ \@percentchar\@percentchar}%
+ \fi%
+ \let\do\@makeother\dospecials%
+% \end{macrocode}
+% SP's |filecontents| sets here in the loop all catcodes to |11|, but we
+% need for correct rendering in verbatim that the constructed macro
+% stores active characters as active characters.
+%
+% We don't check for unusual active characters of ascii code |<128|
+% as this is not done by original or SP's |filecontents|. But if
+% present then they will expand similarly both in the |\write| and
+% in the construction of the macro.
+% \begin{macrocode}
+ \count@=128\relax%
+ \loop%
+ \ifnum\catcode\count@=\active%
+ \lccode`~\count@%
+ \lowercase{\def~{\noexpand~}}%
+ \else%
+ \catcode\count@=11 %
+ \fi%
+ \advance\count@ by \@ne%
+ \ifnum\count@<\@cclvi%
+ \repeat%
+% \end{macrocode}
+% The default active |^^L| is |\outer|. But |\reserved@b| will be |def'd|
+% with an active |^^L| in its replacement text.
+% \begin{macrocode}
+ \let^^L\relax%
+ \edef\E{\@backslashchar end\string{\@currenvir\string}}%
+ \edef\reserved@b{\def\noexpand\reserved@b####1\E####2\E####3\relax}%
+ \reserved@b{%
+ \ifx\relax##3\relax%
+ \immediate\write\reserved@c{##1}%
+% \end{macrocode}
+% This is where the original |filecontents| is extended to store the
+% parsed material in a macro (in my very first hack I simply
+% patched it to redefine |\write| to also do the macro storage, but
+% considerations like the one relative to active characters due to
+% |inputenc| made me decide to re-write the whole thing, hence make
+% a new package.)
+%
+% Active characters were defined with a single |\noexpand| in the
+% loop, and this is enough because after each new line is processed
+% the characters it contains are protected from further expansion in
+% the |\xdef|'s. And the single |\noexpand| is enough also for the
+% |\write| done above.
+%
+% The |lccode| of the tilde is |32| when this gets executed. Multiple
+% form feeds produce the same effect in the macro (insertion of two
+% |^^M| per form feed) as in the written out file (via two |^^J|).
+% \begin{macrocode}
+ \toks@\expandafter{#2}%
+ {\def^^L{\noexpand^^M\noexpand^^M}\lowercase{\let^^I~}%
+ \xdef#2{\the\toks@##1\noexpand^^M}}%
+ \else%
+ \edef^^M{\noexpand\end{\@currenvir}}%
+ \ifx\relax##1\relax%
+ \else%
+ \@latex@warning{Writing text `##1' before %
+ \string\end{\@currenvir}\MessageBreak as last line of #1}%
+ \immediate\write\reserved@c{##1}%
+% \end{macrocode}
+% Same added code as above.
+% \begin{macrocode}
+ \toks@\expandafter{#2}%
+ {\def^^L{\noexpand^^M\noexpand^^M}\lowercase{\let^^I~}%
+ \xdef#2{\the\toks@##1\noexpand^^M}}%
+ \fi%
+ \ifx\relax##2\relax%
+ \else%
+ \@latex@warning{%
+ Ignoring text `##2' after \string\end{\@currenvir}}%
+ \fi%
+ \fi%
+ ^^M}%
+ \catcode`\^^L\active%
+ \let\L\@undefined%
+ \def^^L{\@ifundefined L^^J^^J^^J}%
+ \catcode`\^^I\active%
+ \let\I\@undefined%
+ \def^^I{\@ifundefined I\space\space}%
+ \catcode`\^^M\active%
+ \edef^^M##1^^M{\noexpand\reserved@b##1\E\E\relax}%
+% \end{macrocode}
+% We want space characters to be active in the produced macro.
+% We only need to protect them once from expansion.
+% \begin{macrocode}
+ \catcode32\active\lccode`~32 \lowercase{\def~{\noexpand~}}%
+}%
+\endgroup
+\begingroup
+\catcode`\*=11
+\gdef\filecontentsdef {\@tempswatrue\filec@ntentsdef}%
+\gdef\filecontentsdef*{\@tempswafalse\filec@ntentsdef}%
+\global\let\endfilecontentsdef \endfilecontents
+\global\let\endfilecontentsdef*\endfilecontents
+\gdef\filecontentshere #1{\@tempswatrue
+ \filec@ntentsdef{#1}\filecontentsheremacro}%
+\gdef\filecontentshere*#1{\@tempswafalse
+ \filec@ntentsdef{#1}\filecontentsheremacro}%
+\gdef\endfilecontentshere{\endfilecontentsdef\aftergroup\filecontents@verbatim}%
+\global\let\endfilecontentshere*\endfilecontentshere
+% \end{macrocode}
+% Package |verbatim.sty| modifies the standard |verbatim| environment. For
+% both the original and the modified version we need to insert an active |^^M|
+% upfront, else an empty first line would not be obeyed. The |verbatim.sty|'s
+% |verbatim| needs that we feed it with the macro expanded once, as it uses
+% active end of lines as delimiters and they thus need to be immediately
+% visible. It also needs an active |^^M| after the |\end{verbatim}|. To avoid
+% to check at |\AtBeginDocument| if package |verbatim.sty| is loaded, we use a
+% slightly tricky common definition. The advantage is that this may help make
+% the code compatible with further packages (I have not looked for them)
+% modifying the |verbatim| environment. For better code readibility I use
+% |^^M%|'s rather than exploiting the active ends of lines here.
+% \begin{macrocode}
+\catcode`\^^M\active%
+\gdef\filecontentsprint #1{\let\filecontentsprint@EOL^^M\let^^M\relax%
+ \begingroup\toks@\expandafter{#1}\edef\x{\endgroup%
+ \noexpand\begin{verbatim}^^M%
+ \the\toks@\@backslashchar end\string{verbatim\string}}\x^^M%
+ \filecontentsprint@resetEOL}%
+\gdef\filecontentsprint@resetEOL{\let^^M\filecontentsprint@EOL}%
+\endgroup
+\def\filecontents@verbatim {\filecontentsprint\filecontentsheremacro}%
+\def\filecontentsexec #1{\newlinechar13
+ \scantokens\expandafter{#1}\newlinechar10\relax}%
+\endinput
+% \end{macrocode}
+% \MakePercentComment
+\Finale
+%%
+%% End of file `filecontentsdef.dtx'.
diff --git a/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.ins b/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.ins
new file mode 100644
index 00000000000..4ee739a6bfc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/filecontentsdef/filecontentsdef.ins
@@ -0,0 +1,47 @@
+%%
+%% Package: filecontentsdef
+%% Version: 1.2 (2016/09/19)
+%% License: LPPL 1.3c
+%% Copyright (C) 2016 Jean-Francois Burnol <jfbu at free dot fr>
+%%
+\def\pkgname {filecontentsdef}
+\def\pkgdate {2016/09/19}
+\def\pkgdocdate {2016/09/19}
+\def\pkgversion {v1.2}
+\def\pkgdescription {filecontents + macro + verbatim (JFB)}
+\input docstrip.tex
+\askforoverwritefalse
+\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J%
+\string\NeedsTeXFormat{LaTeX2e}^^J%
+\string\ProvidesPackage{filecontentsdef}^^J%
+\space[\pkgdate\space\pkgversion\space\pkgdescription]}%
+\generate{\nopreamble\nopostamble
+\file{README.md}{\from{\pkgname.dtx}{readme}}%
+\usepostamble\defaultpostamble
+\file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}%
+\usepreamble\pkgpreamble
+\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}%
+\catcode32=13\relax% active space
+\let =\space%
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \pkgname.sty}
+\Msg{*}
+\Msg{* To produce the documentation run latex twice on file \pkgname.tex}
+\Msg{* and then run dvipdfmx on \pkgname.dvi.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+\ifx\numexpr\undefined
+\Msg{* warning: to get correct utf-8 encoded README.md }%
+\Msg{* do etex \pkgname.ins and not tex \pkgname.ins }%
+\Msg{************************************************************************}
+\fi
+\endbatchfile
+\endinput
+%%
+%% End of file `filecontentsdef.ins'.