diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lettrine/lettrine.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/lettrine/lettrine.dtx')
-rw-r--r-- | macros/latex/contrib/lettrine/lettrine.dtx | 1169 |
1 files changed, 1169 insertions, 0 deletions
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: |