%%
%% This is file `lettrine.sty', v2.30.
%%
%% IMPORTANT NOTICE:
%%
%% 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>
%%
\NeedsTeXFormat{LaTeX2e}[2018-04-01]
\ProvidesFile{lettrine.sty}
             [2022-09-25 v2.30 (Daniel Flipo)]
\RequirePackage{xkeyval,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
\InputIfFileExists{lettrine.cfg}
   {\typeout{Loading lettrine.cfg}}
   {\typeout{lettrine.cfg not found, using default values}}
\DeclareOptionX{lines}[\value{DefaultLines}]{\setcounter{DefaultLines}{#1}}
\DeclareOptionX{depth}[\value{DefaultDepth}]{\setcounter{DefaultDepth}{#1}}
\DeclareOptionX{lhang}[]{\ifx#1\@empty\else
                                \renewcommand*{\DefaultLhang}{#1}\fi}
\DeclareOptionX{loversize}[]{\ifx#1\@empty\else
                                \renewcommand*{\DefaultLoversize}{#1}\fi}
\DeclareOptionX{lraise}[]{\ifx#1\@empty\else
                                \renewcommand*{\DefaultLraise}{#1}}
\DeclareOptionX{findent}[\the\DefaultFindent]{%
                                \setlength{\DefaultFindent}{#1}}
\DeclareOptionX{nindent}[\the\DefaultNindent]{%
                                \setlength{\DefaultNindent}{#1}}
\DeclareOptionX{slope}[\the\DefaultSlope]{\setlength{\DefaultSlope}{#1}}
\DeclareOptionX{image}[true]{\csname LettrineImage#1\endcsname}
\DeclareOptionX{grid}[true]{\csname LettrineOnGrid#1\endcsname}
\DeclareOptionX{novskip}[\the\DiscardVskip]{\setlength{\DiscardVskip}{#1}}
\DeclareOptionX{realheight}[true]{\csname LettrineRealHeight#1\endcsname}
\DeclareOptionX{optionsfile}[]{\ifx#1\@empty\else
                               \renewcommand*{\DefaultOptionsFile}{#1}\fi}
\ProcessOptionsX

\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
\newcommand*{\LettrineTextFont}{\scshape}
\newcommand*{\LettrineSecondString}{x}
\newcommand*{\LettrineFontHook}{}
\def\computeL@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}%
}
\newcommand*{\LettrineTestString}{EFTZ}
\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
}
\newcommand*{\LettrineFont}{%
   \LettrineFontHook
   \fontsize{\L@factor\L@height}{\L@factor\L@height}%
   \selectfont
}
\newcommand*{\LettrineImage}{%
   \LettrineFontHook\includegraphics[height=\L@height]%
}
\def\setupL@lbox{%
  \computeL@height
  \ifL@image
    \sbox{\L@lbox}{\LettrineImage{\l@initial}}%
  \else
    \compute@fontsize
    \sbox{\L@lbox}{\LettrineFont \l@initial}%
  \fi
}
\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}}
\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
  \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,
    \setupL@lbox
    \setlength{\LettrineWidth}{\wd\L@lbox}%
    \def\KV@prefix{KV@L@}%
    \let\@tempc\relax
    \expandafter\KV@do\l@LOKeys,\relax,
    \setkeys{L}{#1}%
  \fi
  \setupL@lbox
  \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
     (for loversize=0, accent excluded),\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}{\@totalleftmargin}%
  \addtolength{\L@Nindent}{\@totalleftmargin}%
  \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
  \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
         \hskip \the\L@Findent}}%
  \usebox{\L@tbox}%
  \ifnum\@listdepth>0 \Lreset@listparshape \fi
}
\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
                 }%
}
\endinput
%%
%% End of file `lettrine.sty'.
