summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lettrine
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lettrine
Initial commit
Diffstat (limited to 'macros/latex/contrib/lettrine')
-rw-r--r--macros/latex/contrib/lettrine/README34
-rw-r--r--macros/latex/contrib/lettrine/contrib.dtx376
-rw-r--r--macros/latex/contrib/lettrine/contrib.ins59
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-de.pdfbin0 -> 136266 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/demo-de.tex239
-rw-r--r--macros/latex/contrib/lettrine/doc/demo.pdfbin0 -> 144777 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/demo.tex306
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine.pdfbin0 -> 123998 bytes
-rw-r--r--macros/latex/contrib/lettrine/lettrine-2006-03-17.sty202
-rw-r--r--macros/latex/contrib/lettrine/lettrine-2015-08-31.sty251
-rw-r--r--macros/latex/contrib/lettrine/lettrine-2018-08-18.sty282
-rw-r--r--macros/latex/contrib/lettrine/lettrine.dtx1169
-rw-r--r--macros/latex/contrib/lettrine/lettrine.ins84
13 files changed, 3002 insertions, 0 deletions
diff --git a/macros/latex/contrib/lettrine/README b/macros/latex/contrib/lettrine/README
new file mode 100644
index 0000000000..c5e5f062bd
--- /dev/null
+++ b/macros/latex/contrib/lettrine/README
@@ -0,0 +1,34 @@
+ Lettrine bundle
+
+This bundle contains a package that I maintain to typeset dropped
+capitals in a LaTeX document.
+
+It is subject to the LaTeX Project Public License.
+See http://www.latex-project.org/lppl.txt
+for the details of that license.
+
+Installation: this bundle is included in most TeX distributions, but
+if you need to install it by yourself
+1. run lualatex on lettrine.dtx to get the documentation (lettrine.pdf),
+2. run luatex on lettrine.ins to strip the comments and create
+ lettrine.sty and lettrine.cfg
+3. run luatex on contrib.dtx to produce the *.cfl files.
+Files lettrine.sty, lettrine.cfg, lettrine-*.sty and *.cfl go to to
+a directory searched by TeX, typically $TEXMF/tex/latex/lettrine.
+Files README, demo*, *.pdf go to a doc directory, typically
+$TEXMF/doc/latex/lettrine.
+Files *.dtx, *.ins go to a source directory, typically
+$TEXMF/source/latex/lettrine
+
+If you wish, you can customize lettrine.cfg according to your needs.
+
+Have a look at one of the PDF files, demo.pdf (in French), or
+demo-de.pdf (in German) in the doc directory, to see how
+different layouts for dropped capitals can be achieved.
+You can also play with the source files demo.tex or demo-de.tex.
+Have a look at lettrine.pdf in the doc directory, if you are interested
+in the complete documentation and code.
+
+--
+Daniel Flipo, <daniel.flipo@free.fr>
+August, 25th, 2018.
diff --git a/macros/latex/contrib/lettrine/contrib.dtx b/macros/latex/contrib/lettrine/contrib.dtx
new file mode 100644
index 0000000000..15fa621740
--- /dev/null
+++ b/macros/latex/contrib/lettrine/contrib.dtx
@@ -0,0 +1,376 @@
+% \iffalse meta-comment
+%
+% This program can be distributed and/or modified under the terms
+% of the LaTeX Project Public License either version 1.3c 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.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% \fi
+%
+% \iffalse
+%<*opt>
+% \fi
+% \begin{macrocode}
+%% This is an example of config file *for syntax only*.
+%%
+%% Copy it to your document's directory and add
+%% \renewcommand{\DefaultOptionsFile}{optfile.cfl}
+%% to your document's preamble to use it.
+%%
+%% The settings below are just *examples*, they are not meant to be good!
+%% Proper values heavily depend on the font used!
+%%
+%% Letters not listed below, will get either the default parameters,
+%% or those given as optional argument of \lettrine, if any.
+%%
+%% The values of the parameters set in this file can be overridden locally
+%% using the optional argument of \lettrine.
+%%
+%% A
+\LettrineOptionsFor{A}{slope=0.1\LettrineWidth, findent=-.5em, nindent=.7em}
+%% Same parameters for \`A
+\LettrineOptionsFor{\`A}{slope=0.1\LettrineWidth, findent=-.5em, nindent=0.7em}
+%% C'
+\LettrineOptionsFor{C'}{nindent=-0.5em}
+%% I and J hang into the margin
+\LettrineOptionsFor{I}{lhang=1, nindent=0pt}
+\LettrineOptionsFor{J}{lhang=1, nindent=0pt}
+%% Q
+\LettrineOptionsFor{Q}{loversize=-0.1, lraise=0.1}
+%% V
+\LettrineOptionsFor{V}{slope=-0.1\LettrineWidth, lhang=0.5, nindent=0pt}
+% \end{macrocode}
+% \iffalse
+%</opt>
+% \fi
+%
+% \iffalse
+%<*pzc2>
+% \fi
+% \begin{macrocode}
+%%% This is file `pzc2.cfl'.
+%%% It is provided under the LPPL. Copyright is held by Kevin M. Dunn.
+%%% If you modify this file you *MUST* change its name.
+
+%%% This file contains config values to simplify the use of the
+%%% Zapf-Chancery (aka pzc) font with the lettrine package by Daniel Flipo.
+%%% This file provides the parameters for 2 DefaultLines.
+
+%%% If you want to use this file, your document should contain
+%%% the next three lines, without the leading percent signs.
+%%% \setcounter{DefaultLines}{2}
+%%% \renewcommand\LettrineFontHook{\fontencoding{T1}\fontfamily{pzc}\selectfont}
+%%% \renewcommand{\DefaultOptionsFile}{pzc2.cfl}
+
+%%% Comments about this file can be sent to Kevin Dunn
+%%% (cavema2 at cavemanchemistry.com)
+
+\ProvidesFile{pzc2.cfl}[2006/03/19 v0.1 Kevin M. Dunn]
+
+\LettrineOptionsFor{A}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.25\LettrineWidth}
+\LettrineOptionsFor{B}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.08\LettrineWidth}
+\LettrineOptionsFor{C}{loversize= 0.35,lraise= 0.10,lhang= 0.35,findent= 0.00\LettrineWidth,nindent= 0.28\LettrineWidth}
+\LettrineOptionsFor{D}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.15\LettrineWidth,nindent= 0.05\LettrineWidth}
+\LettrineOptionsFor{E}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.00\LettrineWidth,nindent= 0.28\LettrineWidth}
+\LettrineOptionsFor{F}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.00\LettrineWidth}
+\LettrineOptionsFor{G}{loversize= 0.35,lraise= 0.10,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.17\LettrineWidth}
+\LettrineOptionsFor{H}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{I}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.25\LettrineWidth}
+\LettrineOptionsFor{J}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.15\LettrineWidth,nindent= 0.00\LettrineWidth}
+\LettrineOptionsFor{K}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.13\LettrineWidth}
+\LettrineOptionsFor{L}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=-0.02\LettrineWidth,nindent= 0.30\LettrineWidth}
+\LettrineOptionsFor{M}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{N}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.10\LettrineWidth}
+\LettrineOptionsFor{O}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.15\LettrineWidth,nindent= 0.08\LettrineWidth}
+\LettrineOptionsFor{P}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.25\LettrineWidth,nindent= 0.05\LettrineWidth}
+\LettrineOptionsFor{Q}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.15\LettrineWidth,nindent= 0.10\LettrineWidth}
+\LettrineOptionsFor{R}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.08\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{S}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.13\LettrineWidth}
+\LettrineOptionsFor{T}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{U}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.05\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{V}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.18\LettrineWidth,nindent=-0.15\LettrineWidth}
+\LettrineOptionsFor{W}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.15\LettrineWidth,nindent=-0.05\LettrineWidth}
+\LettrineOptionsFor{X}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.00\LettrineWidth,nindent= 0.35\LettrineWidth}
+\LettrineOptionsFor{Y}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.10\LettrineWidth,nindent= 0.05\LettrineWidth}
+\LettrineOptionsFor{Z}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent= 0.00\LettrineWidth,nindent= 0.30\LettrineWidth}
+% \end{macrocode}
+% \iffalse
+%</pzc2>
+% \fi
+%
+% \iffalse
+%<*pzc3>
+% \fi
+% \begin{macrocode}
+%%% This is file `pzc3.cfl'.
+%%% It is provided under the LPPL. Copyright is held by Kevin M. Dunn.
+%%% If you modify this file you *MUST* change its name.
+
+%%% This file contains config values to simplify the use of the
+%%% Zapf-Chancery (aka pzc) font with the lettrine package by Daniel Flipo.
+%%% This file provides the parameters for 3 DefaultLines.
+
+%%% If you want to use this file, your document should contain
+%%% the next three lines, without the leading percent signs.
+%%% \setcounter{DefaultLines}{3}
+%%% \renewcommand\LettrineFontHook{\fontencoding{T1}\fontfamily{pzc}\selectfont}
+%%% \renewcommand{\DefaultOptionsFile}{pzc3.cfl}
+
+%%% Comments about this file can be sent to Kevin Dunn
+%%% (cavema2 at cavemanchemistry.com)
+
+\ProvidesFile{pzc3.cfl}[2006/03/19 v0.1 Kevin M. Dunn]
+
+\LettrineOptionsFor{A}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.25\LettrineWidth}
+\LettrineOptionsFor{B}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.10\LettrineWidth,nindent= 0.08\LettrineWidth,slope=-0.08\LettrineWidth}
+\LettrineOptionsFor{C}{loversize= 0.35,lraise= 0.10,lhang= 0.35,findent=0.00\LettrineWidth,nindent= 0.28\LettrineWidth}
+\LettrineOptionsFor{D}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.15\LettrineWidth,nindent= 0.05\LettrineWidth,slope=-0.05\LettrineWidth}
+\LettrineOptionsFor{E}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.00\LettrineWidth,nindent= 0.28\LettrineWidth}
+\LettrineOptionsFor{F}{loversize= 0.35,lraise= 0.05,lhang= 0.35,findent=0.10\LettrineWidth,nindent= 0.00\LettrineWidth}
+\LettrineOptionsFor{G}{loversize= 0.30,lraise= 0.30,lhang= 0.5,findent=0.10\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{H}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.10\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{I}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.25\LettrineWidth}
+\LettrineOptionsFor{J}{loversize= 0.35,lraise= 0.05,lhang= 0.35,findent=0.15\LettrineWidth,nindent= 0.00\LettrineWidth}
+\LettrineOptionsFor{K}{loversize= 0.30,lraise= 0.20,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.13\LettrineWidth,slope= 0.20\LettrineWidth}
+\LettrineOptionsFor{L}{loversize= 0.35,lraise= 0.00,lhang=0.35,findent=-0.02\LettrineWidth,nindent= 0.30\LettrineWidth}
+\LettrineOptionsFor{M}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{N}{loversize= 0.30,lraise= 0.20,lhang= 0.35,findent=0.10\LettrineWidth,nindent= 0.10\LettrineWidth,slope= 0.20\LettrineWidth}
+\LettrineOptionsFor{O}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.15\LettrineWidth,nindent= 0.08\LettrineWidth}
+\LettrineOptionsFor{P}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.25\LettrineWidth,nindent= 0.05\LettrineWidth}
+\LettrineOptionsFor{Q}{loversize= 0.30,lraise= 0.25,lhang= 0.35,findent=0.15\LettrineWidth,nindent= 0.10\LettrineWidth,slope= 0.20\LettrineWidth}
+\LettrineOptionsFor{R}{loversize= 0.30,lraise= 0.20,lhang= 0.35,findent=0.08\LettrineWidth,nindent= 0.15\LettrineWidth,slope= 0.20\LettrineWidth}
+\LettrineOptionsFor{S}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.10\LettrineWidth,nindent= 0.13\LettrineWidth}
+\LettrineOptionsFor{T}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{U}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.05\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{V}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.18\LettrineWidth,nindent=-0.05\LettrineWidth,slope=-0.15\LettrineWidth}
+\LettrineOptionsFor{W}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.18\LettrineWidth,nindent=-0.05\LettrineWidth,slope=-0.10\LettrineWidth}
+\LettrineOptionsFor{X}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.00\LettrineWidth,nindent= 0.35\LettrineWidth}
+\LettrineOptionsFor{Y}{loversize= 0.30,lraise= 0.10,lhang= 0.40,findent=0.10\LettrineWidth,nindent= 0.00\LettrineWidth,slope=-0.10\LettrineWidth}
+\LettrineOptionsFor{Z}{loversize= 0.35,lraise= 0.00,lhang= 0.35,findent=0.00\LettrineWidth,nindent= 0.30\LettrineWidth}
+% \end{macrocode}
+% \iffalse
+%</pzc3>
+% \fi
+%
+% \iffalse
+%<*pacl>
+% \fi
+% \begin{macrocode}
+%%% This is file `pacl.cfl'.
+%%% It is provided under the LPPL. Copyright is hold by Pascal Kockaert.
+%%% If you modify this file you *MUST* change its name.
+
+%%% This file contains config values to simplify the use of the
+%%% ACaslon-SwashItalic (aka pacri8s) font from Adobe
+%%% with the lettrine package by Daniel Flipo.
+
+%%% If you want to use this file, your document should contain
+%%% the two next lines, without the leading percent signs.
+%%% \renewcommand\LettrineFontHook{\fontencoding{T1}\fontfamily{pacl}\selectfont}
+%%% \renewcommand{\DefaultOptionsFile}{pacl.cfl}
+
+%%% The fontfamily pacl is defined through the file T1pacl.fd.
+%%% The contents of T1pacl.fd is listed at the end of this file.
+
+%%% The settings below were defined according to my visual tastes.
+%%% No mathematical rule based on the metrices was applied.
+%%% Though the result may not please you, it should be better
+%%% than the default placement. This said, comments are welcome.
+
+%%% Comments about this file can be sent to Pascal.Kockaert
+%%% at the mail server ulb.ac.be.
+
+\ProvidesFile{pacl.cfl}[2003/08/24 v0.1 Pascal Kockaert]
+
+\LettrineOptionsFor{A}{loversize= 0.15,lraise= 0.02,lhang= 0.30,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{B}{loversize= 0.15,lraise= 0.00,lhang= 0.25,findent=-0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{C}{loversize=-0.10,lraise= 0.25,lhang= 0.05,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{D}{loversize= 0.15,lraise= 0.00,lhang= 0.20,findent=-0.07\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{E}{loversize= 0.15,lraise= 0.00,lhang= 0.05,findent=-0.10\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{F}{loversize=-0.10,lraise= 0.20,lhang= 0.00,findent= 0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{G}{loversize=-0.10,lraise= 0.20,lhang= 0.05,findent=-0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{H}{loversize= 0.05,lraise= 0.00,lhang= 0.25,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{I}{loversize= 0.15,lraise= 0.00,lhang= 0.00,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{J}{loversize=-0.10,lraise= 0.20,lhang= 0.00,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{K}{loversize=-0.10,lraise= 0.25,lhang= 0.00,findent= 0.00\LettrineWidth,nindent= 0.45\LettrineWidth}
+\LettrineOptionsFor{L}{loversize= 0.00,lraise= 0.20,lhang= 0.00,findent=-0.10\LettrineWidth,nindent= 0.40\LettrineWidth}
+\LettrineOptionsFor{M}{loversize= 0.15,lraise= 0.00,lhang= 0.24,findent=-0.05\LettrineWidth,nindent= 0.10\LettrineWidth}
+\LettrineOptionsFor{N}{loversize=-0.05,lraise= 0.25,lhang= 0.13,findent= 0.05\LettrineWidth,nindent= 0.35\LettrineWidth}
+\LettrineOptionsFor{O}{loversize= 0.15,lraise= 0.00,lhang= 0.05,findent=-0.12\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{P}{loversize= 0.15,lraise= 0.00,lhang= 0.25,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{Q}{loversize=-0.15,lraise= 0.25,lhang= 0.10,findent=-0.05\LettrineWidth,nindent= 0.55\LettrineWidth}
+\LettrineOptionsFor{R}{loversize=-0.15,lraise= 0.25,lhang= 0.20,findent=-0.05\LettrineWidth,nindent= 0.45\LettrineWidth}
+\LettrineOptionsFor{S}{loversize=-0.10,lraise= 0.25,lhang=-0.05,findent=-0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{T}{loversize= 0.15,lraise= 0.00,lhang= 0.15,findent= 0.00\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{U}{loversize= 0.15,lraise= 0.00,lhang= 0.05,findent= 0.00\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{V}{loversize= 0.15,lraise= 0.00,lhang= 0.20,findent=-0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{W}{loversize= 0.15,lraise= 0.00,lhang= 0.15,findent=-0.05\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{X}{loversize= 0.15,lraise= 0.00,lhang= 0.45,findent= 0.05\LettrineWidth,nindent= 0.15\LettrineWidth}
+\LettrineOptionsFor{Y}{loversize= 0.15,lraise= 0.00,lhang= 0.05,findent= 0.20\LettrineWidth,nindent= 0.25\LettrineWidth}
+\LettrineOptionsFor{Z}{loversize= 0.05,lraise= 0.15,lhang= 0.15,findent= 0.00\LettrineWidth,nindent= 0.30\LettrineWidth}
+\let\EOF\endinput
+\EOF
+
+%% The installation of the pacl family can be performed using the
+%% fontinst package.
+%% You must own the font ACaslon-SwashItalic, that is an AFM and a PFB file
+%% which should be renamed as padri8w.afm and padri8w.pfb.
+
+%% You should process the file Makepacl.tex (see below) through TeX,
+%% and follow the instructions of the fontinst manual to finish the install.
+%% The file T1pacl.fd should be defined as below and put with other local
+%% FD files.
+
+%%% File Makepacl.tex
+\input fontinst.sty
+\installfonts
+ \declareencoding{T1-SWASH}{T1}
+ \fromafm{pacri8s} %%% File containing metrics of ACaslon-SwashItalic
+ \installfont{pacri9s}{pacri8s}{T1}{T1}{pacl}{m}{n}{}
+\endinstallfonts
+\bye
+%%% End of file Makepacl.tex
+
+%%% The pacl family is defined by the file T1pacl.fd, as follows
+
+%%% File T1pacl.fd
+%%% THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+\ProvidesFile{t1pacl.fd}[2003/08/24 v1.0 Pascal Kockaert]
+\DeclareFontFamily{T1}{pacl}{}
+\DeclareFontShape{T1}{pacl}{m}{n}{<->pacri9s}{}
+%%% End of file T1pacl.fd
+% \end{macrocode}
+% \iffalse
+%</pacl>
+% \fi
+%
+% \iffalse
+%<*padl>
+% \fi
+% \begin{macrocode}
+%%% This is file `padl.cfl'.
+%%% It is provided under the LPPL. Copyright is hold by Pascal Kockaert.
+%%% If you modify this file you *MUST* change its name.
+
+%%% This file contains config values to simplify the use of the
+%%% AGaramondAlt-Italic (aka padri8w) font from Adobe
+%%% with the lettrine package by Daniel Flipo.
+
+%%% If you want to use this file, your document should contain
+%%% the two next lines, without the leading percent signs.
+%%% \renewcommand\LettrineFontHook{\fontencoding{T1}\fontfamily{padl}\selectfont}
+%%% \renewcommand{\DefaultOptionsFile}{padl.cfl}
+
+%%% The fontfamily padl is defined through the file T1padl.fd.
+%%% The contents of T1padl.fd is listed at the end of this file.
+
+%%% The settings below were defined according to my visual tastes.
+%%% No mathematical rule based on the metrices was applied.
+%%% Though the result may not please you, it should be better
+%%% than the default placement. This said, comments are welcome.
+
+%%% Comments about this file can be sent to Pascal.Kockaert
+%%% at the mail server ulb.ac.be.
+
+\ProvidesFile{padl.cfl}[2003/08/24 v1.0 Pascal Kockaert]
+
+\LettrineOptionsFor{A}{loversize= 0.05,lraise= 0.10,lhang= 0.40,findent= 0.000\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{B}{loversize= 0.10,lraise= 0.00,lhang= 0.30,findent= 0.025\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{C}{loversize= 0.00,lraise= 0.10,lhang= 0.15,findent= 0.175\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{D}{loversize= 0.10,lraise= 0.00,lhang= 0.30,findent=-0.025\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{E}{loversize= 0.10,lraise= 0.00,lhang= 0.10,findent= 0.100\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{F}{loversize= 0.10,lraise= 0.00,lhang= 0.30,findent= 0.100\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{G}{loversize=-0.08,lraise= 0.20,lhang= 0.10,findent= 0.000\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{H}{loversize=-0.01,lraise= 0.00,lhang= 0.00,findent= 0.040\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{I}{loversize= 0.10,lraise= 0.00,lhang= 0.00,findent= 0.050\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{J}{loversize=-0.08,lraise= 0.20,lhang= 0.00,findent=-0.025\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{K}{loversize=-0.05,lraise= 0.25,lhang= 0.00,findent=-0.050\LettrineWidth,nindent= 0.60\LettrineWidth}
+\LettrineOptionsFor{L}{loversize= 0.00,lraise= 0.20,lhang= 0.00,findent= 0.100\LettrineWidth,nindent= 0.40\LettrineWidth}
+\LettrineOptionsFor{M}{loversize= 0.10,lraise= 0.00,lhang= 0.40,findent= 0.040\LettrineWidth,nindent= 0.10\LettrineWidth}
+\LettrineOptionsFor{N}{loversize= 0.00,lraise= 0.20,lhang= 0.20,findent=-0.010\LettrineWidth,nindent= 0.40\LettrineWidth}
+\LettrineOptionsFor{O}{loversize= 0.10,lraise= 0.00,lhang= 0.20,findent=-0.010\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{P}{loversize= 0.10,lraise= 0.00,lhang= 0.30,findent= 0.050\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{Q}{loversize= 0.00,lraise= 0.20,lhang= 0.20,findent= 0.050\LettrineWidth,nindent= 0.70\LettrineWidth}
+\LettrineOptionsFor{R}{loversize=-0.05,lraise= 0.25,lhang= 0.25,nindent= 0.500\LettrineWidth,nindent= 0.50\LettrineWidth}
+\LettrineOptionsFor{S}{loversize= 0.10,lraise= 0.05,lhang= 0.00,findent= 0.000\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{T}{loversize= 0.10,lraise= 0.00,lhang= 0.35,findent= 0.100\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{U}{loversize= 0.10,lraise= 0.00,lhang= 0.20,findent= 0.050\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{V}{loversize= 0.10,lraise= 0.00,lhang= 0.40,findent= 0.050\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{W}{loversize= 0.10,lraise= 0.00,lhang= 0.30,findent= 0.040\LettrineWidth,nindent= 0.50em}
+\LettrineOptionsFor{X}{loversize= 0.10,lraise= 0.00,lhang= 0.40,findent= 0.040\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{Y}{loversize= 0.10,lraise= 0.00,lhang= 0.20,findent= 0.100\LettrineWidth,nindent= 0.20\LettrineWidth}
+\LettrineOptionsFor{Z}{loversize=-0.05,lraise= 0.25,lhang= 0.00,findent= 0.050\LettrineWidth,nindent= 0.55\LettrineWidth}
+\let\EOF\endinput
+\EOF
+
+%% The installation of the padl family can be performed using the
+%% fontinst package.
+%% You must own the font AGaramondAlt-Italic, that is an AFM and a PFB
+%% file which should be renamed as padri8w.afm and padri8w.pfb.
+
+%% You should process the file Makepadl.tex (see below) through TeX,
+%% and follow the instructions of the fontinst manual to finish the
+%% install.
+%% The file T1padl.fd should be defined as below and put with other
+%% local FD files.
+
+%%% File Makepadl.tex
+\input fontinst.sty
+\installfonts
+ \declareencoding{T1-SWASH}{T1}
+ \fromafm{padri8w} %%% File containing metrics of AGaramondAlt-Italic
+ \gdef\uc#1#2{#1swash}
+ \installfont{padw9w}{padri8w}{T1}{T1}{padl}{m}{n}{}
+\endinstallfonts
+\bye
+%%% End of file Makepadl.tex
+
+%% The padl family is defined by the file T1padl.fd, as follows
+
+%%% File T1padl.fd
+%%% THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+\ProvidesFile{t1padl.fd}[2003/08/24 v0.1 Pascal Kockaert]
+\DeclareFontFamily{T1}{padl}{}
+\DeclareFontShape{T1}{padl}{m}{n}{<->padw9w}{}
+%%% End of file T1padl.fd
+% \end{macrocode}
+% \iffalse
+%</padl>
+% \fi
+%
+% \iffalse
+%<*dtx>
+% \fi
+%%
+%% \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 \~}
+%%
+% \iffalse
+%</dtx>
+% \fi
+%
+% \Finale
+\endinput
+
+%%% Local Variables:
+%%% fill-column: 70
+%%% coding: utf-8
+%%% End:
diff --git a/macros/latex/contrib/lettrine/contrib.ins b/macros/latex/contrib/lettrine/contrib.ins
new file mode 100644
index 0000000000..2070b331cf
--- /dev/null
+++ b/macros/latex/contrib/lettrine/contrib.ins
@@ -0,0 +1,59 @@
+%%
+%% Copyright (C) 1999-2018 Daniel Flipo.
+%%
+%% This program can be distributed and/or modified under the terms
+%% of the LaTeX Project Public License either version 1.3c 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+\def\batchfile{contrib.ins}
+\input docstrip.tex
+
+{\ifx\generate\undefined
+\Msg{**********************************************}
+\Msg{*}
+\Msg{* This installation requires docstrip}
+\Msg{* version 2.3c or later.}
+\Msg{*}
+\Msg{* An older version of docstrip has been input}
+\Msg{*}
+\Msg{**********************************************}
+\errhelp{Move or rename old docstrip.tex.}
+\errmessage{Old docstrip in input path}
+\batchmode
+\csname @@end\endcsname
+\fi}
+
+\keepsilent
+\askforoverwritefalse
+
+\usedir{tex/latex/lettrine}
+
+\nopreamble
+\generate{\file{optfile.cfl}{\from{contrib.dtx}{opt}}
+ \usedir{tex/latex/lettrine/contrib}
+ \file{pzc2.cfl}{\from{contrib.dtx}{pzc2}}
+ \file{pzc3.cfl}{\from{contrib.dtx}{pzc3}}
+ \nopostamble
+ \file{pacl.cfl}{\from{contrib.dtx}{pacl}}
+ \file{padl.cfl}{\from{contrib.dtx}{padl}}
+ }
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation please move all the *.cfl}
+\Msg{* files to the contrib subdirectory of tex/latex/lettrine.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{***********************************************************}
+
+\endbatchfile
+\endinput
diff --git a/macros/latex/contrib/lettrine/doc/demo-de.pdf b/macros/latex/contrib/lettrine/doc/demo-de.pdf
new file mode 100644
index 0000000000..069a6e8640
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/demo-de.tex b/macros/latex/contrib/lettrine/doc/demo-de.tex
new file mode 100644
index 0000000000..a5fabafa06
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo-de.tex
@@ -0,0 +1,239 @@
+%Format: pdfLaTeX
+
+\documentclass[12pt,a4paper]{article}
+
+\usepackage[a4paper,text={150mm,240mm},centering]{geometry}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{palatino} % Palatino und
+\renewcommand{\ttdefault}{lmtt} % Latin Modern Typewriter fonts
+\usepackage{microtype}
+
+\usepackage{lettrine}
+\usepackage{graphicx,color}
+\usepackage{lettrine}
+
+\usepackage{german}
+
+\newcommand{\MF}{{\small\sffamily\scshape metafont}}
+\newcommand{\MP}{{\small\sffamily\scshape metapost}}
+\setlength{\parindent}{0pt}
+\sloppy
+\begin{document}
+\thispagestyle{empty}
+
+\begin{center}
+\large\bfseries Einige Beispiele zur Anwendung des lettrine-Pakets
+\end{center}
+
+\vspace{\baselineskip}
+\textit{Einfachste Verwendung (2 Zeilen) :}\\
+\verb+\lettrine{E}{in} erstes Beispiel...+
+
+\lettrine{E}{in} erstes Beispiel zeigt das Standardverhalten von lettrine.
+Es wird eine Initiale über zwei Zeilen produziert, gefolgt vom Text zwischen
+den geschweiften Klammern, der als Kapitälchen gesetzt wird. Der weitere
+Text umfliesst die Initiale.
+
+\vspace{\baselineskip}
+\textit{Lettrine auf einer Zeile (option {\ttfamily\upshape lines=1}) :}\\
+\verb+\lettrine[lines=1]{E}{in} zweites Beispiel...+
+
+\lettrine[lines=1]{E}{in} zweites Beispiel zeigt, wie eine Initiale auf
+einer einzelnen Zeile aussieht. Auch hier ist der geklammerte Text in
+Kapitälchen gesetzt.
+
+\vspace{\baselineskip}
+\textit{Initiale über drei Zeilen (option {\ttfamily\upshape lines=3}) :}\\
+\verb+\lettrine[lines=3]{E}{in} drittes Beispiel...+
+
+\lettrine[lines=3]{E}{in} drittes Beispiel in dem die Initiale über drei
+Zeilen gesetzt wird. Beachten Sie die Einrückung der zweiten und dritten
+Zeile. Diese kann mit dem Parameter \verb+nindent= + beeinflusst werden. Die
+Einrückung der ersten Zeile wird hingegen mit dem Parameter \verb+findent= +
+beeinflusst.
+
+\vspace{\baselineskip}
+\textit{Initiale vollständig im Randbereich} :\\
+\verb+\lettrine[lhang=1, nindent=0pt, lines=3]{V}{erschieben}+
+
+\lettrine[lhang=1, nindent=0pt, lines=3]{V}{erschieben} wir nun im vierten
+Beispiel die Initiale in den Randbereich. Dieses Verhalten wird durch den
+Parameter \verb+lhang= + gesteuert.
+
+\vspace{\baselineskip}
+\textit{Initiale, vergrössert und teilweise im Randbereich} :\\
+\verb+\lettrine[lines=3, lhang=0.33, loversize=0.25]{A}{uch}+
+
+\lettrine[lines=3, lhang=0.33, loversize=0.25]{A}{uch}
+die Vergrösserung der Initiale ist möglich. Die Vergrösserung läuft
+über die Variable \verb+loversize= + . Sie müssen das Ergebnis nicht
+unbedingt schön finden. Es sieht nach meiner Meinung besser aus, wie das
+vollständige Verschieben in den Randbereich.
+
+\vspace{\baselineskip}
+\textit{Setzen wir nun eine %französisches
+ Anführungszeichen davor} :\\
+\verb+\lettrine[ante=\frqq]{M}{it} dem Parameter ...+
+
+\lettrine[ante=\frqq]{M}{it} dem Parameter \verb+ante= + kann auch ein
+beliebiger Text vor die Initiale gesetzt werden. In der Praxis dürften
+wohl nur Anführungszeichen dafür in Frage kommen.
+
+\vspace{\baselineskip}
+\verb+\def\lglqq{\raisebox{-\baselineskip}{\glqq}}+\\
+\verb+\lettrine[ante=\lglqq]{M}{it} dem Parameter ...+
+\def\lglqq{\raisebox{-\baselineskip}{\glqq}}
+
+\lettrine[ante=\lglqq]{M}{it} dem Parameter \verb+ante= + kann auch ein
+beliebiger Text vor die Initiale gesetzt werden. In der Praxis dürften
+wohl nur Anführungszeichen dafür in Frage kommen.
+
+\newpage
+\textit{Wir verkleinern die Initiale nun um 10\% und heben sie
+um 10\% wegen des {\glqq}Q{\grqq}}
+\verb+\lettrine[lines=4, loversize=-.1, lraise=.1]{Q}{ualität}+
+
+\lettrine[lines=4, loversize=-.1, lraise=.1]{Q}{ualität} hat ihren
+Preis. Und wenn es nur die Zeit ist, um zu lernen wie Sie solche Spielereien
+anstellen können. Bei den Ergebnissen lohnt sich aber die Mühe. Welche
+Parameter diesmal was beeinflussen, lasse ich Sie nun selbst herausfinden.
+Wie Sie sehen, ragt der Unterstrich des {\glqq}Q{\grqq} nicht in den Text
+hinein.
+
+\vspace{.5\baselineskip}
+\textit{Andere Möglichkeit: Nochmal das {\glqq}Q{\grqq} in normaler
+ Größe aber mit einer Zeile mehr darunter}
+\verb+\lettrine[lines=4,depth=1]{Q}{ualität}+
+
+\lettrine[lines=4,depth=1]{Q}{ualität} hat ihren Preis. Und wenn es nur die
+Zeit ist, um zu lernen wie Sie solche Spielereien anstellen können. Bei den
+Ergebnissen lohnt sich aber die Mühe. Welche Parameter diesmal was
+beeinflussen, lasse ich Sie nun selbst herausfinden. Wie Sie sehen, ragt der
+Unterstrich des {\glqq}Q{\grqq} auch nicht in den Text hinein: eine Zeile mehr
+wurde darunter mit \verb+depth=1+ frei gemacht.
+
+\vspace{.5\baselineskip}
+\textit{Verwendung der Option {\ttfamily\upshape slope}}, damit der Text
+der Neigung des {\glqq}A{\grqq} folgt:\\
+\verb+\lettrine[lines=4, slope=0.6em, findent=-1em,+\\
+\verb+ nindent=0.6em]{\A}{uch}...+
+
+\lettrine[lines=4, slope=0.6em, findent=-1em, nindent=0.6em]{A}{uch} eine
+Neigung kann angegeben werden. Damit werden die Löcher neben geneigten
+Buchstaben nicht so gross. Selbst eine negative Neigung ist möglich, damit
+bietet auch das {\glqq}V{\grqq} keine Schwierigkeiten mehr. Wie das beim
+{\glqq}V{\grqq} aussieht, sehen wir uns beim nächsten Beispiel an.
+
+\vspace{.5\baselineskip}
+\textit{Verwendung der Option {\ttfamily\upshape slope}, damit der Text
+der Neigung des {\ttfamily\upshape V} folgt; Das {\ttfamily\upshape V} ragt
+zusätzlich halb in den Rand hinein
+(Option {\ttfamily\upshape lhang=0.5} :})\\
+\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]+\\
+\verb+ {V}{iel} ist...+
+
+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{iel} ist hier
+nicht anders. Nur die negative Neigung und das Hereinragen in den Rand. Ob
+Ihnen das Ergebnis gefällt müssen Sie selber entscheiden. Sie sehen aber,
+das das {\glqq}V{\grqq} wirklich keine Schwierigkeiten bietet. Der Unterschied
+zum vorhergehenden Beispiel ist nicht besonders gross.
+
+\vspace{.5\baselineskip}
+\textit{Ändern wir nun die Schriftfamilie für die Initiale
+(hier AvantGarde bold italique):}\\
+\verb+\renewcommand{\LettrineFontHook}{\fontfamily{pag}%+\\
+\verb+ \fontseries{bx}\fontshape{it}}+\\
+\verb+\lettrine[findent=.3em]{A}{uch} ein Wechsel...+
+
+{% (Ändern des lokalen fonts)
+\renewcommand{\LettrineFontHook}{\fontfamily{pag}\fontseries{bx}\fontshape{it}}
+
+\lettrine[findent=.3em]{A}{uch} ein Wechsel der Schriftfamilie ist problemlos
+möglich. Hier verwenden wir Avantgarde und setzen mit der Option
+\verb+findent= + den horizontalen Abstand des eingerückten Texts.
+\par}
+
+\vspace{.5\baselineskip}
+\textit{Ändern wir nun die Schriftfamilie und die Farbe für die Initiale
+(hier yfrak in Grau) :}\\
+\verb+\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\color[gray]{0.5}}+\\
+\verb+\lettrine[loversize=0.1]{A}{uch}...+
+
+{% (Aendern des lokalen fonts)
+\renewcommand{\LettrineFontHook}{\fontfamily{yfrak}\color[gray]{0.5}}
+
+\lettrine[loversize=0.1]{A}{uch} ein Wechsel der
+Schriftfamilie ist problemlos möglich. Hier verwenden wir yfrak,
+etwas vergrössert mit der Option \verb+loversize= +, und wir schreiben
+die Initiale in Grau mit \verb+\color[gray]{0.5}+.
+\par}
+
+\newpage
+\begin{center}
+\large\bfseries Verwendung eines PostScript-Bildes als Initiale
+\end{center}
+
+\vspace{\baselineskip} Wenn die erwünschte Initiale nicht als Zeichen eines
+Fonts, sondern als Bild im Postscript-Format vorliegt, kann ebenfalls
+\verb+\lettrine+ verwendet werden. Es genügt,
+die Boolsche Variable \texttt{image=true} zu benützen; z.B. so:
+
+\vspace{.5\baselineskip}
+{% Gruppierung, um die LOKALEN Definitionen zu schützen
+\fontfamily{yfrak}\selectfont\Large
+\renewcommand{\LettrineTextFont}{\relax}
+\lettrine[image=true, lines=3, lhang=.2, loversize=.25, %
+ lraise=-.05, findent=0.1em, nindent=0em]
+{W}{er} reitet so spät durch Nacht und Wind?\\
+Es ist der Vater mit seinem Kind;\\
+Er hat den Knaben wohl in dem Arm,\\
+Er faßt ihn sicher, er hält ihn warm.
+\par}
+
+\vspace{\baselineskip} Und hier der zum Beispiel gehörende \LaTeX{}--Code:
+Das erste Argument von \verb+\lettrine+ war \verb+W+. Die Option \texttt{image=true}
+lädt dann die Datei \verb+W.eps+. Das Suffix \verb+.eps+ kann -- dank des
+Pakets \verb+graphicx.sty+ -- weggelassen werden.
+
+\begin{verbatim}
+{\fontfamily{yfrak}\selectfont\Large
+\renewcommand{\LettrineTextFont}{\relax}
+\lettrine[image=true, lines=3, lhang=.2, loversize=.25, %
+ lraise=-.05, findent=0.1em, nindent=0em]
+{W}{er} reitet so spät durch Nacht und Wind?
+Es ist der Vater mit seinem Kind;
+Er hat den Knaben wohl in dem Arm,
+Er faßt ihn sicher, er hält ihn warm.\par}
+\end{verbatim}
+
+Zur Darstellung dieses Beispiels müssen folgende Pakete installiert sein:
+\begin{itemize}
+\item \verb+graphicx.sty+,
+\item die Schriften \verb+yfrak.pfb+ im type\,1-Format
+ von Yannis~\textsc{Haralambous},
+\item das Paket \verb+blacklettert1+ von Thorsten~\textsc{Bronger}.
+\end{itemize}
+
+Die gothische Initiale \glqq W\grqq{} in diesem Beispiel können Sie mit dem
+Programm \MP{} aus den \MF{}-Sourcen und \verb+yinitW.mf+ erzeugen.
+
+Falls Sie eine PDF-Datei erzeugen wollen, müssen Sie die Datei \verb+W.eps+
+in eine PDF-Datei \verb+W.pdf+ umwandeln (mit Hilfe von \verb+epstopdf+).
+
+\verb+\lettrine+ unterstützt die Verwendung der Formate:
+\texttt{pdf}, \texttt{png}, \texttt{jpeg} oder \MP{} als Initiale.
+
+\vfill
+\begin{flushright}
+ Deutsche Version Georg \textsc{Wagner}\\
+ \texttt{g.wagner@datacomm.ch}\\
+ Mai 2003, ergänzt September 2014
+\end{flushright}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/lettrine/doc/demo.pdf b/macros/latex/contrib/lettrine/doc/demo.pdf
new file mode 100644
index 0000000000..c0253dc0d5
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/demo.tex b/macros/latex/contrib/lettrine/doc/demo.tex
new file mode 100644
index 0000000000..705f9272c3
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/demo.tex
@@ -0,0 +1,306 @@
+%Format: pdfLaTeX
+
+\documentclass[12pt,german,french]{article}
+
+\usepackage[a4paper,text={145mm,240mm},centering]{geometry}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{palatino} % Romain (sans-serif= helvetica)
+\renewcommand{\ttdefault}{lmtt} % Courier chasse trop !
+\usepackage{microtype}
+\usepackage{Rothdn, Typocaps} % cfr-initials (p. 3)
+
+\usepackage{lettrine}
+\usepackage{babel}
+\frenchbsetup{AutoSpacePunctuation=false,og=«,fg=»}
+
+\usepackage{graphicx,color}
+\usepackage{hyperref,bookmark}
+
+\newcommand{\MF}{{\small\sffamily\scshape metafont}}
+\newcommand{\MP}{{\small\sffamily\scshape metapost}}
+\setlength{\parindent}{0pt}
+\sloppy
+\begin{document}
+\thispagestyle{empty}
+
+\begin{center}
+\large\bfseries Quelques exemples de lettrines
+\end{center}
+
+\vspace{\baselineskip}
+\textit{Usage standard (2 lignes) :}\\
+\verb+\lettrine{E}{n} plein marais...+
+
+\lettrine{E}{n} plein marais de la Souteyranne, à quelques kilomètres
+au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+
+\vspace{\baselineskip}
+\textit{Lettrine sur une seule ligne (option {\ttfamily\upshape lines=1}) :}\\
+\verb+\lettrine[lines=1]{E}{n} plein marais...+
+
+\lettrine[lines=1]{E}{n} plein marais de la Souteyranne,
+à quelques kilomètres au nord d'Aigues-Mortes, se trouve
+la Tour Carbonnière.
+
+\vspace{\baselineskip}
+\textit{Lettrine sur trois lignes (option {\ttfamily\upshape lines=3}) :}\\
+\verb+\lettrine[lines=3]{E}{n} plein marais...+
+
+\lettrine[lines=3]{E}{n} plein marais de la Souteyranne,
+à juste quelques kilomètres au nord d'Aigues-Mortes,
+se trouve la Tour Carbonnière.
+Elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+
+\vspace{\baselineskip}
+\textit{Lettrine complètement dans la marge} :\\
+\verb+\lettrine[lhang=1, nindent=0pt, lines=3]{J}{ustement},...+
+
+\lettrine[lhang=1, nindent=0pt, lines=3]{J}{ustement},
+à quelques kilomètres au nord d'Aigues-Mortes,
+se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+L'abbaye était ravitaillée ---~dit-on ~--- par un souterrain
+qui la reliait au château de Treillan.
+
+\vspace{\baselineskip}
+\textit{Lettrine en saillie à la fois en hauteur et dans la marge} :\\
+\verb+\lettrine[lines=3, lhang=0.33, loversize=0.25]{E}{n} ...+
+
+\lettrine[lines=3, lhang=0.33, loversize=0.25]{E}{n}
+plein marais de la Souteyranne,
+à quelques kilomètres au nord d'Aigues-Mortes la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» \dots
+% dont il ne reste que des vestiges.
+
+\vspace{\baselineskip}
+\textit{On peut ajouter un guillemet devant la lettrine} :\\
+\verb+\lettrine[ante=«]{E}{n} plein marais ...+
+
+\lettrine[ante=«]{E}{n} plein marais de la Souteyranne,
+à quelques kilomètres au nord d'Aigues-Mortes, se trouve
+la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» \dots
+% dont il ne reste que des vestiges.
+
+\newpage
+Toutes Les lettrines suivantes seront en gris jusqu'à nouvel ordre : \\
+\verb+\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}+
+\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}
+
+\vspace{.5\baselineskip}
+\textit{On diminue la taille de la lettrine de 10\% et on
+la remonte de 10\% à cause du « Q »}
+\verb+\lettrine[lines=4, loversize=-0.1, lraise=0.1]{Q}{u'en...+
+
+\lettrine[lines=4, loversize=-0.1, lraise=0.1]{Q}{u'en plein marais}
+ de la Souteyranne, à quelques kilomètres au nord d'Aigues-Mortes,
+se trouve la Tour Carbonnière, surprend les visiteurs.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+L'abbaye était ravitaillée par un souterrain qui
+la reliait au château de Treillan.
+
+\vspace{.5\baselineskip}
+\textit{Autre solution : ajout d’une ligne grâce à} \verb+depth+\\
+\verb+\lettrine[lines=4,depth=1]{Q}{u'en plein marais} de ...+
+
+\lettrine[lines=4,depth=1]{Q}{u'en plein marais} de la Souteyranne,
+à quelques kilomètres au nord d'Aigues-Mortes,
+se trouve la Tour Carbonnière, surprend les visiteurs.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+L'abbaye était ravitaillée par un souterrain qui
+la reliait au château de Treillan.
+
+\vspace{.5\baselineskip}
+\textit{Utilisation de l'option {\ttfamily\upshape slope}} pour que le texte
+suive la pente du « À » :\\
+\verb+\lettrine[lines=4, slope=0.6em, findent=-1em,+\\
+\verb+ nindent=0.6em]{À}{quelques kilomètres}...+
+
+\lettrine[lines=4, slope=0.6em, findent=-1em, nindent=0.6em]{À} {quelques
+kilomètres} au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+L'abbaye était ravitaillée ---~dit-on~--- par un souterrain qui
+la reliait au château de Treillan.
+
+\vspace{.5\baselineskip}
+\textit{Utilisation de l'option {\ttfamily\upshape slope} pour que le texte
+ suive la pente du {\ttfamily\upshape V}, noter que celui-ci est à
+ demi-poussé dans la marge par l'option {\ttfamily\upshape lhang=0.5} :}\\
+\verb+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]+\\
+\verb+ {V}{oici} à...+
+
+\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{oici}
+à quelques kilomètres au nord d'Aigues-Mortes la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody,
+l'une des « abbayes de sel» dont il ne reste que quelques vestiges.
+L'abbaye était ravitaillée ---~dit-on~--- par un souterrain qui
+la reliait au château de Treillan.
+
+\newpage
+\newgeometry{text={138mm,240mm},centering}
+
+\begin{center}
+\large\bfseries Deux exemples d’utilisation de cfr-initials
+\end{center}
+
+\textit{Dans le préambule :}
+\verb+\usepackage{Typocaps, Rothdn}+
+
+\vspace{.5\baselineskip}
+\textit{Changement de police (ici Typocaps)
+ et de couleur pour la lettrine :}\\
+\verb+\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}+\\
+\verb+\lettrine[findent=.3em]{E}{n} plein marais...+
+
+{% Groupe (changement local de fonte)
+\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}
+
+\lettrine[findent=.3em]{E}{n} plein marais de la Souteyranne, à quelques
+kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée.
+\par}% Fin du groupe.
+
+\vspace{.5\baselineskip}
+\textit{Les quatre exemples suivants font appel à la police d’initiales Rothdn}\\
+\verb+\renewcommand{\LettrineFontHook}{\Rothdnfamily}+
+
+\renewcommand{\LettrineFontHook}{\Rothdnfamily}
+
+\vspace{.5\baselineskip}
+\textit{Le calcul de la taille de la lettrine prend comme référence les
+ lettres EFTZ (voir {\ttfamily\upshape\boi LettrineTestString}),
+ dans le cas de la police Rothdn ça donne ceci pour A :
+}
+
+\verb+\lettrine[lines=3]{A}{u} bord du marais+
+
+\lettrine[lines=3]{A}{u} bord du marais de la Souteyranne, à quelques
+kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody.
+
+\vspace{.5\baselineskip}
+\textit{L’option {\ttfamily\upshape refstring} donne une taille correcte à la
+ lettrine (le calcul est fait sur la base du A lui-même et non de EFTZ%
+ \footnote{Le F de la police Rothdn a une hauteur supérieure à celles des
+ autres lettres.} :
+}
+
+\verb+\lettrine[refstring, lines=3]{A}{u} bord du marais+
+
+\lettrine[refstring, lines=3]{A}{u} bord du marais de la Souteyranne,
+à quelques kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody.
+
+
+\vspace{.5\baselineskip}
+\textit{Il suffit maintenant de remonter un peu la lettrine
+ ({\ttfamily\upshape lraise=0.15}) pour compenser sa profondeur :
+}
+
+\verb+\lettrine[refstring, lraise=0.15, lines=3]{A}{u} bord du marais+
+
+\lettrine[refstring, lraise=0.15, lines=3]{A}{u} bord du marais de la
+Souteyranne, à quelques kilomètres au nord d'Aigues-Mortes, se trouve
+la Tour Carbonnière.
+Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
+terrestre de la ville fortifiée, celle qui menait à Psalmody.
+
+\newpage
+\restoregeometry
+\begin{center}
+\large\bfseries Utilisation d'une image comme lettrine
+\end{center}
+
+\vspace{\baselineskip}
+Si la lettrine souhaitée n'est pas un caractère d'une fonte mais une
+image, \verb+\lettrine+ peut encore être utilisée, il suffit
+d'utiliser le booléen \texttt{image}, exemple :
+
+\begin{otherlanguage}{german}
+\renewcommand{\LettrineTextFont}{\relax}
+\fontfamily{yfrak}\selectfont\Large
+\lettrine[image=true,lhang=.2, loversize=.25, findent=0.1em]
+{W}{er} reitet so spät durch Nacht und Wind?\\
+Es ist der Vater mit seinem Kind;\\
+Er hat den Knaben wohl in dem Arm,\\
+Er faßt ihn sicher, er hält ihn warm.\par
+\end{otherlanguage}
+
+\vspace{.5\baselineskip}
+Et voici le code \LaTeX{} correspondant ;
+le premier argument de \verb+\lettrine+ étant \verb+W+,
+\verb+\lettrine+ fait appel au fichier \verb+W.pdf+, \verb+W.jpg+, etc. en
+pdfLaTeX (omission possible du suffixe \verb+.eps+, \verb+.pdf+, propriété
+de \verb+graphicx.sty+).
+
+\begin{verbatim}
+\begin{otherlanguage}{german}
+ \fontfamily{yfrak}\selectfont\Large
+ \renewcommand{\LettrineTextFont}{\relax}
+ \lettrine[image=true,lhang=.2, loversize=.25, findent=0.1em]
+ {W}{er} reitet so spät durch Nacht und Wind?\\
+ Es ist der Vater mit seinem Kind;\\
+ Er hat den Knaben wohl in dem Arm,\\
+ Er faßt ihn sicher, er hält ihn warm.\par
+\end{otherlanguage}
+\end{verbatim}
+
+Cet exemple fait appel aux fichiers suivants :
+\begin{itemize}
+\item \texttt{graphicx.sty} (extension standard \LaTeXe{}),
+\item \texttt{blackletter1} de Thorsten~\textsc{Bronger} (disponible sur CTAN),
+\item les fontes gothiques « Fraktur » de Yannis~\textsc{Haralambous} type\,1
+ \texttt{yfrak.pfb} disponibles sur CTAN).
+\end{itemize}
+L'initiale gothique « W » utilisée dans
+cet exemple a été créée par \MP{} (fichier \texttt{W.pdf} ci-joint)
+à partir du source \MF{} \texttt{yinitW.mf} de Yannis grâce aux précieuses
+indications de Denis~\textsc{Roegel} que je remercie bien vivement.
+
+\vspace{.5\baselineskip}
+Une solution plus simple s’offre aux utilisateurs de LuaLaTeX ou XeLaTeX pour
+reproduire le poème ci-dessus : il suffit d’utiliser la police OpenType Yinit
+pour la lettrine et par exemple une des polices OpenType UnifrakturMaguntia
+pour le texte, voir \url{http://unifraktur.sourceforge.net/maguntia.html}.
+
+Le codage est identique à ceci près que l’option \texttt{image=true} est
+supprimée et l’appel à la police \texttt{yfrak} remplacé par :\\
+\verb+\setmainfont{UnifrakturMaguntia19}\Large+\\
+\verb+\renewcommand{\LettrineFontHook}{\setmainfont{Yinit}}+
+
+\vfill
+\begin{flushright}
+ Daniel \textsc{Flipo}\\
+ \texttt{daniel.flipo@free.fr}\\
+ avril 2019.
+\end{flushright}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% coding: utf-8
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/lettrine/doc/lettrine.pdf b/macros/latex/contrib/lettrine/doc/lettrine.pdf
new file mode 100644
index 0000000000..9d206d0d65
--- /dev/null
+++ b/macros/latex/contrib/lettrine/doc/lettrine.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/lettrine-2006-03-17.sty b/macros/latex/contrib/lettrine/lettrine-2006-03-17.sty
new file mode 100644
index 0000000000..aa7c9af1c6
--- /dev/null
+++ b/macros/latex/contrib/lettrine/lettrine-2006-03-17.sty
@@ -0,0 +1,202 @@
+%%
+%% This is file `lettrine.sty' v1.6.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file `lettrine.dtx'.
+%%
+%% This file can be distributed and/or modified under the terms
+%% of the LaTeX Project Public License either version 1.3c 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.3c 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 Daniel Flipo.
+%%
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesFile{lettrine.sty}
+ [2006/03/17 v1.6 (Daniel Flipo)]
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\RequirePackage{keyval}
+\newcounter{DefaultLines}
+\setcounter{DefaultLines}{2}
+\newcommand*{\DefaultOptionsFile}{\relax}
+\newcommand*{\DefaultLoversize}{0}
+\newcommand*{\DefaultLraise}{0}
+\newcommand*{\DefaultLhang}{0}
+\newdimen\DefaultFindent
+\setlength{\DefaultFindent}{\z@}
+\newdimen\DefaultNindent
+\setlength{\DefaultNindent}{0.5em}
+\newdimen\DefaultSlope
+\setlength{\DefaultSlope}{\z@}
+\newif\ifLettrineImage
+\newsavebox{\L@lbox}
+\newsavebox{\L@tbox}
+\newcounter{L@lines}
+\newdimen\L@Pindent
+\newdimen\L@Findent
+\newdimen\L@Nindent
+\newdimen\L@lraise
+\newdimen\L@first
+\newdimen\L@next
+\newdimen\L@slope
+\newdimen\L@height
+\newcommand*{\L@file}{}
+\newcommand*{\L@hang}{}
+\newcommand*{\L@oversize}{}
+\newcommand*{\L@raise}{}
+\newcommand*{\L@ante}{}
+\newif\ifL@image
+\newcommand*{\LettrineTextFont}{\scshape}
+\def\Lettrine@height{%
+ \@tempdima=\baselineskip
+ \setlength{\L@height}{\theL@lines\@tempdima}%
+ \ifnum\theL@lines>1
+ \addtolength{\L@height}{-\@tempdima}%
+ \fi
+ \sbox{\L@tbox}{\LettrineTextFont x}%
+ \addtolength{\L@height}{\ht\L@tbox}%
+ \addtolength{\L@height}{\L@oversize\L@height}}
+\newcommand*{\LettrineFontHook}{}
+\newcommand*{\LettrineTestString}{X}
+\newcommand*{\LettrineFont}{%
+ \Lettrine@height
+ \sbox{\L@tbox}{\LettrineFontHook\fontsize{\L@height}{\L@height}%
+ \selectfont \LettrineTestString}%
+ \@tempcntb=\ht\L@tbox
+ \@tempcnta=\L@height
+ \multiply\@tempcnta by 100
+ \divide\@tempcntb by 100
+ \divide\@tempcnta by \@tempcntb
+ \advance\@tempcnta by -9999
+ \ifnum\@tempcnta>0
+ \def\@tempa{1.\the\@tempcnta}%
+ \else
+ \def\@tempa{1}%
+ \fi
+ \LettrineFontHook
+ \fontsize{\@tempa\L@height}{\@tempa\L@height}%
+ \selectfont
+}
+\newcommand*{\LettrineFontEPS}{%
+ \Lettrine@height\LettrineFontHook
+ \includegraphics[height=\L@height]}
+\define@key{L}{lines}{\setcounter{L@lines}{#1}}
+\define@key{L}{lhang}{\renewcommand*{\L@hang}{#1}}
+\define@key{L}{loversize}{\renewcommand*{\L@oversize}{#1}}
+\define@key{L}{lraise}{\renewcommand*{\L@raise}{#1}}
+\define@key{L}{ante}{\renewcommand*{\L@ante}{#1}}
+\define@key{L}{findent}{\setlength{\L@Findent}{#1}}
+\define@key{L}{nindent}{\setlength{\L@Nindent}{#1}}
+\define@key{L}{slope}{\setlength{\L@slope}{#1}}
+\define@key{L}{image}[true]{\csname L@image#1\endcsname}
+\newcommand*{\LettrineOptionsFor}[2]{\@namedef{l@#1-keys}{#2}}
+\newdimen\LettrineWidth
+\newdimen\LettrineHeight
+\newdimen\LettrineDepth
+\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
+\def\@lettrine[#1]#2#3{%
+ \setcounter{L@lines}{\theDefaultLines}%
+ \renewcommand*{\L@hang}{\DefaultLhang}%
+ \renewcommand*{\L@oversize}{\DefaultLoversize}%
+ \renewcommand*{\L@raise}{\DefaultLraise}%
+ \renewcommand*{\L@ante}{}%
+ \setlength{\L@Findent}{\DefaultFindent}%
+ \setlength{\L@Nindent}{\DefaultNindent}%
+ \setlength{\L@slope}{\DefaultSlope}%
+ \ifLettrineImage\L@imagetrue\else\L@imagefalse\fi
+ \if\DefaultOptionsFile\relax
+ \else
+ \begingroup
+ \InputIfFileExists{\DefaultOptionsFile}%
+ {}%
+ {\PackageWarning{lettrine.sty}%
+ {File \DefaultOptionsFile\space not found}%
+ }%
+ \def\color##1##{\l@color{##1}}%
+ \let\l@color\@gobbletwo
+ \def\textcolor##1##{\l@textcolor{##1}}%
+ \def\l@textcolor##1##2##3{##3}%
+ \expandafter\ifx\csname l@#2-keys\endcsname\relax
+ \gdef\l@LOKeys{}%
+ \else
+ \xdef\l@LOKeys{\csname l@#2-keys\endcsname}%
+ \fi
+ \endgroup
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \fi
+ \setkeys{L}{#1}%
+ \ifL@image
+ \sbox{\L@lbox}{\LettrineFontEPS{#2}}%
+ \else
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \fi
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \@tempdima=\baselineskip
+ \ifnum\theL@lines=1
+ \setlength{\L@first}{\ht\L@lbox}%
+ \addtolength{\L@first}{-\ht\L@tbox}%
+ \setlength{\L@lraise}{\z@}%
+ \else
+ \setlength{\L@first}{-\theL@lines\@tempdima}%
+ \addtolength{\L@first}{\@tempdima}%
+ \sbox{\@tempboxa}{\LettrineTextFont x}%
+ \addtolength{\L@first}{-\ht\@tempboxa}%
+ \setlength{\L@lraise}{-\L@raise\L@first}%
+ \addtolength{\L@first}{\L@lraise}%
+ \addtolength{\L@first}{\ht\L@lbox}%
+ \addtolength{\L@lraise}{-\theL@lines\@tempdima}%
+ \addtolength{\L@lraise}{\@tempdima}%
+ \fi
+ \par
+ \ifdim\L@first>0.2\p@\vskip\L@first\fi
+ \setlength{\L@Pindent}{\wd\L@lbox}%
+ \addtolength{\L@Pindent}{-\L@hang\wd\L@lbox}%
+ \settowidth{\L@first}{\L@ante}%
+ \addtolength{\L@Pindent}{\L@first}%
+ \addtolength{\L@Pindent}{\L@Findent}%
+ \setlength{\L@first}{\linewidth}%
+ \addtolength{\L@first}{-\L@Pindent}%
+ \addtolength{\L@Nindent}{\L@Pindent}%
+ \setlength{\L@next}{\linewidth}%
+ \addtolength{\L@next}{-\L@Nindent}%
+ \addtolength{\L@Pindent}{\rightmargin}%
+ \addtolength{\L@Nindent}{\rightmargin}%
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \setlength{\LettrineHeight}{\ht\L@lbox}%
+ \setlength{\LettrineDepth}{\dp\L@lbox}%
+ \addtocounter{L@lines}{1}%
+ \def\L@parshape{\c@L@lines \the\L@Pindent \the\L@first}%
+ \@tempcnta=\tw@
+ \@whilenum \@tempcnta<\c@L@lines\do{%
+ \edef\L@parshape{\L@parshape \the\L@Nindent \the\L@next}%
+ \addtolength{\L@Nindent}{\L@slope}%
+ \addtolength{\L@next}{-\L@slope}%
+ \advance\@tempcnta\@ne}%
+ \edef\L@parshape{\L@parshape \rightmargin \the\linewidth}%
+ \noindent
+ \parshape=\L@parshape\relax
+ \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
+ \hskip \the\L@Findent}}%
+ \usebox{\L@tbox}%
+}
+\InputIfFileExists{lettrine.cfg}
+ {\typeout{Loading lettrine.cfg}}
+ {\typeout{lettrine.cfg not found, using default values}}
+\endinput
+%%
+%% End of file `lettrine.sty'.
diff --git a/macros/latex/contrib/lettrine/lettrine-2015-08-31.sty b/macros/latex/contrib/lettrine/lettrine-2015-08-31.sty
new file mode 100644
index 0000000000..99d02b8105
--- /dev/null
+++ b/macros/latex/contrib/lettrine/lettrine-2015-08-31.sty
@@ -0,0 +1,251 @@
+%%
+%% This is file `lettrine.sty' v1.9.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file `lettrine.dtx'.
+%%
+%% This file can be distributed and/or modified under the terms
+%% of the LaTeX Project Public License either version 1.3c 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.3c 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 Daniel Flipo.
+%%
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesFile{lettrine.sty}
+ [2015/08/31 v1.9 (Daniel Flipo)]
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\RequirePackage{keyval}
+\newcounter{DefaultLines}
+\setcounter{DefaultLines}{2}
+\newcounter{DefaultDepth}
+\newcommand*{\DefaultOptionsFile}{\relax}
+\newcommand*{\DefaultLoversize}{0}
+\newcommand*{\DefaultLraise}{0}
+\newcommand*{\DefaultLhang}{0}
+\newdimen\DefaultFindent
+\setlength{\DefaultFindent}{\z@}
+\newdimen\DefaultNindent
+\setlength{\DefaultNindent}{0.5em}
+\newdimen\DefaultSlope
+\setlength{\DefaultSlope}{\z@}
+\newdimen\DiscardVskip
+\setlength{\DiscardVskip}{0.2\p@}
+\newif\ifLettrineImage
+\newif\ifLettrineOnGrid
+\newif\ifLettrineRealHeight
+\newsavebox{\L@lbox}
+\newsavebox{\L@tbox}
+\newcounter{L@lines}
+\newcounter{L@depth}
+\newdimen\L@Pindent
+\newdimen\L@Findent
+\newdimen\L@Nindent
+\newdimen\L@lraise
+\newdimen\L@first
+\newdimen\L@next
+\newdimen\L@slope
+\newdimen\L@height
+\newdimen\L@novskip
+\newcommand*{\L@file}{}
+\newcommand*{\L@hang}{}
+\newcommand*{\L@oversize}{}
+\newcommand*{\L@raise}{}
+\newcommand*{\L@ante}{}
+\newif\ifL@image
+\newif\ifL@grid
+\newif\ifL@realh
+\newcommand*{\LettrineTextFont}{\scshape}
+\def\Lettrine@height{%
+ \@tempdima=\baselineskip
+ \setlength{\L@height}{\value{L@lines}\@tempdima}%
+ \ifnum\value{L@lines}>1
+ \addtolength{\L@height}{-\@tempdima}%
+ \fi
+ \ifvoid\L@tbox
+ \sbox{\L@tbox}{\LettrineTextFont{\LettrineSecondString}}%
+ \fi
+ \addtolength{\L@height}{\ht\L@tbox}%
+ \addtolength{\L@height}{\L@oversize\L@height}%
+}
+\newcommand*{\LettrineFontHook}{}
+\newcommand*{\LettrineTestString}{ABCDEFGHIJKLMNOQPRSTUVWXYZ}
+\newcommand*{\LettrineSecondString}{x}
+\newcommand*{\LettrineFont}{%
+ \Lettrine@height
+ \sbox{\@tempboxa}{\LettrineFontHook\fontsize{\L@height}{\L@height}%
+ \selectfont \LettrineTestString}%
+ \@tempcntb=\ht\@tempboxa
+ \@tempcnta=\L@height
+ \multiply\@tempcnta by 100
+ \divide\@tempcntb by 100
+ \divide\@tempcnta by \@tempcntb
+ \advance\@tempcnta by -9999
+ \ifnum\@tempcnta>0
+ \def\@tempa{1.\the\@tempcnta}%
+ \else
+ \def\@tempa{1}%
+ \fi
+ \LettrineFontHook
+ \fontsize{\@tempa\L@height}{\@tempa\L@height}%
+ \selectfont
+}
+\newcommand*{\LettrineFontEPS}{%
+ \Lettrine@height\LettrineFontHook
+ \includegraphics[height=\L@height]%
+}
+\define@key{L}{lines}{\setcounter{L@lines}{#1}}
+\define@key{L}{depth}{\setcounter{L@depth}{#1}}
+\define@key{L}{lhang}{\renewcommand*{\L@hang}{#1}}
+\define@key{L}{loversize}{\renewcommand*{\L@oversize}{#1}}
+\define@key{L}{lraise}{\renewcommand*{\L@raise}{#1}}
+\define@key{L}{ante}{\renewcommand*{\L@ante}{#1}}
+\define@key{L}{findent}{\setlength{\L@Findent}{#1}}
+\define@key{L}{nindent}{\setlength{\L@Nindent}{#1}}
+\define@key{L}{slope}{\setlength{\L@slope}{#1}}
+\define@key{L}{image}[true]{\csname L@image#1\endcsname}
+\define@key{L}{grid}[true]{\csname L@grid#1\endcsname}
+\define@key{L}{realheight}[true]{\csname L@realh#1\endcsname}
+\define@key{L}{novskip}{\setlength{\L@novskip}{#1}}
+\newcommand*{\LettrineOptionsFor}[2]{\@namedef{l@#1-keys}{#2}}
+\newdimen\LettrineWidth
+\newdimen\LettrineHeight
+\newdimen\LettrineDepth
+\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
+\def\@lettrine[#1]#2#3{%
+ \setcounter{L@lines}{\value{DefaultLines}}%
+ \setcounter{L@depth}{\value{DefaultDepth}}%
+ \renewcommand*{\L@hang}{\DefaultLhang}%
+ \renewcommand*{\L@oversize}{\DefaultLoversize}%
+ \renewcommand*{\L@raise}{\DefaultLraise}%
+ \renewcommand*{\L@ante}{}%
+ \setlength{\L@Findent}{\DefaultFindent}%
+ \setlength{\L@Nindent}{\DefaultNindent}%
+ \setlength{\L@slope}{\DefaultSlope}%
+ \setlength{\L@novskip}{\DiscardVskip}%
+ \ifLettrineImage\L@imagetrue\else\L@imagefalse\fi
+ \ifLettrineOnGrid\L@gridtrue\else\L@gridfalse\fi
+ \ifLettrineRealHeight\L@realhtrue\else\L@realhfalse\fi
+ \setkeys{L}{#1}%
+ \sbox{\L@tbox}{\LettrineTextFont{\LettrineSecondString}}%
+ \ifL@realh
+ \def\@tempa{#3}
+ \ifx\@tempa\@empty
+ \PackageWarning{lettrine.sty}%
+ {Empty second argument,\MessageBreak
+ ignoring option `realheight';}%
+ \else
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \fi
+ \fi
+ \if\DefaultOptionsFile\relax
+ \else
+ \begingroup
+ \InputIfFileExists{\DefaultOptionsFile}%
+ {}%
+ {\PackageWarning{lettrine.sty}%
+ {File \DefaultOptionsFile\space not found}%
+ }%
+ \def\color##1##{\l@color{##1}}%
+ \let\l@color\@gobbletwo
+ \def\textcolor##1##{\l@textcolor{##1}}%
+ \def\l@textcolor##1##2##3{##3}%
+ \expandafter\ifx\csname l@#2-keys\endcsname\relax
+ \gdef\l@LOKeys{}%
+ \else
+ \xdef\l@LOKeys{\csname l@#2-keys\endcsname}%
+ \fi
+ \endgroup
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \setkeys{L}{#1}%
+ \fi
+ \ifL@image
+ \sbox{\L@lbox}{\LettrineFontEPS{#2}}%
+ \else
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \fi
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \@tempdima=\baselineskip
+ \ifnum\value{L@lines}=1
+ \setlength{\L@first}{\ht\L@lbox}%
+ \addtolength{\L@first}{-\ht\L@tbox}%
+ \setlength{\L@lraise}{\z@}%
+ \else
+ \setlength{\L@first}{-\value{L@lines}\@tempdima}%
+ \addtolength{\L@first}{\@tempdima}%
+ \sbox{\@tempboxa}{\LettrineTextFont x}%
+ \addtolength{\L@first}{-\ht\@tempboxa}%
+ \setlength{\L@lraise}{-\L@raise\L@first}%
+ \addtolength{\L@first}{\L@lraise}%
+ \addtolength{\L@first}{\ht\L@lbox}%
+ \addtolength{\L@lraise}{-\value{L@lines}\@tempdima}%
+ \addtolength{\L@lraise}{\@tempdima}%
+ \fi
+ \par
+ \ifdim\L@first>\L@novskip
+ \ifL@grid
+ \@tempdima=\baselineskip
+ \@tempdimb=\@tempdima
+ \advance\@tempdimb by \L@novskip
+ \@tempcnta=1
+ \loop\ifdim\L@first>\@tempdimb
+ \advance\@tempcnta by 1
+ \advance\L@first by -\@tempdima
+ \repeat
+ \vskip\@tempcnta\baselineskip
+ \else
+ \vskip\L@first
+ \fi
+ \fi
+ \setlength{\L@Pindent}{\wd\L@lbox}%
+ \addtolength{\L@Pindent}{-\L@hang\wd\L@lbox}%
+ \settowidth{\L@first}{\L@ante}%
+ \addtolength{\L@Pindent}{\L@first}%
+ \addtolength{\L@Pindent}{\L@Findent}%
+ \setlength{\L@first}{\linewidth}%
+ \addtolength{\L@first}{-\L@Pindent}%
+ \addtolength{\L@Nindent}{\L@Pindent}%
+ \setlength{\L@next}{\linewidth}%
+ \addtolength{\L@next}{-\L@Nindent}%
+ \addtolength{\L@Pindent}{\rightmargin}%
+ \addtolength{\L@Nindent}{\rightmargin}%
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \setlength{\LettrineHeight}{\ht\L@lbox}%
+ \setlength{\LettrineDepth}{\dp\L@lbox}%
+ \addtocounter{L@lines}{1}%
+ \addtocounter{L@lines}{\value{L@depth}}%
+ \def\L@parshape{\c@L@lines \the\L@Pindent \the\L@first}%
+ \@tempcnta=\tw@
+ \@whilenum \@tempcnta<\c@L@lines\do{%
+ \edef\L@parshape{\L@parshape \the\L@Nindent \the\L@next}%
+ \addtolength{\L@Nindent}{\L@slope}%
+ \addtolength{\L@next}{-\L@slope}%
+ \advance\@tempcnta\@ne}%
+ \edef\L@parshape{\L@parshape \rightmargin \the\linewidth}%
+ \noindent
+ \parshape=\L@parshape\relax
+ \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
+ \hskip \the\L@Findent}}%
+ \usebox{\L@tbox}%
+}
+\InputIfFileExists{lettrine.cfg}
+ {\typeout{Loading lettrine.cfg}}
+ {\typeout{lettrine.cfg not found, using default values}}
+\endinput
+%%
+%% End of file `lettrine.sty'.
diff --git a/macros/latex/contrib/lettrine/lettrine-2018-08-18.sty b/macros/latex/contrib/lettrine/lettrine-2018-08-18.sty
new file mode 100644
index 0000000000..c302ce38d4
--- /dev/null
+++ b/macros/latex/contrib/lettrine/lettrine-2018-08-18.sty
@@ -0,0 +1,282 @@
+%%
+%% This is file `lettrine.sty' v2.1.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file `lettrine.dtx'.
+%%
+%% This file can be distributed and/or modified under the terms
+%% of the LaTeX Project Public License either version 1.3c 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.3c 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 Daniel Flipo.
+%%
+%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesFile{lettrine.sty}
+ [2018/08/18 v2.1 (Daniel Flipo)]
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\RequirePackage{keyval,minifp}
+\newcounter{DefaultLines}
+\setcounter{DefaultLines}{2}
+\newcounter{DefaultDepth}
+\newcommand*{\DefaultOptionsFile}{\relax}
+\newcommand*{\DefaultLoversize}{0}
+\newcommand*{\DefaultLraise}{0}
+\newcommand*{\DefaultLhang}{0}
+\newdimen\DefaultFindent
+\setlength{\DefaultFindent}{\z@}
+\newdimen\DefaultNindent
+\setlength{\DefaultNindent}{0.5em}
+\newdimen\DefaultSlope
+\setlength{\DefaultSlope}{\z@}
+\newdimen\DiscardVskip
+\setlength{\DiscardVskip}{0.2\p@}
+\newif\ifLettrineImage
+\newif\ifLettrineOnGrid
+\newif\ifLettrineRealHeight
+\newif\ifLettrineVone
+\newif\ifLettrineSelfRef
+\newsavebox{\L@lbox}
+\newsavebox{\L@tbox}
+\newcounter{L@lines}
+\newcounter{L@depth}
+\newdimen\L@Pindent
+\newdimen\L@Findent
+\newdimen\L@Nindent
+\newdimen\L@lraise
+\newdimen\L@first
+\newdimen\L@next
+\newdimen\L@slope
+\newdimen\L@height
+\newdimen\L@novskip
+\newdimen\L@target@ht
+\newdimen\L@target@dp
+\newdimen\L@target@tht
+\newdimen\LettrineWidth
+\newdimen\LettrineHeight
+\newdimen\LettrineDepth
+\newcommand*{\L@file}{}
+\newcommand*{\L@hang}{}
+\newcommand*{\L@oversize}{}
+\newcommand*{\L@raise}{}
+\newcommand*{\L@ante}{}
+\newif\ifL@image
+\newif\ifL@grid
+\newif\ifL@realh
+\newif\ifL@vone
+\newif\ifL@selfref
+\newcommand*{\LettrineTextFont}{\scshape}
+\newcommand*{\LettrineTestString}{EFTZ}
+\newcommand*{\LettrineSecondString}{x}
+\def\Lettrine@height{%
+ \setlength{\L@target@ht}{\ht\L@tbox}%
+ \@tempdima=\baselineskip
+ \setlength{\L@target@dp}{\value{L@lines}\@tempdima}%
+ \ifnum\value{L@lines}>1
+ \addtolength{\L@target@dp}{-\@tempdima}%
+ \else
+ \addtolength{\L@target@ht}{\L@target@dp}%
+ \setlength{\L@target@dp}{0pt}%
+ \fi
+ \setlength{\L@target@tht}{\L@target@ht}%
+ \addtolength{\L@target@tht}{\L@target@dp}%
+ \setlength{\L@height}{\L@target@tht}%
+ \addtolength{\L@height}{\L@oversize\L@target@tht}%
+ \ifL@image
+ \else
+ \ifL@selfref
+ \def\Lettrine@RefString{\l@refstring}%
+ \else
+ \def\Lettrine@RefString{\LettrineTestString}%
+ \fi
+ \sbox{\@tempboxa}{\LettrineFontHook
+ \fontsize{\L@height}{\L@height}\selectfont
+ \Lettrine@RefString}%
+ \@tempcnta=\ht\@tempboxa
+ \@tempcntb=\L@height
+ \ifL@vone
+ \multiply\@tempcntb by 100
+ \divide\@tempcnta by 100
+ \divide\@tempcntb by \@tempcnta
+ \advance\@tempcntb by -9999
+ \ifnum\@tempcntb>0
+ \def\L@factor{1.\the\@tempcntb}%
+ \else
+ \def\L@factor{1}%
+ \fi
+ \else
+ \MFPdiv{\the\@tempcntb}{\the\@tempcnta}\L@factor
+ \fi
+ \fi
+}
+\newcommand*{\LettrineFontHook}{}
+\newcommand*{\LettrineFont}{%
+ \LettrineFontHook
+ \fontsize{\L@factor\L@height}{\L@factor\L@height}%
+ \selectfont
+}
+\newcommand*{\LettrineFontEPS}{%
+ \LettrineFontHook\includegraphics[height=\L@height]%
+}
+\define@key{L}{lines}{\setcounter{L@lines}{#1}}
+\define@key{L}{depth}{\setcounter{L@depth}{#1}}
+\define@key{L}{lhang}{\renewcommand*{\L@hang}{#1}}
+\define@key{L}{loversize}{\renewcommand*{\L@oversize}{#1}}
+\define@key{L}{lraise}{\renewcommand*{\L@raise}{#1}}
+\define@key{L}{ante}{\renewcommand*{\L@ante}{#1}}
+\define@key{L}{findent}{\setlength{\L@Findent}{#1}}
+\define@key{L}{nindent}{\setlength{\L@Nindent}{#1}}
+\define@key{L}{slope}{\setlength{\L@slope}{#1}}
+\define@key{L}{image}[true]{\csname L@image#1\endcsname}
+\define@key{L}{grid}[true]{\csname L@grid#1\endcsname}
+\define@key{L}{realheight}[true]{\csname L@realh#1\endcsname}
+\define@key{L}{novskip}{\setlength{\L@novskip}{#1}}
+\define@key{L}{refstring}[\l@initial]{\L@selfreftrue
+ \def\l@refstring{#1}}
+\define@key{L}{Vone}[true]{\csname L@vone#1\endcsname}
+\newcommand*{\LettrineOptionsFor}[2]{\@namedef{l@#1-keys}{#2}}
+\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
+\def\@lettrine[#1]#2#3{%
+ \def\l@initial{#2}\let\l@refstring\l@initial
+ \setcounter{L@lines}{\value{DefaultLines}}%
+ \setcounter{L@depth}{\value{DefaultDepth}}%
+ \renewcommand*{\L@hang}{\DefaultLhang}%
+ \renewcommand*{\L@oversize}{\DefaultLoversize}%
+ \renewcommand*{\L@raise}{\DefaultLraise}%
+ \renewcommand*{\L@ante}{}%
+ \setlength{\L@Findent}{\DefaultFindent}%
+ \setlength{\L@Nindent}{\DefaultNindent}%
+ \setlength{\L@slope}{\DefaultSlope}%
+ \setlength{\L@novskip}{\DiscardVskip}%
+ \ifLettrineImage\L@imagetrue\else\L@imagefalse\fi
+ \ifLettrineOnGrid\L@gridtrue\else\L@gridfalse\fi
+ \ifLettrineRealHeight\L@realhtrue\else\L@realhfalse\fi
+ \ifLettrineVone\L@vonetrue\else\L@vonefalse\fi
+ \ifLettrineSelfRef\L@selfreftrue\else\L@selfreffalse\fi
+ \setkeys{L}{#1}%
+ \sbox{\L@tbox}{\LettrineTextFont{\LettrineSecondString}}%
+ \ifL@realh
+ \def\@tempa{#3}
+ \ifx\@tempa\@empty
+ \PackageWarning{lettrine.sty}%
+ {Empty second argument,\MessageBreak
+ ignoring option `realheight';}%
+ \else
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \fi
+ \fi
+ \if\DefaultOptionsFile\relax
+ \else
+ \begingroup
+ \InputIfFileExists{\DefaultOptionsFile}%
+ {}%
+ {\PackageWarning{lettrine.sty}%
+ {File \DefaultOptionsFile\space not found}%
+ }%
+ \def\color##1##{\l@color{##1}}%
+ \let\l@color\@gobbletwo
+ \def\textcolor##1##{\l@textcolor{##1}}%
+ \def\l@textcolor##1##2##3{##3}%
+ \expandafter\ifx\csname l@#2-keys\endcsname\relax
+ \gdef\l@LOKeys{}%
+ \else
+ \xdef\l@LOKeys{\csname l@#2-keys\endcsname}%
+ \fi
+ \endgroup
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \Lettrine@height
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \setkeys{L}{#1}%
+ \fi
+ \Lettrine@height
+ \ifL@image
+ \sbox{\L@lbox}{\LettrineFontEPS{#2}}%
+ \else
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \fi
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \setlength{\LettrineHeight}{\ht\L@lbox}%
+ \setlength{\LettrineDepth}{\dp\L@lbox}%
+ \begingroup
+ \def\IeC##1{##1}%
+ \@tempdima=\L@oversize pt\relax
+ \PackageInfo{lettrine.sty}%
+ {Targeted height = \the\L@target@tht\MessageBreak
+ (no accent, loversize=0),\MessageBreak
+ Lettrine height = \the\LettrineHeight\space (#2)%
+ \ifdim\@tempdima=\z@\else\space loversize=\L@oversize\fi;%
+ \MessageBreak reported}%
+ \endgroup
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \setlength{\L@first}{\LettrineHeight}%
+ \setlength{\L@lraise}{\L@raise\L@target@tht}%
+ \addtolength{\L@first}{\L@lraise}%
+ \ifnum\value{L@lines}=1
+ \addtolength{\L@first}{-\ht\L@tbox}%
+ \else
+ \addtolength{\L@first}{-\L@target@tht}%
+ \addtolength{\L@lraise}{-\L@target@dp}%
+ \fi
+ \par
+ \ifdim\L@first>\L@novskip
+ \ifL@grid
+ \@tempdima=\baselineskip
+ \@tempdimb=\@tempdima
+ \advance\@tempdimb by \L@novskip
+ \@tempcnta=1
+ \loop\ifdim\L@first>\@tempdimb
+ \advance\@tempcnta by 1
+ \advance\L@first by -\@tempdima
+ \repeat
+ \L@first=\@tempcnta\baselineskip
+ \fi
+ \vskip\L@first
+ \fi
+ \setlength{\L@Pindent}{\wd\L@lbox}%
+ \addtolength{\L@Pindent}{-\L@hang\wd\L@lbox}%
+ \settowidth{\L@first}{\L@ante}%
+ \addtolength{\L@Pindent}{\L@first}%
+ \addtolength{\L@Pindent}{\L@Findent}%
+ \setlength{\L@first}{\linewidth}%
+ \addtolength{\L@first}{-\L@Pindent}%
+ \addtolength{\L@Nindent}{\L@Pindent}%
+ \setlength{\L@next}{\linewidth}%
+ \addtolength{\L@next}{-\L@Nindent}%
+ \addtolength{\L@Pindent}{\rightmargin}%
+ \addtolength{\L@Nindent}{\rightmargin}%
+ \addtocounter{L@lines}{1}%
+ \addtocounter{L@lines}{\value{L@depth}}%
+ \def\L@parshape{\c@L@lines \the\L@Pindent \the\L@first}%
+ \@tempcnta=\tw@
+ \@whilenum \@tempcnta<\c@L@lines\do{%
+ \edef\L@parshape{\L@parshape \the\L@Nindent \the\L@next}%
+ \addtolength{\L@Nindent}{\L@slope}%
+ \addtolength{\L@next}{-\L@slope}%
+ \advance\@tempcnta\@ne}%
+ \edef\L@parshape{\L@parshape \rightmargin \the\linewidth}%
+ \noindent
+ \parshape=\L@parshape\relax
+ \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
+ \hskip \the\L@Findent}}%
+ \usebox{\L@tbox}%
+}
+\InputIfFileExists{lettrine.cfg}
+ {\typeout{Loading lettrine.cfg}}
+ {\typeout{lettrine.cfg not found, using default values}}
+\endinput
+%%
+%% End of file `lettrine.sty'.
diff --git a/macros/latex/contrib/lettrine/lettrine.dtx b/macros/latex/contrib/lettrine/lettrine.dtx
new file mode 100644
index 0000000000..a522c917b2
--- /dev/null
+++ b/macros/latex/contrib/lettrine/lettrine.dtx
@@ -0,0 +1,1169 @@
+% \CheckSum{650}
+%
+% \iffalse meta-comment
+%
+% Copyright © 1999-2018 Daniel Flipo.
+%
+% This program can be distributed and/or modified under the terms
+% of the LaTeX Project Public License either version 1.3c 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.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% \fi
+%
+% \iffalse
+%
+%<*sty>
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+\ProvidesFile{lettrine.sty}
+%</sty>
+%<*dtx>
+\ProvidesFile{lettrine.dtx}
+%</dtx>
+%<*!cfg>
+ [2019-04-06 v2.22 (Daniel Flipo)]
+%</!cfg>
+%
+% Lettrine package for LaTeX version 2e
+%
+% Copyright © 1999-2019 by Daniel Flipo
+%
+% Please report errors to: daniel (dot) flipo (at) free (dot) fr
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{unicode-math}
+\setmainfont{Latin Modern Roman}
+\setmathfont{XITS Math}
+\usepackage[expansion=true,protrusion=true]{microtype}
+\usepackage{url}
+\usepackage[numbered]{hypdoc}
+\hypersetup{colorlinks,urlcolor=blue,unicode}
+\usepackage{lettrine}
+\usepackage{tikz}
+\usetikzlibrary{shapes.arrows}
+%
+\RecordChanges
+\AtEndDocument{%
+ \clearpage
+ \section{Change History}%
+ \GlossaryPrologue{}%
+ Changes are listed in reverse order (latest first) from version~1.0
+ \PrintChanges
+}
+%
+\newcommand*\file[1]{\texttt{#1}}
+\newcommand*\lopt[1]{\texttt{#1}}
+\renewcommand\meta[1]{\textit{<#1>}} % no math mode (see doc.sty)
+%
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{.3\baselineskip}
+\begin{document}
+\GetFileInfo{lettrine.dtx}
+\begin{center}
+ \textbf{\Large Typesetting dropped capitals in \LaTeXe{} documents}
+ \\[.2\baselineskip]^^A\]
+ {\large Daniel Flipo}\\
+ \texttt{daniel.flipo@free.fr}
+\end{center}
+\DocInput{lettrine.dtx}
+\end{document}
+%</driver>
+%
+%\fi
+%
+% \section{Introduction}
+%
+% The file \file{\filename}\footnote{The file described in this
+% section has version number \fileversion\ and was last revised on
+% \filedate.}, provides a command |\lettrine| which requires two
+% mandatory arguments, and an optional one.
+%
+% Adding |\usepackage{lettrine}| in the preamble of a document
+% defines the command |\lettrine|, the simplest use of which is
+% |\lettrine{|\meta{letter}|}{|\meta{text}|}|.
+% It produces a dropped capital \meta{letter} (2 lines high),
+% followed by \meta{text} typeset in small caps, and the rest
+% of the paragraph is wrapped around the dropped capital.
+%
+% Various parameters are provided to control the size and layout
+% of the dropped capital and match the requirements described
+% in the books
+% \begin{itemize}
+% \item ``Lexique des règles typographiques en usage à
+% l’Imprimerie nationale’’ troisième édition (1994),
+% ISBN-2-11-081075-0,
+% \item ``Mise en page et impression’’ Yves~Perrousseaux,
+% ISBN-2-911220-01-3.
+% \end{itemize}
+% The parameters can be set using David Carlisle’s
+% \texttt{keyval.sty} syntax:
+% \begin{itemize}
+% \item \lopt{lines=}\meta{integer} sets how many lines the
+% dropped capital will occupy (default=2);
+%
+% \changes{v1.7}{2014/09/16}{New counter to add lines for
+% dropped capitals with positive depth, like Q.}
+%
+% \item \lopt{depth=}\meta{integer} sets the number of lines to
+% be reserved under the baseline, this is meant for dropped
+% capital with positive depth, like Q (default=0);
+% \item \lopt{lhang=}\meta{decimal} ($0\le|lhang|\le1$) sets
+% how much of the dropped capital’s width should hang into
+% the margin (default=0);
+% \item \lopt{loversize=}\meta{decimal} ($-1<\lopt{loversize}\le1$)
+% enlarges the dropped capital’s height: with
+% \lopt{loversize=0.1} its height is enlarged by 10\% so
+% that it raises above the top paragraph’s line (default=0);
+% \item \lopt{lraise=}\meta{decimal} does not affect the dropped
+% capital’s height, but moves it up (if positive),
+% down (if negative); useful with capitals like |J| or |Q|
+% which have a positive depth, (default=0);
+% \item \lopt{findent=}\meta{dimen} (positive or negative)
+% controls the horizontal gap between the dropped capital
+% and the indented block of text (default=0pt);
+% \item \lopt{nindent=}\meta{dimen} shifts all indented lines,
+% starting from the second one, horizontally by
+% \meta{dimen} (this shift is relative to the first
+% line, default=0.5em);
+% \item \lopt{slope=}\meta{dimen} can be used with dropped
+% capitals like |A| or |V| to add \meta{dimen}
+% (positive or negative) to the indentation of each line
+% starting from the third one (no effect if \lopt{lines=2},
+% default=0pt);
+% \item \lopt{ante=}\meta{text} can be used to typeset \meta{text}
+% \emph{before} the dropped capital (typical use is for
+% French guillemets starting the paragraph).
+%
+% \changes{v1.6}{2004/05/22}{Add a flag to switch to
+% images in eps or pdf format. Suggested by Bill Jetzer.}
+%
+% \item \lopt{image=true} (new to version 1.6) will force
+% |\lettrine| to replace the letter normally used as
+% dropped capital by an image in eps format (latex) or
+% in pdf, jpg, etc.\ format (pdflatex); this needs the
+% |graphicx| package to be loaded in the preamble of course.
+% |\lettrine[image=true]{A}{n exemple}| or just
+% |\lettrine[image]{A}{n exemple}| will load |A.eps|,
+% |A.jpg|, |A.png| or |A.pdf| instead of letter~A.
+% This was suggested by Bill Jetzer.\\
+% N.B.: Redefining |\LettrineFont| as |\LettrineFontEPS|
+% is no longer supported and |\LettrineFontEPS| has been
+% renamed as |\LettrineImage|.
+%
+% \changes{v1.8}{2015/02/06}{Added two keyval options:
+% `grid’ (true/false) and `novskip’ to override \cs{DiscardVskip}.}
+%
+% \item \lopt{grid=true} (new to version 1.8) will force
+% the vertical skip added above the paragraph starting with
+% |\lettrine| to be rounded up to an integer number of
+% |\baselineskip|.
+% This option is meant for grid typesetting.
+% \item \lopt{novskip=}\meta{dimen} (new to version 1.8)
+% overrides |\DiscardVskip| (default=0.2pt). In some cases
+% (see options \lopt{lraise}, \lopt{loversize} or
+% accentuated dropped capitals,\dots) the top of the
+% dropped capital will raise above the top of following
+% text (usually in small caps), this will trigger
+% a corresponding vertical skip above the paragraph
+% starting with |\lettrine|, \emph{only if} this skip
+% exceeds |\DiscardVskip|.
+% Consider enlarging |novskip| (or |\DiscardVskip|) to
+% prevent small vertical skips from being rounded up to
+% |\baselineskip| when using the `grid’ option.
+%
+% \changes{v1.9}{2015/08/31}{New keyval option: `realheight’
+% (true/false) and new global flag \cs{ifLettrineRealHeight}.}
+%
+% \item \lopt{realheight=true} (new to version 1.9) will
+% compute the default height of the initial so that the
+% top of it is exactly aligned with the top of the text
+% entered as second mandatory argument of |\lettrine|
+% taking possible accents into account.
+% Otherwise, the default height is computed using a
+% customisable string |\LettrineSecondString| instead of
+% the real argument. For backward compatibility, option
+% \lopt{realheight} defaults to \lopt{false} and
+% |\LettrineSecondString| to `x’.
+%
+% You probably don’t need this option if you choose to
+% typeset the second mandatory argument of |\lettrine| in
+% small caps (the default). If you change
+% |\LettrineTextFont| to |\relax| or |\upshape|, consider
+% these two examples:
+% \begin{description}
+% \item |\lettrine{H}{ello}| you probably would like the
+% top of the `H’ to be aligned with the top of the `ll’
+% rather than with the top of the `e’, adding option
+% |realheight| does the trick:
+% |\lettrine[realheight]{H}{ello}|.\par
+% Global variants : |\LettrineRealHeighttrue| or (without
+% |realheight| option)
+% |\renewcommand*{\LettrineSecondString}{l}|.
+% \item |\lettrine{L}{a misère}| option
+% \lopt{realheight=true} would align with the top
+% of the `L’ with the top of the grave accent, the
+% default is probably better (top of the `L’ aligned with
+% the top of the non accented letters).
+% \end{description}
+%
+% \item \lopt{refstring}\footnote{Unlike \lopt{grid} or
+% \lopt{realheight}, \lopt{refstring} is not a flag
+% (\emph{do not} add \lopt{=true}!); it is possible to set
+% \lopt{refstring=}\meta{string} to override
+% \cs{LettrineTestString} locally.}
+% (new to version 2.1) is meant for fancy initials with
+% irregular heights (i.e.\ taken in fonts like Yinit
+% (OpenType), \file{cfr-initials},\dots).
+% \lopt{refstring} forces the |\fontsize| computations to
+% be run on the initial given as |\lettrine|’s first
+% mandatory argument instead of the reference string
+% |\LettrineTestString|. In most cases, this option should
+% \emph{not} be used: think of accentuated initials or
+% capitals with optical correction.
+%
+% \end{itemize}
+%
+% Example: |\lettrine[lines=4, lraise=0.1, nindent=0em, |%
+% |slope=-.5em]%|\\
+% \mbox{}\phantom{\tt Example: lettrine}%
+% |{V}{oici} un exemple |\dots
+%
+% Coloured initials are possible in conjonction with package
+% \file{color}, examples: |\lettrine{\textcolor{red}{A}}{n} example|
+% \quad or\\ |\lettrine{\textcolor[gray]{0.5}{A}}{nother} one| \\
+% see package \file{color} for the syntax of colour commands.
+% Another possibility to colour initials globally is described
+% below, see |\LettrineFontHook|.
+%
+% Three dimensions, |\LettrineWidth|, |\LettrineHeight| and
+% |\LettrineDepth|, store the final size of the initial.
+%
+% Once \file{lettrine.sty} will be installed (run \texttt{latex}
+% on \file{lettrine.ins} to extract it), compile and print
+% \file{demo.tex} to see the possible usage of these parameters.
+%
+% \changes{v1.9}{2015/08/31}{New customisable string
+% \cs{LettrineSecondString} to tune the initial’s height.}
+%
+% The default settings can be customized either in a config file
+% \file{lettrine.cfg} (for a global usage), or on a per document
+% basis, in the preamble of each document. The following list
+% shows the syntax to set them and their default values:
+% \begin{itemize}
+% \item |\setcounter{DefaultLines}{2}|,
+% \item |\setcounter{DefaultDepth}{0}|,
+% \item |\renewcommand*{\DefaultLoversize}{0}|,
+% \item |\renewcommand*{\DefaultLraise}{0}|,
+% \item |\renewcommand*{\DefaultLhang}{0}|,
+% \item |\LettrineImagefalse|,
+% \item |\LettrineOnGridfalse|,
+% \item |\LettrineRealHeightfalse|,
+% \item |\LettrineSelfReffalse|,
+% \item |\setlength{\DefaultFindent}{0pt}|,
+% \item |\setlength{\DefaultNindent}{0.5em}|,
+% \item |\setlength{\DefaultSlope}{0pt}|.
+% \item |\setlength{\DiscardVskip}{0.2pt}|.
+% \end{itemize}
+%
+% Instead of giving optional parameters to the |\lettrine| command,
+% it is possible, from version 1.5, to set them on a per character
+% basis in a second config file (suggested by Pascal Kockaert):
+% |\renewcommand{\DefaultOptionsFile}{|\textit{filename}|}|
+% in the preamble (or anywhere in the document) will
+% force each call to |\lettrine| to read the file \textit{filename}.
+% See examples of such config files in the subdirectory
+% \file{contrib}.
+%
+% The dimensional parameters \lopt{findent}, \lopt{nindent} and
+% \lopt{slope}, can be set in \textit{filename} relative to
+% |\LettrineWidth| if needed. The settings read from this file
+% will be overridden by the optional arguments eventually given to
+% |\lettrine|.
+%
+% |\LettrineTextFont| sets the font used for the second argument
+% of |\lettrine|, its default definition is
+% |\newcommand{\LettrineTextFont}{\scshape}| (second argument in
+% small caps, this can be changed using |\renewcommand|).
+%
+% |\LettrineFont| sets the font used for the dropped capital,
+% usually the current font in a (large) size, computed
+% automatically from the number of lines it will fill:
+% the font size is computed so that, a \emph{standard} dropped
+% capital (say Z, not À) when sitting on its baseline, gets
+% its top aligned with the top of the following text (provided
+% $|loversize|=0$ and $|lines|\ge 2$). When \lopt{lines=1},
+% size is computed as if \lopt{lines} was~2.\\
+% A hook |\LettrineFontHook| is provided to change the font
+% used for the dropped capital, syntax follows \LaTeX{}’s
+% low-level font interface (see \LaTeX{} Companion, p.187--192),
+% the |\selectfont| command is issued by |\LettrineFont|:\\
+% |\renewcommand{\LettrineFontHook}{\fontfamily{ppl}|\ignorespaces
+% |\fontseries{bx}}%|\\
+% | \fontshape{sl}}|,\\
+% selects Palatino bold expanded slanted for the dropped capital.\\
+% |\LettrineFontHook| can also be used to change the colour of
+% all initials in a (part of) document:
+% |\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}| \\
+% will colour the initials following this command in grey.
+%
+% \changes{v1.3}{2002/08/23}{Correct the documentation to
+% mention the cm-super fonts and the type1ec package by
+% Vladimir Volovich.}
+%
+% \vspace{\baselineskip}
+% \textbf{Important notice:}
+% the sizing works fine with \emph{fully scalable} fonts (like the
+% standard PostScript fonts), but might not work well with CM/EC
+% fonts which have two limitations: only a limited number of sizes
+% is available by default (precise adjustments are impossible),
+% and the largest size (25pt or 35pt) is often too small.
+% The CM fonts are now available in PostScript type1 format for
+% free (courtesy of BlueSky/Y\&Y), to make them fully scalable,
+% it is mandatory to add |\usepackage{type1cm}| in the preamble
+% of your document.
+% The EC fonts are also available in type1 format for free
+% (thanks to Vladimir Volovich, they are called cm-super), and
+% adding |\usepackage{type1ec}|\footnote{This package, available on
+% CTAN, was first released on 2002/07/30.}
+% in the preamble will make them fully scalable too.
+% So, if you want \file{lettrine.sty} to work properly with CM
+% or EC fonts, you will need \emph{PostScript versions} of these
+% fonts \emph{and} one of the packages |type1cm.sty| or
+% |type1ec.sty|.
+%
+% The LM fonts are a good replacement for both CM and EC fonts they
+% are fully scalable, so you should use them instead of CM or EC
+% fonts. |\usepackage{lmodern}| is the command to switch them on
+% (add |\usepackage[T1]{fontenc}| when composing in one of the
+% western languages other than English in order to get proper
+% hyphenation).
+%
+% You can also consider using one of the standard PostScript fonts
+% (Palatino, Times, Utopia\dots), or any OpenType font, they are
+% fully scalable too!
+%
+% \vspace{\baselineskip}
+% \textbf{Known issues:}
+% \begin{itemize}
+% \item Nothing is done to prevent page-breaking in a paragraph
+% starting with a dropped capital; when it happens to hang
+% into the footer, page-breaking has to be done manually.
+% \item |\lettrine| works within `quote’ `quotation’, `abstract’
+% environments but does not work within `center’ environments
+% except with option \texttt{[lines=1]}.
+% \item |\lettrine| does not work within lists.
+% \item If a \emph{list} has to be included in a paragraph starting
+% with |\lettrine|, it is necessary to add the command
+% |\parshape=0| just after the end of the list (starting a new
+% paragraph just before or just after the list works too).
+% Remember that `quote’, `quotation’, `abstract’ environments
+% are implemented as \emph{lists} in \LaTeX{}.
+% \item If you are facing some slight height inaccuracy for a
+% dropped capital, you can try option \lopt{refstring};
+% this option is meant for fancy (unaccented) initials.
+% Informations about targeted and effective initial’s
+% height are available in the \file{.log} file. Using LuaTeX
+% or XeTeX engines with OpenType fonts may be an option
+% (some TFM files for Type1 fonts are slightly inaccurate).
+% \item |\LettrineTestString|’s value has changed over the time;
+% these changes may result in slight size differences for the
+% initial. Starting with version~2.2, the lettrine package takes
+% advantage of the rollback facilities recently introduced by
+% the LaTeX Team\footnote{A LaTeX kernel dated 2018-04-01 or
+% newer is required.}. Three rollback versions are provided in
+% order to produce exactly the same output as with former
+% versions: you can request
+% |\usepackage{lettrine}[=v1.6]|\footnote{Don’t forget the
+% \texttt{=} sign!} for 1999-2012 documents or
+% |\usepackage{lettrine}[=v1.9]| (documents from 2012 to
+% July 2018) or |\usepackage{lettrine}[=v2.0]| (August 2018).
+% Using any date in ISO format works too:
+% |\usepackage{lettrine}[=2014-03-15]| will load v1.9.
+% \end{itemize}
+%
+% \StopEventually{}
+%
+% \section{\TeX{}nical details}
+%
+% \iffalse
+%<*sty>
+% \fi
+%
+% \changes{v2.2}{2018/08/25}{Rollback mechanism used for recovering
+% older versions.}
+%
+% The lettrine package now uses the rollback mechanism recently
+% introduced by the LaTeX Team to provide easier backward
+% compatibility. This requires a recent LaTeX kernel (at least
+% 2018-04-01), roolback is ignored with older kernels.
+% \begin{macrocode}
+\ifdefined\DeclareRelease
+ \DeclareRelease{v1.6}{1999-03-03}{lettrine-2006-03-17.sty}
+ \DeclareRelease{v1.9}{2012-07-20}{lettrine-2015-08-31.sty}
+ \DeclareRelease{v2.0}{2018-07-21}{lettrine-2018-08-18.sty}
+ \DeclareCurrentRelease{}{2019-03-30}
+\else
+ \PackageWarning{lettrine}{Your LaTeX kernel is too old to provide
+ access\MessageBreak to former versions of the lettrine package.%
+ \MessageBreak If you need rollback, please upgrade%
+ \MessageBreak your LaTeX kernel (2018-04-01 or newer),%
+ \MessageBreak otherwise you are fine; reported}
+\fi
+% \end{macrocode}
+%
+% This package only runs with \LaTeXe{} and requires files
+% \file{keyval.sty} and \file{minifp.sty}.
+%
+% \begin{macrocode}
+\RequirePackage{keyval,minifp}
+% \end{macrocode}
+%
+% Default initializations: define the necessary counters, lengths,
+% and commands to hold the default settings and set these default
+% settings. They can be overwritten in file |lettrine.cfg|.
+%
+% \changes{v1.2}{2002/03/13}{\cs{newlength} changed to
+% \cs{newdimen}, to correct a bug with seminar.cls (pointed out
+% by Peter Münster).}
+%
+% \changes{v1.6}{2004/05/22}{Added newif \cs{ifLettrineImage}.}
+%
+% \changes{v1.8}{2015/02/06}{Added newif \cs{ifLettrineOnGrid}
+% and new dimen \cs{DiscardVskip}, default (0.2pt) set for
+% compatibility with previous releases.}
+%
+% \changes{v2.1}{2018/08/14}{Newif \cs{ifLettrineVone} and
+% new option `Vone’ (removed in v2.2, rollback prefered).}
+%
+% \changes{v2.1}{2018/08/14}{New option `refstring’ and newif
+% \cs{ifLettrineSelfRef}.}
+%
+% \begin{macrocode}
+\newcounter{DefaultLines}
+\setcounter{DefaultLines}{2}
+\newcounter{DefaultDepth}
+\newcommand*{\DefaultOptionsFile}{\relax}
+\newcommand*{\DefaultLoversize}{0}
+\newcommand*{\DefaultLraise}{0}
+\newcommand*{\DefaultLhang}{0}
+\newdimen\DefaultFindent
+\setlength{\DefaultFindent}{\z@}
+\newdimen\DefaultNindent
+\setlength{\DefaultNindent}{0.5em}
+\newdimen\DefaultSlope
+\setlength{\DefaultSlope}{\z@}
+\newdimen\DiscardVskip
+\setlength{\DiscardVskip}{0.2\p@}
+\newif\ifLettrineImage
+\newif\ifLettrineOnGrid
+\newif\ifLettrineRealHeight
+\newif\ifLettrineSelfRef
+% \end{macrocode}
+%
+% Then let’s define the necessary internal counters, lengths,
+% and commands.
+%
+% \changes{v1.6}{2004/05/22}{Added newif \cs{ifL@image}.}
+%
+% \changes{v1.6}{2015/02/06}{Added newif \cs{ifL@grid}.}
+%
+% \begin{macrocode}
+\newsavebox{\L@lbox}
+\newsavebox{\L@tbox}
+\newcounter{L@lines}
+\newcounter{L@depth}
+\newdimen\L@Pindent
+\newdimen\L@Findent
+\newdimen\L@Nindent
+\newdimen\L@lraise
+\newdimen\L@first
+\newdimen\L@next
+\newdimen\L@slope
+\newdimen\L@height
+\newdimen\L@novskip
+\newdimen\L@target@ht
+\newdimen\L@target@dp
+\newdimen\L@target@tht
+\newdimen\LettrineWidth
+\newdimen\LettrineHeight
+\newdimen\LettrineDepth
+\newcommand*{\L@file}{}
+\newcommand*{\L@hang}{}
+\newcommand*{\L@oversize}{}
+\newcommand*{\L@raise}{}
+\newcommand*{\L@ante}{}
+\newif\ifL@image
+\newif\ifL@grid
+\newif\ifL@realh
+\newif\ifL@selfref
+% \end{macrocode}
+%
+% Provide commands for the fonts used to typeset the two
+% mandatory arguments of |\lettrine|.
+%
+% \changes{v2.21}{2018/08/28}{Code clean up, new commands
+% \cs{computeL@height}, \cs{compute@fontsize}, \cs{setupL@lbox}.}
+%
+% \begin{macro}{\LettrineTextFont}
+% In French, small caps usually follow the dropped capital.
+% \begin{macrocode}
+\newcommand*{\LettrineTextFont}{\scshape}
+\newcommand*{\LettrineSecondString}{x}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LettrineFontHook}
+% |\LettrineFontHook| enables to select another font for the
+% dropped capital. Its default definition is empty (the current
+% text font is used).
+% \begin{macrocode}
+\newcommand*{\LettrineFontHook}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\computeL@height}
+% The default size for the dropped capital is computed so that the
+% top of it is exactly aligned with the top of the following text;
+% an extra height (positive or negative) may be added globally by
+% redefining |\Defaultloversize| or locally using optional
+% argument \lopt{loversize=}.
+% If \lopt{lines=1}, the default size for the dropped capital is
+% computed as if \lopt{lines=2}.
+% \begin{figure}[ht]
+% \centering
+% \begin{tikzpicture}[>=stealth]
+% \node[font=\fontfamily{lmr}\fontsize{160}{160}\mdseries]
+% at (3,2) {F} ;
+% \node[right, font=\fontfamily{lmr}\fontsize{20}{20}\bfseries]
+% at (4.6,3.65) {IRST};
+% \node[right, font=\fontfamily{lmr}\fontsize{28}{28}\bfseries]
+% at (5,2.63) {bla bla};
+% \node[right, font=\fontfamily{lmr}\fontsize{28}{28}\bfseries]
+% at (5,1.53) {bla bla};
+% \node[right, font=\fontfamily{lmr}\fontsize{28}{28}\bfseries]
+% at (5,0.43) {bla bla};
+% \draw[dotted] (0,3.9) -- (9,3.9);
+% \draw (1,3.4) -- (9,3.4);
+% \draw[dashed] (1.5,2.3) -- (9,2.3);
+% \draw[dashed] (1.5,1.2) -- (9,1.2);
+% \draw[dashed] (0,0.1) -- (9,0.1);
+% \draw[<->] (0,0.1) -- (0,3.9);
+% \node[left] at (0,2.1) {tht};
+% \draw[<->] (1.3,0.1) -- (1.3,3.4);
+% \node[left] at (1.3,1.8) {dp};
+% \draw[<->] (1,3.4) -- (1,3.9);
+% \node[left] at (1,3.7) {ht};
+% \end{tikzpicture}
+% \caption{Initial’s targeted dimensions ($\mbox{\cs{lines}}=4$)}
+% \label{fig:target}
+% \end{figure}
+%
+% |\computeL@height| first computes the targeted height for the
+% dropped capital and stores it into |\L@target@tht|. This height
+% only depends on |L@lines| and on the height of |\L@tbox| (see
+% fig.~\ref{fig:target}). So options \emph{must} be read and
+% |\L@tbox| must be properly initialised \emph{before} executing
+% |\computeL@height| (see below in |\@lettrine| code).
+%
+% |\L@height| is set to |\L@target@tht| raised by the |\L@oversize|
+% factor.
+%
+% \changes{v1.2}{2002/03/13}{\cs{baselineskip} may be a
+% rubber length, we convert it to a dimen.}
+%
+% \changes{v1.9}{2015/08/31}{\cs{theL@lines} changed
+% to \cs{value\{L@lines\}}. Needed for babel-hebrew which
+% redefines \cs{@arabic}.}
+%
+% \changes{v2.0}{2018/07/21}{Store targeted dimensions of the
+% dropped capital (ht, dp, tht) for further use.}
+%
+% \changes{v2.1}{2018/08/01}{Height computations moved out of
+% \cs{LettrineFont}: \cs{global} settings no longer required.}
+%
+% \begin{macrocode}
+\def\computeL@height{%
+ \setlength{\L@target@ht}{\ht\L@tbox}%
+% \end{macrocode}
+% As |\baselineskip| might be a rubber length, let’s convert it
+% into a `dimen’ using |\@tempdima|.
+% \begin{macrocode}
+ \@tempdima=\baselineskip
+ \setlength{\L@target@dp}{\value{L@lines}\@tempdima}%
+ \ifnum\value{L@lines}>1
+ \addtolength{\L@target@dp}{-\@tempdima}%
+ \else
+ \addtolength{\L@target@ht}{\L@target@dp}%
+ \setlength{\L@target@dp}{0pt}%
+ \fi
+ \setlength{\L@target@tht}{\L@target@ht}%
+ \addtolength{\L@target@tht}{\L@target@dp}%
+ \setlength{\L@height}{\L@target@tht}%
+ \addtolength{\L@height}{\L@oversize\L@target@tht}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LettrineTestString}
+% After executing |\computeL@height|, |\L@height| holds the exact
+% height required for the dropped capital, nothing more is needed if
+% the initial is a picture, otherwise we need to compute the matching
+% |\fontsize|’s value. This is done by measuring the height of
+% a ``reference’’ capital (i.e.\ either listed in
+% |\LettrineTestString| or the initial itself).
+% As some font designers apply optical correction to capitals C, G,
+% O, or Q (they are slightly taller than `T’ or `Z’), they are better
+% left out of |\LettrineTestString|. |EFTZ| should be a good default
+% for most fonts.
+%
+% \changes{v1.63}{2012/07/20}{(new) it defaults to
+% `ABCDEFGHIJKLMNOQPRSTUVWXYZ’. In previous versions height
+% computations were based on letter `X’ which might not exist
+% in some (rare) fonts. Pointed out by Raphaël Pinson.}
+%
+% \changes{v2.0}{2018/07/21}{changed from `ABCDEFGHIJKLMNOQPRSTUVWXYZ’
+% to `EFTZ’ as some capitals like C, G, O, Q or X might be slightly
+% taller (possible optical correction).}
+%
+% \begin{macrocode}
+\newcommand*{\LettrineTestString}{EFTZ}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\compute@fontsize}
+% This command compares the height of a ``reference’’ capital scaled
+% by |\fontsize| with argument |\L@height| to |\L@height| (the
+% required height for the initial); both are converted into integers
+% (in sp) to compute a ratio |\L@factor|.
+% Up to v2.01, possible values for |\L@factor| were either 1 or any
+% value $\geq 1.1$ which was fine for almost every font but not
+% all (i.e.\ \file{cfr-initials}). Starting with v2.1, |\L@factor|
+% is computed more accurately by |\MFPdiv| from \file{minifp.sty}.
+%
+% \changes{v2.1}{2018/08/14}{Computation of \cs{L@factor} for
+% \cs{fontsize} done by the minifp package.}
+%
+% \changes{v2.22}{2018/09/14}{Warn if \cs{fontsize} computation fails
+% due to division by 0.}
+%
+% When optional argument \lopt{selfref} is \lopt{true} the initial
+% itself is taken as reference to compute |\fontsize|, this can be
+% handy when working with fancy fonts (i.e.\ cfr-initials, Yinit).
+% In most cases, the default is a better choice.
+% \begin{macrocode}
+\def\compute@fontsize{%
+ \ifL@selfref
+ \def\Lettrine@RefString{\l@refstring}%
+ \else
+ \def\Lettrine@RefString{\LettrineTestString}%
+ \fi
+ \sbox{\@tempboxa}{\LettrineFontHook
+ \fontsize{\L@height}{\L@height}\selectfont
+ \Lettrine@RefString}%
+ \@tempcnta=\ht\@tempboxa
+ \ifnum\@tempcnta=0
+ \PackageWarning{lettrine}{Unable to compute \protect\fontsize!%
+ \MessageBreak \protect\LettrineTestString\space empty? reported}
+ \def\L@factor{1}%
+ \else
+ \@tempcntb=\L@height
+ \MFPdiv{\the\@tempcntb}{\the\@tempcnta}\L@factor
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LettrineFont}
+% |\fontsize|’s argument providing the requested |\L@height| is
+% |\L@factor\L@height|.
+% \begin{macrocode}
+\newcommand*{\LettrineFont}{%
+ \LettrineFontHook
+ \fontsize{\L@factor\L@height}{\L@factor\L@height}%
+ \selectfont
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v0.9}{1998/03/13}{\cs{LettrineFontEPS} added.}
+%
+% \changes{v2.21}{2018/08/28}{\cs{LettrineFontEPS} renamed as
+% \cs{LettrineImage}.}
+%
+% \begin{macro}{\LettrineImage}
+% The following definition is for use with dropped capitals defined
+% as images: EPS, PDF, JPG, PNG files (see examples in demo.tex).
+% Its use requires the |graphicx| package to be loaded in the
+% preamble with |\usepackage{graphicx}|. The required size is
+% computed just as in the standard case, |\includegraphics|
+% prints the image at this size.
+%
+% \changes{v1.6}{2004/05/22}{Added \cs{LettrineFontHook}
+% to \cs{LettrineFontEPS}. This is needed for color options.}
+%
+% \begin{macrocode}
+\newcommand*{\LettrineImage}{%
+ \LettrineFontHook\includegraphics[height=\L@height]%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setupL@lbox}
+% The next (internal) command computes the requested size for the
+% initial (letter or image) and prepares a box |\L@lbox| holding it.
+% \begin{macrocode}
+\def\setupL@lbox{%
+ \computeL@height
+ \ifL@image
+ \sbox{\L@lbox}{\LettrineImage{\l@initial}}%
+ \else
+ \compute@fontsize
+ \sbox{\L@lbox}{\LettrineFont \l@initial}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Set up keyval initializations.
+%
+% \begin{macrocode}
+\define@key{L}{lines}{\setcounter{L@lines}{#1}}
+\define@key{L}{depth}{\setcounter{L@depth}{#1}}
+\define@key{L}{lhang}{\renewcommand*{\L@hang}{#1}}
+\define@key{L}{loversize}{\renewcommand*{\L@oversize}{#1}}
+\define@key{L}{lraise}{\renewcommand*{\L@raise}{#1}}
+\define@key{L}{ante}{\renewcommand*{\L@ante}{#1}}
+\define@key{L}{findent}{\setlength{\L@Findent}{#1}}
+\define@key{L}{nindent}{\setlength{\L@Nindent}{#1}}
+\define@key{L}{slope}{\setlength{\L@slope}{#1}}
+\define@key{L}{image}[true]{\csname L@image#1\endcsname}
+\define@key{L}{grid}[true]{\csname L@grid#1\endcsname}
+\define@key{L}{realheight}[true]{\csname L@realh#1\endcsname}
+\define@key{L}{novskip}{\setlength{\L@novskip}{#1}}
+\define@key{L}{refstring}[\l@initial]{\L@selfreftrue
+ \def\l@refstring{#1}}
+% \end{macrocode}
+%
+% \changes{v1.5}{2003/08/18}{\cs{LettrineOptionsFor} and
+% \cs{LettrineWidth} added.}
+%
+% \begin{macro}{\LettrineOptionsFor}
+% This command is to be used in an optional config file (the name
+% of which is found in |\DefaultOptionsFile|) to set the values
+% of parameters on a per character basis, for instance:\\
+% |\LettrineOptionsFor{A}{slope=0.6em, findent=-1em, nindent=0.6em}|\\
+% creates an internal command (|\l@A-keys| in this example),
+% which expands to the options given as second argument of
+% |\LettrineOptionsFor| for letter `A’.
+%
+% \begin{macrocode}
+\newcommand*{\LettrineOptionsFor}[2]{\@namedef{l@#1-keys}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\lettrine}
+% Now let’s define |\lettrine|.
+%
+% \begin{macrocode}
+\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
+\def\@lettrine[#1]#2#3{%
+ \def\l@initial{#2}\let\l@refstring\l@initial
+% \end{macrocode}
+%
+% \changes{v1.9}{2015/08/31}{\cs{theDefaultLines} changed to
+% \cs{value\{DefaultLines\}}, same with \cs{theDefaultDepth}.
+% Needed for babel-hebrew which redefines \cs{@arabic}.
+% Thanks to Ulrike Fischer for providing the fix.}
+%
+% First reset the parameters to their default values:
+% \begin{macrocode}
+ \setcounter{L@lines}{\value{DefaultLines}}%
+ \setcounter{L@depth}{\value{DefaultDepth}}%
+ \renewcommand*{\L@hang}{\DefaultLhang}%
+ \renewcommand*{\L@oversize}{\DefaultLoversize}%
+ \renewcommand*{\L@raise}{\DefaultLraise}%
+ \renewcommand*{\L@ante}{}%
+ \setlength{\L@Findent}{\DefaultFindent}%
+ \setlength{\L@Nindent}{\DefaultNindent}%
+ \setlength{\L@slope}{\DefaultSlope}%
+ \setlength{\L@novskip}{\DiscardVskip}%
+ \ifLettrineImage\L@imagetrue\else\L@imagefalse\fi
+ \ifLettrineOnGrid\L@gridtrue\else\L@gridfalse\fi
+ \ifLettrineRealHeight\L@realhtrue\else\L@realhfalse\fi
+ \ifLettrineSelfRef\L@selfreftrue\else\L@selfreffalse\fi
+% \end{macrocode}
+%
+% The final initial size depends on the height of |\L@tbox|; the
+% content of |\L@tbox| depends on option |realheight|, so we have
+% to read |\lettrine|’s optional argument and initialise the
+% |\L@tbox| content now\footnote{Now means before eventually
+% reading the config file.}.
+%
+% \changes{v1.9}{2015/08/31}{Use the second mandatory
+% argument of \cs{lettrine} or \cs{LettrineSecondString} (which
+% defaults to `x’) to compute \cs{L@height}. This is controlled by
+% the `realheight’ flag.}
+%
+% \begin{macrocode}
+ \setkeys{L}{#1}%
+ \sbox{\L@tbox}{\LettrineTextFont{\LettrineSecondString}}%
+ \ifL@realh
+ \def\@tempa{#3}%
+ \ifx\@tempa\@empty
+ \PackageWarning{lettrine.sty}%
+ {Empty second argument,\MessageBreak
+ ignoring option `realheight';}%
+ \else
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+ \fi
+ \fi
+% \end{macrocode}
+% \changes{v1.5}{2003/08/18}{Added reading of an optional
+% config file \cs{DefaultOptionsFile}.}
+% Then try to read an optional file (its name is given by
+% |\DefaultOptionsFile|), do this inside a group, and define a
+% global command |\l@LOKeys| which will expand to the list of
+% options given by |\LettrineOptionsFor| for the current initial
+% (defined by |#2|)\dots
+% \begin{macrocode}
+ \if\DefaultOptionsFile\relax
+ \else
+ \begingroup
+ \InputIfFileExists{\DefaultOptionsFile}%
+ {}%
+ {\PackageWarning{lettrine.sty}%
+ {File \DefaultOptionsFile\space not found}%
+ }%
+% \end{macrocode}
+% Gobble the colour commands, just keep the letter argument.
+% \begin{macrocode}
+ \def\color##1##{\l@color{##1}}%
+ \let\l@color\@gobbletwo
+ \def\textcolor##1##{\l@textcolor{##1}}%
+ \def\l@textcolor##1##2##3{##3}%
+% \end{macrocode}
+% Save the list of options relevant to the letter in |#2|
+% in |\l@LOKeys| (list is empty eventually).
+% \begin{macrocode}
+ \expandafter\ifx\csname l@#2-keys\endcsname\relax
+ \gdef\l@LOKeys{}%
+ \else
+ \xdef\l@LOKeys{\csname l@#2-keys\endcsname}%
+ \fi
+ \endgroup
+% \end{macrocode}
+% Now apply these options (the following code executes
+% |\setkeys{L}{\l@LOKeys}}| where |\l@LOKeys| is expanded,
+% see \file{keyval.sty}).
+% \begin{macrocode}
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+% \end{macrocode}
+% As some parameters’ values \lopt{findent}, \lopt{nindent} and
+% \lopt{slope} ---which do not influence the initial’s size--- may
+% be given relative to |\LettrineWidth|, the |\L@lbox| has to be
+% set up to evaluate |\LettrineWidth|.
+%
+% \changes{v2.21}{2018/08/28}{\lopt{findent} computation
+% relative to \cs{LettrineWidth} in \lopt{.cfl} files fixed;
+% thanks to Frank Mittelbach for raising the issue.}
+%
+% \begin{macrocode}
+ \setupL@lbox
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+% \end{macrocode}
+% As local options prevail on those held in the config file, we
+% have to read local options again:
+% \begin{macrocode}
+ \setkeys{L}{#1}%
+ \fi
+% \end{macrocode}
+% Options and optional config file have be taken into account, we
+% can now finally save the first mandatory argument of |\lettrine|
+% properly scaled into |\L@lbox|.
+% \begin{macrocode}
+ \setupL@lbox
+% \end{macrocode}
+%
+% \changes{v1.65}{2014/09/04}{Measure and store the initial’s
+% final dimensions.}
+% Store the initial’s final dimensions,
+% \begin{macrocode}
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \setlength{\LettrineHeight}{\ht\L@lbox}%
+ \setlength{\LettrineDepth}{\dp\L@lbox}%
+% \end{macrocode}
+%
+% \changes{v2.0}{2018/07/21}{Add informations about targeted
+% and actual height of the initial to the .log file.}
+%
+% print some informations about accuracy to the log file,
+% \begin{macrocode}
+ \begingroup
+ \def\IeC##1{##1}%
+ \@tempdima=\L@oversize pt\relax
+ \PackageInfo{lettrine.sty}%
+ {Targeted height = \the\L@target@tht\MessageBreak
+ (no accent, loversize=0),\MessageBreak
+ Lettrine height = \the\LettrineHeight\space (#2)%
+ \ifdim\@tempdima=\z@\else\space loversize=\L@oversize\fi;%
+ \MessageBreak reported}%
+ \endgroup
+% \end{macrocode}
+% and reset |\L@tbox|’s content (mandatory in case
+% \lopt{realheight=false}):
+%
+% \changes{v1.6}{2004/05/22}{Add braces around \#3 to allow
+% commands taking an argument (such as \cs{MakeLowercase}) in
+% \cs{LettrineTextFont}. Suggested by Philipp Lehman.}
+%
+% \begin{macrocode}
+ \sbox{\L@tbox}{\LettrineTextFont{#3}}%
+% \end{macrocode}
+%
+% Start a new paragraph, skipping the necessary amount of space
+% if the dropped capital sticks out of the top of paragraph.
+% We use |\L@first| to compute the amount of space to be skipped.
+%
+% \changes{v0.9}{1998/02/23}{Calculations of length
+% \cs{L@first} changed. Do not `vskip’ small lengths ($<$0.2pt),
+% they are just rounding errors.}
+%
+% \changes{v1.8}{2015/02/06}{The 0.2pt limit for discarded
+% vskips is now customisable through \cs{DiscardVskip} and option
+% `novskip’.}
+%
+% \changes{v1.2}{2002/03/13}{\cs{baselineskip} may be a
+% rubber length, we convert it to a dimen.}
+%
+% The basis for |\L@raise| (and |\L@oversize|, see
+% |\LettrineFont|) is |\L@target@tht|.
+%
+% \begin{macrocode}
+ \setlength{\L@first}{\LettrineHeight}%
+ \setlength{\L@lraise}{\L@raise\L@target@tht}%
+ \addtolength{\L@first}{\L@lraise}%
+ \ifnum\value{L@lines}=1
+ \addtolength{\L@first}{-\ht\L@tbox}%
+ \else
+ \addtolength{\L@first}{-\L@target@tht}%
+ \addtolength{\L@lraise}{-\L@target@dp}%
+ \fi
+ \par
+% \end{macrocode}
+% |\L@first| now holds the height of the needed |\vskip|; if too
+% small it will be discarded.
+% \begin{macrocode}
+ \ifdim\L@first>\L@novskip
+% \end{macrocode}
+% When the \lopt{grid} option is \lopt{true}, let’s round up
+% |\L@first| to the next integer number of |\baselineskip|.
+% \begin{macrocode}
+ \ifL@grid
+ \@tempdima=\baselineskip
+ \@tempdimb=\@tempdima
+ \advance\@tempdimb by \L@novskip
+ \@tempcnta=1
+ \loop\ifdim\L@first>\@tempdimb
+ \advance\@tempcnta by 1
+ \advance\L@first by -\@tempdima
+ \repeat
+ \L@first=\@tempcnta\baselineskip
+ \fi
+ \vskip\L@first
+ \fi
+% \end{macrocode}
+% Again, we (mis)use the length |\L@first| to compute the width of
+% the text eventually coming before the dropped capital. It is
+% reset later on to hold the first line’s length.
+% \begin{macrocode}
+ \setlength{\L@Pindent}{\wd\L@lbox}%
+ \addtolength{\L@Pindent}{-\L@hang\wd\L@lbox}%
+ \settowidth{\L@first}{\L@ante}%
+ \addtolength{\L@Pindent}{\L@first}%
+ \addtolength{\L@Pindent}{\L@Findent}%
+ \setlength{\L@first}{\linewidth}%
+ \addtolength{\L@first}{-\L@Pindent}%
+% \end{macrocode}
+% Now let’s compute |\L@Nindent| and |\L@next| for the next lines.
+% \begin{macrocode}
+ \addtolength{\L@Nindent}{\L@Pindent}%
+ \setlength{\L@next}{\linewidth}%
+ \addtolength{\L@next}{-\L@Nindent}%
+% \end{macrocode}
+%
+% \changes{v1.1}{1999/08/18}{Add \cs{rightmargin} to
+% \cs{L@Pindent} for \cs{Lettrine} to work properly in quote,
+% quotation, abstract environments\dots{} but do not change
+% \cs{linewidth} which is set by these environments.}
+%
+% \changes{v1.4}{2002/10/26}{\cs{lettrine} still didn’t
+% work properly in quote, quotation, abstract environments,
+% pointed out by Matthias C.\ Schmidt. \cs{rightmargin} was added
+% too early to \cs{L@Nindent}, thus making \cs{\L@next} too short
+% by \cs{rightmargin}.}
+%
+% \changes{v2.22}{2019/04/04}{\cs{@totalleftmargin} is the correct
+% indentation for quote, quotation and abstract environments.}
+%
+% This is for quotation, quote, abstract\dots{} environments:
+% |\linewidth| is set by these environments, all we have to do
+% is to shift our text left by |\@totalleftmargin|.
+% \begin{macrocode}
+ \addtolength{\L@Pindent}{\@totalleftmargin}%
+ \addtolength{\L@Nindent}{\@totalleftmargin}%
+% \end{macrocode}
+% Now, set up the shape of the new paragraph (designed by
+% |\parshape|).
+%
+% \changes{v1.9}{2015/08/31}{\cs{theL@depth} changed to
+% \cs{value\{L@depth\}}.}
+%
+% \begin{macrocode}
+ \addtocounter{L@lines}{1}%
+ \addtocounter{L@lines}{\value{L@depth}}%
+ \def\L@parshape{\c@L@lines \the\L@Pindent \the\L@first}%
+ \@tempcnta=\tw@
+ \@whilenum \@tempcnta<\c@L@lines\do{%
+ \edef\L@parshape{\L@parshape \the\L@Nindent \the\L@next}%
+ \addtolength{\L@Nindent}{\L@slope}%
+ \addtolength{\L@next}{-\L@slope}%
+ \advance\@tempcnta\@ne}%
+ \edef\L@parshape{\L@parshape \@totalleftmargin \the\linewidth}%
+ \noindent
+ \parshape=\L@parshape\relax
+% \end{macrocode}
+% \changes{v1.64}{2013/03/14}{Remove \$ around \cs{smash}
+% and add \cs{relax}. Bug pointed out by David Monniaux.
+% Correction by Enrico Gregorio.}
+% Write the dropped capital into the left margin, and wrap
+% the rest of paragraph around it.
+% \begin{macrocode}
+ \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
+ \hskip \the\L@Findent}}%
+ \usebox{\L@tbox}%
+% \end{macrocode}
+%
+%\changes{v2.22}{2019/03/30}{\cs{parshape} reset added in lists.}
+%
+% A |\parshape| reset is required in abstract, quote and quotation
+% environments beginning with |\lettrine| and spreading over several
+% paragraphs. When the list ends, |\parshape| returns to~|0|.
+% \begin{macrocode}
+ \ifnum\@listdepth>0 \Lreset@listparshape \fi
+}
+% \end{macrocode}
+% \end{macro}
+% This ends the definition of |\lettrine|; |\Lreset@listparshape|
+% adds the parshape reset to the first occurence of |\everypar|
+% following the |\lettrine| command.
+% \begin{macrocode}
+\newtoks\Llist@everypar
+\def\Lreset@listparshape{%
+ \let\Lnew@everypar\everypar
+ \Llist@everypar=\expandafter{\the\everypar}%
+ \Lnew@everypar={\the\Llist@everypar
+ \parshape=\@ne \@totalleftmargin \linewidth \relax
+ \let\everypar\Llist@everypar
+ }%
+}
+% \end{macrocode}
+%
+% Load a local config file if present in \LaTeX{}’s search path.
+% \begin{macrocode}
+\InputIfFileExists{lettrine.cfg}
+ {\typeout{Loading lettrine.cfg}}
+ {\typeout{lettrine.cfg not found, using default values}}
+% \end{macrocode}
+% \iffalse
+%</sty>
+% \fi
+% \clearpage
+% \section{Configuration file}
+%
+% \iffalse
+%<*cfg>
+% \fi
+% \begin{macrocode}
+%% lettrine.cfg: configuration file for lettrine.sty
+%%
+%% If you want to customize lettrine, please *do not* hack into the
+%% code, copy this file to your working directory and customize the
+%% copy as you like.
+%%
+%% Uncomment any of these lines and change the parameters’ values
+%% to fit your needs (see lettrine.dtx).
+%%
+%%\setcounter{DefaultLines}{2}
+%%\setcounter{DefaultDepth}{0}
+%%
+%% These are *decimal* numbers:
+%%\renewcommand*{\DefaultLoversize}{0}
+%%\renewcommand*{\DefaultLraise}{0}
+%%\renewcommand*{\DefaultLhang}{0}
+%%
+%% These are *lengths* (don't forget the unit):
+%%\setlength{\DefaultFindent}{0pt}
+%%\setlength{\DefaultNindent}{0.5em}
+%%\setlength{\DefaultSlope}{0mm}
+%%\setlength{\DiscardVskip}{0.2pt}
+%%
+%% Theses are *flags* (value=true/false):
+%%\LettrineImagefalse
+%%\LettrineOnGridfalse
+%%\LettrineRealHeightfalse
+%%\LettrineSelfReffalse
+%%
+%% Theses are *commands* (value=string, only height matters):
+%%\renewcommand*{\LettrineTestString}{EFTZ}
+%%\renewcommand*{\LettrineSecondString}{x}
+%%
+%% In case you want to set parameters for some letters
+%% in file `optfile.cfl'
+%% \renewcommand{\DefaultOptionsFile}{optfile.cfl}
+% \end{macrocode}
+% \iffalse
+%</cfg>
+% \fi
+%
+% \iffalse
+%<*dtx>
+% \fi
+%%
+%% \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 \~}
+%%
+% \iffalse
+%</dtx>
+% \fi
+%
+% \Finale
+\endinput
+
+%%% Local Variables:
+%%% fill-column: 72
+%%% coding: utf-8
+%%% End:
diff --git a/macros/latex/contrib/lettrine/lettrine.ins b/macros/latex/contrib/lettrine/lettrine.ins
new file mode 100644
index 0000000000..a2fd3ac5bf
--- /dev/null
+++ b/macros/latex/contrib/lettrine/lettrine.ins
@@ -0,0 +1,84 @@
+%%
+%% Copyright (C) 1999-2019 Daniel Flipo.
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% This program can be distributed and/or modified under the terms
+%% of the LaTeX Project Public License either version 1.3c 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+\def\batchfile{lettrine.ins}
+\input docstrip.tex
+
+{\ifx\generate\undefined
+\Msg{**********************************************}
+\Msg{*}
+\Msg{* This installation requires docstrip}
+\Msg{* version 2.3c or later.}
+\Msg{*}
+\Msg{* An older version of docstrip has been input}
+\Msg{*}
+\Msg{**********************************************}
+\errhelp{Move or rename old docstrip.tex.}
+\errmessage{Old docstrip in input path}
+\batchmode
+\csname @@end\endcsname
+\fi}
+
+\keepsilent
+\askforoverwritefalse
+
+\usedir{tex/latex/lettrine}
+
+\preamble
+
+This file is a generated file part of the lettrine package.
+-----------------------------------------------------------
+
+For the copyright see the source file `lettine.dtx'.
+
+This file can be distributed and/or modified under the terms
+of the LaTeX Project Public License either version 1.3c 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.3c 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 Daniel Flipo.
+
+Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
+
+\endpreamble
+
+\generate{\file{lettrine.sty}{\from{lettrine.dtx}{sty}}
+ \nopreamble
+ \file{lettrine.cfg}{\from{lettrine.dtx}{cfg}}
+ }
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move}
+\Msg{* lettrine.sty, lettrine.cfg and the *.cfl files generated}
+\Msg{* from contrib.ins into a directory searched by TeX.}
+\Msg{*}
+\Msg{* If you want to change the default settings, uncomment the}
+\Msg{* lines you want in file lettrine.cfg and customize them.}
+\Msg{*}
+\Msg{* To produce the documentation run lettrine.dtx}
+\Msg{* through LuaLaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{***********************************************************}
+
+\endbatchfile
+\endinput