summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/lettrine
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:54:33 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:54:33 +0000
commitaf5d5861920b827fdc3b03c588de762bfb6da40b (patch)
tree24b608775d9883af68db6450e28cb1880929d5db /Master/texmf-dist/source/latex/lettrine
parent71258e64b39921d652306b688af4942e5b191ab3 (diff)
trunk/Master/texmf-dist/source/latex/lettrine
git-svn-id: svn://tug.org/texlive/trunk@352 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/lettrine')
-rw-r--r--Master/texmf-dist/source/latex/lettrine/lettrine.dtx675
-rw-r--r--Master/texmf-dist/source/latex/lettrine/lettrine.ins25
2 files changed, 700 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/lettrine/lettrine.dtx b/Master/texmf-dist/source/latex/lettrine/lettrine.dtx
new file mode 100644
index 00000000000..a3721b854ac
--- /dev/null
+++ b/Master/texmf-dist/source/latex/lettrine/lettrine.dtx
@@ -0,0 +1,675 @@
+%
+% Copyright 1999-2004 Daniel Flipo.
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or any later version.
+%
+% NO PERMISSION is granted to produce or to distribute a
+% modified version of this file under its original name.
+%
+% \CheckSum{427}
+%
+% \iffalse
+% Tell the \LaTeX\ system who we are and write an entry on the
+% transcript.
+%<*dtx>
+\ProvidesFile{lettrine.dtx}
+%</dtx>
+%<code>\ProvidesFile{lettrine.sty}
+%\fi
+%\ProvidesFile{lettrine.dtx}
+ [2004/05/22 v1.6 (D. Flipo)]
+%\iffalse
+% Lettrine package for LaTeX version 2e
+%
+% Copyright (C) 1999-2004 by Daniel Flipo
+%
+% Please report errors to: Daniel.Flipo@univ-lille1.fr
+%
+%<*filedriver>
+\documentclass{ltxdoc}
+\newenvironment{key}[2]{\expandafter\macro\expandafter{%
+ \csname KV@#1@#2\endcsname}}{\endmacro}
+%
+\newcommand*\file[1]{\texttt{#1}}
+%
+\parindent = 0pt
+\parskip = .3\baselineskip
+\begin{document}
+\begin{center}
+ \textbf{\Large Typesetting `lettrines' in \LaTeXe{} documents}
+ \\[.2\baselineskip]
+ {\large Daniel \textsc{Flipo}}\\
+ \texttt{Daniel.Flipo@univ-lille1.fr}
+\end{center}
+ \DocInput{lettrine.dtx}
+\end{document}
+%</filedriver>
+%\fi
+% \GetFileInfo{lettrine.dtx}
+%
+% \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{|\emph{$<$letter$>$}|}{|\emph{$<$text$>$}|}|.
+% It produces a dropped capital \emph{$<$letter$>$} (2 lines high),
+% followed by \emph{$<$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\`egles typographiques en usage \`a
+% l'Imprimerie nationale'' troisi\`eme \'edition (1994),
+% ISBN-2-11-081075-0,
+% \item ``Mise en page et impression'' Yves~\textsc{Perrousseaux},
+% ISBN-2-911220-01-3.
+% \end{itemize}
+% The parameters can be set using David Carlisle's
+% \texttt{keyval.sty} syntax:
+% \begin{itemize}
+% \item |lines=|\emph{$<$integer$>$} sets how many lines the
+% dropped capital will occupy (default=2);
+% \item |lhang=|\emph{$<$decimal$>$} ($0\le|lhang|\le1$) sets
+% how much of the dropped capital's width should hang into
+% the margin (default=0);
+% \item |loversize=|\emph{$<$decimal$>$} ($-1<|loversize|\le1$)
+% enlarges the dropped capital's height: with
+% |loversize=0.1| its height is enlarged by 10\% so that
+% it raises above the top paragraph's line (default=0);
+% \item |lraise=|\emph{$<$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 |findent=|\emph{$<$dimen$>$} (positive or negative)
+% controls the horizontal gap between the dropped capital
+% and the indented block of text (default=0pt);
+% \item |nindent=|\emph{$<$dimen$>$} shifts all indented lines,
+% starting from the second one, horizontally by
+% \emph{$<$dimen$>$} (this shift is relative to the first
+% line, default=0.5em);
+% \item |slope=|\emph{$<$dimen$>$} can be used with dropped
+% capitals like |A| or |V| to add \emph{$<$dimen$>$}
+% (positive or negative) to the indentation of each line
+% starting from the third one (no effect if |lines=2|,
+% default=0pt);
+% \item |ante=|\emph{$<$text$>$} can be used to typeset
+% \emph{$<$text$>$} \emph{before} the dropped capital
+% (typical use is for French guillemets starting
+% the paragraph).
+%
+% \changes{lettrine-1.6}{2004/05/22}{Add a flag to switch to
+% images in eps or pdf format. Suggested by Bill Jetzer.}
+%
+% \item |image=|\emph{$<$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|
+% or |A.pdf| instead of letter~A. This was suggested
+% by Bill Jetzer. Redefining \verb+\LettrineFont+ as
+% \verb+\LettrineFontEPS+ still works for compatibility
+% but is deprecated.
+% \end{itemize}
+%
+% Example: |\lettrine[lines=4, lraise=0.1, nindent=0em, |%
+% |slope=-.5em]%|\\
+% \mbox{}\phantom{\tt Example: lettrine}%
+% |{V}{oici} un exemple |\dots
+%
+% Coloured lettrines 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 lettrines globally is described
+% below, see |\LettrineFontHook|.
+%
+% 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.
+%
+% 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 |\renewcommand{\DefaultLoversize}{0}|,
+% \item |\renewcommand{\DefaultLraise}{0}|,
+% \item |\renewcommand{\DefaultLhang}{0}|,
+% \item |\LettrineImagefalse|,
+% \item |\setlength{\DefaultFindent}{0pt}|,
+% \item |\setlength{\DefaultNindent}{0.5em}|,
+% \item |\setlength{\DefaultSlope}{0pt}|.
+% \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 |findent|, |nindent| and |slope|,
+% can be set in \textit{filename} relative to |\LettrineWidth|
+% if needed.
+% |\LettrineWidth| should be used \emph{only} in the config file
+% \textit{filename}, its value is non-null only if \textit{filename}
+% is read!
+% 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 X, not \`A) when sitting on its baseline, gets
+% its top aligned with the top of the following text (provided
+% $|loversize|=0$ and $|lines|\ge 2$). When $|lines|=1$,
+% size is computed as if |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 lettrines in a (part of) document:
+% |\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}| \\
+% will colour the lettrines following this command in grey.
+%
+% \changes{lettrine-1.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 newly released LM fonts, which should replace both CM and
+% EC fonts sooner or later, are fully scalable, so, if you have
+% them installed, 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), they are fully scalable too!
+%
+% \vspace{\baselineskip}
+% \textbf{Known problems:}
+% \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 a `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{}.
+% \end{itemize}
+%
+% \StopEventually{}
+%
+% \pagebreak[3]
+% \section{\TeX{}nical details}
+%
+% This package only runs with \LaTeXe{} and requires keyval.sty
+% \begin{macrocode}
+%<*code>
+%% Please report errors to: Daniel.Flipo@univ-lille1.fr
+%%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\RequirePackage{keyval}
+% \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{lettrine-1.2}{2002/03/13}{\cs{newlength} changed to
+% \cs{newdimen}, to correct a bug with seminar.cls (pointed out
+% by Peter M\"unster).}
+%
+% \changes{lettrine-1.6}{2004/05/22}{Added newif \cs{ifLettrineImage}.}
+%
+% \begin{macrocode}
+\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
+% \end{macrocode}
+%
+% Then let's define the necessary internal counters, lengths,
+% and commands.
+%
+% \changes{lettrine-1.6}{2004/05/22}{Added newif \cs{ifL@image}.}
+%
+% \begin{macrocode}
+\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
+% \end{macrocode}
+%
+% Provide commands for the fonts used to typeset the two
+% mandatory arguments of |\lettrine|.
+%
+% \begin{macro}{\LettrineTextFont}
+% In French, small caps usually follow the dropped capital.
+% \begin{macrocode}
+\newcommand*{\LettrineTextFont}{\scshape}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LettrineFont}
+% \begin{macro}{\LettrineFontHook}
+% \begin{macro}{\LettrineFontEPS}
+% 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 with
+% |Defaultloversize| or an optional argument |loversize=|.
+% If |lines=1|, the default size for the dropped capital is
+% computed as if |lines=2|.
+% |\Lettrine@height| computes the wished height for the dropped
+% capital and stores it into |\L@height|.
+% As |\baselineskip| might be a rubber length, we convert it into
+% a `dimen' using |\@tempdima|.
+% |\LettrineFontHook| enables to select another font for the
+% dropped capital. Its default definition is empty (the current
+% text font is used).
+%
+% \changes{lettrine-0.9}{1998/02/23}{Size of the dropped capital
+% when lines=1 changed (was \cs{Huge}).}
+% \changes{lettrine-0.9}{1998/03/13}{\cs{Lettrine@height} added.}
+% \changes{lettrine-0.9}{1998/03/13}{\cs{LettrineFontHook} added.}
+% \changes{lettrine-0.9}{1998/03/13}{\cs{LettrineFontEPS} added.}
+% \changes{lettrine-1.2}{2002/03/13}{\cs{baselineskip} may be a
+% rubber length, we convert it to a dimen.}
+%
+% \begin{macrocode}
+\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*{\LettrineFont}{%
+ \Lettrine@height
+% \end{macrocode}
+% |\L@height| now holds the exact height required for the dropped
+% capital, setting |\fontsize| to that height would not give the
+% expected result (capital too small), some computing has to be
+% done: we measure how high an `X' capital would be and compute
+% a scaling factor (always $\ge1$).
+% \begin{macrocode}
+ \sbox{\L@tbox}{\LettrineFontHook\fontsize{\L@height}{\L@height}%
+ \selectfont X}%
+% \end{macrocode}
+% Arithmetic calculations convert the dimensions into integers
+% (in sp) and compute a (4 decimal accurate) scaling factor.
+% \begin{macrocode}
+ \@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
+}
+% \end{macrocode}
+%
+% 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 EPS file at this size.
+%
+% \changes{lettrine-1.6}{2004/05/22}{Added newif \cs{LettrineFontHook}
+% to \cs{LettrineFontEPS}. This is needed for color options.}
+%
+% \begin{macrocode}
+\newcommand*{\LettrineFontEPS}{%
+ \Lettrine@height\LettrineFontHook
+ \includegraphics[height=\L@height]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Set up keyval initializations.
+%
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% \changes{lettrine-1.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}}
+\newdimen\LettrineWidth
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\lettrine}
+% Now let's define |\lettrine|.
+%
+% \begin{macrocode}
+\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
+\def\@lettrine[#1]#2#3{%
+% \end{macrocode}
+%
+% \changes{lettrine-0.81}{1997/02/26}{\cs{DefaultLoversize} added.}
+%
+% First reset the parameters to their default values:
+% \begin{macrocode}
+ \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
+% \end{macrocode}
+% \changes{lettrine-1.5}{2003/08/18}{Added reading of an optional
+% config file \cs{DefaultOptionsFile}.}
+% then try to read an optional file, the name of which is found
+% in |\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 lettrine
+% (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 |findent|, |nindent| and |slope|
+% ---which do not influence the lettrine size--- may be given
+% relative to |\LettrineWidth|, this has to be done again after
+% measuring the lettrine for |\LettrineWidth| to be set properly.
+% \begin{macrocode}
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \settowidth{\LettrineWidth}{\usebox{\L@lbox}}%
+ \def\KV@prefix{KV@L@}%
+ \let\@tempc\relax
+ \expandafter\KV@do\l@LOKeys,\relax,
+ \fi
+% \end{macrocode}
+% Finally read the optional argument: the |keyval| package will
+% set the parameters mentioned calling |\define@key| (see above).
+% \begin{macrocode}
+ \setkeys{L}{#1}%
+% \end{macrocode}
+% Save the two mandatory arguments of |\lettrine| into
+% two boxes, this will help measuring their sizes.
+% Depending on the boolean |image|, |\LettrineFont| or
+% |\LettrineFontEPS| is used.
+% \begin{macrocode}
+ \ifL@image
+ \sbox{\L@lbox}{\LettrineFontEPS{#2}}%
+ \else
+ \sbox{\L@lbox}{\LettrineFont #2}%
+ \fi
+% \end{macrocode}
+%
+% \changes{lettrine-1.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 the top of paragraph.
+% We use |\L@first| to compute the amount of space to be skipped.
+% Again, as |\baselineskip| might be a rubber length, we convert
+% it into a `dimen' using |\@tempdima|.
+%
+% \changes{lettrine-0.9}{1998/02/23}{Calculations of length
+% \cs{L@first} changed. Do not `vskip' small lengths ($<$0.2pt),
+% they are just rounding errors.}
+%
+% \changes{lettrine-1.2}{2002/03/13}{\cs{baselineskip} may be a
+% rubber length, we convert it to a dimen.}
+%
+% \begin{macrocode}
+ \@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}%
+% \end{macrocode}
+% Now, |\L@first| holds (the opposite of) the raw height of a
+% standard dropped capital (like~'X'), excluding the effect of
+% |\L@oversize|. This is the basis for |\L@raise|
+% (and |\L@oversize|, see |\LettrineFont|).
+% \begin{macrocode}
+ \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
+% \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{lettrine-1.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{lettrine-1.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}.}
+%
+% 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 |\rightmargin| (amount of space
+% locally added to |\leftmargin| in these environments).
+% \begin{macrocode}
+ \addtolength{\L@Pindent}{\rightmargin}%
+ \addtolength{\L@Nindent}{\rightmargin}%
+% \end{macrocode}
+% Now, set up the shape of the new paragraph (designed by
+% |\parshape|).
+% \begin{macrocode}
+ \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\leavevmode
+ \parshape=\L@parshape
+% \end{macrocode}
+% 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}
+% \end{macro}
+%
+% This ends the definition of |\lettrine|.\\
+% Load a local config file if present in \LaTeX{}'s search path.
+% \begin{macrocode}
+\InputIfFileExists{lettrine.cfg}{}{}
+%</code>
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \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 \~}
+%%
+\endinput
diff --git a/Master/texmf-dist/source/latex/lettrine/lettrine.ins b/Master/texmf-dist/source/latex/lettrine/lettrine.ins
new file mode 100644
index 00000000000..f8ef8175632
--- /dev/null
+++ b/Master/texmf-dist/source/latex/lettrine/lettrine.ins
@@ -0,0 +1,25 @@
+%%
+%% 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{lettrine.ins}
+\input docstrip.tex
+\keepsilent
+
+\generateFile{lettrine.sty}{f}{\from{lettrine.dtx}{code}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move lettrine.sty}
+\Msg{* into a directory searched by TeX.}
+\Msg{*}
+\Msg{* If you want to change the default settings, you can do so}
+\Msg{* by copying lettrine.cfg to the directory where you will}
+\Msg{* install lettrine.sty and uncomment the lines you want to}
+\Msg{* change.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{***********************************************************}
+