diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/examplep')
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/README | 27 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.pdf | bin | 0 -> 601674 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.tex | 1848 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/houses.eps | 34 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/houses.pdf | bin | 0 -> 963 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/pexaminipage.eps | 1230 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/pexaminipage.pdf | bin | 0 -> 21033 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.eps | 32 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.pdf | bin | 0 -> 959 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/examplep/wrfiles.pl | 275 |
10 files changed, 3446 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/examplep/README b/Master/texmf-dist/doc/latex/examplep/README new file mode 100644 index 00000000000..f729aea71f0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/README @@ -0,0 +1,27 @@ +Verbatim phrases and listings in LaTeX +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +README by pts@fazekas.hu at Sun Jan 16 15:33:24 CET 2005 + +This directory contains the examplep LaTeX package, which provides +sophisticated features for typesetting verbatim source code listings, +including the display of the source code and its compiled LaTeX or METAPOST +output side-by-side, with automatic width detection and enabled page breaks +(in the source), without the need for specifying the source twice. Special +care is taken so section, page and footnote numbers do not interfere with the +main document. For typesetting short verbatim phrases, a replacement for the +\verb command is also provided in the package, which can be used inside +tables and moving arguments such as footnotes and section titles. The +listings package is used for syntax highlighting. + +The article (eurotex_2005_examplep.pdf) reviews the design decisions made +during the package development and also presents some interesting +implementation internals. examplep is compared to standard LaTeX packages +such as listings, ltxdoc, sverb and moreverb. The new codep package and its +accomanying Perl script, which provide a convenient interface to the examplep +package for authors of manuals, is also presented. With codep it is possible +to generate the source code, the LaTeX or METAPOST output and the compilable +example file onto the CD from a single source embedded into the appropriate +place of the .tex document file. + +The software is free software, covered by the GNU GPL v2.0 or later. +There is NO WARRANTY. diff --git a/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.pdf b/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.pdf Binary files differnew file mode 100644 index 00000000000..292a4e3440b --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.pdf diff --git a/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.tex b/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.tex new file mode 100644 index 00000000000..e6052aca4db --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/eurotex_2005_examplep.tex @@ -0,0 +1,1848 @@ +% +% eurotex_2005_examplep.tex +% by pts@fazekas.hu at Thu Nov 11 20:44:25 CET 2004 +% -- Wed Jan 12 00:42:06 CET 2005 +% +% Dat: this is the supposed final version of the article, without corrections +% Dat: required houses.{eps,pdf} pexaminipage.{eps,pdf} shorthyp_t1xtts.{eps,pdf} +% Dat: auxilary files: eurotex_2005_examplep.bib ttt.tex +% OK: eliminate Overfull \hbox{}es +% OK: submit to CTAN +% + +\documentclass[a4paper]{article} +\usepackage[latin2]{inputenc}% Dat: because of `á' etc.; also ÷ +\usepackage{t1enc} +\usepackage{booktabs} +\usepackage{graphicx}% Dat: after Babel +\usepackage{mflogo} + +% Dat: for \documentclass[a4paper]{article} +\special{\string!\expandafter\expandafter\csname @gobble\endcsname + \string\%xdvi.dvo: -expert -s 6 -xoffset -1.54cm -yoffset -1.54cm + -paper 12.8cmx23cm} % -xoffset 7mm -yoffset 13mm -paper 385ptx576pt} + +\title{Verbatim phrases and listings in {\LaTeX}} +\author{P\'eter Szab\'o $\langle$\texttt{pts@fazekas.hu}$\rangle$ +\thanks{Thanks to Ferenc Wettl for the fruitful long discussion about the +line syntax of the \texttt{code} environment, and also for reviewing the +article.} +\\[3pt]%\par\smallskip +\normalsize Budapest University of Technology and Ecomomics,\\[-3pt] +\normalsize Department of Analysis,\\[-3pt] +\normalsize M\H{u}egyetem rakpart 3--9.,\\[-3pt] +\normalsize Budapest, Hungary H-1111} +\date{2004-11-11} + +\def\verbatizee#1{\begingroup\ttfamily + \toks0{#1}\edef\next{\the\toks0}% + %\dimen0=\the\fontdimen2\font % Dat: disable spaces, `=' is required here + \dimen0\fontdimen2\font % Dat: disable spaces, `=' is required here + %\showthe\dimen0 + \fontdimen2\font=0pt + {\expandafter\stripit\meaning\next}% Dat: grouping to keep \dimen0 + \unskip % Dat: strip final space, possibly after command + \fontdimen2\font=\dimen0 + %\showthe\dimen0 + \endgroup} +\def\next{} +\expandafter\def\expandafter\stripit\meaning\next{} + +%** So \verb+÷+ works. +\DeclareInputText{247}{\ensuremath{\div}} + +\belowcaptionskip0pt + +\begin{document} + +\maketitle + +\begin{abstract} + + The \textsf{examplep} package written by the author recently provides + sophisticated features for typesetting verbatim source code listings, + including the display of the source code and its compiled \LaTeX{} or + \textsf{METAPOST} output side-by-side, with automatic width detection and + enabled page breaks (in the source), without the need for specifying the + source twice. Special care is taken so section, page and footnote numbers + do not interfere with the main document. For typesetting short verbatim + phrases, a replacement for the \verb+\verb+ command is also provided + in the package, which can be used inside tables and moving arguments such as + footnotes and section titles. The listings package is used for syntax + highlighting. + + The article reviews the design decisions + made during the package development and also presents some interesting + implementation internals. \textsf{examplep} is compared to standard + \LaTeX{} packages such as \textsf{listings}, \textsf{ltxdoc}, + \textsf{sverb} and \textsf{moreverb}. The new \textsf{codep} package and + its accomanying \textsf{Perl} script, + which provide a convenient interface to the \textsf{examplep} package for + authors of manuals, is also presented. With \textsf{codep} it is possible + to generate the source code, the \LaTeX{} or \textsf{METAPOST} output and + the compilable example file onto the CD from a single source embedded + into the appropriate place of the \texttt{.tex} document file. +%%%WF A CD-re irasnak semmi koze a lenyeghez, sajnos a dolgozat +%%% hatralevo reszeben is folyton CD-file es egyebekrol szolsz, de +%%% valojaban csak arrol van szo, hogy kulon file-ba irjuk a +%%% futtathato kodot (amit aztan a web-re, CD-re, DVD-re... lehet tenni). +%% -- kellett neki nevet adni, ez lett +\end{abstract} + + +\section{Terminology} + +\begin{description} + +\item[verbatim text] A visually distinguishable textual part of the + document (usually typeset with a monospaced, or typewriter font) that is + allowed to contain the full ASCII character set. Verbatim text is often + used to typeset parts of program source files, including \TeX{} source. + Verbatim text must be marked up (i.e.\ surrounded) + in the source of the \LaTeX{} + document, so backslash and other control characters are typeset verbatim + instead of being interpreted as commands or special \LaTeX{} characters. + +%%%WF a kovetkezo 2 def nem pontos, nem biztos, hogy paragrafusok kozt +%%% van a kiemelt verbatim. Sorban? vagy sorok kozt van? +%% -- lehetne még pontosítani, de szerintem ebből rögtön lehet tudni, mire +%% gondolok +\item[inline verbatim] A verbatim text passage inside a paragraph + or table cell. + +\item[display verbatim] is a vertical verbatim text block between + paragraphs. + +\item[side-by-side display] + When typesetting program source in a display verbatim, it is often + desirable to show the output of the program as well. This is especially + useful when teaching scripting languages, so the reader can see the + command and its effect side-by-side in a quick glance. For \TeX{} or + \textsf{METAPOST} sources and EPS and PDF source files it is also useful to + see the source and the typeset result side-by-side. + +\item[Source and Sample] + Side-by-side displays can be divided to \emph{Source} and \emph{Sample}, + the latter being program output or typeset material. + +\item[CD-files] + Files accompanying a book, usually on a CD or DVD shipped with the book, + or avalable for download on the home page of the book. These + files usually contain some of the display verbatim material in the book, + so readers do not have to retype them. + +\end{description} + +\section{Special characters in the \LaTeX{} source} + +The special meaning of the input characters in the source file must be +disabled in verbatim mode -- except for the character(s) that delimit the end +of the verbatim text. The following characters have to be dealt with: + +\begin{description} + +\item[ASCII symbols] The ligatures have to be disabled, especially \verb+?`+ $\to$ +\texttt{?`} etc. The safest way is to make both characters of such a ligature +active, and %then +defining \verb+\def?{\relax\string?\relax}+ +and \verb+\def`{\relax\string`+\allowbreak\verb+\relax}+. \hskip0pt +minus3.3pt\relax \textsf{examplep} issues similar +definitions covering all such ligatures in the OT1- and T1-encoded CM fonts. + +\item[ASCII letters] Most verbatim fonts don't contain the ``fi'' or similar +ligatures, so \textsf{examplep} takes no care to disable them. + +\item[special \TeX{} source symbols] To disable the special meaning of the symbols +\verb+\+ +\verb-{- +\verb-}- +\verb+$+ %%%$ +\verb+%+ +\verb+^+ +\verb+&+ +\verb+_+, +\textsf{examplep} redefines their \verb+\catcode+ for display verbatim. +However, catcode changes are not always appriopriate for inline verbatim, +so \textsf{examplep} provides \verb+\÷+ (see below) which doesn't change +catcodes at all. + +\item[other ASCII punctuation] Some of these characters (% +\verb+[+ +\verb+]+ +\verb+;+ +\verb+'+ +\verb+,+ +\verb+.+ +\verb+/+ +\verb+~+ +\verb+!+ +\verb+@+ +\verb+*+ +\verb+(+ +\verb+)+ +\verb-+- +\verb-|- +\verb-:- +\verb-"- +\verb-<- +\verb->- +\verb-?- +\verb+`+ +\verb+-+ +\verb+=+) may be active, for example, \verb+~+ is ÷\nobreakspace÷, +\verb+`+ is a Babel shorthand (e.g.\ in the Hungarian language module, +\textsf{magyar.ldf}); \verb+"+ is a Babel shorthand (e.g\ in the German +language module); \verb+?+, \verb+!+, \verb+:+ and \verb+;+ are activated +(e.g.\ by the French language module), and other characters may be activated, +too. So \textsf{examplep} sets the catcode of all characters in the range +$33\ldots126$ to other (12). This includes all ASCII punctuation, letter and +digit characters. + +\item[double carets] For example, the letter +``J'' can be input as its ASCII code in hex, +prefixed by double carets: \verb+^^4a+. However, in verbatim mode we want the +4 characters, not the letter {J}. There is no problem in inline verbatim +mode, because \verb+^+ loses its special meaning once its catcode is changed. +However, when the verbatim material is written to a file or to the terminal, +\TeX{} may change ``unprintable'' characters to escapes prefixed by \verb+^^+. +These changes must be reverted when reading the file back. See Subsection +\ref{tcx} for more. + +\item[high characters] Input characters in the range $128\ldots255$ are +usually activated by the \textsf{inputenc} package, and they know how to +typeset themselves -- so \textsf{examplep} leaves the catcode of such +characters intact. However, in some modes, \textsf{examplep} has already +changed all catcodes to 12 and 10 (with \verb+\meaning+), so it has to change +the catcodes of such high codes back to 13 (active). + +\end{description} + +\section{Features of \textsf{examplep}} + +These are the most important, unique features: + +\begin{itemize} + +\item layout of side-by-side display may depend on maximum Source width +\item automatic hyphenation of inline verbatim. The text is divided into + words and punctuation symbols (based on catcodes). For words, the normal + \TeX{} hyphenation patterns apply, and it is allowed to break the line on + both sides of a punctuation symbol. +\item customizable isolation of page, section etc.\ numbers in the Sample + and the host document with the \texttt{PexaMiniPage} environment +\item besides the outer level, inline verbatim (when properly escaped inside + \verb+\Q+ or \verb+\÷+) works safely inside macro arguments, section + titles, footnotes, table cells and index entries +\item generated CD-files with automatic page and chapter number +\item writing verbatim data to CD-files with a \textsf{Perl} script; exact, + binary reproduction of verbatim text is guaranteed +\item ability to write different material to Source, Sample and CD-files +\item the accents \verb+\H+ and \verb+\.+ work as expected with monospaced + fonts in the OT1 encoding. By default, \verb+\texttt{\H o}+ produces + \hbox to0pt{\verb+}+\hss}\verb+o+ in OT1 encoding, because such + typewriter fonts (such as \textit{cmtt10}) have those accents +%%%WF repaced + replaced + by ASCII symbols. \textsf{examplep} solves the problem by getting the + accent from the \textit{cmr} font family. + +\end{itemize} + +\noindent Some other features: + +\begin{itemize} + +\item side-by-side display of the Source and the Sample +\item between-word hypenation of inline verbatim +\item customizable left and right indentation of display verbatim +\item specifying inline verbatim with nested braces (\verb+\PVerb+, + \verb+\Q+) or terminating character (\verb+\PVerb+, \verb+÷+, \verb+\÷+) +\item automatic line breaks with hyphenation in display verbatim +\item the discretionary hyphen (\verb+\hyphenchar+) of verbatim text is + different from the one in normal text +\item line numbering in display verbatim +\item writing to temporary files only if needed +\item reading back contents of any file in display verbatim +%\item writing verbatim data to temporary files (\verb+^+\relax\verb+^+ab, .tcx) +% Dat: not a feature: automatic \textsf{METAPOST} processing, see the \texttt{eempost} package +\item inline verbatim with a single character ($\div$) and its escaped + version (\textbackslash$\div$ and \verb+\Q+) +\item automatic \verb+\indent+\allowbreak/\allowbreak\verb+\noindent+, + based on empty line above \verb+\begin{...}+ +\item ISO Latin accented input character support in all modes (also present + in \verb+\verb+) +\item support for syntax highlighting with the \textsf{listings} package + \cite{listings} +%%%WF a (\cite{...}) kicserelendo \cite{...} -re az EGESZ DOLGOZATBAN, +%%% nem kell kerek zarojel, ott van mar a szogletes +%% -- javítva +\item emits a tab as eight spaces in normal mode, but tabs are supported + properly with \texttt{ttlistings=yes} and \texttt{ttlistings=showtabs} +\item simple side-by-side display emulation without temporary files, + using \texttt{src\allowbreak style=leftboth} or \texttt{srcstyle=leftleft} + +\end{itemize} + + +\subsection{Escaped mode of inline verbatim locations}\label{escaped} + +For compatibility reasons, \textsf{examplep} doesn't change the original +%%%WF ÷\verb+ and ÷\verb*+ +\verb+\verb+ and \verb+\verb*+ +%%% +commands in any way, but defines its own commands: +\verb+\PVerb+, \verb+\PVerbH+, \verb+\PVerbInner+, +\verb+\PVerbOpt+, \verb+\Q+, \verb+÷+ and \verb+\÷+. Most of the +\verb+\PVerb+\ldots{} +commands are historical. For new documents, only the use of +\verb+\PVerbOpt+, \verb+\Q+, \verb+÷+ and \verb+\÷+ is recommended. Some of +these commands have to be activated with package load options: +\verb+\usepackage[Q=yes,div=yes,bsdiv=yes]{examplep}+. The reason why +\verb+÷+ was introduced is that it is a high Latin-1 (and Latin-2) character +available on the Hungarian keyboard, which is usually not used in \LaTeX{} +documents (in fact, \verb+$\div$+ is used instead). Inline verbatim sources +with such a character are compact, and they can contain all ASCII symbols. + +\begin{table} +\caption{Contexts and features of inline verbatim commands}\label{contexts} +\vskip\abovecaptionskip +\small +\noindent\hfil\begin{tabular}{@{}llllll@{}}\toprule + & outer& argument& tablular& elsewhere& escaped \\\midrule +\verb+\verb+ & + & $-$$^1$ & + & $-$$^1$ & no \\ +\verb+\PVerbOpt+ & + & +$^2$ & + & $-$ & no \\ +\verb+÷+ & + & +$^2$ & $-$ & +$^2$ & no \\ +\verb+\÷+ & + & + & + & + & yes \\ +\verb+\Q+ & + & + & + & + & yes \\ +\bottomrule +\end{tabular} +\par\smallskip +$^1$sometimes displays the proper error message\par +$^2$inner mode only (spaces compressed or lost, \verb+%+ is comment etc.) +\end{table} + +\textsf{examplep} supports inline verbatim text at the outer level, +inside macro arguments, in table cells and elsewhere (in section titles, in +footnotes and in index entries), see also in Table \ref{contexts}. +The reason why some of these cases are treated differently +is that catcode changes must be timed correctly so that the proper catcodes +are active by the time \TeX{} reads the verbatim text from the input file for +the first time. (Please note that section titles and index entries are also +written to and read back from auxilary files.) + +This is quite hard to accomplish in several cases (because \TeX{}'s mouth +gathers macro arguments at high speed, a way before \TeX{}'s stomach could +change the catcodes), so \textsf{examplep} provides the commands \verb+÷+ +and \verb+\Q+, which do not change catcodes at all, so they work everywhere. +Each special (say, not alphanumeric) character of the source text of these +commands must be prefixed by a backslash, so \TeX's eyes will see it as a +controls sequence token. The backslashes are retained when the construct is +written to auxilary files, but they get removed upon typesetting. Letters, +when prefixed by a backslash, get special meaning, for example \verb+\V+ +denotes a visible space. For example, The construct +\verb+\÷\\\}÷+ is seen by \TeX's eyes as +\verb+\÷+$_{13}$\allowbreak +\verb+\\+$_{13}$\allowbreak +\verb+\}+$_{13}$\allowbreak +\verb+÷+$_{13}$, and its gets typeset as \verb+\}+ (by running the command +\verb+\÷+). Please note that the construct is properly nested, because all +braces are inside control sequence names. The same result (\verb+\}+) can be +achieved with \verb+\Q{\\\}}+. Both constructs are safe, because they can be +freely moved to anywhere in the source file. However, for compatibility +reasons, \verb+\Q+ is recommended, because its execution doesn't rely on the +current catcode of the terminating \verb+÷+ of \verb+\÷+. A more complicated +example: \verb+``\Q{\\\V X\ }''+ gets typeset as ``\verb*+\ X+\verb+ +''. +In escaped mode, \verb+\V+ dentoes a visible, unbreakable space, +\verb+\S+ and \verb*+\ + denote default space (affected by the +\texttt{pverb-space=} option), \verb+\B+ allows a line break there with a +discreationary hyphen (affected by the \texttt{pverb-linebreak=} option), +and \verb+\n+ flushes left and starts a new line. + +The \verb+\PVerb+ macros can detect whether they have been invoked from +within a macro argument. If so, they do not insist on catcode changes, but +they emit all the tokens that has been seen by \TeX's eyes. (Spaces are +already compressed now, and everything after \verb+%+ +is ignored etc., so this is not purely verbatim anymore.) However, this works +only if the macro argument is properly nested with respect to braces, and it +is delimited by braces (not a terminator character). + +Please note that there might be problems with verbatim material in index +entries processed by \textsf{makeindex} if characters +\verb+"+, \verb+@+, \verb+!+ and \verb+|+ are not quoted properly with +\verb+"+. This is a generic \textsf{makeindex} issue. The quoting must be +applied even inside verbatim material. + +\subsection{Horizontal alignment of the Source lines}\label{srcstyle} + +The \texttt{verbatim} environment of standard \LaTeX{} reads the whole +verbatim text into a macro argument, thus limiting the length of the verbatim +material to the available main memory. This is enough for about 3400 +80-character lines. The \textsf{verbatim}, \textsf{moreverb}, +\textsf{listings} and +% Dat: moreverb pkg uses verbatim pkg +\textsf{examplep} packages parse the input line-by-line, so there is no such +limit. However, with \textsf{examplep}, additional memory is required for +aligned mode, which limits the maximum number of lines to about 2200 +(32 pages) when the average line width is 80 characters. Please note that +the maximums mentioned here may be lower if more packages are loaded; in +another situatian the maximum number of lines was 375. As a reference, +a plain \verb+\halign+ with all lines having +\verb+(9999)\hfil\cr+ only could accomodate about 5000 lines when no packages +were loaded. The +maximum memory can be increased by increasing the \verb+extra_mem_bot+ +variable in \textsf{texmf.cnf} or in the environment. +%As a reference measurement. +%%%WF mi itt ez az utso mondat? +%% -- tényleg hülyeség, hihúzva + +There are two display modes used for display verbatim: paragraph and aligned +(see the \verb+\pexa@show@pars+ and \verb+\pexa@show@halign+ macros, +respectively, in the source). Aligned mode is used when multiple columns +(such as line numbers and text) have to be aligned horizontally. Aligned mode +uses the \TeX{} \verb+\halign+ primitive to do the alignment, and this +primitive reads the whole construct into memory before typesetting it (in +order to be able to calculate the column widths). The other one, +paragraph mode, is used when +horizontal alignment is not needed and side-by-side display is not used. In +paragraph mode, each line is typeset as a seperate paragraph, so the length +of the verbatim text is only limited by the available disk space to hold the +resulting DVI file. \textsf{examplep} chooses the mode automatically: for +side-by-side display it always chooses aligned mode (so it can measure the +width of the Source before typesetting it), otherwise, if the +\texttt{srcstyle=} makes it possible, it chooses paragraph mode, otherwise +it chooses aligned mode. See Figure \ref{fig:srcstyle} for details about +Source styles. + +\begin{figure}\small +{\relax\normalsize \parindent1em + \advance\leftskip\parindent %\advance\rightskip\parindent % Dat: automatic for \hsize + \advance\hsize-2\parindent + \parindent0pt +\texttt{srcstyle=left} \emph{PAF}\par +\leavevmode\hbox to0pt{\hss\scriptsize9}\texttt{srcstyle=leftnumhang} \emph{PAF}\par +{\scriptsize9}\texttt{srcstyle=leftnum} \emph{PAF}\par +\leavevmode{\scriptsize\phantom99}\texttt{srcstyle=leftnumcol} \emph{AF} when the last page number has 2 digits\par +\hfil\texttt{srcstyle=center} \emph{PAF}\par +\hfill\texttt{srcstyle=right} \emph{PAF}\par +\texttt{srcstyle=paralign}\hfill\emph{PF}\hfill with\hfill \texttt{source-par-align=justjust}\par +\strut\texttt{srcstyle=leftboth}\ \vrule\ srcstyle=leftboth \emph{A}\par +\leavevmode{\scriptsize\phantom99}\strut\texttt{srcstyle=leftbothnumcol}\ \vrule\ srcstyle=leftbothnumcol \emph{A}\par +\strut\texttt{srcstyle=leftleft}\ \vrule\ anything \emph{A}\par +%%%WF eleg zavaros egy tablazat, es harom sorban a | utani dolgok is +%%% erthetetlenek +%% -- mivel nincs jobb ötletem, marad ez +% Imp: boxed? +} +\medskip +\emph{P:} works in paragraph mode\\ +\emph{A:} works in aligned mode\\ +\emph{F:} works when Source is read back from file +\caption{The effect of the \texttt{srcstyle=} option}\label{fig:srcstyle} +\end{figure} + +Please note that the Source styles \texttt{leftboth} and +\texttt{leftbothnumcol} display each line twice, as Source and as Sample, +too. This is different from regular side-by-side display, because lines of +the Source and Sample here are forcibly aligned, and this solution doesn't +use a temporary file. The source style \texttt{leftleft} is similar, but it +lefts the author specify different Source and Sample for the same line (they +should be separated by \verb+&+ in the source). + + +\subsection{Display verbatim isolation}\label{pexaminipage} + +The \texttt{PexaMinipage} environment is provided, which is similar to the +%%%WF bulilt-in +built-in +%%% +\texttt{minipage} environment, but provides better isolation of the +Sample from the container document, because it saves and restores section, +page, equiation (etc.) numbers and also marks (section titles in +page headers). +Labels (for \verb+\label+, \verb+\ref+ etc.) are not isolated, because many +packages use them in a non-standard way. +See Figure \ref{fig:pexaminipage} for an example. + +\begin{figure}\small +\noindent\hfil\hbox to0pt{\hss\includegraphics{pexaminipage}\hss} +\caption{Display verbatim isolation with the \texttt{PexaMinipage} environment}% +\label{fig:pexaminipage} +\end{figure} + +The environment also +cancels vertical skips (including \verb+\belowdisplayskip+) at the bottom +of its contents. For space conservation, \verb+\abovedisplayskip+ above the +very first displayed equation is also canceled. To vaid this, put +\verb+\everydisplay{}+ before the formula. The environment starts with +\verb+\noindent+, but subsequent paragraphs are indented. + + +\subsection{Feature comparison} + +Although there are several \LaTeX{} packages providing display and/or inline +verbatim environments for \LaTeX{}, \textsf{examplep} has some important +unique features not found in other packages (see the beginning of this +section for details). The author has tried the following packages before +deciding to write \textsf{examplep}: + +\begin{description} + +\item[\normalfont\textsf{verbatim}] + Although the \texttt{verbatim} environment is built-in into \LaTeX{}, its + most important limitation is that it eats up \TeX{} memory when typesetting + very long verbatim material (of several hundred or thousand lines). The + \textsf{verbatim} package fixes this, and provides the + \verb+\verbatiminput+ command (similar to the \verb+\PexaShowSource+ + command of \textsf{examplep}) and the \texttt{comment} environment (similar + to \texttt{PIgnore} in \textsf{examplep}). + +\item[\normalfont\textsf{moreverb}] + This package extends the \textsf{verbatim} package with additional + features: proper handling of tabulators (also accessible from + \textsf{examplep} with the \textsf{listings} interface), line numbering + (also available in \textsf{examplep} with much more customization), + verbatim surrounded by a frame (this is not available in \textsf{examplep}, + but it works with \textsf{listings}, with page breaks allowed), the + \texttt{verbatimwrite} environment writes its contents to a file (similar + to the \texttt{WFile} environment in \textsf{examplep}). + +\item[\normalfont\textsf{sverb}] + It provides display verbatim with tabulators and long environments, and it + can read and write text from files. It also has a side-by-side environment + (\texttt{demo}) with fancy frames. + The \textsf{verbfwr} package (part of the \textsf{examplep} distribution) + was derived from parts of this package. + +\item[\normalfont\textsf{syntax}] + This package is written by the author of \textsf{sverb}. It provides + generic and customizable inline verbatim support and it also has powerful + features to typeset BNF-like grammars and syntax diagrams. It is documented + that no attempt is made to make the constructs work inside macro arguments + or section titles. + +\item[\normalfont\textsf{alltt}] + This standard \LaTeX{} package defines the \texttt{alltt} environment in + which the characters \verb+\ { }+ retain their original meaning, so it is + possible to do some manual formatting in the verbatim text. + +\item[\normalfont\textsf{fancyvrb}] \cite{fancyvrb} + This is extremely configurable verbatim package provides inline + verbatim even in footnotes, display verbatim even with side-by-side, line + numbers on any side, all + kinds of francy frames even with page breaks, text formatting and + writing and reading from files; and very long diplay verbatim text. + Options can be specified any time within the argument of the \verb+\fvset+ + command. The original \texttt{verbatim} environment is not modified, + but a new one, \texttt{Verbatim} is defined. Setting the background color + is not possible. + + This package is not actively developed. Version 2.7 (dated + 2000/03/21) is part of te\TeX{}. Oddly enough, the newest version on CTAN + is 2.6, which a file timestamp in 2004, but it dated 1998/07/17). + +\item[\normalfont\textsf{fvrb-ex}] + This package is part of the \textsf{fancyvrb} distribution and uses the + \textsf{fancyvrb} package. It provides a + side-by-side display verbatim environment (\texttt{SideBy\allowbreak SideExample}). A + page break is not allowed in the Source after the Sample. % Dat: tested + The \texttt{xrightmargin} option has to be specified manually (e.g.\,% + \texttt{xrightmargin\allowbreak=3cm}. The first two + characters of each line in the environment are ignored. + +\item[\normalfont\textsf{ltxdoc}] + The most important features of \textsf{examplep} inspired by the \LaTeX{} + documentation package are display verbatim line numbering with + \texttt{srcstyle=left\allowbreak num} and inline verbatim started with \verb+÷+. + The \textsf{ltxdoc} package typesets everything between two \verb+|+ + characters as inline verbatim. This is not supported by \textsf{examplep} + to avoid making an ASCII character active. + +\item[\normalfont\textsf{listings}] \cite{listings} + The most important layout elements of this sophisticated, highly + customizable, actively developed package missing from + \textsf{examplep} are: background color, frames (with page breaks allowed), + syntax highlighting and proper tabulator support. Except for the background + color and frames, these features can be used from \textsf{examplep} with + its interface to \textsf{listings}, see in Subsection \ref{listings}. + Use \verb+\lstset{columns=fullflexible,lang+\allowbreak\verb+uage=C,back+\allowbreak\verb+groundcolor=\color{red},frame=trBL}+ + to try these features. \textsf{listings} also provides inline verbatim + mode (with syntax highlighting), in the character-delimited argument of the + command \verb+\lstinline+;\,unfortunately, spaces at line breaks (with + option \texttt{breaklines}) are rendered in an inconsistent way, and line + breaks do not work well with background color. + + \textsf{listings} has an important weak point: it cannot typeset ISO Latin + accented characters with the \textsf{inputenc} package; + the way described in the manual doesn't work as expected: it puts the + accented characters to the wrong place in the line. This problem, + however, is solved when \textsf{listings} is invoked from + \textsf{examplep}. See more about listings in Subsection \ref{listings}. + +%%%WF This package is actively developed. +%%% ezt mar emlitetted a bekezdes elejen +\end{description} + +\section{Customization}\label{customization} + +The operation of \textsf{examplep} can be customized with options as +$\langle$key$\rangle${}$=${}$\langle$value$\rangle$ pairs. Global options, which affect all subsequent commands within +the current block, can be specified as package load options +(\verb+\usepackage[+\ldots\verb+]{examplep}+) or as argument of the \verb+\PexaDefaults+ +command. \LaTeX{} doesn't allow complicated option values (such as values +containing some expandable macros, for example after \texttt{linenumberformat=}) +to be specified in the \verb+\usepackage+ +line -- use \verb+\PexaDefaults+ in such cases. +Many commands and environment accept local options, which affect +only that construct. + +All options have default values, which are indicated below right after the +option name. If the option has a fixed set of possible values, all of them +are mentioned, and they are prefixed by \texttt{=}. The defaults have been +chosen so the \texttt{PSource} environment matches the builtin +\texttt{verbatim} environment as closely as possible. Note that the original +environment is not overridden before the \texttt{verbatimenv=yes} is +specified. + +\begin{description} +\makeatletter % Dat: for \verbatizee{\z@} + +\item[\verbatizee{Q=unchanged}] + To enable \verb+\Q+, use \texttt{=yes} instead of the default. +\item[\verbatizee{abreak=unchanged}] + To enable \verb+\abreak+, use \texttt{=yes} instead of the default. +\item[\verbatizee{addvspace-bottom={\vskip\z@skip\addvspace}}] + \hskip0pt plus4pt + Specifies the command to add vertical space below display verbantim. The default works + fine, but e.g.\ packages maintaining the baseline grid might want to + change it. +\item[\verbatizee{addvspace-top=\addvspace}] + Command to add vertical space above display verbantim. The default works + fine, but for example, packages maintaining the baseline grid might want to + change it. +\item[\verbatizee{allowbreak=yes}] + Use \texttt{=no} to disable page breaks in the Source of display verbatim. +\item[\verbatizee{allowshrink=yes}] + The default will shrink the Sample horizontally if the + Source is too wide. Use \texttt{=no} to disable this. + Use \texttt{=force} to enable shrinking of Source, and with + \texttt{srcstyle=leftleft} or \texttt{srcstyle=leftboth}, also enable + shrinking of the Source if it is narrow. +\item[\verbatizee{baseline-grid=no}] + Use \texttt{=yes} to adjust the height of the Sample to be an integer + multiply of \verb+\baselineskip+ (with \texttt{yalign=u} and + \texttt{yalign=v}). +\item[\verbatizee{boxstyle=p}] Controls how the Sample is boxed. Capital + letters are not allowed for side-by-side display. By default (\texttt{=p}), + a \texttt{PexaMinipage} environment is put inside a \verb+\vtop+. Use + \texttt{=h} to put a \verb+\hbox+ only, \texttt{=v} to put a \verb+\vtop+ + only, \texttt{=V} to put a \verb+\vbox+ only, + \texttt{=m} to put a \texttt{minipage} environment inside a \verb+\vtop+, + \texttt{=M} to put a \texttt{minipage} environment inside a \verb+\vbox+, + \texttt{=P} to put a \texttt{PexaMinipage} environment inside a \verb+\vbox+, + \texttt{=G} to add \verb+\begingroup+ and \verb+\endgroup+ only. + The default is recommended for most cases, because the \verb+\vtop+ + provides proper alignment with the Source, and the \texttt{PexaMinipage} + environment provides isolation (of page and section numbers etc.) from the + main document. +\item[\verbatizee{bsdiv=unchanged}] + To enable \verb+\÷+, use \texttt{=yes} instead of the default. +\item[\verbatizee{div=unchanged}] + To enable \verb+÷+, use \texttt{=yes} instead of the default. +\item[\verbatizee{firstlinenum=1}] + Specifies the number of the first line of a numbered Source listing. + Useful with \texttt{srcstyle=leftnumcol} and \texttt{srcstyle=leftnumhang}. +\item[\verbatizee{linenumberformat={{...}}}] + %\item[\verbatizee{linenumberformat={{\normalfont\rmfamily\scriptsize\number-\pexa@@cntb}\pexa@default@linenumbersep}}] + Commands to display a line number and the separator in a numbered Source + listing. See the default value in \texttt{examplep.sty}. +\item[\verbatizee{linenumbersep={}}] + Commands to display the separator in a numbered Source listing. +\item[\verbatizee{listings=no}] + Use \texttt{=yes} to display each Source line with the \textsf{listings} + package. Specify options (to be executed in \verb+\lstset+), separated by + commas in the argument. Read more about the options in the documentation of + the \textsf{listings} package. For example, \verb+listings=yes+ and + \verb+listings={}+ uses \textsf{listings} with default options (no syntax + highlighting), and \verb+listings={language=+\allowbreak\verb+C,showtabs}+ enables syntax + highlighting for C language and enables visible tabulators. See + Subsection \ref{listings} for more information. +\item[\verbatizee{listings-verbatimfont=pexavf}] + Set the font to be used in the Source when \texttt{listings=} is active. See + \texttt{source-verbatimfont=} for the possible values. +\item[\verbatizee{mp-equation-reset=yes}] + Use \texttt{=no} to make the main document and the Samples inside + \texttt{PexaMinipage} share the same equation counter. +\item[\verbatizee{mp-varioref-reset=no}] + Use \texttt{=yes} to make the internal counter \texttt{vrcnt} of the + \textsf{varioref} package to be reset for each Sample inside + \texttt{PexaMinipage}. This option doesn't affect the final output, and + \textsf{varioref} expects this counter not to be reset, so it is not + recommended to change the default. +\item[\texttt{noligs=some}] + By default, only those ligatures are disabled whose second character is one + of \verb+`+ \verb+'+ \verb+,+ \verb+-+ \verb+<+ \verb+>+. Use + \texttt{=kernel} to get the same effect, but using the \LaTeX{} built-in + \verb+\@noligs+. Use \verb+=most+ to get all ligatures with either the + first or the second character having code between 32 and 127 and catcode + 12. Please note that ligatures in inline verbatim mode are disabled anyway, + because \verb+\allowbreak+ is inserted between characters of catcode 12, + depending on the value of \texttt{pverb-linebreak=}. +\item[\verbatizee{pexaminipage-setuphook={}}] + Extra commands to run when starting the \texttt{Pexa\allowbreak MiniPage} environment, + just after the environment has finished its own initialization. +\item[\verbatizee{pverb-hash=full}] + Use \texttt{=half} to make \verb+\PVerb+ convert \verb+##+ to \verb+#+. + The command \verb+\PVerbH+ is the same as \verb+\PVerb+ but + forces \texttt{=half}. This is required when \verb+\PVerb+ or \verb+÷+ is + used inside a macro argument. For example, \verb+\textit{÷#÷}+ yields + the error message \textit{Illegal parameter number in definition of + \string\reserved@a}, but \verb+\textit{\PVerbH{##}}+ works fine. The error + message is a general \LaTeX{} kernel limitation, for example + \verb+\textit{\@gobb+\allowbreak\verb+le{#}}+ doesn't work either. +\item[\verbatizee{pverb-hyphenchar=hyphen}] + By default, the minus character (ASCII code 45) is used to for automatic word + hyphenation in inline verbatim. Use \texttt{=char'30} to have character + with code 24; see also Subsection \ref{char'30}. Use \texttt{=none} to + disable word hyphenation (by setting \verb+\hyphenchar+ to $-1$). + Use \texttt{=unchanged} to get the hyphenchar from + the font (the \textit{cmtt} and \texttt{ectt} fonts have word hyphenation + disabled). Please note that hyphenation around symbols is affected + the \texttt{pverb-linebreak=} option, not this one. +\item[\verbatizee{pverb-leftbreakmin=2}] + Specifies the minimum number of characters in inline verbatim after which it + is allowed to break the line (with \texttt{pverb-linebreak\allowbreak=}). Values + allowed are $0$, $1$ and $2$, but $0$ usually doesn't make sense. +\item[\verbatizee{pverb-linebreak=char}] + By default, \verb+\PexaAllowBreak+ is inserted around symbols in inline + verbatim, so a line break (with a discreationary hyphen affected by + \texttt{pverb-linebreakchar=}) is allowed there. Use \texttt{=yes} to insert + \verb+\allowbreak+ instead, which allows a line break without + discretionaries. Use \texttt{=no} to disable line breaks around symbols in + inline verbatim. The option \texttt{pverb-hyphenchar=} affects + intra-word hyphenation in inline verbatim, not this one. +\item[\verbatizee{pverb-linebreakchar={$\lnot$}}] + Specifies the discreationary hyphen to be used in \verb+\PexaAllowBreak+. + See also \texttt{pverb-linebreak=}. +\item[\verbatizee{pverb-space=invbreak}] + By default, spaces in inline verbatim are invisible, variable width (as + allowed by the font, see also \texttt{pverb-stretchshrink=}) + and breakable (i.e.\ a space can be replaced by a line + break if necessary). Use \texttt{=invdisc} to get an invisible, variable + width space which becomes visible (\verb*+ +) when it is broken at the end + of the line. Use \texttt{=invfixbreak} to get an invisible, fixed width and + breakable space. Use \texttt{=invnobreak} to get an visible, variable width + and unbreakable space. Use \texttt{=visnobreak} to get a visible, fixed + width and unbreakable space. Use \texttt{=visbreak} to get a visible, fixed + width space with line breaks allowed on both sides. Use + \texttt{=invbreakleft} to get a visible, variable width space with infinite + stretchablility if the line is broken there (this may have strange effect + on other line breaks in the paragraph, so please try to avoid it). + The built-in \verb+\verb*+ command uses + \texttt{source-space=visnobreak}. +\item[\verbatizee{pverb-stretchshrink=yes}] + By default, spaces in inline verbatim are forced to be stretchable and + shrinkable (by \verb+\quad+${}/9$). Use \texttt{=no} to disable + stretchability and shrinkability. Use \texttt{=unchanged} to keep the + settings in the font. Note that \verb+\fontdimen+$3$ and + \verb+\fontdimen+$4$ are changed by this option, and the changes are local + to inline verbatim mode. +\item[\verbatizee{pverb-verbatimfont=pexavf}] + Set the font to be used in inline verbatim mode. See + \texttt{source-verbatimfont=} for the possible values. +\item[\verbatizee{samplewidth=.5\PexaWidth}] + Specifies the maximum width of the Sample in side-by-side display as a + \TeX{} dimension. The actual Sample can become actually narrower (see + \texttt{allowshrink=}. The dimensions \verb+\hsize+, \verb+\linewidth+ and + \verb+\PexaWidth+ can be used. (Our \LaTeX{} book used + \verb+sample+\allowbreak\verb+width=.45\PexaWidth+.) \verb+\leftskip+ and \verb+\rightskip+ + do not affect this option. \verb+\hsize+ can be used, which is the total + width available (including the extra margins added by surrounding list + environments), \verb+\linewidth+ is \verb+\hsize+ widtout the extra margins + produced by lists, and \verb+\PexaWidth+ is the total width of the Source, + the separator (see \texttt{vrule=}) and the Sample. +\item[\verbatizee{source-par-align=left}] + Specifies the alignment of Source lines when \texttt{srcsty\allowbreak le=paralign} is + active. Use \texttt{=left} (default), \texttt{=right} or \texttt{=center} to + specified flush-left, flush-right or centered alignment, respectively. Use + \texttt{=justi\allowbreak fy} to have the last line flush-left and the previous line + justified (please note that each Source line is mapped to a single + paragraph, so the paragraph will have more than 1 line only if the source + line is too long). Use \texttt{=justjust} to have all lines justified. + Use \texttt{=unchanged} to keep the alignment of the enclosing block. +\item[\verbatizee{source-sepwidth=\tabcolsep}] + Specifies the horizontal distance between the Source and the Sample. + See also \texttt{vrule=}. +\item[\verbatizee{source-space=invfixbreak}] + Specifies how to typeset spaces of the Source. See \texttt{pverb-space=} + for the possible values. The built-in \texttt{verbatim*} environment uses + \texttt{source-space=visnobreak}. +\item[\verbatizee{source-verbatimfont=pexavf}] + Sets the font to be used for the Source when \texttt{listings=} is not + active (see also \texttt{listings-verbatimfont=} for + \texttt{listings\allowbreak=}). + Give + \texttt{=ttfamily} to use \verb+\ttfamily+, + \texttt{=pexavf} to use \verb+\pexa@@verbatim+\allowbreak\verb+font+ (which defaults to + \verb+\verbatim@font+), + \texttt{=latexvf} to use \verb+\verbatim@+\allowbreak\verb+font+ (which defaults to \verb+\normalfont\ttfamily+), + \texttt{=unchanged} to keep the current font, + or \texttt{=normalfont} to use \verb+\normalfont+. +\item[\verbatizee{srcstyle=left}] + Specifies the horizontal alignment of the Source lines. See more in + Subsection \ref{srcstyle} and Figure \ref{fig:srcstyle}. +\item[\verbatizee{ttlistings=}\normalfont\ (no default)] % Dat: $\varnothing$ + Shorthand of \texttt{listings-verbatimfont=ttfamily,\allowbreak listings=}. +\item[\verbatizee{url=unchanged}] + To enable \verb+\url+, use \texttt{=yes} instead of the default. The + \verb+\url+ will be defined as \verb+\def\url{\PVerbOpt{}}+. This has the + disadvantage that inside \verb+\textit+ etc.\ it cannot typeset URLs having + a single \verb+#+ (see \texttt{pverb-hash=} for more), but the \textsf{url} + package has the same limitation. A quick fix: use \verb+\itshape+ instead + of \verb+\textit+ etc. +\item[\verbatizee{usewidth=skipwidth}] + Specifies which horizontal part of the main text should be used in a + display verbatim. By default, left and right margins introduced by list + environments (such as \texttt{itemize}) and \verb+\leftskip+ and + \verb+\rightskip+ are respected. Use \texttt{=linewidth} to ignore + \verb+\leftskip+ and \verb+\rightskip+ but respect list environments. Use + \texttt{=hsize} to use the whole width of main text. Note that this option + affects the calculation of \verb+\PexaWidth+. +\item[\verbatizee{vextrabotdepth=\z@}] + Dimension to add to the depth of the display verbatim with + \texttt{yalign=v}. The default works + fine, but for example, packages maintaining the baseline grid might want to + change it for each instance. +\item[\verbatizee{vextravskip=\z@}] + Amount of vertical space to be added above display verbantim with + \texttt{yalign=v}. The default works + fine, but for example, packages maintaining the baseline grid might want to + change it for each instance. +\item[\verbatizee{vsmallht=1pt}] + Specifies Sample height threshold for \texttt{yalign=v}. If the Sample is + lower than this (or sample a higher than the 1st line of the Source plus + \verb+\vextravskip+ -- + typical for \verb+\includegraphics+), its top will be aligned to the top of + the Source, otherwise + its top baseline (with \verb+\vtop+) will be aligned to the top baseline of + the Source. +\item[\verbatizee{xalign=l}] + Specifies horizontal alignment (\texttt{=l} for left, \texttt{=r} for + right) of the Sample box (and the separator) within its allocated width for + side-by-side display. Please note that \texttt{=r} works only + with \texttt{boxstyle=h}, because all other box sizes use their + full allocated width. +\item[\verbatizee{xindent=deeppre}] + Specifies additional horizontal indentation in display verbatim mode. Use +%%%WF \texttt{=nonoe} + \texttt{=none} +%%% + to get no extra indentation. Use \texttt{=narrower} to get + \verb+\narrower+ (both \verb+\leftskip+ and \verb+\rightskip+ are decreased + by \verb+\parindent+). + Use \texttt{=deeper} to move one level deeper in the list environment + hierarchy and get that indentation. +%%%WF na most akkor mi a default? a deeper vagy a deeppre? + Use \texttt{=deeppre} (default) to move one level deeper, but don't change + indentation (this is useful with \texttt{yindent=deeper} -- + otherwise it is equivalent to \texttt{=none}). % Dat: really?? + Use \texttt{=deepright} to set both left and right indentation from + the left indentation of \texttt{=deeper}. +\item[\verbatizee{yalign=u}] + Specifies vertical alignment in side-by-side display. By default, the top + of the bounding boxes of the Source and the Sample is aligned, which looks + nice if the Sample is an image, but doesn't align properly if the Sample is + text with a font of similar size to the Source. Use \texttt{=b} to align + the topmost baselines of the Sample and the Source. This looks nice if the + Sample is text, but it is ugly if the Sample is an image higher than + \verb+\baselineskip+. The use of \texttt{=v} is recommended, which decides + between \texttt{=b} and \texttt{=u} based on the height of the Sample (see + \texttt{vsmallht=} for the details). +\item[\verbatizee{yindent=deeper}] + Specifies the vertical space separating display verbatim from the + surrounding text. Use \texttt{=none} no have no extra vertical space, the + display verbatim appears to be a new paragraph as far as + \verb+\baselineskip+ and \verb+\vskip+s are concerned. Use \texttt{=deeper} + (default) to move one level deeper in the list environment hierarchy + (and use the \verb+\parsep+ and \verb+\partopsep+ etc.\ specified there). + It is recommended to have \texttt{yindent=deeper} and + \texttt{xindent=deeppre} together, so there is no extra horizontal + indentation. +\item[\verbatizee{verbatimenv=unchanged}] + Use \texttt{=yes} + to change the implementation of the \texttt{verba\allowbreak tim} and \texttt{verbatim*} + environments to use the \texttt{PSource} environment. +\item[\verbatizee{vrule=rule}] + By default, the Source and the Sample are separated with a vertical rule + of width \verb+\arrayrulewidth+ in the middle of a horizontal space + specified by \texttt{source-sepwidth=}. Use \texttt{=skip} to omit the rule + but keep the space. Use \texttt{=none} to have no separator at all. + +\end{description} + +The other packages (\textsf{codep} and \textsf{verbfwr}) shipped with +\textsf{examplep} do not have load options. + + +\subsection{Interface to the \textsf{listings} package}\label{listings} + +The \textsf{listings} package \cite{listings} provides advanced typographic for display +verbatim, including proper typesetting of tabulators and syntax highlighting +for more than a hundred languages. \textsf{examplep} doesn't try to +reimplement these features, but it supports calling the \textsf{listings} +package to typeset the Source lines in display verbatim. The surroundings +(line numbers, vertical separation, horizontal margins and the Sample) are +not effected, only the Source line contents are passed to \textsf{listings}. +This implies that the border and the background color support provided by the +\textsf{listings} package doesn't work with \textsf{examplep}. To use the +interface, the \textsf{listings} package must be loaded, and either the +\textsf{listings=} or the \textsf{ttlistings=} options of \textsf{examplep} +has to be active when the Source is typeset. Additional options +can be specified to \textsf{listings} in the argument of \verb+\lstset+ at +any time. The interface has been tested +with the \textsf{listings} package dated 2000/08/23 and 2004/09/07. + +\textsf{examplep} treats tabulators (ASCII code 9) as 8 spaces. This is +acceptable at the beginning of the line, but it may be incorrect elsewhere. +To get tabs right, specify the \verb+ttlistings=yes+, or, to be more precise, +the \verb+ttlistings={tabsize+\allowbreak\verb+=8}+ option to \textsf{examplep}. It is also +possible to have visible tabulators: specify, for example, +\verb+ttlistings={tabsize=8,showtabs}+. In our tests \textsf{listings} failed +to detect the width of a character of a fixed width font, so +\textsf{examplep} enforces character width using the natural width of the +space each time it calls \textsf{listings}. This workaround made the +\texttt{showtabs} \textsf{listings} option work properly. +See the documentation of the +\textsf{listings} package for options that affect the typesetting of +Source line contents. See an example of using \textsf{listings} from +\textsf{examplep} on page \pageref{pag:use-listings}. + +\textsf{listings} supports fixed width characters with a variable with fonts. +However, this support seems to be broken when used with \textsf{examplep}, so +the \texttt{columns=full\allowbreak flexible} \textsf{listings} option is enforced so +proportional fonts will look proportional. Although the +\textsf{listings} package claims that it has accented letter support, this +didn't work well with the single-character accented letters input using +the \textsf{inputenc} package (those characters were positioned to a wrong +place inside the line, possibly because \textsf{listings} has failed to +recognise that \verb+\lst@UseLostSpace\lst@+\allowbreak\verb+PrintToken+ has to be inserted +in front of the accented character into its internal token list). +\textsf{examplep} contains a work-around to this problem, with the following +limitations: multibyte input encodings such as UTF-8 are not supported (will +print strange error message); accented characters may not be part of keyword +names in syntax highlighting; accented characters are shown as \verb+^^+ hex +escapes in aligned mode (see in Subsection \ref{srcstyle}), so they don't +work with \verb+\PexaShowBoth+. + +\textsf{listings}, when called from \textsf{examplep}, failed to break +ligatures such as \verb+`?+ and \verb+<<+. This has the side effect that +guillemots would be typeset instead of bitwise right shift in C language +sources. \textsf{examplep} modifies +the \verb+\lst@FillOutputBox@+ macro so it will add a \verb+\relax+ between +each character displayed -- so all ligatures are broken. (This approach is +quite differrent from the way \LaTeX{} disables a few ligatures +with \verb+\@noligs+; \verb+\pexa@noligs+ is similar to \verb+\@noligs+ in +this respect.) + +It is possible to customize the \textsf{listings} package so it typesets some +strings differently. For example, with the +\verb+literate={<=}{{$\leq$}}1+ \textsf{listings} option, all occurences of +\verb+<=+ (even those inside strings of the target programming language) +are typeset as $\leq$. There are no problems when using this feature from +within \textsf{examplep}. It is also possible for strings and comments in the +syntax-highlighted Source to span multiple lines -- \textsf{listings} takes +care to remember its internal state between lines. + + +\section{Commands and environments} + +The arguments between brackets (\verb+[+ and \verb+]+) are optional: either +the the argument and the brackets are all missing all all present. The +arguments named ``options'' is a comma-separated list of local customization +options, defined in Section \ref{customization}. The \texttt{\{}$^+$ notation +in front of an argument means that the argument can be delimited by braces +(thus it must be properly nested), or with any symbol in +\verb+\dospecials+ (% +\verb+\+ \verb+$+ \verb+&+ \verb+#+ \verb+^+ \verb+_+ \verb+%+ +\verb+~+) %%%WF $ +or in \verb+\pexa@cverb@donormals+ (% +\verb+`+ \verb+!+ \verb+@+ \verb+*+ \verb+-+ \verb-+- \verb+=+ \verb+|+ +\verb+:+ \verb+;+ \verb+'+ \verb+"+ \verb+,+ \verb+.+ \verb+/+ \verb+?+ +\verb+<+ \verb+>+ \verb+(+ \verb+)+ \verb+[+ \verb+]+). + +\begin{description} + +\def\cearg #1{{\normalfont\texttt{\{}$\langle $\relax#1\relax$\rangle$\texttt{\}}}} +\def\verarg#1{{\normalfont\texttt{\{}$^+\langle$\relax#1\relax$\rangle$\texttt{\}}}} +\def\delarg#1{{\normalfont $\langle $\relax#1\relax$\rangle $}} +\def\optarg#1{{\normalfont[$\langle$\relax#1\relax$\rangle$]}} + +\item[\verbatizee{\PVerb}\optarg{options}\verarg{verbatimtext}] + Typesets its argument in inline verbatim mode. Similar to the \LaTeX{} + \verb+\verb+ macro, but respects the options. The use of \verb+[]+ is + recommended instead of omitting the options altogether, because \verb+[]+ + will ensure that the proper catcode changes are in effect even for the + first verbatim character. + This command is robust. +\item[\verbatizee{\PVerbH}\verarg{verbatimtext}] + Shorthand for \verb+\PVerb[pverb-hash=half]+\ \hskip0pt plus2pt + (extra options cannot be specified). + This command is robust. +\item[\verbatizee{\PVerbInner\PVerb}\ldots] + Forces the \verb+\PVerb+\ldots{} command immediately following it to work + in inner mode, thus compressing spaces, respecting comment characters etc. + Because of how \TeX{} works, it is impossible to go the other way round, + and force outer mode, because it is too late change catcodes -- the + argument has already been tokenized in inner mode. + This command is robust. +\item[\verbatizee{\PVerbOpt}\cearg{options}\verarg{verbatimtext}] + Equivalent to \verb+\PVerb+, but uses a different syntax. + For example, \verb+\item[\PVerb[pverb-space=visbreak]{xy+\allowbreak\verb+}]+ doesn't work + because of the nested \verb+[+. Use this instead: + \verb+\item[\PVerb+\allowbreak\verb+Opt{pverb-space=+\allowbreak\verb+visbreak}{xy}]+, + \hskip0pt plus4pt or \hskip0pt plus4pt + \verb+\item[{\PVerb[pverb-space=+\allowbreak\verb+visbreak]{xy}}]+. + This command is robust. +\item[\verbatizee{\Q}\cearg{verbatimtext}] + Similar to \verb+\PVerb+, but its argument must be escaped + (see in Subsection \ref{escaped}), and it can be used in section titles etc. + Must be enabled with \texttt{Q=yes}. + This command is robust. +\item[$\div$\delarg{verbatimtext}$\div$] + Similar to \verb+\PVerb+, but it can be used in section titles etc. (but not + int \texttt{tabular}) (see in Subsection \ref{escaped}). + Must be enabled with \texttt{div=yes}. + This command is robust. +\item[\textbackslash$\div$\delarg{verbatimtext}$\div$] + Equivalent to \verb+\Q+, but the argument delimiter is different. + Similar to \verb+\PVerb+, but its argument must be escaped + (see in Subsection \ref{escaped}), and it can be used in section titles etc. + Must be enabled with \texttt{bsdiv=yes}. + This command is robust. +\item[\verbatizee{\url}\cearg{url}] + Must be enabled with \texttt{url=yes}. + This command is robust. +%%%WF az eleme jelet NE HASZNALD, osszesen 3-szor szerepel, irj +%%% valamit, hogy pl.: (after laoding verbfwr package) +%%% vagy valami hasonlot +%% -- javítva +\item[\verbatizee{\begin{WFile}}\cearg{filename}] (defined in the \textsf{verbfwr} package) + Writes its contents verbatim to the specified file. + \TeX{} \texttt{.tcx} and line ending transformations apply, so it is + possible that accented letters will be converted to \verb+^^+hex according + to the input encoding. +\item[\verbatizee{\begin{WAux}}] (defined in the \textsf{verbfwr} package) + Writes its contents verbatim into the current \texttt{.aux} file. + \TeX{} \texttt{.tcx} and line ending transformations apply, so it is + possible that accented letters will be converted to \verb+^^+hex according + to the input encoding. +\item[\verbatizee{\begin{PWSource}}\optarg{options}] + Comination of \verb+\begin{WSource}+ and \verb+\PexaShow+\allowbreak\verb+Source+. + It is recommended to have a \verb+[]+ even if there are no + options, so the very first token of the contents will be read with proper + catcodes. +\item[\verbatizee{\begin{WBoth}}] + Writes its contents to the Source and the Sample temporary file. It is + a combination of \texttt{WSample} and \texttt{WSample}. +\item[\verbatizee{\begin{WSample}}] + Writes its contents to the Sample temporary file (\texttt{pexa-sam.\allowbreak tex}), + to be typeset by a subsequent \verb+\PexaShowSample+ or + \verb+\PexaShowBoth+. + The line must end at \verb+\end{WSample}+ because of technical reasons. +\item[\verbatizee{\begin{WSource}}] + Writes its contents to the Source temporary file (\texttt{pexa-src.\allowbreak tex}), + to be typeset by a subsequent \verb+\PexaShowSource+ or + \verb+\PexaShowBoth+. It is similar to + \verb+\begin{verbwrite}+ in the \texttt{sverb} package + and the \verb+\begin{+\allowbreak\verb+filecontents}+ \LaTeX{} built-in environment. + The line must end at \verb+\end{+\allowbreak\verb+WSource}+ because of technical reasons. +\item[\verbatizee{\begin{PIgnore}}] + Ignores everything up to \verb+\end{PIgnore}+. The environment closer must + be at the end of its line. Similar to the \texttt{comment} environment in + some other packages. +\item[\verbatizee{\begin{PSource}}\optarg{options}] + Typesets its contents in display verbatim. Similar to the \LaTeX{} + \verb+\begin{verbatim}+ environment, but respects the customization + options. It is recommended to have a \verb+[]+ even if there are no + options, so the very first token of the contents will be read with proper + catcodes. This environment is similar to \texttt{PWSource}, but it doesn't + create a temporary file, so it is faster, \texttt{srcstyle=leftboth} (etc.) + can be used, and there is no ambiguity between \verb+^^e1+ and + \texttt{\'a} (etc., see more in Subsection \ref{tcx}). Page breaks are + allowed between each Source line. (The implementation of this environment + is fairly complex compared to \texttt{PWSource}.) +\item[\verbatizee{\begin{verbatim}}] + Equivalent to \verb+\begin{PSource}[]+. + Must be enabled with \texttt{verbatimenv=yes}. +\item[\verbatizee{\begin{verbatim*}}] + Equivalent to \verb+\begin{PSource}[source-space=visbrea+\allowbreak\verb+k]+. + Must be enabled with \texttt{verbatimenv=yes}. +\item[\verbatizee{\begin{PexaMinipage}}\optarg{vbox-type}\cearg{width}] + Similar to the \LaTeX{} \texttt{minipage} environment (and + accepts the same arguments), but + isolates (concerning section numbers etc.) of its contents from the main + document more thoroughly. See Subsection \ref{pexaminipage} for + details of isolation. +\item[\verbatizee{\PexaShowBoth}\cearg{options}] + Typeets the Source and the Sample side-by-side in display verbatim mode. + The Source comes from the temporary file written by the last + \texttt{WSource} or \texttt{WBoth} environment, and + the Sample comes from the temporary file written by the last + \texttt{WSample} or \texttt{WBoth} environment. + By default, a vertical separator line is drawn between the Source and the + Sample, and page breaks are allowed in the Source after the end of + Sample. + It can be called multiple times with different options for the same file. +%\item[\verbatizee{\PexaShowBothMany}]% Dat: for internal use +\item[\verbatizee{\PexaShowSample}\cearg{options}] + Typesets the Sample (written by\,the\,last + \texttt{WSample} or \texttt{WBoth} environment) in display mode. + It can be called multiple times with different options for the same file. +%\item[\verbatizee{\PexaShowSampleMany}]% Dat: for internal use +\item[\verbatizee{\PexaShowSource}\cearg{options}] + Equivalent to \verb+\PexaInputSource+ with the file written by the last + \texttt{WSource} or \texttt{WBoth} environment. + It can be called multiple times with different options for the same file. +%\item[\verbatizee{\PexaShowSourceMany}]% Dat: for internal use +\item[\verbatizee{\PexaInputSource}\cearg{filename}\cearg{options}] + Typesets the contents of the specified file as Source in display verbatim + mode. +% \item[\verbatizee{\PexaAddlastskip}] (not used anymore, see comment in lb.sty) +\item[\verbatizee{\begin{code}}] (defined in the \texttt{codep} package) + Typesets its contents side-by-side and also marks its contents to be dumped + to the CD. By default, each line is emitted to all +%%%WF thre + three +%%% + streams, but lines + with special prefixes will go into the Source, Sample or CD-file stream + only. See Section \ref{code} for details. +\item[\verbatizee{\PexaAllowBreak}] + Allows a line break here with a discreationary specified + in the option \texttt{pverb-linebreakchar=} inserted. +\item[\verbatizee{\abreak}] + A robust command which + inserts \verb+\PexaAllowBreak+ when the font \verb+{\ttdefault}{m}{n}+ + is active; inserts \verb+\allowbreak+ otherwise. + Must be enabled with \texttt{abreak=yes}. + +\end{description} + +\section{Writing examples with the \textsf{codep} package}\label{code} + +Textbooks and manuals tend to have many display verbatim examples. The +examples are usually code snippets which can be further processed by a +compiler or another program. +Sometimes minor modifications, such as adding the proper header or trailer, +are necessary before the code snippet can be processed. It is customary to +put all code snippets in the book onto the CD accompanying the book. The +\texttt{code} environment of the \textsf{codep} package (part of the +\textsf{examplep} distribution) generates CD-files automatically. + +Three streams are generated from the contents of each \texttt{code} +%%%WF environemnt: +environment: +%%% +the Source, the Sample and the CD-file streams. Most parts of +these streams are identical. The Sample usually differs from the Source +because the code snippet has to be typeset specially in the book (for +example, \verb+\includegraphics+ has to be used to typeset an EPS file whose +Source is displayed). The CD-file differs from Source because additional +header and footer may be required (such as \verb+\begin{document}+ etc.), +which are omitted from the book to conserve space. + +The \texttt{code} environment reads the code snippet line-by-line. The type +of the line is specified in first two characters. Lines having the default +type are written to all 3 streams, and special line types exist to write to a +specific stream only. The \texttt{code} environment writes the Source and +Sample streams to temporary files, and upon the end of the environment, it +calls \verb+\PexaShowBoth+ (or \verb+\PexaShowSource+, if the Sample stream +is empty) to typeset the example. The CD-file stream is not written to a file +by \TeX{}, but the file name and starting line number of the \texttt{code} +environment is reported in the \texttt{.aux} file. A \textsf{Perl} script +(\textsf{wrfiles.pl}, part of the \textsf{examplep} distribution) has to be +called later to the actual generaton of CD-files. It will examine the +\texttt{.aux} files, extract the CD-file stream from the \texttt{.tex} files, +and dump these streams to individual files in the \texttt{CDfiles} directory. +The file names can be specified in the \texttt{code} enviroment, and the +environment can generate file names based on chapter and page numbers (so the +reader will know from the file name where to read more about the example). +The same file name is never generated again. + +The \textsf{code} package was used in our recent \LaTeX{} textbook \cite{lakk} +to typeset its examples. Most of the examples were written in \LaTeX{}, but +many +%%%WF of of +of +%%% +them were \textsf{METAPOST} sources, and some of them were others +(e.g.\ configuration files, shell scripts or EPS files). Because of the huge +amount of \LaTeX{} examples, special features were added to make them easy +and convenient to input for the author. For example, +\begin{verbatim} +\begin{code} +t \usepackage{url} + URL: + \\\url{http://foo.org/~user/} +\end{code} +\end{verbatim} +is displayed as (depending on the \textsf{examplep} options) +\par\medskip +\noindent\begin{tabular}{@{}l@{}l@{}l@{}} +{\scriptsize1}\verb+%^\usepackage{url}+&\ \vrule\ \null&URL:\\ +{\scriptsize2}\verb+URL:+&\ \vrule\ \null&\verb+http//foo.org/~user/+\\ +{\scriptsize3}\verb+\\\url{http//foo.org/~user/}+&&\\ +\end{tabular} +\par\medskip\par +As seen above, examples are quite convenient to input, and \textsf{examplep} +takes care of typesetting side-by-side, determining width of the Source, +allowing page breaks, putting margins and \verb+\vskip+s right, adding the rule the +separate the Source and the Sample, adding line numbers, generating file name +for CD-file and writing the CD-file with header and footer. + +With \textsf{codep} it is easy to fulfill the following quality criterias: +the Sample must be consistent with the Source (i.e.\ if the Source is +changed during editing to book, the Sample should change automatically); the +CD-file must be consistent with the Source; the CD-file must be directly +compilable with \LaTeX{} (so a header and a footer have to be added). When +the deadline of finishing the book approaches, there might not be enough time +left to ensure these manually, so a package such as \textsf{codep} is very +useful in this situation. + +\subsection{Example files on the CD}\label{codewritereasons} + +The following CD-file is generated from the code snippet above: +\begin{verbatim} +\documentclass{article} + +\usepackage[latin2]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[magyar]{babel} +\usepackage{url} + +\begin{document} + +URL: +\\\url{http://foo.org/~user/} + +\end{document} +\end{verbatim} + +The \texttt{CodeDefaultD}, \texttt{CodeDefaultL}, \texttt{CodeDefaultB} and +\texttt{CodeDefaultE} environments can be used in the preamble to customize +the default header and footer generated into the CD-file. For example: +\begin{verbatim} +\begin{CodeDefaultD} +\documentclass[10pt]{article} +\end{CodeDefaultD} +\begin{CodeDefaultL} +\usepackage[latin2]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[english]{babel} +\end{CodeDefaultL} +\end{verbatim} + +Although \TeX{} is able to write to external files with \verb+\textsfrite+, there +were several reasons for using an external program (a \textsf{Perl} script) to +extract the source snippets from the document sources: +% +\begin{itemize} + +\item with \verb+\write+ the file always ends at end-of-line +\item \verb+\write+ forces \texttt{.tex} if no extension is specified +\item \verb+\write+ removes whitespace from end-of-line +\item \verb+\write+ translates accented letters to hat-escapes + (e.g.\ \texttt{á} to \verb+^+\verb+^e1+) unless + compiled with \texttt{latex --translate-file cp8bit.tcx} + (\texttt{--translate-file il2-t1.tcx} makes \texttt{\H{o}} in DVI + incorrect). There is the same problem when emitting UTF-8 text. +\item it is impossible to distinguish missing files from empty files, + so accidental file overwrites are hard to prevent +\item it is too late to verbatize if the verbatim text is inside + braced macro arguments + +\end{itemize} +% +The only limitations of this solution are: is not possible to \verb+\input+ +or \verb+\include+ a subfile, and then use the \texttt{code} environment in +the referrer file; the subfile has to be included with +\verb+\include{...}+ or \verb+\input{...}+ (with braces); +and the subfile must have extension \texttt{.tex}. +The first one is usually not a problem, since referrer files themselves do not +typeset text, they only include subfiles. See Subsection +\ref{codeimpl} for implementation details. + + +\subsection{\texttt{\textbackslash begin\{code\}} invocation} + +The input syntax of the \texttt{code} environment has been designed so that +typing the most common examples (short \LaTeX{} code snippets) is simple and +straightforward, but the author can have full control over all three streams +if he wants to. The contents of the environment is divided into lines. The +first two characters of each line specify the line type and the rest is the +line data. +% Lines with type \verb+% + are ignored. +The first character of the line type is usually a lowercase +ASCII letter or a punctuation symbol. Line types belong to classes, which are +denoted by capital ASCII letters. The order of the classes in the environment +is significant, but the order of the individual types or lines within the +class is irrelevant. Some classes have default lines, which are used +only if the class is omitted from the environment. The default lines make it +possible to have default CD-file header and trailer. The clases, in proper +order with allowed types in parentheses), are: +% +\begin{description} + +\item[F (f, f!, v, v!)] specify the file name. + +% G | | |ide visz egy F-beli parancs + +\item[D (d)] the \verb+\documentclass+ line, default uses article + +%%%WF kicsit fura, hogy a magyar a default, valami megjegyzessel itt +%%%enyhiteni kellene, pl hogy ez hogy irhato folul... +%% -- javítva +\item[L (l)] the preamble specific to the natural language, defaults for + Hungarian \textsf{babel}, Latin-2 \textsf{inputenc}, T1 \textsf{fontenc}. + Use the \texttt{CodeDefaultL} environment to override. + +\item[P (p$\equiv$0, t)] the preamble with the \verb+\usepackage+ lines + +\item[B (b)] \verb+\begin{document}+ + +\item[C (<$\equiv$c, >$\equiv$o, \textvisiblespace$\equiv$2, w, s, x, \%)] the document contents + +\item[E (e)] \verb+\end{document}+ + +% Z | | |ide visz az \end{code} + +\end{description} +% +The meaning of the complicated types are: +% +\begin{description} + +\item[f] Accepts a file name with extension. The use of \verb+_+ in the name + is not recommended. The extension (e.g.\ \texttt{.tex}) is mandatory. The + chapter and page numbers will be prepended to the file name (only the + page number for document classes without chapters), for example + \texttt{f foo.mp} may become \texttt{2\textunderscore 63\textunderscore foo.mp} in chapter 2, on page 63. + +\item[v] Like \texttt{f}, but removes the default lines from classes + D, L, P, B and E. This is ideal for emitting non-\LaTeX{} examples. + +\item[f!] Like \texttt{f}, but don't prepend numbers to the file name. + +\item[v!] Like \texttt{v}, but don't prepend numbers to the file name. + +\item[p$\equiv$0] Writes only to the preamble of the CD-file. + +\item[t] Writes to CD-file, appends line prefixed by \verb+%^+ + to Source. Useful to indicate in the book that a package is needed. + Example: \verb*+t \usepackage{url}+. + +\item[<$\equiv$c] Writes to Source and CD-file. +\item[>] Writes only to Sample. +\item[x] Writes to Sample and CD-file. +\item[\textvisiblespace$\equiv$2] Writes %%%WF only + to Source, CD-file and Sample. +\item[w] Writes only to CD-file. +\item[s] Writes only to Source. +\item[\%] Comment, ignored. + +\end{description} + +The \texttt{code} environment omits the Sample part from the book if the +Sample is empty, +and it omits the whole display verbatim environment (but still writes to +CD-files) if both the Sample and Source are empty. + +\subsection{An example with METAPOST code} + +If the \textsf{eempost} package is also loaded, the following code can be +used to typeset a simple, syntax-highlighted \MP{} source and its output: +\begin{verbatim} +{\PexaDefaults{listings={language=metapost}}\begin{code} +v house.mp +> \begin{EempDef}{house.1}{}{} +w beginfig(1) + u:=18bp; picture V; V:=image( + draw unitsquare scaled u xscaled 2; + fill (0,u)--(2u,u)--(u,1.5u)--cycle + withcolor red); + draw V rotated 10; + draw V shifted (3u,0); +w endfig; end +> \end{EempDef} +> \leavevmode\EempUseFig{house.1}{0}{0} +% ^^^ Dat: \leavevmode to get the Overfull \hbox warning +\end{code} +} % Dat: nothing allowed after \end{code} in its line +\end{verbatim} +% +If \textsf{eempost} is not loaded, the following code should be used instead: +% +\begin{verbatim} +{\PexaDefaults{listings={language=metapost}}\begin{code} +v house.mp +> \begin{WFile}{house.mp} +x beginfig(2) + u:=18bp; picture V; V:=image( + draw unitsquare scaled u xscaled 2; + fill (0,u)--(2u,u)--(u,1.5u)--cycle + withcolor red); + draw V rotated 10; + draw V shifted (3u,0); +x endfig; end +> \end{WFile} +> \leavevmode\includemps{house.2} +\end{code} +} +\end{verbatim} +The \verb+\includemps+ command should be defined in the preamble as: +\begin{verbatim} +\usepackage{graphicx} +\DeclareGraphicsRule{*}{mps}{*}{} +\makeatletter +\@ifundefined{Ginclude@eps}{}{\def\Ginclude@mps{\Ginclude@eps}} +\def\includemps{\@ifnextchar[\includempsb{\includempsb[]}} +\def\includempsb[#1]#2{\includempsc{#1}#2\@nil} +\def\includempsc#1#2.#3\@nil{% + \IfFileExists{#2.#3}{\includegraphics[#1]{#2.#3}}{ + \GenericWarning{}{Please run: mpost #2^^J\@gobble}}} +\makeatother +\end{verbatim} +This should work with both \textsf{dvips} and \textsf{pdflatex}. The typeset +output looks like this:\label{pag:use-listings} +\par\medskip +\noindent\begin{tabular}{@{}l@{}l@{}l@{}} +{\scriptsize1}u:=18\textbf{bp}; \textbf{picture} V; V:=\textbf{image}( &\ \vrule\ \null&\\ +{\scriptsize2}\ \ \textbf{draw} \textbf{unitsquare} \textbf{scaled} u \textbf{xscaled} 2;&\ \vrule\ \null&\\ +{\scriptsize3}\ \ \textbf{fill} (0,u)$-${}$-$(2u,u)$-${}$-$(u,1.5u)$-${}$-$\textbf{cycle}&\ \vrule\ \null& + \setbox0\hbox{\includegraphics{houses}}\ht0=0pt \box0 \\ +{\scriptsize4}\ \ \ \ \textbf{withcolor} \textbf{red}); & &\\ +{\scriptsize5}\textbf{draw} V \textbf{rotated} 10; & &\\ +{\scriptsize6}\textbf{draw} V \textbf{shifted} (3u,0); & &\\ +\end{tabular} +\par\medskip\par + + +\section{Some implementation details} + +\subsection{Starting from poor man's inline verbatim} + +The following macro, derived from a macro in the \texttt{.dtx} documentation +of David Kastrup's \textsf{binhex} package \cite{binhex}, +typesets its argument in inline verbatim mode: +% +\begin{verbatim} +{\catcode\string`>12 \gdef\stripprefix#1>{}} +\def\verbatize#1{{\ttfamily + \toks0{#1}\edef\next{\the\toks0}% Dat: make # OK + \fontdimen2\font=0pt % Dat: hide spaces + \expandafter\stripprefix\meaning\next + \unskip % Dat: strip final space, possibly after command + \fontdimen2\font=\dimen0}}% Dat: reset global change +\end{verbatim} +% +This demonstration show how useful the \TeX{} primitives \verb+\string+ and +\verb+\meaning+ are. Both of them convert tokens to characters with catcode +12 (other) or 10 (space). Token lists with spaces are hard to post-process by +\TeX{} macros, because \TeX{} macro expansion ignores spaces before +undelimited macro arguments. But it is possible to write a macro which +converts spaces to anything with catcode 12, for example the \verb+\sca+ +macro below does this: +% +\begin{verbatim} +\begingroup\catcode\string``12 \lccode```\%\lowercase{\endgroup + \def\scc#1 {\ifx\hfuzz#1\else#1`\expandafter\scc\fi}} +\def\scb#1#2{\scc#2\hfuzz#1} \def\sca{\scb{ }} +% try with: \message{\sca{foo bar }} +\end{verbatim} +% +It is possible to change \verb+%+ +in the definition above to anything, including a space: the replacement +character will have catcode 12. After such a conversion, the text to be +emitted can be easily processed to add \TeX{} macros, change catcodes back to +13 for ISO Latin high accented characters, replace spaces with appropriate +constructs, insert \verb+\allowbreak+ to the right places to enable line +breaks etc. The \verb+\PVerb+ macro, when invoked in inner mode (i.e.\ read +inside a macro argument) works this way, and respects the options specified +by the author. + +\subsection{Hex escapes with output translation}\label{tcx} + +The \TeX{} primitives \verb+\write+, \verb+\message+ and \verb+\errmessage+ +may escape some characters when printing them. By default, \TeX{} changes the +code ranges 0--31 and 127--255 (the codes outside the printable ASCII range), +escaping such codes with a \verb+^^+: for example, +the tabulator (code 9) becomes \verb+^^I+, and characters having a high code +in the font (not the input) encoding are dumped in hexadecimal, for example +\texttt{\H{o}} (having code 174 in T1 encoding) becomes \texttt{^^ae}. +(This behaviour depends on the default \texttt{.tcx} file the \TeX{} +distribution uses. No translation occurs with \textsf{cp8bit.tcx}. +To spot the difference, run +\verb+tex -translate-file cp8bit "\messa+\allowbreak\verb+ge{^^I^^1f+\allowbreak\verb+á}\end"+, and then change +\texttt{cp8bit} to \texttt{.missing.}, and run again.) +The transformation is lossy: %, for example % e.g.\ +both +\verb+\message{+\texttt{\H{o}}\verb+}+ and +\verb+\message{\string^^ae}+ yield the same result: \verb+^^ae+. Escaping the caret +as \verb+^^5e+ doesn't help either, because the \TeX{} unescapes carets +recursively when reading back the written file. Since ISO Latin +accented characters are +more often needed in verbatim environments than double carets, +\textsf{examplep} does the necessary unescaping when it reads the file back. +% Dat: doesn't work The back-transformation works with UTF-8, too, because it is timed properly. +The back-transformation doesn't work with UTF-8, because the 2nd byte is not +decoded by the time the first one is being executed. +The unescaping would be done by \TeX{} itself if the caret had its original +catcode 7, but that would imply that the non-escaping, verbatim carets +wouldn't work. + +The unescaping is implemented in a straighforward, but ugly way in the +\verb+\pexa@dohex@low+\ldots{} macros. The caret escapes are parsed in a +huge \verb+\if+%\ldots +\verb+\else+\allowbreak\verb+\if+ construct nested in 40 levels, and once +the hexadecimal code is available and converted to upper case, the +\verb|\lccode`+="|$\langle$code$\rangle$\verb*|\lowercase{+}| construct is +used to insert the appropriate character with catcode 12 (\verb+~+ is +used instead of \verb|+| to get an active character, catcode 13). The +construct is not expandable, but it works because it is used for typesetting. +The caret is made active and defined to execute \verb+\pexa@dohex+, so each +caret in the file will get unescped. + +\subsection{Disabling ligatures} + +The only way to disable a ligature in \TeX{} is to insert a nonexpandable +tokens into the input stream between the characters forming the ligature. +For example, \verb+f{}i+ or \verb+f\relax i+ can be used to get ``f{}i'' +instead of ``fi''. The most important ligatures (in addition to ligature +letters) to be disabled in verbatim mode are: +\verb+<<+ \verb+>>+ \verb+?`+ \verb+!`+ \verb+,,+ \verb+``+ \verb+''+ +\verb+--+ and \verb+---+. This can be accomplised by inserting a \verb+\relax+ +token in front of each \verb+`+ \verb+'+ \verb+,+ \verb+-+ \verb+<+ +and \verb+>+. The \verb+\pexa@noligs@some+ command of \textsf{examplep} does +exactly this, for example, it defines +\verb+{\lccode`~`<13 \gdef~{\relax+\allowbreak\verb+\string~}}+. The definition +slightly different from the one of the \verb+\@noligs+ command in the +\LaTeX{} kernel: \verb+\def<{\leavevmode\kern\z@\char`\<}+; but the effect is +the same. The \verb+\pexa@noligs@most+ command, on the other hand, makes +all characters with category code 12 in the range 32\ldots127 active, and +adds \verb+\relax+ to both sides. This change doesn't affect ASCII or +accented letters, but usually there are no ligatures with letters in +typewriter fonts. See also the \texttt{noligs=} load option. + +\subsection{Detecting inner/outer brace in inline verbatim mode} + +The \verb+\PVerb+ commands work differently based on whether they are inside +a macro argument or not. More precisely, they detect whether they are able +to change the catcode of the following token. If so, they are in outer mode +(i.e.\ outside a macro argument), so they change all the other catcodes as +well, so consecutive spaces and comment characters will be included in +verbatim, too. Otherwise, they are in inner mode, their argument is already +read and tokenized by \TeX{}'s eyes, so changing catcodes is pointless. + +The auto-detection works this way: the catcode of all the special characters +(as enumerated in \verb+\dospecials+; including braces) is changed to 3 +(math-shift). Then the next token is read into \verb+\reserved@a+ with +\verb*+\afterassignment\pexa@+\allowbreak\verb+cverb@gottoken\let\reserved@a= +. No tokens are +ignored this way, not even spaces. The \verb+\pexa@cverb@gottoken+ macro then +examines the catcode of the character in +\verb+\reserved@a+, and if it is 3, it continues in +outer mode, otherwise it continues in inner mode. In inner mode, the next +token is forced to be an open-brace, because verbatim material with braces +not nested cannot be read into inner mode anyway (\TeX{} would print an error +message when it is trying to find the end of the macro argument containing +the \verb+\PVerb+ construct). + +Another common trick is used when parsing the argument in outer mode when it +is delimited by braces. Normally a \TeX{} macro expansion +(using the definition \verb+\def\pexa@cverb@outerc#1{...}+) can read an +argument that is in braces, but in our case the very first opening brace has +been already read (by \verb+\let+ above), so we have to insert it back: +\verb+\catcode`\{1 \catcode`\}2 \ex+\allowbreak\verb+pandafter\pexa@cverb@outerc\expandafter{\iffalse}\fi+. +The \verb+\iffalse+\allowbreak\verb+}\fi+ here is needed for making the definition properly +nested. + +\subsection{Inline verbatim in section titles} + +The \TeX{} command \verb+\write+, \verb+\message+ and \verb+\edef+ fully +expand their arguments, and similar expansion is enforced by the +\verb+\markboth+ built-in \LaTeX{} macro for section titles and page +headings. Therefore macros in section titles have to be protected so their +expansion is delayed until the section title is typeset. \LaTeX{} offers +\verb+\protect+ for this: if the macro control sequence is preceded by +\verb+\protect+, its expansion is properly delayed; the expansion of the +argument has to be delayed manually in a similar way. Some macros have +\verb+\protect+ion included; they are called ``robust''. If the definition a +macro starts with \verb+\DeclareRobustCommand+ instead of \verb+\newcommand+, +the macro is defined to be robust (and its body can be retrieved by looking +at the control sequence with a space added, e.g.\ +\verb*+\expandafter\show\csname sqrt \endcsname+). + +\verb+\protect+ can have three definitions depending on what time it is +processed: it is \verb+\string+ in a \verb+\typeout+ or a \LaTeX{} error or +warning message (try \verb+\typeout{\meaning\protect}+); +it is \verb+\noexpand\protect\noexpand+ when +\verb+\write+ing to a file (most commonly the \texttt{.aux} file); otherwise +it is just \verb+\relax+ ($\equiv{}$\verb+\@typeset@protect+; try +\verb+\pagestyle{headings}\section{\meaning\pro+\allowbreak\verb+tect}+ and spot the difference +between the main text, the section title and the \texttt{.aux} file). + +The \verb+\÷+ and \verb+\Q+ inline verbatim commands are made robust, so they +can be used in macro arguments. In fact, they are extra-robust, since they +take care of protecting their arguments when being written to a file by +\LaTeX{}. Protecting here means adding \verb+\noexpand+ in front of each +token in the argument. The token parsing is easy since the argument -- by the +nature of these commands -- may not contain braces or spaces. The +implementation looks like this. +% +\begin{verbatim} +\long\def\÷#1÷{\Q{#1}} +\long\def\Q{\ifx\protect\@typeset@protect\expandafter\@gobble\fi + \@thirdofthree\@firstoftwo\displayit\protectit} +\def\displayit#1{...} +\def\protectit#1{\noexpand\÷\protectnext#1÷} +\long\def\protectnext#1{\noexpand#1% + \ifx#1÷\else\expandafter\protectnext\fi} +\end{verbatim} +% +The first trick is in the body of \verb+\Q+: the argument is passed to +either \verb+\displayit+ or \verb+\protectit+, depending on the current value +of \verb+\protect+. If the condition is true, \verb+\@gobble+ is called, +which removes \verb+\@thirdofthree+, so \verb+\@firstoftwo+ will choose +\verb+\displayit+ (otherwise, \verb+\@thirdofthree+ chooses +\verb+\protectit+). +The second, more classical trick is the r\^ole of +\verb+\expandafter+ in the definition of \verb+\protectnext+: it makes the +\verb+\fi+ token disappear, so the tail-recursive call to \verb+\protectnext+ +will grab the next token into \verb+#1+ instead of \verb+\fi+ itself. + + +\subsection{Special hyphenchar in inline verbatim}\label{char'30} + +When inline verbatim is hyphenated, care has to be taken to make the +discretionary hyphen different from a regular, verbatim hyphen. (There is a +similar problem with spaces disappearing when the line is broken; to avoid +this, try setting the option \texttt{pverb-space=visbreak} or +\texttt{pverb-space=invdisc}.) \TeX{} auto-hyphenation takes the +discretionary hyphen from the \verb+\hyphenchar+ of the font. So the solution +is adding a new glyph to the verbatim font, changing the font encoding +vector to include the glyph, and then setting \verb+\hyphenchar+. + +We have chosen character position 24 (per-thousand sign) of the T1 encoding to +be replaced by a soft hyphen (\includegraphics[scale=0.009]{shorthyp_t1xtts}), +which is deliberately narrower than all the other characters, so the +reader immediately sees its function. For example: +``\texttt{foo\includegraphics[scale=0.009]{shorthyp_t1xtts}\break bar}''. +We have drawn the glyph in \textsf{Fontforge}, saved the data to PFB, +converted it to human-readable format with the command +\texttt{type1fix.pl shorthyp.pfb gsx: shorthyp.gsx}, extracted the human +readable glyph definition (\verb+/short+\allowbreak\verb+hyp { ... }+) from the output. +We have changed the \texttt{/FontName} and +injected the glyph to original font with the following command: +% +\begin{verbatim} +perl -x -S type1fix.pl --set-leniv=0 --dump-spaces=no --pack \ + --dump-bars --dump-stde --dump-ends=no --debug-warnings \ + --chk-insize=no --set-uniqueid=random --set-fontname=t1xtts \ + --set-glyph="/shorthyp { 50 354 hsbw 315 vmoveto -17 vlineto 0 + -8 0 -8 6 -4 rrcurveto 4 -6 8 0 5 0 rrcurveto 195 hlineto -124 + vlineto -11 0 -21 15 vhcurveto 2 0 3 1 2 1 rrcurveto 10 2 1 12 + 0 12 rrcurveto 0 8 -1 8 0 5 rrcurveto 130 vlineto 0 5 1 7 0 7 + rrcurveto 0 12 -2 11 -11 3 rrcurveto -5 1 -6 0 -5 0 rrcurveto + -12 0 -12 -1 -10 0 rrcurveto -98 hlineto -16 0 -19 2 -17 0 + rrcurveto -32 -6 -3 -24 hvcurveto closepath endchar} def" \ + t1xtt.pfb pfb: t1xtt-shorthyp.pfb +\end{verbatim} +% +We have changed six lines in \textsf{tex256.enc} to match the glyph names +in the font (e.g. \texttt{/endash} $\to$ \texttt{/rangedash}), and we have +changed position 24 to \texttt{/shorthyp}. We have also changed the name of +the encoding in the beginning of the file. We have inserted the following +line to the PostScript font map files (e.g.\ \textsf{psfonts.map}), without +the line break: +% +% into psfonts.map: +% ul9r8r LuxiMono "TeXBase1-shorthypEncoding ReEncodeFont" <8r-shorthyp.enc <ul9r8a-shorthyp.pfb +\begin{verbatim} +t1xtts t1xtts "TeX256-shorthypEncoding ReEncodeFont" + <tex256-shorthyp.enc <t1xtt-shorthyp.pfb +\end{verbatim} +% +We have +also added a new TFM file based on the old one. We have dumped the old one +with \texttt{tftopl -charcode-format=octal t1xtt.tfm}, modified the +width (\texttt{CHARWD}) of character 24 (\texttt{CHARACTER O 30}), and saved +the modifications with \texttt{pltotf modified.pl t1xtts.tfm}. +We've added the \LaTeX{} font map file \textsf{t1xtts.fd} with the following +content: +% +\begin{verbatim} +\DeclareFontFamily{T1}{xtts}{\hyphenchar\font\m@ne} +\DeclareFontShape {T1}{xtts}{m}{n}{<->t1xtts} +\end{verbatim} +% +The \verb+\hyphenchar+ settings above disables automatic word hyphenation, so +words inside \verb+\texttt+ etc.\ won't be accidentally hyphenated. We have +copied all the files above to the appropriate directories and we have run +\textsf{mktexlsr} to update the file list. We have included some options in +\verb+\PexaDefaults+ line in the document preamble: + \texttt{pverb-hyphenchar=char'30} (for automatic word hyphenation) + \texttt{pverb-linebreak=char}, + \texttt{pverb-linebreakchar=}\verb*+{\string\char'30 }+ (insert\-ed around symbols). +We have also defined +\verb+\def\pexa@verbatimfont{\normal+\allowbreak\verb+font\fontfamily{xtts}\selectfont}+, +and we have made sure that the T1 encoding is in use +(\verb+\usepackage{t1enc}+). + +The overall effect of these modifications was that \textsf{examplep} now used +our glyph for automatic word hyphenation and as discreationary hyphen around +symbols in inline verbatim mode. The demonstrations above shows that it is +quite complicated to change a single glyph in a \LaTeX{} font. It is hoped +that the situtation will improve with \TeX's successors. + + +\subsection{Passing information about the CD-files to \textsf{wrfiles.pl}}\label{codeimpl} + +\textsf{wrfiles.pl} is used to extract the CD-files from the \LaTeX{} sources +of a book. The reasons why an external program is used instead of \TeX{}'s +built-in \verb+\write+ command are described in Subsection +\ref{codewritereasons}. + +The file names and environment start line numbers are passed to +\textsf{wrfiles.pl} in the \texttt{.aux} file(s). For example, the line +\verb+\@gobble{code:foo.tex:156:2_pic3.+\allowbreak\verb+mp}+ is a declaration that there is a +\texttt{code} environment starting at line 156 in the file \texttt{foo.tex}. +\textsf{wrfiles.pl} understands such declarations, and it also understands +lines like \verb+\@input{foo1.aux}+, so dumping works even if the document is +separated to several \verb+\include+d source files. The declaration above is +ignored by \LaTeX{} when it reads back the \texttt{.aux} file (because +\verb+\@gobble+ gobbles its argument). + +Although the \verb+\inputlineno+ primitive is mentioned twice in the +\TeX{}book \cite{texbook}, its -- rather straightforward -- purpose is not +documented there. But the real problem is that \TeX{} doesn't remember the +name of the file being read. \verb+\jobname+ contains the name of the +top-level \texttt{.tex} file, so it doesn't work when that file +\verb+\include+s or \verb+\input+s subfiles containing \texttt{code}. The +\textsf{codep} package thus modifies the \verb+\InputIfFileExists+ command to +save the file name to the macro \verb+\codep@code@@inputfile+ if the +extension is \texttt{.tex}. (The other most common extension after the preamble is +\texttt{.fd}: such a file is loaded each time a \LaTeX{} font that has not +been used yet is selected.) The implicit limitation here that \texttt{code} +won't work unless the extension of the file included is \texttt{.tex}. +Hooking \verb+\InputIfFileExists+ affects \verb+\include{...}+ and +\verb+\input{...}+, but not not \verb*+\input ...+, \verb+\documentclass+ or +\verb+\usepackage+. This is not a problem if the author remember that he has +to use braces around the file name. + +Since there is no hook for \verb+\endinput+ (and some packages rely on that +\verb+\endinput+ is an expandable primitive), it is not possible to set up a +stack of names of files being read. Thus, if file $A$ has included file $B$, +an after that \texttt{code} environment placed in $A$ will not work, because +the declaration line read by \textsf{wrfiles.pl} will contain the name of $B$ +instead of $A$. This is not a serious limitation, becase files including +other files usually don't typeset text by themselves after the inclusion. + +The primary reason why \textsf{wrfiles.pl} needs the \texttt{.aux} +file is that it has to embed the page and chapter numbers into the file +names. Although \textsf{wrfiles.pl} could find the source file with the +\texttt{code} environments by trying to match line numbers with all source +files in the current directory, we have decided to make it fail when the file +name is not emitted properly into the declaration, so it is sure that the +examples in the book and on the CD are consistent. + + +\section{Future work} + +The most important features to be added and other improvement possibilites: + +\begin{itemize} + +%\item func-tion better hyphenation point in \verb+\Q+ than functi-on +\item a better approach towards automatic hyphenation of inline verbatim, + after studies in typography +\item allow wider sample if source is small enough +\item why doesn't \verb+\selectlanguage+ work inside + \verb+\begin{PSource}[srcstyle=+\allowbreak\verb+leftboth]+ +\item \verb+\PVerb{foo}+ mustn't insert ``$\lnot$'' if foo is at end-of-line +\item \verb+\PVerb{...}+ inner unnested braces (\verb+\futurelet+?) +\item differentiated \verb+\penalty+ values in \verb+\PVerb+ +\item paragraph mode should work with side-by-side displays (of course, + measuring the width of the Source has still to be done in aligned mode) +\item ASCII tabulator (9) characters aren't supported properly, they are just + converted to spaces. The width of the tab character should depend on its + horizontal position in the line. (With \texttt{listings=}, the results are + already correct.) +\item framing and background color support to display verbatim +\item accented characters should work with \textsf{listings} and + \verb+\PexaShowBoth+. The original catcode of \verb+^+ should be kept + so \TeX{} itself would parse the hex escapes. +\item an interface to \verb+\lstinline+ in \textsf{listings}, with line + breaks allowed +\end{itemize} + +\section{Conclusion} + +\textsf{examplep}, as it is now, is a highly customizable \LaTeX{} package +that provides both inline and display verbatim mode with several advanced +features, many of which are not available in any other packages. The +\textsf{code} environment is also provided which can typeset both the Source +and the Sample column of a side-by-side display verbatim from the same +\LaTeX{} source stream, furthermore it can emit the stand-alone working +version of the Source into a CD-file. These features make the \textsf{code} +environment especially useful for sofware textbook and manual authoring. The +whole \textsf{examplep} distribution is under the GNU GPL, and it is freely +available from CTAN. An earlier version of the packages was used to typeset +all the examples in a 770-page introductionary book about \LaTeX{}. + +\textsf{examplep} is not complete. Some important features are not +implemented yet and the package has not been tested thoroughly. Some parts of +the code are really ugly, partially because it has not been polished up after +writing, and partially because the architecture of \TeX{} and \LaTeX{} +doesn't provide an elegant way to address the problem. For example, active +characters are overloaded: they are used by \textsf{inputenc}, \textsf{babel} +(shorthands) and \textsf{listings} (syntax highlighting) for different +purposes -- these packages have to make extra effort to cooperate with each +other. We hope that \TeX's successors will improve these +conditions, and the core system will provide a generic way to tokenize +verbatim text instead of changing catcodes. + +\iffalse +\bibliographystyle{plain} +\bibliography{eurotex_2005_examplep} +\else +\begin{thebibliography}{1} + +\bibitem{listings} +Carsten Heinz. +\newblock {\em The \textsf{Listings} Package}, 7~September 2004. +\newblock \\CTAN:\texttt{macros/latex/contrib/listings/listings-1.3.dtx}. + +\bibitem{binhex} +David Kastrup. +\newblock {\em The \texttt{binhex.tex} package for expansible conversion into + binary-based number systems}, 2001. +\newblock \\CTAN:\texttt{macros/generic/kastrup/binhex.dtx}. + +\bibitem{texbook} +Donald~E. Knuth. +\newblock {\em The {{\TeX}book}}. +\newblock Addison--Wesley, 1984. + +\bibitem{lakk} +Ferenc Wettl, Gyula Mayer, and P\'eter Szab\'o. +\newblock {\em {\LaTeX} k\'ezik\"onyv}. +\newblock Panem, Budapest, 2004. + +\bibitem{fancyvrb} +Timothy~Van Zandt, Denis Girou, and Sebastian Rahtz. +\newblock {\em The `\textsf{fancyvrb}' package. Fancy Verbatims in \LaTeX{}}, + 1998. +\newblock \\CTAN:\texttt{macros/latex/contrib/fancyvrb/fancyvrb.dtx}. + +\end{thebibliography} +\fi + +\end{document} diff --git a/Master/texmf-dist/doc/latex/examplep/houses.eps b/Master/texmf-dist/doc/latex/examplep/houses.eps new file mode 100644 index 00000000000..421e850c79d --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/houses.eps @@ -0,0 +1,34 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -4 -1 91 30 +%%HiResBoundingBox: -3.37561 -0.25 90.25 29.71527 +%%Creator: MetaPost +%%CreationDate: 2005.01.10:0943 +%%Pages: 1 +%%EndProlog +%%Page: 1 1 + 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash + 1 setlinejoin 10 setmiterlimit +gsave newpath 0 0 moveto +35.45288 6.25122 lineto +32.32727 23.97766 lineto +-3.12561 17.72644 lineto + closepath +[0.9848 0.17365 -0.17365 0.9848 0 0] concat stroke grestore + 1 0 0 setrgbcolor +newpath -3.12561 17.72644 moveto +32.32727 23.97766 lineto +13.03802 29.71527 lineto + closepath fill + 0 setgray +newpath 54 0 moveto +90 0 lineto +90 18 lineto +54 18 lineto + closepath stroke + 1 0 0 setrgbcolor +newpath 54 18 moveto +90 18 lineto +72 27 lineto + closepath fill +showpage +%%EOF diff --git a/Master/texmf-dist/doc/latex/examplep/houses.pdf b/Master/texmf-dist/doc/latex/examplep/houses.pdf Binary files differnew file mode 100644 index 00000000000..53a80cd1769 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/houses.pdf diff --git a/Master/texmf-dist/doc/latex/examplep/pexaminipage.eps b/Master/texmf-dist/doc/latex/examplep/pexaminipage.eps new file mode 100644 index 00000000000..c59d8997b87 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/pexaminipage.eps @@ -0,0 +1,1230 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software +%%Title: ttt.dvi +%%BoundingBox: 133 476 478 665 +%%DocumentFonts: CMBX12 CMR10 CMR7 CMR6 CMR8 CMMI10 CMTT10 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -E -Pdfp -ottt.ps ttt +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2005.01.11:2140 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.0: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMTT10) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Medium) def +/isFixedPitch true def +/version (1.00B) def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 33 /exclam put +dup 43 /plus put +dup 46 /period put +dup 50 /two put +dup 61 /equal put +dup 73 /I put +dup 77 /M put +dup 84 /T put +dup 87 /W put +dup 92 /backslash put +dup 94 /asciicircum put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 121 /y put +dup 123 /braceleft put +dup 125 /braceright put +readonly def +/FontBBox {-4 -235 731 800} readonly def +/UniqueID 5000832 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFB7327F5853FE5E14EF0C4D6CE +693E9AD35B6A143197D260EC37D46D70E6E1F341418D6B8D98F3EC5175534BFD +A1C5A59D970097EC281FD7551BF19757CA19B80A9A8F79FB8D001FAB0BD9D1F6 +BC5CF666D96BA6D1703E1F3F3C89C248650D82FCCE91CE5A4A808272A15DD312 +BAA1BC52182D3E5495422FBA55A03B0FECAC42A1FD9D30BAD89D0D9AB07C38E3 +70125F5F0178B96B256733B76F8E42C9DA733952F8E0A76C56DE4C1624B92E25 +4DC881886F50C742DD4F1AF138FC9102486423C42CC7DCF1944D452FD44780BA +2B566B2E9E703D7D267E343D3638900DF1BB1D1D677263274A65D749637F1D67 +956DA71D5D4A90CD652E619C850C3899BE5B495FF5866850E637B6AC4C1E0B09 +56824D780ACF953376CD08826A589493967FB86BFA92535875126F296AD982D2 +52F42C05A38D05E1FC2628EBBD513BB68191C068C97B39B06A11C78EA1B6EC3A +57B604B1E811491A7D4BD984FE1C837FC915745713FFF799F7CCF48604F9C87D +558A9530E14186945E0072217011906890011B8123173DA367001D7F1233F2BE +1A5A3D088CF2692D84EDC3933A05B14F8D5199634DCC462202526160D6A53A1F +A4584A23D81349744652CCD2BEB16B6DF2BCED6066E4E8E6E15FD0650FF31B98 +DDF0AF7E679BEFBC9AD6A7F3EEF427BD743926D0E025F2B4059CC63BEF986BBB +0B56E23D525237EC65BA6D44F8868A102FBD8168EA360DF37F9629615F4F6B76 +BE0ADC9236D03A32453D9DB22EFACE42066C1654D4BC834035091BA033A67F0D +05F66E65BCE490581DDD1534527869B773A633007B1D13EC54E032050F72CB9F +2475C88FCEDB89473A35FE1BF2B2598E058432B5A73B564B686DDCC9CC86DA95 +EBCFEEC78F2EB8D616C4154F728A9FB1351B4CDE8CFD79570254A3DAE5EC0D5C +BB03FB05FEF60444405DB6A1FAED4401056DB1EC0003BEDCDF05226EC28523A5 +105A981ADA74068843208137652ED54DE66F7844DD74DFBBA8DAE583FF40EDD0 +224BE4537DA0FA75D271A8AF594F457F6A083C4150686FBBE19CAD0A7D9EF756 +8770B4B0B8337273A729C4EAFC2F760DAF84AEA8C22737575C56E24E948DC181 +36C7E7711B19399E666CF4F05C5E999B0E5009664E3D8B2AFE2F6D1B7942425A +F95652CF8B3D7EE1C18DC6F5CFF32CFDC12E56C67571DB18074244706FF70C8F +0D99D0A7D13EC635CBFAC5E6B4A812BD40B5E72F5BE5C82AE50FBED4197710C4 +0CF3216D728EB8C2178830FB7F8688C8E9244135C1FDAFA7C6268DD65A69C99C +D462C904015B0F75F3C3598B9159C27A7474A14C2667BB0E61D844E61556913E +88A7B77D059C3F01FD43F7CBE8613AD9DEFE527E9840C2E17A046E6D0448DFDD +28BC5AC60665BE43E5B5D258C9877F73CB40C1A791398DBACCACFD9BA580690C +28C670CBFF1BC050B78C7A6252F69DCC51F96D615DD09F06C49A96405FBA882C +32B8B91CC2359CB1A5444DBD6465AD69F3E231D1BB06C3CFEA8EBC773D25C930 +9D669A7B77426DB286C81E5B0D9E53DDD54E0E5F7CF9DF173EFE85B2D105CE03 +A4115D35E651DC65C8B2F3EBFF3546094C740B89631B4473041793B28A94C493 +76C3884FD2E867C831AF3D34AE700CA6ECE3A5055D73E042A63D4DE17DA33B5E +DFF11A363BF6F34A6C369379F6AF0D737D2C31ED8AE05A83360A59F80E2AEA43 +59DC89AE50533BEFDB3604D0896F1A6A33544D9F886A489829A66A2B1AFE1E3B +999D7CBE7C0393290B8A96163BF0E3876D838F2377ACE01B35A144AD223C292C +1B2116521CB868DD4D8D4554EDE92FBA84DCAB7A7397E65DF162856C4FBEFDD4 +07BEBCCE3D5993A5B730CF1C9459A0BF59184190039FFC47EA7097F255A4F263 +7EB1D8669DE75644428683C0BFB9B12DC8F3FD9CD1D8FE11D2920E221724C4AC +4E78E39BFE7FB68A754132E3A65DD0DBB2534762684328DEA2A900498E6A6A35 +3D25B55E72492385FBF6890AF8BCF3C3C411D54E4BDA7E27C3E792B28ABE5420 +8C5AE5B1FEF559C8F91C03AB50894908A2462B71E9701E82D78E264C3FA9A72B +E92F7C3A8E82D991707F97574907F1363F5D619BA9AAD5C235612097FE0ADAD9 +966607D0DA406274912836AF1655EC07670B5834838147DFFD45DE6D0EBC98B5 +8D0F6932D6E89F812A3B59BE0850ED273F6D6391E0CC547E484CDE62CB3B169B +856933D03645CF9B88B6FF7865A963E753E4D0239CBB970684F269501ABF5F51 +47B1FB342C6AE1B3A2DCCAF54D7655B71786720AD01D02B9A625E5083115F079 +1575075773EAE8EB3DD6075C195F9B32F17246B50FA380399D85DEF4B83555AD +8116F4CE525248F015305E2759731057287BBC73EE14F066731C62B88064D155 +58A3899485094F18CB7192938D55D286205CFD205B5D9DE01BBF0CBCD6777890 +99F4356ADA3724A46BA33942F23DBABFBEFDAFE080F5F86999105105A36815AC +57C61DEB9A5D9AAE27529B28F0A04ECB0F54ACC3F52AC8D0994738EA457AC210 +796E2B014C0E9268BDC3FF4A78D4BBC26A3F90899771E21AFADC5F50A0E24EA0 +5C4D0EEE1DACCE823B76B2FFDA5DF09575F0E7D4EB9B531771101E6A4F70DA65 +A4E00ACDE3B8EE07824E0E38A6E68E00EDBE87B4FFF05FD3B9B86B9AC6474359 +F253AEBCADBBF4CBC12E094EEC7B6F5FA9DFD670DB44E4D9EDB833934E0C41E8 +AE2565DEBAF39C8B8D6916E23292375AB3AC6C202D45A0A359F4C562B4589917 +B033B60863D13CD4D71DD1505474EC5A8A984CEC21E2C8BC48D2368610A6333D +F18DE35696FEC1DE053D7B261D0C5175E169ABAD48FDA0A0E6924BC4927B3BD7 +97F87B0482769C8AF52B4833938A89C62DC041BA6CA245DE1B638E166E719E9E +D93BC6E68C9F01BED11BB089D2344E3B558E671836374FDCA45DCC9B9A0E9784 +459CDE53BC3506935F4A452AAF335FEBE7EB5ADD3B8D2267BB89E1DC42189D61 +CD055C20C6733F543E81334512F5CA831A56638A5934746C27AC40763C4BD68A +43FCC292A99219A6249A3F15D27B9D78976FD1C4E328F632E6B5BE5E604EEB22 +17124A53CB14241C7A01C8531F31F8FAD3DFC51131807025C8830C5E18429253 +684BE2580643C2733B09A0CA998B5ACEFFA43EF742A09B38C27BE0817CA1FE60 +F486B3DAF4677F409DFAAC7A4CFA68862BC8E0DB89EA9C0CC9CD63EEE8E4CD71 +74FC5BC285012A1B4F6310B101D84C58FBC3455E924C36326CF025EA24CCED63 +20EE170F865026F2C5E5F304EF461089ADD2BC4E646DF4E113779A251A26083E +89C9D9F6E69A557B8DBCAEFD9F0CAAB56EEEB10945EF46B4BB272F162A485198 +E11D6D98DAD0281DA1AE11CD10AD147C092E94E99B9C6A7E0E4D888FDCD9AB8A +4CCECB804C5932D367201140432F8709A373DCC6B4A5293A35D164E0DB5989A7 +8C57601750EA79B6E4FA0004EC7BF773ECBE1E5980C2964E89F21A6E07E7EE70 +435CCDC415381CCD4AA6ECD7F82E8198A5133EB108946A6E6E502313D161FEDA +247C838C4235424E04724320BF16BF8CCEBDC780049F6698D84A6AB853DA69E0 +F6A342CE4F21C998C4C9053A2E6F3B2D3E6EB56D69F3E9EE817630223C896E5D +C668831130B2A44E7783ADC67AC2834CD2F53A8650F3029772B93741C584029C +A8206993585DC6F44E342A82CDDA06A94F7DBA053B27A81747682F8AB48AA0C2 +1F91B4A9D07169D0F4CFFEEC124D9D6CB115AF830C36CA535F9249DCC97C234D +4DE794153AF188639951F9F79A5DA9D91BD67D0D3086C41C3E64E37EFE5B961C +1034BF69EDADD0128C5F3A726A0E888B0D303D730260153EFB0F930F6B3FB9FB +525CBE37F3AD9BC82BA673DBA9F7983C84434BB5A283282659C7C7D5FBDC84A0 +0A563D5550FD7FFD450FD8D37D77BA0144CED5DF51E402C28599962D48546B17 +F0DCA5DF3708F5ADF637C422D841C3CEE1C6FE8219CD831A36EE54C67D913200 +EDC96B54A24057C91B0C8E6349421244C1C305BB4B577E1EDD25CD014E4AA19E +6A740216F5B31A44360D4C45B58CAF1BF05B5323849A23504EAF9E1009D66BDD +F6E754EF62B22C0FFC6982B0C908AA2DA8A7615DB2D01DACA1BEA080E818A1B2 +32FEEEEE192F36423BFDB6B21EC0C6AFDE0A818835470016361A49D8181E2B55 +AE44FE0D940D7B65AC3B7B34B85DDCDD071D819D2257E69C6AD36493F50526B8 +4D8339D82AB5CB4876B57A8CE6E2B3AD31AD2D6C816DA49EAE41E7E2A9CB4941 +0E88597B200982E12C954F7127A87174FD8E43645B2778963EC938566BCE2222 +A48DD87BADBDD84C2B335A0B9AEC29B75A3228A0E6ADF9C5BB07584215BAA86D +76E7D5779CC18F150F3DEF16F96D0FC2056E31503E418B3C596B4B488F5E2080 +49861609FF0859BDCAE7C512FEC5B2DCB55E0C70C2F228EA462F94AC240E3A5C +3C826EAC1E5BEF9BE73B5EC03E11A974D7C7E5A927443C221564FA60BD17F69F +B79D395A7598DB87530CF3C863EF12B7A50DF1717FCF8FBFCB63CF0CF71AA505 +8AA8BF3834A8153C5956D5BD39A9B95940E8B09883DDA075608C28EB70654E55 +3812A6B985A843278926DDE3D1E3DAABE1F2E1004A06921036EEA90DC43DBAFF +883EE9C8679462B5967E172E7D042A663EC19E367D774D9C8099CE00B141CCAA +2AACA634CA5F09C539BD783023F1FBA5481B2FDE982D7419905B557676FF6AD3 +469A96D9848E092EBE0E12701424532E7BA16436A09AD86A508147B8AFD51D4A +7FB8ABAB5934D5BA5FB38C127EB6D0A6701B74CC339873B902BC0104464F2CD4 +7CBE7B1776FA19CEDAE12E28FF694175B79A45526A4A304A06205887E7370E1F +1EE9ADC9E59BE1901B19C688958D047C9F29345AB95082E3824B1A265C9AAC9F +AF9D140852FEC386C2F6A725E07C66F8CAE2BEFC66AE9B518351C5C4FB8D8E3C +AD01B5BB34F02D55C16BD3F22F8291A167263CB5E3DA51D044AC89006DB4E75D +A6B80CB8956546636950678155FF817035265D9CDFBBB1B1F37A23C93A7ED686 +FB5DF1BBDB281CB829FE2EBAC50ED4B270919E8A879070DE6EBE224549F86702 +33D52FAF0A6F223C90147B7EE309BE0AF7F8A989D88277BCE59084353F65C774 +F0DFB642D63057A1099387A6F8A01275B7F28880BBDD02DD56E18AFB02E938C6 +409FC32ED49B039AD70EAB88F468B62FCFC9EA3A81956B1BE166D30EE9A92787 +6D207AC144FBF051AC3282925C8E9A56747BC86C8CFA876E881732E3C7C2398E +0A766FB1CAB073CAD9F857124E7429AEFBA5387A67148C1FE73CA96739CDF03E +896C1C1BF36FD1EFC304EE793AD7AF01F6A17E3DE84DF0C489059C2A66D32BB6 +C7F1B779B66CBE8A633D7505D2D888A1AAC5D3C776B055EDCE49CC4E7AC4826C +B209E12AF02AC31F4B1CB3D20A528BB46667857CEEDDD2492196392570EEBB75 +3DA4FABAA51A4DDC7C97E9430CEE0B756B9BF915A794CB09F977CA47D7789B6A +124B6B61BD45C98F9D06255422156D188377E7CCC28A4AB72928C715219B8527 +5BFA00AB13A49DC5B1B51A4731F2F40E77283AA71CBB3D9D9B345DA4930F1264 +C36E37DEB502445978DEAECF0B2261B323B0A094BA7F94FF1F33F6524A41DA69 +3BBC390D2D01C14DE909BC3B7E6AD1D95AD37B8249469E620C9693DA39F5A262 +CA6D72FEAC9F541FE62005412FD1FC4183021B93C441DEA470609C12C3224B5A +36909EBA8A8CF956C27B3DDA368F567349C055EF97DA302A7B3E0400959D0AC1 +3867699A308E4DA45CEFE53C27CEFD94E2DB1C6326D85D2F97DD8EBAAF03B0F0 +2B9564C7695720EC97672B523BCB2A6383E332A7E269718EE84AE2D8F1CF3137 +C0D7871D4D984D4B61FC8DD9E1F257159748A24ABB08EA8748D13C1F8B378007 +FA2283D53D40C726563E5E2F855E07EB669FAF92AD9E0CA313AF85B3793BE344 +BEA4AA6656E681CF10C41556B47992BB3ED6AB89300638844AD37B1B398B8A8A +B575FFB3A9F1DB9725C8CE3326C445B86F9376E1832903041A36B6AB8DBF0CB2 +63B68E7CE4BFC24EDA3DC447CF3C73C8D9F77EDED5657396B8A882C72F026F99 +EA3233503548E3021BBE7C1CDE3F372927349A85C5FE46C8B5F41F1DC760D0D6 +0AB17DF3719BEC33EECC2009DFDC1141CCDF44519194358408CC739534826BE2 +01E807A1582517F581BD27F292537779697BDF5A02A96F5BCF9A42045026D975 +1E31BA13A17406A3ABFF6A9BF95D5AA11B697095199254A5B9B75CDA4987B85F +837DBC14EF72FD72090B701CDD64E2A72A6314E5619C64C87C71910461661214 +E595E76223EE16B1D02350E69392CC716031D9D9ADA7F578BEBD392E08A6297F +3867EF22624FA370661B27893399EB67C6B830CDE3776C4BEC3D4A761FB1C601 +31C5826FEE9D1943287939C2268BF71DFE3B9EF1132CDBFC583AB60F0E5A5517 +B44C80C3D3BF5644FE4D819697035A6B284075555BC824A0771E04E27459533F +73399708AA4F60B95975753C2CA39EED4220EC66965083F161B765D140F95EC1 +53C9B9B0B68D76501146E4AAFD79D2832A040E82203A5C2391A38C1AEA2683FC +1152B17E6840CFF81D3C3E4695F6753183A80ADC9BAD1B1A906A039A76AC0B3C +1CE33E0FCB7043DF2839896AE1E3365CFFF5D22FDEB499EA6B4A7697D6F57ED7 +DF0D7D6B033310E1F070C88C00CB2D80C4B2731074C47529ED943F8C2038086A +D53DFA586FA7D01ABF1DA98EA7B3E6AF0AEEB6C857BCDA2C8054217DC8CE03C4 +4853A3098CD6E5749520356E426424E191524706E9E0E7844F5857BAAF7205B3 +2F80222C6DD28187312640804F5861006ED823DB5733658779D5F0A52A222809 +875A952860F984F346DCDA996CA01909B01306031EB09D146ABE5E8BBB59A0AE +D6956872E83B52A08422C7EBD7AD06E3743ED74E46617AEA02EB7291C506CFB5 +CEA31718D58ED8E58EF3A76E0F7D1F99944E5B68339637D8B735CE59737052EF +22B71BD51D2B495950316F25FFF2A8A7750CCC9B31C7FBAAF06390072E716610 +62F229CA0A2360923C56A7EEDDCEDF6E5BDC52EFF2F2BCB8EB850630E4AA21A6 +50FA42DE2DF0921E7E81720152B67C9DC56BEB85B61F3ED453F539C5CB15D42E +87084853522860D17657D5202F3E7ADEB0ECE4B22D7048BAF3D9672C4A79134D +C41EC2348F8BB0B1B2EADC2A12A470800F58D0472216AF2433F2AEC2E323C727 +ECC9FA51374061504870958C5317B24287EE7D6D57EF6BA411B553402EFB6D1F +8BD267C75ECB0C459594F47DFCB9541C7E044E6E3809FDD24FA5ACAA152169B6 +2BCAE55A2265DA051169E097E6F3AF4312137275E8458D65D67A7FB33718BB3F +756C1C8A58D133FF7FE90E4DE309BBF63209032F09BDA9803E69857F81602FA9 +81D679535641F85B8B27F6D9A061FE8DAAE9CCF303AF3CBD6349BEF8F255CF01 +B8854451BF10F88A70A93C42715C7BABA7AF9E33ACFF97FD25EEFFC73EFE5E07 +7DE8B2408A998C00E66404ABB6499B679AA9C07A884BC32F9872948A8F80E40B +49A820BC5C0825CABFBF176BA1C2724AFA2C4C96CCD491BD863C6CD9FD56ADA4 +6F4B58A48A17591E36EC6D28DBF099DA5E0280729CD16C39ED7C138ABD06BF3F +D6C42C495B17FAE063EB866C76D080F19C672720BCE3DE1F68CBD822CE760726 +7940F4E3A98BEF9B627C34FD8CF2A3DCADFDF8D1CEB40774C9A31428201DC2F3 +56E0D0F64AC53776C8FA5798A7FAFA6E4C89F559A8D4FEE56C55674183A8D806 +79AE8893D6379C02DDF383AB794D919B9F8A969E66BB65091B8FA30C0072F526 +A71BF281D414B2EF5FF6785CD660CD9DE97BE6091D2D848DB21B98003F1754B1 +23311EF0E88974325039D6803A3685537DE558D57FE11D6B8DB158F08A8FE9C7 +9826FFD9EBF96860F6582C66656349943A3388E972498274653EAB5EB2AB684E +FC37F5E6AE824EE7472F10A568C440FD28C29B9CFD65A6EE35CE4A20C71F49D8 +F39147D03D4ACE8D1C1BF97E489028F0948F8065DFB870A3507B24BC4618C670 +1347377B053891C3ECE3C9ED173460E4EA5DF2F9BE82CEAB56AA9F5F0B99001C +42725ED81E522D07529EBC4BAE8A1992CDBB2E51CB95A03E6962405F9ADC91F5 +F5FBDA3C399131AA8A30633D9C4305BB5BE88939BB3B809DF5C851055E2E9B8C +668AC0D32C28455A90A504A63F805434A0B671A7EF1F701FF24113383527AD51 +EECD3FCF92918D0799027BC6AC8D7338222AD224D740810A72C69C3E6BB34FDF +8F6DE86784E6A2C46BD9469CE86C05CE23C4794EFCB09B6DE23E90F40D308B9F +970C6D6B644AB71DA41E1A66672A6D63EA1C9F62CD8EBBCBA03D77AC96BF4AF4 +D89EBE07BAC3261547B439A17F96893E38A3D13F842231D188413EB244C859D8 +9D6D0885535C91E0F0B5BE61BF3909FCECA6601FA3D5FF54792CC228ABCD2BF0 +AA8191A8B79FF2073828172E4F902AF0BF209E8893D7AC25F1F624E857A1B81B +5842D6CF8F992BD8ABFE8EEDB53C89C290CC25C2E6AE55B10D9ECF6ABA66584F +9869D5E8893E6D8C5ED81CB2EC303A12BF8212DDF5CA0433EBB844793B3EBD27 +162578DD0402A75A3158BF591F0A2152AA1520F795828356332ABDC7DE0C7AF7 +CBF749F7AB0B32BC02B2DF6CCC55D1EDA9F51ABB9B671A12CA4D3392363A90C9 +0642DCDEF5B2097B9608EF09C6D1F5DDBFE47AF7781E3F2B606839F81D3EA9A1 +C7D21529841F6CBC96856FAC82EE5EDB7FD800AD6AA6AE8644CAF46B7230A9D4 +8AF8D66B98B0F36074D686F0C1CB0AEECF7F2DE137F269126685A63C0BCA2D5D +0C95B082500474E6BB4E7B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.0: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMMI10) def +/ItalicAngle -14.04 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Medium) def +/isFixedPitch false def +/version (1.100) def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /a put +dup 98 /b put +dup 99 /c put +readonly def +/FontBBox {-32 -250 1048 750} readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6E42BCBB280A712E801A197CB346052F4C19FFBC4E2402EF30C32AA4545 +6CB68C3444AC36E82BD2667B15C62A9FC6A432FCFEA1262B3B3D0D9DEE4469D0 +81E4D5C3C0EF25359BF9388651842C667C5BDF571D8D04532D71FF28EF96CB0A +32E052811F5C6CFFA489A6EEB7B93167A11A21E0E5FFAC944C8CBA8CFDBFEAF9 +10F34A12CAA8E1F6CA82E270D250D12B19956B2391F9E1DFD162BB039DB26FD1 +7EEB76E662919259A59B4CA4B2B38E245C0DE5FB9ECEC17D36DF12909D1E7CB6 +995F17A8D92B6D9D89E7D91FECC8E79704F17E7487696C6EAC08E19471B49412 +F660E77D745978B95D844CD10B246715A35B4212FCF8375ECB677B291AC2B9E5 +E3351C8127372F8D963B78592F289037983CE2C7A12E74C2A09281A9C6620048 +6BA2B27E63CE284C207A91A4F965C4557ECAD27CBCCF319D9F08BF5BDBA3344F +0F364FC5CA048A6002BD93E64331A3EE4C50558952BC3043E65197C99E8BF0FB +B4A636A90E5B313D2D3D6081015C16E17DF3E1F4AD2C9854E7E81B57A3DA43DD +32850859DE806F1A602FAA2BEED9CE72B115A0E9C354CE0EC01AC3C3DCD603F3 +51A64029BBB64344259B9B3542BE0B3BBA37E629193B647C2ACBDEEA78347962 +528E15A1C96B0B51D55D9A6FEAF0A2C62A2B36C1DDD6F8D34DE0A181F0CDD011 +52A3C048C275A6EB38FE21530A5CBAEE232170624548C86F7F2D0B6651D2E17B +79027B89ADC09DC2D316B01E66DA9C871D7C3CF660D9FA80FB48DE6F2FDADCA2 +3FD22F1C1FF1E027A19E94F802B0EA4CE5E25D2B88BFEE7BD06F69E1724FE7A9 +3ACF435FD6FF9A2D7CB519B74334990C2095161BF3A6D56D21E8ADB9970397D4 +C7F0F4C06A003CD5C0F481A760AB06EF328B4361687E16FF0D0BC97E8876DA97 +0B583923A97C5B4237BD36E7B8F65BD5289E37DBAEFE97B1CDF660C2AEED5157 +9711F9E46E15FDFB2DC8BBF5A5AD4273F9FC08F194229865BEAB2CC99ADEFD47 +1CD6B8CC5D7C0DD9FE3BECAA5304F2B4CFFB2CEBFE4F452B210A4B2DBD421DEC +20D9F1996D41E8ADA1EF4B7221B30C1D9E0C552C9C64B7E1D617F29DC00E95DF +325AEC4EF1C0AF1E23433B01D702B53CF858B331ACDC623396C17A2E9FF49FDF +8C14BBE51D0301B46D62DB22F33D860EEE8A1449D0F3BCA864D2CAAFFA46F357 +BCAD57A679CF6F259F6926D953CCFBC66C8DE63597DB85665BCB6240C6494090 +39DA4C3A435360B1CB1876D6A8874B0D402A84E710352C16723C309862733F07 +86FC3610C283AE00D3D87DE99CAB42ACD479CDB4B23CE777AC30E1ABDB99323D +4CC362A658D5BF6E3055A9C73F8957A0CBFC8990B3D816476B75BAD198596ACE +88C517F326F04B0408A51C8FAE06132B36772A8DAE5C7A1AE8085474C6A1510C +990AFB737580D3A6EFA4799764283587D02BA205A0E3DD0DC67421AD77E78F02 +A82C4AF2345F4F2928BEDC51D0359DF10390E2C64BC00E6B6EC338C15E4C491A +24C365E33F472EDA8754208F31B7682195A42A42C65ACA714A7440BC93E7429B +0EF43AA86EECA2E3AF6BB9997CA9DCBB5464FDADB7509D2DC7EC8D0700952B9D +EE5929B25A47C3701D390FAA7E8FD5C00CB68FA77CB688709A0BEB4A7EA249C8 +DF09CF46A9C4274D56DC32E1DB3C391701C182443EF9C0D87F311101FB8BBC57 +38741946093AB52CDA9247ED7DB13A2BA3CBB8403642A0C9D7C6490B147B0DD0 +B796C58AC1163FF17AD8CE04BAAA248CFF17174B52354C61D40326621251E905 +2CDAA3E3FFF3AC72B280799A631B3A79DDC02E8707B972B98D51C01A3995E7C2 +2CF23C6146060C64989E2ED96590CC5A65783DF2297E39216837796538A32ACA +E975CA8A3128BAFFF15B3D5473C6A56E72CF5AF338FFDF9CD8BB8753C01DAE69 +93AE9C4EF232018F5645A81A0784005310E1A2A8DF6195349065E90436E524D1 +AC9FE6C39607C3303746F460D22F842D34D6DBE35FDD2911BB092720EF19F220 +0B6BEA1453C800C04088D96F814CC83C879074BB172967561DDEF704E547C58F +171CBB4271E0D2DD14C19BB56EF60DFAEE158A49E44B058DDA51652008E1E023 +E7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR8 +%!PS-AdobeFont-1.0: CMR8 1.0 +%%CreationDate: 1991 Aug 20 16:39:40 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMR8) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Medium) def +/isFixedPitch false def +/version (1.0) def +end readonly def +/FontName /CMR8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /a put +dup 100 /d put +dup 101 /e put +dup 103 /g put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +readonly def +/FontBBox {-36 -250 1070 750} readonly def +/UniqueID 5000791 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFFB4DD9E83B4F4E0C1A4125BC8 +80D4A83B6EDB84820A2B6F5929A73554F9823DAE4465E78DE6CA791561065B47 +D88DE05CBA8FB48D036EC0A4453FE878BDD8D41D419A8359A1A1B69EBEF51884 +7C7B7477BC127C316BBF99E15035A25608C82051C60EFD5588ADA24656DEB7BE +EC85237245ABAC79B2D2D02BAC1E59BC15C827CA93E90F1E91C74758DC315ED3 +26CD7C2B2A05855F60193D4E825697D12857FE306ED61181B54AFAA2576E17EF +6D3119D5FFD6250FEE58AD2D31870E0F0A3CECF0F2FB08F36CE7A9EE47069B6D +BB798B241AE07622348774A5B2522853821012000FF751F31406D9D80AA5B70F +54EFDCC70CB6143AD386D3CAE998C2BCF32D6F526B1686B0177CDBD70C6E5657 +17D00AA10751219301BF6FEEC25AFF26068E77D5A0AC4C8694D964F05B34FB0D +B96A52A3C3A3601D9EA9EA423D4826B32F9155699747DE2857529D345D4DE293 +D24C610C62CFEFD6F42507AE578E3D22BCE0E0541548842C5F687B2FD983939C +436F20BB8D5F6B587D01A798F500602D1E1AF7C5AAF497A9E2D12D72377688DA +5A37C411BCE8BDF61997382E4FE45D298F51CC21530773C448DA6552A7D130E5 +A4CE300CFD17F8FB8CFD16775CCDA8D6B006AC882BE120D5EBF554FA305D0143 +990A15DAE18B9D4CDDC5E091485C52B6568EC63419D1A221451323A25A2C3A33 +7CDB54C18BD8C7C4E7BB8955C7BABA5FF2814B5528D1EDBDFB183FF072EC27FE +251282514B448A7DE413C8889B38C142ECF18B52A9ACAA2D5A96DAB6777A82A1 +F8D4DA0D2E2DD8C421F055A2BC2E9EC584CAB5DE8F23699C41FF31F1E2FAC669 +C427841767FB94FF6652859B2B91DCC5B8AE6038889833A961CD348A965A5031 +E331E8919FA3E25915B32B1D2653DFC24EA63876BB35DA7E3F614770958909D0 +52243A2D97DF798B338402F8DF585B5D66B8212DBCE7137D3F667D3C4DC21C2E +DE6D89CF2C2290A0DF8B82DC7C200E3F6E05ABE44215DA025BC41EED389DB4E9 +04FE4859B74C6B300FAC9A88A1CED23BEFED7DB24C1897C90D0A55C17142BA71 +073904573F739E0AB4044AFF94C3CBE56A4C20E0F6981937566CBFE24360320A +C3F0DF69E0D21A0E21EFDB8B9D94706D22038BFC45CBD4DD7C35969D982B7B17 +0D670BF70990AAC89B61F717C3020BB8B401CBCD2BDC56797ED8BAF6EF23680D +DEC86E38306BFF32A9E70A9BCD97E2BAFD016BFDA1CCB212CDC5F4C0B311C9E7 +F4908F86CB5EB1E1F3CB7222F0D9CD44FDB4FA56AA5EFA4FF615FD12B6163040 +F8EBD489DA1845E2BD21B28048FEACD106353F478A71B5AD2E43566330F310D2 +2208A291D0DAE5D4B4088C8EC93FF33CBD452BA75AB269A87C19924C9AB7E08C +68F3A98E4C16362E5296B2D3D946BCEA1BDF789ECA49635B7E57A58C04F3A0F0 +0754D788F995D35BFC32F9FC7F1D1050631A5F5F003544AD1DEAE0F5A7C314D9 +68630ED81D4CC19F98330A3B44BC0FB010E7419BB33E840C68A730CB443F08B5 +3221F6C261599BA98C1F616F00784DFA4CF81C3DD72CB1B2229DA7413F4ABAFF +864F7F66C307841E9B2CB1AFC9E0D505C67BD3E465DA3E78BB46AC36610388CF +592E0AE6ABD49D62D00A7DCC1DE521BDBF598D6F8E53121BEDC4CEDE7F59E011 +99BB2CDF31CE345AF41CF96A03A80BFEA643C456A7C78CDD41F2E8194143E6AD +F0AB65036755100A3563B35D18D83FEF4BCDB3D602C191A02E592CC036FA1E95 +781CFDD4F3A90AABD71CF66DDD54212C59ECAC744BCFD5B6AF261A12B230B92B +32D8BAD55F8421AF85671EF67D805C6E76DA885BE5B4BAB4D15870BCBC0DE1FB +36DFF0B017A3BAE10F0A0A82ED2073C674ACCC9FE50CD31317275F449DADABD1 +54F4430B2EA8D630E1D034BC8B7AA6B265D60FFDAE5F20DC90E291CA73B7B7C7 +7EF6EA62C15488F1D1B218B6BB40F1247EA905FF8A86E15425B6CF441F118B85 +EE096289A87F761B6A1C73F526D768D0BEB20A290A416900FC1B3907F22F66CE +D04B4AE289CCB1AC07670BBFF428CC6342A02EA99DA2AFC4DABED35DC004FF31 +B614BE85E9849625062922BAC1C5B6C6D6D6E6C9237C06278B9E4247DD755631 +CCA586935E2B05F5B4F4BCA42BAF74FF481697C91AAB5632C120B3E6CEB60B68 +B307D962C097E7D4FFFC2B60350B2BEE2E551A5B8336CD6B26CCFA46C5AE0C0D +3330B5B3387DB4459EB6B942F4FA9F5C5C2BCAD11FE7AED03CF784DA57500B5F +AEDA4648FB308D4832F5087613D9222BCE50296B700EEECED993147696EEF029 +EFBBDAA2CD21857A64D70139CF59B223F09C429AA9B6379A59029C7DE48CB871 +D9C72072CF2A788095C62329FF3E560DD1FD2F4C16BEFAE89C43C4F33A930A56 +E74325A16E868296DF22991867730F290715FA887917EEEA7AA5CF290FD383D7 +0BB70A6A5599B54427F761F49D54E96A41DEF6DB702BFE5BB5C2D8AA07B0D3BB +9F9BC12A1240168DE14536E236E726BD8B4A6F754C9192F7219F450F4A8055A1 +02616FC93E36E5F5C7B0744D2D2401350F96DED4FE756B65DF93AD4CCF16CB52 +AB8BD92628F1285672AB4AF0DF4CE9C8583562BAC83B7012906F79AB24D40EE2 +232C35A86A8044ED5DF58DB1D28B214C37E0573DFFBAB3FDE9D5882EB6EBB237 +AD43A5C36C197FA1BE272E00CE400B6C3E380BEC8CE6657278B5A6B458382DD3 +434F9DF130F570A507F3C9B6B38E4529EEB1D9981943CEFD891CB398EC768D82 +59AAE3BE10585CD6C1665E2CF0BB6C8A14F6968C18CE3747C88A4ED9FD3D21AA +258FBB143ABDC73E955BF3A4A658D92BDE257C69CA170442542B147779488B44 +6713B6282A44440E1D5560C099466688AA78E5274DD4CA1E1579670809C11896 +6EBB468AB0B72AD778CFFC440ABE837A23D63B6D7BC18BB45198392FBA373475 +74E29931B0477413A28F6C44A3A7D58CDED92E6CC3C1EC76AE1ACDA8205E28ED +E35AE32E8F3A4B2FE1EF8E359D3C2068D60664FF60085CE7E4AA4426EB92D3C0 +E4319F6883C777F16C9728AE4217F52B21AFA5ED426969C0B395861711E3D3F5 +1FCFA7AB3167AA2AA43D2A2D630E65BAB2E980A793D4B384496EC98A9BF5B56B +90160FBBB7556F2F6C5209BE0FF6178E2B96BA884948BE2CB68F59CC0FDB12F4 +E7F3B2505D0AEA2242635B995EF290FFEA9BB5ACC5635DAE39F992C532904B59 +A3598F7021A4C058B7FCB7DC5506C0A3613245324360D5C6CB7AA09B4DD16432 +9CAD2001ED405D8185F6B3DA3EB0670269BE674A1AE6F19318F85DCAF7554F60 +CEC56066C1AAFC3E026C69C7A2053339BEE8C13936A96C3162F0908B8C30FA4E +BC3A65A13D7971B78DA7274242FF34DE1D71DE5404FAB769427C8BE7AD0771A4 +C589353BF6458728F61BBB7DC4CF7BFB51318B63BCA601D7E2306D8346759FCC +AA9AF883C7960D02CC8C4D39865B6A5286D077451321BD74224DC4CF750FCCBB +FFF4E3492AAA96D265BB5C0A78DD12EA31A9A43731C101F07F22665584AA3FE8 +FCB17C78F79C1D083BCA564CF101605DAFD017F8BCC7E2184FCEAA0A599F91BC +DDFB6F14AB9991C1551461A66F7CA2713C7832CEB1C3A79430EABD8766601DBE +9C46FE734845598D4BD4F64D702870A9C260D54C4614537D4A2B1E18423CFD50 +7E653AB6B78A6FC1DD7CA950A51730B1DA857A6DB50131FB7095FCECAD104746 +CA3C769940ADBA430A20E5E7BF312B27C3EDE263450C943F35F37E186D1F25F2 +711CC5BC92DBCB391502D73E348BF80752DB54AA581C0A2E8A5EC80E304F939D +1F6DEFACC30A526BABF816D2F60B24153C9862BF5B19E63C0086F5CD42CC9099 +A0A0B9CB620013DE43F3B2C63B8F1D7B5A2DEA34CFBD1AA46017E06FB3EC9FE3 +A69E4E475D47766440F41A004697DA311182AF2FF43B013AEC62626CBA9E9D8A +D7D4ADB8921C221609A951F8A4DAFE0824549EEEDE262FA11FD425813A210098 +FA1611013ED155DEB776063EA4EE72A2D21283C810C49A061D8A3796FEABAA85 +4663D1DAE5F59D81CFE9CA4ED92D6336DDC71075F3DF2D884E5D53C224E993B6 +3B22530C08F3D87642014B313FC7B4D89039794795E8BB559C6ABDFE8ECF393C +C6ADEC228AAF98362E5BB2859F5BAC5AD1A837B6CB2A6EE624B4861D26BFC560 +CC85C132EAF46EEA354C48287B98CD91343628B3DD7F1A76E449E68402B85ABD +DDAE1F0B1282BCF7C056DE1FC625939FCD7C8EBC4E9F4171EB05992E83CC3EC2 +B49588A1F420D718464CE30077625B7CCA2C46873C6BA83AF34E7469F648641B +8A108F3D93F2B6373478C67C68F61E7B0BC0A8F9E6B292A538462AB49C25BFDD +095CC7F8811DE6CC317BB78B793DC15D0F51045315AA1600A949D6D9FBCDFEC0 +C2A8FB9256DE5CB17F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR6 +%!PS-AdobeFont-1.0: CMR6 1.0 +%%CreationDate: 1991 Aug 20 16:39:02 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMR6) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Medium) def +/isFixedPitch false def +/version (1.0) def +end readonly def +/FontName /CMR6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +readonly def +/FontBBox {-20 -250 1193 750} readonly def +/UniqueID 5000789 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFFB4DD9E83B4F4E0C1A4125BC8 +80D4A83B6EDB84820A2B6F5929A73554F9823DAE4465E78DE6CA791561065B47 +D88DE05CBA8FB48D036EC0A4453FE878BDD8D41D419A8359A1A1B69EBEF51884 +7C7B7477BC127C316BBF99E15035A25608C82051C60EFD5588ADA24656DEB7BE +EC85237245ABAC79B2D2D02BAC1E59BC15C827CA93E90F1E91C74758DC3B4E34 +A17FF40EDD56CA01EA39A4819BEFA96DB761FF48B1BBFB0131AAAA6943EFFB0A +4A6427A0B39C2B7A4DB0EBB6E2A4FBA4DEDE8AEBE2243E6D900791CB815A541A +40F1CC165A6E6B527C93C20CDD6E5F63673BE8DF2C89BFD8467CA7AD8D42090A +149C799385FDC4B73D0A14FAB987E5C34E921E7D08FC5B09FF09F98976219899 +61C5350BB08DCAF7E07F0343D971A023FA40E79CDB29908E9AC53F03AB51FBCE +D79BF1B2081EC5E0DF808A0680D833B55E57AC99E17FA0F903E58D39D6B25A99 +5CEF274F73598CC922330D0024568BD866E0BE3871AFB06473C334CCF16B6656 +116A1BF6747E4D52DA6BC08E0E9C0B6AA8AD528DA601A85991DFC472F51B984B +854F888A9CBC6B8DA3A3B481E649B3F9ADC17ED6F8038910D85E825DE420235C +8FA3A83D81082E39838C4FAECE0A18EB316D51C38FC330ABABD757AA62FE716A +B2010FC16A2BEF7B27BA303E42054FBEDA896C208F53F55E5A74FFE854C00720 +6174469CA1513FE36B3109B7F4BA33F8248CBDA067F50BCB6CE185E4BEBB80BF +43125E9F99B8BD7AD0B44690A4C98AEFF446EDB9A993B6CB1D09F9BAC6FBE292 +5F1EDFBB44E946C71E4790E8C941E1C2E1F7A6F1EDED8B840CBCEDA22A6523CA +2E8C9045FAF8B4B111C3565CB99B4A76DFBA1679233377C7A95C822C89746B5D +2430C8EB8F5909DF1916D5033F66832CCA0736EAF6D1A68354D0E954279ABF74 +A3E42E7D9E4EA572EADF04929D75987CC3A12CADFB93562847E0EB19C8384ADE +7A6AECC909FE1CB5C78E50898925881391D229294C958BC4EFE50A48922B4C95 +AECB84AE9D9916BE25B49E774C157DFF6B23BAF0826B070E0D3E3FF516F0C55E +350F5E956D5D55D67D9177A4DBD93C8808C3E69C39023D60FD3F4729703B13F4 +B6AD9059B905EC29DD61D3BF911D4609EBE8A3EB9433EDC279142A41649CB934 +8F7D601C014DC2CC3AC0B43F8CEDDCE863843A11A64027CB7D7EFA946E782AF2 +95438DE8DEFF8007CAA911972A7D346340E6F172DF932DA19B8C5BC5DCAE3699 +5D31671E8CEC137E93927B87628B39290D611B41F4016EA42B406642957DE9D4 +A3D38710B6BB4E8B72CBE201AC83ECFC3FF59C168939E5D624CE802FEED0 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR7 +%!PS-AdobeFont-1.0: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMR7) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Medium) def +/isFixedPitch false def +/version (1.0) def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +readonly def +/FontBBox {-27 -250 1122 750} readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFFB4DD9E83B4F4E0C1A4125BC8 +80D4A83B6EDB84820A2B6E8BE0236687F741E66BC3BC2C69108C49495DC95217 +C9F5E39789D35353BAF80CC71C970184B119A03F16DDDBB02FF1915E44650ED2 +7C028CC20DD3DF4A6AECA3F7377285D7D837ED9D61B86F555BD6C5D3C9FF05D0 +CAFD9D39B23F6BF2AA967E062B642321619FDBDE6D62BE35501E722B362F6D8B +D90B0D01E5414B2932234D66A8CF409EC2182D7827B4CE725BC184DEBBFEB119 +39B60882DC31A880151DA6C7B54311BB848247258FADD3726FF65C465622C0D5 +D54FAF862AAF6081A8449D9D2A1A60AB0F3088E1A569D10B2A82B164690DCC99 +22E6CC34EBED1C89084600650F4E90D0C8444C0489555B0E53F9073BA3B2B9FA +F6C4CC19F88CD694F84A592042CE6FEE1E6437BE822C2B7B0BAD8499A55DC30B +C5E17E3594FEB0423C4EC7DECB6A368A5D7DCB7C3428A027EABCDC0B3754B87C +F5B105E316E71E0337B374EA1A27F960EFF1625638A0D41D97600C621FF8461E +6E6D053568B97E51C8923FDFFA2FB12D6E801453CB5FE19B4E306960C7717B76 +695189A6C681E79B1A617FB11876859E9B2D1290EE6AD36304396A1D27994200 +74412EBEA84A11512C51B5D19499694D029E9820031299FDC1B3592B9B91ED75 +A47EBCFFD4D3B1ED3EF57804A07F9F0C73948C41C75F00FB863D7EF69EEBFEAB +5E305913DD7D864E7B6A4C53380EB19F6B9730D6E9CEF7F2BDA9A2C25E635ECB +C49CE12AEF2A95C5D265C1422C3C11A4F092FD2DD4CFD9635515CF2D3D0CE3E3 +FA1DB7D64EFEE365C78CBA9BB91124DD1BB88C8C5F12F17BF1A3B21FDBE395B6 +E9B9980D4E4E0F089F893CE2BD777E6FB6065D16F2B693741B8FA22581BFA306 +F06252979997BF8F582ABFB167DBC6D6DBF2F7E039F703A800C8876668C386AF +345A9E539EEE11256CD87408694519B5B75F9C1E28B22641BF8ED941B811E4EC +24329AE13F40B1F923BFB3B0B47712BCBAFB83D25920326CC5EE3C6177ED7111 +5649B5BD93E6CC92C24D29706E24185F3E269D5C3A40BC4EE1550F8F0ACA365B +04042C45F13DEC7E2F57E2A3411BE0689585770A5602BD5E90492BBE310E2166 +5153E2C13685FD67F6A5DED29BFC03FBF56A96F3530C2B34C8405A61AD3E8902 +4C3DC7EA36CFE7B7BF715C5B73308A68BED840D9E9A172C73AACEBBCB278ECE8 +6C7B430B095BB5B2C648530FF2D0AB4AB7A66FACC1572AFF3F186A708C6F142B +B9EFB8767ED6671BCB50491B0ECE21C81F7ACF361B1ACB3521C73720A9B02726 +B015A1BE446B2A9DD87781CD74E552E7EA6B7B872524A851F45F484219E13E6C +6996A15C4CFE81ED44CE943FC6C0623EE8AA6A1E741DD40BE3AB73CE2570BAF0 +F27DE1F6968A5006C3ABE659938F97C8C14ACD37D76D401CE6E12C80ACE93A13 +1046AC40A9CD73F7A884934CD5EFF8CA2A3831974759448CC30135CE68052E8C +2E5D8314B8A12CB1666AB3CB10BFE1AEF598BDCE309D75229DB63653069C8232 +E85553135214B9B57BB7FB766D8214C6EE76C1C45D78CE628FC2506E4AAF7CF0 +0217C0588DB691677B76EEE3D6EB1230A431E25B6627165132124440B7D89A5C +412FE9876B164D45D56DA235A897ABC16B586AC0682B1BFFEAC03DEAF44144BD +EFC3F07FE3FD23FBAB43B5C54E0CBF54DD87457E0E8E05D77A6EC2CB3257B5B6 +72F09AAB583936F5473E0A3D08C4B5D356B7635793F17728B94E024F05C046C4 +1941C5E7DA84516DDC2650C813EF6C7EA9320CFB537EF9E6D8DCF9FA0D6CBFC4 +6C0DE748E498D868A95995870FEC48F3717E7EDDA8026EE3C71461089EB2DD32 +825D7C98B1BA602B09775228E9DE379F2419A94C0B1B8F64DFC8EE799F81FD7E +409BDE1C71CAFE42D0366E344AAD80FA67CA2705513C23F6CCAED76FA21EB319 +F1054FFD57189DA0F6E7957316673997CCCD902A88D23729AFC48B5A26A9606F +E9980D91C3A8E3C7BA643C25ECB904046B2AA2F6FB3F6ED0447D1C66ED6FFD5B +D58A3D6D2FF83F01AF50945B5A8554DA94933B9DAB10F898E6C476A642A3C768 +8F0A94C13A33E3C14A8F28FEF563CAEC23B4E1A09C93264D1FC15FF1B49F0658 +F08B392B3F436869543F9A2070BEC65D4E6377018070B40294F0AC3D3B162576 +6F11D71B8575BC222215239C0A6B030C68E92401969D5241CE2E7DEA6A6C153E +B48C50D0617319534E2E04ADE2796D9341757DE8D9315EC7C3E344B452A2DE8D +FCA852548CFF16045DB6D4E99524CBB3E8BC49BC57C6B91DE856EEED630CA254 +D70BD3DB284EB85321AE541F0B35E2C80A04B9E2D2466090BFAAFD76CF598FCF +B77F05CE1C6F879EBB5CD8929B7FD575B1EA69768ED9DE33AFDBC00EED9225C8 +8BCE6569372970D7F7718D6041336E7F44F990ED7941D1B861BAF144F2BB6FDD +50A76FC61E9CE01B213A6EF2F754251EDDC813442D75FBCC580FCF9D78B71D22 +1E9CB3AF2FEEED217F7D8FD2FECBD73499947E8416CF47B9D967B5B8AE1FF6FD +E6F24A56F881A3F1A34DDDD18A8559EEDA66759CF9DB3353B950368481F0FED9 +0DEC9809B45B05B3385F7EB82D17A01E7E86B8E1FC65904961EB150127FA4C6D +3CB6020314D7D83A1EFE676EB1095DDBE076D769286227F901A05DB78CE74AA3 +F60F01D7113BF4E07D51CF38EF780AED90C27A0C9B9DA88AA1F9AD2DC4716F7A +A1C0B71EE44FA69A8A92031D97A263DC3BF21357038CA97B04A23ADAC91F2C71 +1D2862249DBCD37211219818937112D2622C6F6B4AACF4299AD307763C6DF292 +AD0799A8D447864D272CE093348F8A576CE8C423BCD40E54FAE7700E1AE4D6C7 +CD46AE682C7A9EB56A9FDF438538FDCBA5843D8DF59C423A680D7C0A648F9472 +870F65D5E592BE0AB93DCF23D84FF6B9BF56CE8A8B2BFFFA601FD5A265FBF5FE +E7CC20C5DED4013FB9749359228B75D9AECF1B0C5C0600E4724EC72AED579267 +C4B28323DE3FA0224EFE3D4B77AB56D741DDA8E260A888B58211B37F31E536CF +77BE7D2E90AD8F7DEE4D5125DB7ADF5613EDA53A8AD5E8751289CEF68CF0B664 +192FA3C1886A0DC7407DFBA2DB6DE432518928E5411C1964A6FB6F0EF41923F9 +6E58D5C273A3C0446199B7DDE6E94F5C132176B8AC65A93AD24C60AD2C4D8682 +C9ED62351F8CE3DFDB5873CC472AFC38B17C0223D0D69BE7FB989BAE6EB43019 +F10D9EE3B7E1CBA1742E2AAC19C4A48A2C3B6AEAF58966D914A275CBB5DD2CF5 +A05BB2A9AD376DDD4D6AE1E4B70E9A2092F16FF6296AB7D1AC82C05EEDF0814D +9E0AE2DC2D7677624C4A2106B1227FE6099328668D93D17F75B20F4E4040CCFF +93799BD9A7FDBBF599F37507177253EA00FB036C74A3F799F4E673E92FCCE55B +E6166BEAF8EDE88F6DDDF40D31D0DC91E4F74B06D42F357627B13A8B55ADF495 +A91C3BB2FDCD651D6F2E40E67F21CFFB6F5432FC2410628E64A759EB67A21B3B +627190A2211055 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.0: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMR10) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +\012Rights Reserved) def +/Weight (Medium) def +/isFixedPitch false def +/version (1.00B) def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 33 /exclam put +dup 40 /parenleft put +dup 41 /parenright put +dup 43 /plus put +dup 46 /period put +dup 49 /one put +dup 50 /two put +dup 61 /equal put +dup 73 /I put +dup 84 /T put +dup 87 /W put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +readonly def +/FontBBox {-251 -250 1009 969} readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFFB4DD9E83B4F4E0C1A4125BC8 +80D4A83B6EDB84820A2B6C2EAD7203F81AB21F0A2A25A958A695BE6163730490 +91AC391ED5B24EE612C2C20F5664582049C649B80A8709737134412B5BE31A9D +E1610A5EBFFB186F94A9958A4F4C8A7B4E6F017C4A26D573A8BB78FA543AE26D +747222B00E31F88E70E7A9921A44414ABE7CF163F06926A8AD276B9E8F4C1E75 +05C1C4D71BCD6BEB6B0B82D02CA0A256639C64C59C009868FA1F15B0A73E6966 +0ABD0E902178D2EA6BB85BE763A0A575B8EDF375CDAB1217CE541B14021B851F +1F07CA6A829E8F8EC34E5F5D5FDBE08DBC38DE26CCEA24E1D99B5A3164C83C44 +D07BEFC130B21E66C4FB9ED245CA4D98B7E18AA1C784AFDD2946C71847D88FF3 +2350FF5467ADD254B753AFB5078DB3DE905CACC737D3CAE4C8E55495FB8ECD9E +707DBA0CA49BBE0984741DB9489EFC59110629A1B1EED0B1B3C3AA0A01B03277 +36953D564942DA8D74A1B058027097806D9B64FACD7CCC470C235A43AA21FF74 +83E9C68D1E79EAF3ABCDEF0398E9E870925220D7C6502A7915DCDB63947A49D0 +99D9FDA688FA3A3ADFFC7A1EC0C3EF408651D17971E9A578A12D68918AF6F014 +91D09E7A5DD83B3CD3A43DE86436A580E1B369077644F430ECEBBEABDC71B26A +B88C657816AE471D2088B51132EC2C3926A6D00BEC64091C208FBBC7984A6A88 +A6C2612711100F4EE1E698EEB6463E3006358DE53EF3D3A0172BD444CCC72139 +282041BF55FF834117A7635B4F07F8E5BA03985803C263B3034A408FA0793038 +BD601F5C610AE1549410DFF61AD14C2E68FE99AB4F530A6DFB4E1234F3899436 +F572F48E225C3998F8B33B5ABABBDAF34C42571CCDD9FA0684E1215E0D5F6CCE +02A627B76D716BDEE09D26D1B1C3B67CC61795C412FF97CB968FDFA076457620 +78DD3E501EBE62718348A96F59DE81051F30D1A14E1EB98EEBEDA61CD3880558 +ACD9168E082F5211F2F6038F07FC10D735BA9AA1317F148AAF88C3174C325D1B +A549101079D6A9A954C8B70615EE92276E5655214FF994E06AE15138930F2266 +A5E026E1AEC1962B0D77BFEC9F62F716A0D8D0709FF884A195A2ED60781C858F +6E6E37B1F58059EF59DFB3F56E9249A8191F204C5F205EE916190B1735816CAB +8DB67D03309E433044CDE2689ECBDF01ED106305D6E8267C66172E1F5BB5AD79 +22BF5BB093347879F2608CC6811E42D9A2BF21D725919E48A627A66E2E9C0BB7 +26927DAA9BF3A6E14B06E948D53F0F9C62338F7EB882D7D22D7A3F1ED323DEF2 +8A9FDBF618A9BC90D4113331F9CDE54BD8F6B16BBE5FE9118C53A7C56FAEF893 +615C4459845872149AC8A08C08FFF222CC3126DA25BF0DE649784E2369F52CED +AE2413F87545CA4DF7197A5F8DB894642096B3D28B5A4F49D28F95A3FCD25C83 +20E8D6C7D8C4F43F4899DD79D9A484B82B162A1C3C0EE4AD23230B6B76F39956 +4F5EE37E1C7B02BB27E6C4280377C50860ACAD15D17BFBEF2E470DA8CBD800BE +A2FDB95E264DB2D1A40B279C993BBAF0DC9D4BF8BE584D650EE6D10207A056D6 +18BD34E46A5F2C8B523C2F648C6330A30AFEA3906D89D24A302F8235D51FCBA0 +DCD0ACE1F7AACBD920F5FB79B85C6C2AE59AF80C851E4D571F85F55C426E3941 +75FE9010A9BCD77D7E78CC3D964075D8A0E5BB275660A688B26D4DCA36C8880B +7D64FEE55A96EBA3DBDEC91FE2AE6D850C40404A706A941921CA235559E2A608 +B288E1483595B28D586D7C9BB0EBF59BBB1A27A47395DFC9143430F816D1E4C1 +EE55A8F40837B5AA42BDDF63C0A69F1F082860F7BE9E1103904A2C16421E3173 +E18B19C8F7EAE856C74A46AAEA702B2D3D70C5768C0AB338B149BCE3F3C18A63 +BFD9EB849B45F279E5D030442DA9D8EDAA96D6B48173267A19908EA6E61C29D7 +DB1B2D199ABB1EF1CE723249C4F642E640F26ECF4E7C7E299A51F406B1C67323 +BF4B409B4B0C4681E51F605E0CAB7D27E0B681BA46591CD2F7C4F1B534EA4482 +4755EBAE2C1E80F68341F5F1B57F370AFB3BD4008CD0560C7D7E4B17FC6967BB +5376D15A03C45100AE08F6EFB8763F3AB328405BC35BAFCCCF665397ACE6DF32 +D60DE2A08FEDE4F17E0C02C8A16FF274C5206BEE992B43449839699D1DB4185B +FE5287C2E4D42FDC5CA15EF8C8775948A3B22F083D0C35F3CCE55B444A2A5C18 +6351488CBB929861CDB31901AA2DE4FDC6BA6C7083027F86414CCB85850A38DA +FCA29677F6F56F0CC5A82F1CEA73273A5AC7981D5D22BF3F69E7A9C83F899300 +6AB88A0D2F267A683C27F6052DA602A59DB204AF8472261467EC9AE880FDE85E +40578F73728FD791F8014AA698E447024F3CA2225DE65019D30C2E66973E89AF +E4E6A2313B5D88CB5D52CB7351963C99D3287FFE27E4073148B7EAEF3892B422 +E12D806EA3C60A9E9DED3DE2A540AF8E1E216C2D7453D893390E830C983C56D3 +EBC9118C8FA1B54234F36F025B164782B96187E9D23C4D172343FDFF4009623F +2D84DB828E08CBB7B9909727A1A95051D990341A20ACD2FA675DBDDB8C324639 +C1FCBB4DFB6F8AC0CCA504B453C25040597DCAD91460DD4892AD5BE478364401 +5D98FE67B87CBA062869A2CF22383074FB9457D7AEAB73CD97EEE4F99311E4F9 +4DF1FD3B1DF262133FD343FEF67AD334A4E2069CF8322C587FD9778B15E7712E +5D83ABCF95716B36A5102214949C093276D756448F1B4EC0BBA3BA92894E5858 +897E2B95DC3EDE2704B8BC8472B6C044C3C248C0C51E283FEB6A7EEF0F62048D +E37058AE991F9E2E64F806678C03EFEF6290FD2E1FAE9C2E4287F9942441C13B +0DB939070815A38B88610866831F23231E5A6A491E693046E0C6A35AD22A40EB +D50AB2B37DF6044160272443D8D99E60229AB78E93C3EEE768B95E145D187BA4 +988E8E054A84ACAAE1D2C333E16A665B940400DF1CDF8A1011838236EF0DADD3 +B95DBEB74EC39E96A100ACBAC4169034614652C81307EB11741FB24ED1B4F618 +5FFE24C882B221A0B79B94B4083F8BB3E0642C5E11A7144F4A3323FA61BE5678 +35AA368018F70BDCB63101432FF6F727F57CDA93E53188A561233D5CA3E2FC57 +1EEA69B6FBF17AAD827799B4C63CE92A5AC947FA467DBBE473288C8BABB91253 +FF7D912AED666A11E84C38CB44C8CE9ED82761782ADBD88E95F155A2E033CACB +566E0479744756FFA3801CCC7DA45FA908F682947F20D4E5B86CD439A1E2963E +6ACAB5215DE32AFCBAE83FD5484DA1912EDE9BF7D7D38E362077B06316EDA6C8 +79FC81FD5C86488B624A4757DE33F5B4052A84AA43FB0167B6756844E5BD9DE5 +810467B8A0C386AF059296E9D66D7E46ED4E194FD389F99F2676E45DEAC2FF6F +71CE6349EB1696A476ABFA9F1AFFC1DAC2291B7A3D346D10989E09F030D37F2E +69E086F406D23BF5C26F5A23EC5FB936E63546B9D1A05113240C722BC5B535D7 +E913DF7ADE0DA5A752E33D29BB1B6ADC510034B0D063D6AF12ABDBF1E2FF500B +734F328E600DAAC0D64BB2D7E4E23B4533DF6A06575AFDB9FA2D5BEADDF3C7BE +711A337039BC50A100D195AE9CEB7B8D85B1611BC81F53D96DC78CDB9D2B1A6D +5A7EE77963B305007E9E42A5ACA1FC2AB78E592ADD00A482E47B8C41B197AAA1 +605288A241B1F0A8761BE8BEB4D5BE83567E6D797703F06CF3BA0EFCD93D98F4 +A3AABD9429A1D02A793D861C666DAE6D429F4A00D0FB91AE7A0ABD0926FC811F +C001751C82D65CDBAC29956909247664FFD19CA0415B28D86D4AFF3DADD54F6D +A33435FC224A24B2B6C74D987404E4A99D96B899674D91B8558B377D7AB5988B +2ACD865F6F840893CD22924EB632FD578688DC0A42F7D04B2EF451452D30764C +EB112D660996F2482F6D37B9898A49C4512D197B1CD8449D1ED9654F730E7E04 +82F13C887A33143AC5CB78991DAF2B76DF625CE607681588D910756D65D1A776 +BDE86FED297630523C9E42A50FAD695811E87F8366B1E52492B23BC06C11ABED +8AF801B8CFE9CFD270D80E659F71F9FAF3A7B6DB7455A1255F148D688AD2D06B +20899820DB59FD87AF92A9C49E1136CCFCCECA7941476FA02C8CF51E829EAF6F +C74FEE923429ABE30C1CD99C03C8BD051BB448595EC25173B824C49BE51413D5 +6986D5ECB556484474FC519C42B00ECD098DB41D41BBD4D9DCD23B17BA894657 +28334D1DB23D58AE071FF1546F028B1EB1B077CB5A58DC6339D2D3B7DDD2F9CF +FB330452AF5319F339F17D351A4CA6D2CD66A958CC83981CCF47970E68702625 +F7322BE29786124690787A272BE1567D843B438BCC775B3F0FA8B4916C2E23D3 +8F4270FD965F77A3E7CD9D7573928B77316FCA85315EA3518B8CCC68B62AF294 +6DC1A19F80407232A25024AD509CFEEE4A617A2D8B8FAF097622F610B72EF8FA +FE46BDDAE5489205C67F110B33EF165F237E97DA8966ABF1BC71F69F3A19B961 +32F149B4550A7C55314D5B41236D7747E754210BB05FE556D234E4B8B10D20D0 +02375BA5A8D639913ACB36E841C04C65C64CCAF9B623B59A4C463E5089A8A3CE +8C030DB4703B5BD161ADB096C7F04EE658961C2D560480E5BA2B27B842473A3F +CEC9718D5659DF82C1E90802A3A133BDC6E034D36157AF264C5B4980A867FFA5 +9C7D1D0DEB65A74EEA3A51985EF538004F6E773406F5961A570EE547AA8E0B34 +91EDBF2D17A11A325581714769E9E7F12D7127B36C01E10780221A50AFB8AC00 +20A0C4CBFC1E0C6F3DA26D30B9D401184B926A25FBB00716D5D3D1A473F202BB +0DEADE46BE73BE00312A4C8A14FCA51E64B742F088BE48AD26A0988FDCFD0419 +AB89DBF72672D2F9CAEFBF21F702F61E372F4D0D08341DAAA081BA1547A8A355 +62FE1932E89552F13755049AFCB145289F3C488795D352BD6885390A04BDAD8F +04161048CDA211E78C5730CE198CF25BE05B21C9F3AB9AEA25D65C2D3E696CB4 +D271EE1A78A61B57D76AFDCC913B846349A453D1C29E2FE4DE8271AEAA86DAB5 +DD6C0CCFCAF48C2E4CB5F411C155CC284167326D1ADAC0547D3A8411A4EF8218 +DAC44714ACC6D277965FAD9259EF0C915A1A5914853F5E4B606AACB826A410A2 +8E1200D6AAC111F583F4E4EECBE7EAE982B9526A5F34099AC1CFC82BED0C4BBA +322B7308FDED0717B164AF9F8BB7E3DC99775AD672E12FD5A3945E08CB61E4D9 +F85C17485120620E7763274E71032C4FA2492FFB7FE09D95A5F53073ED0A9973 +35AEAD930EA8BB55CA41898D866D4B32322036098A45B925AD3FABB591CE39C5 +03539FB0622F5B7A3AA028201E6724D4DFDE7FD27037D98002A6CB9392384DF6 +058CB6EE1B26F2A90FDB66DD583E6B77980CDD4D2624DF8ECE40DF9ACB47A0B6 +9AB4F6FF14D15436ADD35144D08907307E339403A303CD7B8938DC4A8A106311 +8C14BFC4AC024F87D7279664277FC245D042382DDD922DE63F530ED0D96F5D3F +45A8E8BD734FDC78882595A4C1C8C8F1C9CD33A4005BFF2830BDCFC8D52A8072 +41598EB550B28E3DD4EC485ECEF0FA32681B7001571F500BF253D4067FF6CD08 +DCC7FFB66B0DE4C9C08149AD4A3152EC4282827FAFC84A4792CEF874FB975F3C +75B1AE8A9729A24511AE37881A57F44148EC990EBF572BFF8E57ADE62FB0E116 +070922B5117F66B3FB0CD1F4AFBB95061EB81B8AB06F5D2F8B261AEA9DAD1AAC +736103C84831405B802F0E7C8F747F4840F4635C6D1873A103D4066DC7C95688 +5E0D2E1969B482C360B196F948E2728D85EB8F7012B49667367E753DC792BFAB +4442F64C75B29F1358059F08F9BF6C7CAF5CCFCB814408DFE738D3A1CB60925B +AA58C1A741470722F5D30025EC2F72B2059138AB85C1198E8AA37502D434CF00 +C425FFE888886E90D2674D6706240D51F4FD77CD7CA5739797EB2215658F5443 +19208CEFE5D5EA1D85BD120A2928B62D87A0D01D5ADC7E3A8071FA9BEB0EFA6B +D5F880D9F4DAFED2B0DD8E6B8BD405D9A3AF93780C228C2AE9E630B5A4E4570B +E231E580631FC71EED30B8EA48593F5D59106A9B81A2CF86CF3AB1683D37F2D0 +BF25C91EE6EA3B1A7144BE338A058198F10531E90C8795B2D54E683E3A0514FC +CD3D7798BBE81DC12873E9415D4D725A04C5D4BAB193BE116F30A2F14A0ADB04 +4C44B85AD0F3EAD2250BE4DBEF6395E93FF2AEEC71F18CD0E127809616B2164F +68928EAE9F4B55C23279EEB8554410B5BF507A09ACC863BDE75FC9B1DCC397F8 +C35BF1ABC33D422A966FFFC8E51C9E358DC857AF7387FD735329A0FD20D32C49 +B79881737C0E0D5DB06A81389B8F3DD2FCF484C136EC523D0FFD659695E1A7F8 +6053FC82D0EAFBFD111670BA8B4A746BEF3FB8A94792F04C57D45EC4CB5FC4BD +A1CE8E2CA560A980AB406186FE1950C569A1A0E747A98C20CE31FEE3F2AD8E09 +0CD67F89D067EED48ABEDBA087F6B84DBCB9E4E102CCA5614C7A956E672F11AD +42068B7015DC4E663234C27B9AAC20653B2118AA87B34451CF3E6FCF82A6FEB3 +D0760326F6CC940388E5B5DFA392A4D88D1D7C1D02B5CDD249DBE7D99FD3B6F7 +8EF6E94F917E359D00D3CDEC82FBF576837023C716CE0559993D4F6D0C94591B +B7879D01B396CBA015D09D96A7E774E32D39F1C4F5ECAA051D445A26208EED1E +5A0E7D5A905D62ADC8C24CD22017840BF37C16942B51CF95A5AF24B3AD2413FE +CD73409306789EFA7B8577601D6B48BCB08F6E8A78B67F3343FD7042E96190B4 +6546C4EE95EB73A128A8CF480A41526A3DC17A130525BDCDABC7AD3D202C88D9 +C645533AF85DB74B09FBA928F7AB86F232874CF8A2FFDFAC188DC81C14199964 +6B432E4CC3840E44E394E0EA12BE20C78E3E7AE24D039F060C54EB0879F1E61F +9FCED72F06BF80F832F5D351F022D4AE0E28BB25D339A9A2B401F6D7393CB95B +C3B46E280251173D398E7B49CA1FD85B6C21C273561AF1AD1D477F52E9AC7710 +9F6BA4B7D8131BBBBA15E24221BA3A81A4C51BE4C6CCD6BE5343B5D8E822158C +BCE38B1A71938C4C143227B7BE635FC610F6B746584BC341ECC8655251DAE8E2 +5B37FC4B590445BE56BDF4F9200D9DE6FBE2692FD50DABABE6AB9E1FD638CB8C +B5C7C7B3225F5B4FD7A7154C1CA7C79D8139FC9AFE2729147C8212C1062BB950 +0DBC96BDE933B1C6576DEA6903A20BBBE9C948C5ECF36B834ACDA93CA0D9C48D +FF19D1E18C6E1D4B56EDFF1C78C01EF03C142D8B0F34CDD9B1A8213A2285D408 +ED55C60D8AA9F242CF0614D92FD48540FF7619CA0C469AA6BFC6BE401D32957C +549364CF3D0444AE4329B5FEAEFF44BEB38FCC1E258AE7759441A3C960364015 +205BF631ADE476308F557A1BB8D7966A29534ADD40A4BA972CCBFD3E763B4063 +77445964876919696E72E547D9B2C8F0FD6676E732E02CB06FFD0CD836700852 +E54E4C86DB1510C0FD97588D4DB1D62CF46E7525DEBDF40675743E72A49C728D +2A23F6A04226B93D1F5BC95BF03CD33719737583C87A97C8BED1C228A1A46F9C +8460C47086A413E6BB52D9967453C906F02CC9A89B729DE74DC4D9BBC06E0664 +3E5FD9546CB1FE2AE34AB1A3FE030E2E9DB81F06C226BD4C38B48E97586C6F6F +B92FC35C6DE0564DFC22FF8F819AC8C8AE33F6962119B80A949939BB48FB6679 +89846D643FE29AA6BE38A655A3E938C40D8E89CC406BCE09BA605288D221A888 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.0: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Filtered by type1fix.pl 0.08 +%%EndComments +11 dict dup begin +/FontInfo 7 dict dup begin +/FamilyName (Computer Modern) def +/FullName (CMBX12) def +/ItalicAngle 0 def +/Notice (Copyright \050C\051 1997 American Mathematical Society. All \ +Rights Reserved) def +/Weight (Bold) def +/isFixedPitch false def +/version (1.0) def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +dup 73 /I put +dup 77 /M put +dup 97 /a put +dup 99 /c put +dup 101 /e put +dup 104 /h put +dup 105 /i put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 121 /y put +readonly def +/FontBBox {-53 -251 1139 750} readonly def +/UniqueID 5000769 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C4683510B2FADF333ECD5F7DF46ABA2092A18017660DBFF15E4F680F239AE3 +BF900DCA9CEB2D89956EF631505D886FD9DC10B5F09511DDD76BF7D97B7294EB +87B7E694E1492FE4C8FF4647D78DBBE454FA5D21530B06067FA623D5A42084DC +D179DD50890D3BB55920461134B2D35FC10D67F1B738B92BB60A31C00C3B4286 +20C74043FEEED6B85355CBA09047C1E39FB7FFFFB4DD9E83B4F4E0C1A4125BC8 +80D4A83B6EDB84820A28C1E9C502B9D29188A0746C11B35F066B6C81518A8722 +31178605D16C47F60E2630E3292A32E16A42E80830F97372AECA6713D3460542 +728F39610DDA4CD4DB473B4B71C18F8B6773C39BF9972D74E6EC4784726BF195 +502A2DDEE45C2918976FF99C03303F60F307A7D34EC292BE8AC3B50AD0D181E5 +7B459EDCEB4931C6958FF0644CE199BD440F2394ABC31DDAD46FC5BE23CF949D +38A22B3D135E8B38DD760DAEB76FD5B2F00CCD237C45F71F6E8CAA052F1B7C91 +3095B02853EE0D77431035E5175D1C225412758A69301CE0E4E9318AFDCEE108 +CDF3CDF1086760BF058AADCD6934DC33B20E4D05672B2E4D5EF987DD8826B9D6 +5B90A9EA3B607E994FCF47D183BAD5DEF2C0EAE021E01CC86B3D4790D7877935 +D426E65644E5787BDD1DA502EB8D0588AD3243EF0C8E399C6C39CD86CCD81959 +0E4D8E6FE4ADEEEAB58A310589638A6197E4FF89437F690FE9A9DB93F8213CD3 +FB1AADD7786B58ED37ABEB8FEF25DB797D0EF895773DB5127F1CED00E12121D9 +D33356152ED135713737BB4A77DA30B1A355C6F8350371C24C6D6783FCDDAAFA +CF1B80EC83A97B9AE498FBB8E27A94C9728CAC335891C9AC28A9C12B8A9BA32A +733B083A73A4F9F22D2F7EC0D5F494F290D4EB55BA1EBCF0E3A48BFE5568727A +55B21FC8B0796AC6847F78A1BF872E242AEC958F2A9D36B0306FED0AF94551B1 +D439AD79EE0CC9EBDAA3728F7AC2292CE0A9C16C387F15B5580B988D36AAC73E +A0D187EB3EE751B27779DDC0166DAB9CF589BC170ECA1870F9437B6F2AEAEB09 +C5644EC38107B1CDF32D79D1AA5D29D47933592367D000D180D7D49F225A6A7E +DA9444F60551E3B470DAFC00467D58F6DD065F075D57D8FE4384E6CA7738C8D7 +994A0BFFE1E318EA0CFB8A81381BB25D5596C4DE489411FB55E65BFCF8662F8B +3C74F3C583DE009F79BD7EE44371357059E19D2EF7306F286523468653761035 +2FB9D1C954A1A4704F1E371C9BA7C215F103C43E76C78C5AF953BC82B33CC694 +AC3E783CCD5E430F8CD5E0C0B052DDADE7825A676959AAD271D1CFE2A7CE7F0B +ADD7B7A53D8075F5E2C4E07F46F35FF9D45CB2ED9C39A116D847579DA069787F +9FB90B4629DED7C995202F538C6127BEC7DA92DA9E234F8B7DFC3EF39E511871 +C4FBEC725B3E61A4EA4881DE1C75574EE2395FEDD488CF48F21E4F68C80CD6E6 +69DDD0974C1F284FCD3558B06DE4898EC51DABFDE7CCB0750A13DFA74BD42B78 +DD20C60D7875E6BE77E47FD03622BCA9C327E2A04BEC1B2DDAF8489878C0F7C2 +C269D2716D54B6346D168CE94960209183E946A040D5398252E663FE77C0A39E +F2C4EFDF61F13705060805BC95EC542A175D10970BACE90E499B3752C1D8C001 +86392027948BCEDE3E9F8CBEF1B2F92FA0EE47B2FFFFB0D58E6164AAC434F4E2 +4F24B9B95C7B0DA3D731FA24CBCEEEDA08C990013DA94F4C8225903D10889D84 +8566963B566ADDC28A5A14B27BF82EDE1C962ADE62A08A0BA1DAA3F48AABDCAC +2AA1BF8BB6902E08D7B329789BDA46EF6CD47E6144B9492E66A8E20C2D7B1D2F +5F330637A7908703C32DE33D80A1D83993B287164CE9E3B0CAF86935ED585B86 +D8E9815F3B0B101B6D28A46CDED6F7EEE09E266FE195C1C925D9A87498ADBF85 +2D78A45FF079081ECE207A77BA46EAC68F472E00AD267FA502D018CAA6290CEB +27A7EAC803619A5046D322DFE17FD1CFD72F9A8669908F581DC30BC260CB44BB +D9388FF7E3770F07B724FEFE156DB2DBA74DAEAC7E129CC390AD8FCF85C6DB53 +38188CFCE7E3A3A6A0FD28E87FA23AE0473584D3F5166D480F0ADAEB73D9D664 +3438A6BA726DA8F02E6048A4541B18933BF9B04141E6826651B8087B1B2C62CA +4FDBC5F2EE9CD5757A78101699F1D715EA0A517EEB64D32BBE05360AFF53F7A4 +94C24EC5ED77F7736F3B8B872658FDDB80CE8C7E726F6A509732FABC65A3358B +BC16372A054A2ACB28134EBEBB4A955C6FFE4DCC038224429D19185323BEB922 +9F56B8C9219BEE0BF9B7206F69B01DE0750043D51D9EB7F67F88208EE56D98E2 +58B9EB7CFD00004F4D11A7677A51AA15C3AB784B7605C35436355CF3A34A3166 +7B449A75827C8B1062BA5950CF1CE07A818C9BE492B35F17D1193151A9E1EB8C +58050944B2108214B9069AFFBF77113DB0163BBBBE9F88138AAC3187E49C63BC +260A52246B7A70DBC6A47875BD8B5F9ABD923E3FA1AC8B7F1793974DA99A581C +BF723A67D8A90442AEAC1EC1C73AE98E19396C6751E28BFC94B53AF0E9B11035 +64A43925E34F8637708ABF43218CFCCE188A4B6933E2C295DF49C5BEA119D17F +DD4CF1C643A73F847FA40E705E8C7D706BE0D18924978AD36C7EA4F82A335090 +92049272C2F5C0D40F7A867A90E38C8CA029776DE60765867C3B16406BB63EDD +E2BD3F3A29841050FB9CE07B91CE2BB9F2317B9A083E534F0688A067B4B602C3 +AB65AFA467EB4CDCA6000A2D43160908FF36BA16B23509E584A86005BAFB11C6 +1BD62DFC8F1DC9E3A99CE053C255CC7B72E49F651A0854F9EFFB4FC11F5A6CAE +1BB742D5343FCD68D9E74AEDDD47A9AA32ACEBAAF09DC4B8511288634B785F64 +C6F5072422CE633FC47FE6C6195307CCDA12E579A6F677FE2781AD2663FCF57C +848B0E2995C97563BC43740A8CCE60C2D5FD395AB86C043DF23AEAD1E7237005 +BA38D449D72AF09A97E57DF82F6A815473F1F96A522AFD990C9F5C1F28BDD473 +35F90F2AEE54F7610C5C8FFE260D77D5CA16B14CB609C3A59D53C72EE5B062DB +F6EB69CE56B47F8C9E9E7C90B6BC17F489E2820768C5080BCC40BD45521C7290 +AE131636C436AD64425E840170C46232C263134F94AAE9DF890C3AE7433A2D36 +8B5553CD2F585F3713E4249623A4942EE21946CA348D78BE1596DBE060F4725B +F6D612F261D1312B8D91D99A4F1E77C6DE8DB8923C58642A352AA51ED6EEDFD3 +4808FD63EDE98B39822CC45B10B01BF72AE9E0ED4CB89B1E33CF54E6169F45AF +DE416FEA98A3BD7ADFAA3E2B2285DF4C39CF7B1667B3480DDC1923B44D24FB1F +8F450855FEBB274EC2962D287B86FD9DD4F853BF6CDCD8F365B7108EC0ECDE64 +19B7980A53C7E95E5B0D185C083D8207F45341D9ABF81AE52291FAB318DD6468 +BE99CBAA8E8F814A9F8DA40E29D6E6019B0DE6EE7A1889D442543476BE71E260 +41D5BB992F89E6291572CB28BB6B0331C5B7928B4384C5180605E6B304ABD42C +18A90F507BDF36C3806218ADCD6ABE322936E3327C681C0306382D4E834DF58B +31565A3C85D3596CC58E0FBCD06CEAB50D9D6ACBFDD658B415D4B99EE60ADAB0 +205CDDED28602DB995554E284EDE91170E13DDA95F03163E197BF50CF1ADDE5F +06DF48FAEC79B5E1A4A10EA70E5DCEF27C61D8C7BF435BF0BB08E0D18652940B +9D7344AD2F06E3F2DC37F8EC2EC3709D157D761B11B202D1D33A5D5D4F53CBDC +EF92697C3235BB158F97C162504C7A69A8081B4FFD8BB00F446D8E4D4568E725 +F68CC135CA9D6F348AB82A5665946C1979965822AA6AAE3536035E90AE3939D9 +23D13A522D6DC69D878C846D56B025A6CB22C232E9BD95DDB05628132ADFFDD3 +B6FDBCA9556EBA2F3442BF18F63860822FC22AA84B882D3D1D14EC6A031F5FD0 +E1EECB2EA10C39CDEBD97F4FF32A458E8B272033C6F8725DB4E07768907C5704 +7910AE39DBE111C2A6869897D08DA253318C34249873605907627E52CA086E16 +FAFBAF13779B55931AEFFCF2C4556103D227217F037FEC31CE6A8DE96573F91C +34EC5F5410AC47B38F4BFF8250DF6B96CC262775D29AA5464D98017024D0E2E0 +0ACCFFBCE88464EE5858B8CE5B269225DCF370EFCFA586124412F88115B178B7 +BE890EA0620BA51390A8D3EFE2EBC3304A6F3E9BBB9C8A98747B85C74B44FE13 +FE59CE6247AFECEA269D8064257F1CE75352A65BEDC8F0E253677BAAD94168E5 +3FC852683193BCA26F9536A884058BF2B4633F552FC591599D9D48EC7A2838 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099154 1000 600 600 (ttt.dvi) +@start /Fa 130[44 1[44 1[44 1[44 44 44 44 44 44 44 44 +44 44 44 44 2[44 44 44 44 44 44 44 44 44 2[44 1[44 4[44 +2[44 6[44 3[44 11[44 10[44 3[44 2[44 9[44 33[{}35 83.022 +/CMTT10 rf /Fb 156[36 36 44 97[{}3 83.022 /CMMI10 rf +/Fc 137[37 39 27 28 28 1[39 35 39 59 20 2[20 1[35 1[31 +39 2[35 97[{}15 66.4176 /CMR8 rf /Fd 206[30 49[{}1 49.8132 +/CMR6 rf /Fe 198[33 33 33 33 33 33 33 33 33 33 48[{}10 +58.1154 /CMR7 rf /Ff 139[32 33 33 1[46 42 46 69 23 2[23 +46 42 1[37 46 37 46 42 9[85 2[60 10[30 11[65 10[42 42 +2[23 2[65 1[32 32 6[23 33[{}27 83.022 /CMR10 rf /Fg 134[71 +4[52 53 55 1[75 67 75 4[37 75 2[61 1[60 1[65 19[128 3[50 +23[67 49[{}15 119.552 /CMBX12 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + +%%EndSetup +1 0 bop 1999 2028 4 1563 v 2025 548 a Fg(I)135 b(My)44 +b(c)l(hapter)2025 730 y Ff(W)-7 b(elcome)2348 700 y Fe(1)2386 +730 y Ff(!)p 2025 783 542 4 v 2118 837 a Fd(1)2153 861 +y Fc(to)24 b(our)f(isolated)h(minipage)g(en)n(vironmen)n(t)2681 +1037 y Ff(1)p 2025 1066 1354 4 v 2025 1299 a Fg(1)135 +b(My)45 b(section)2025 1480 y Ff(The)28 b(c)n(hapter)f(b)r(egins)g(on)h +(page)e(1.)2483 1680 y Fb(a)2527 1645 y Fe(2)2582 1680 +y Ff(+)18 b Fb(b)2701 1645 y Fe(2)2761 1680 y Ff(=)23 +b Fb(c)2885 1645 y Fe(2)3273 1680 y Ff(\(1\))2150 1829 +y(Inden)n(ted.)2681 2028 y(2)548 523 y Fe(1)p Fa(\\chapter{My)39 +b(chapter}\\label{c)o(})548 623 y Fe(2)p Fa(Welcome\\footnote)o({t)o(o) +f(our)k(isolated)548 722 y Fe(3)p Fa(minipage)e(environment}!)548 +822 y Fe(4)p Fa(\\newpage)548 922 y Fe(5)p Fa(\\section{My)f +(section}\\label{s)o(})548 1021 y Fe(6)p Fa(The)j(chapter)f(begins)g +(on)i(page)548 1121 y Fe(7)p Fa(\\pageref{c}.\\par)548 +1220 y Fe(8)p Fa(\\begin{equation})o(a^)o(2+b)o(^2)o(=c^)o(2)548 +1320 y Fe(9)p Fa(\\end{equation})515 1420 y Fe(10)p Fa(\\par)f +(Indented.)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/Master/texmf-dist/doc/latex/examplep/pexaminipage.pdf b/Master/texmf-dist/doc/latex/examplep/pexaminipage.pdf Binary files differnew file mode 100644 index 00000000000..9574d2c3d6a --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/pexaminipage.pdf diff --git a/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.eps b/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.eps new file mode 100644 index 00000000000..c8439df4212 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.eps @@ -0,0 +1,32 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0 0 301 342 +%%Pages: 0 +%%Title: shorthyp from t1xtts +%%Creator: PfaEdit +%%CreationDate: 11:26 16-1-2005 +%%EndComments +%%EndProlog +%%Page "shorthyp" 1 +%0 0 moveto /Times-Roman findfont 1000 scalefont setfont (a) show +newpath +50 315 moveto + 50 339 56 342 88 342 curveto + 105 342 124 340 140 340 curveto + 238 340 lineto + 248 340 260 341 272 341 curveto + 277 341 283 341 288 340 curveto + 299 337 301 326 301 314 curveto + 301 307 300 300 300 295 curveto + 300 165 lineto + 300 160 301 152 301 144 curveto + 301 132 300 120 290 118 curveto + 288 117 285 116 283 116 curveto + 268 116 268 137 268 148 curveto + 268 272 lineto + 73 272 lineto + 68 272 60 272 56 278 curveto + 50 282 50 290 50 298 curveto + 50 315 lineto +closepath +fill +%%EOF diff --git a/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.pdf b/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.pdf Binary files differnew file mode 100644 index 00000000000..7b62944ae25 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/shorthyp_t1xtts.pdf diff --git a/Master/texmf-dist/doc/latex/examplep/wrfiles.pl b/Master/texmf-dist/doc/latex/examplep/wrfiles.pl new file mode 100644 index 00000000000..6dd6495dd07 --- /dev/null +++ b/Master/texmf-dist/doc/latex/examplep/wrfiles.pl @@ -0,0 +1,275 @@ +#! /bin/sh +eval '(exit $?0)' && eval 'PERL_BADLANG=x;PATH="$PATH:.";export PERL_BADLANG\ +;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;eval 'setenv PERL_BADLANG x\ +;setenv PATH "$PATH":.;exec perl -x -S -- "$0" $argv:q;#'.q +#!perl -w ++push@INC,'.';$0=~/(.*)/s;do(index($1,"/")<0?"./$1":$1);die$@if$@__END__+if 0 +;#Don't touch/remove lines 1--7: http://www.inf.bme.hu/~pts/Magic.Perl.Header +# +# wrfiles.pl -- write single example files +# by pts@fazekas.hu at Mon Mar 15 17:01:41 CET 2004 +# +use integer; +use strict; + +#** @param $_[0] "config.ps", "config" or "pdftex.cfg" etc. +#** @param $_[1] argument of --progname +#** @param $_[2] argument of --format +#** @return the absoulte version of $_[0] -- or relative if in current dir +sub get_absname($$$) { + my $confrel=$_[0]; $confrel=~y@\\@/@; + my $confabs=$confrel; + if (substr($confrel,0,1)ne'/') { + if (index($confrel,'/')==-1 and (-f $confrel)) { # in current dir + return "./$confrel"; + } + # Dat: need to append $PWD to: 0>index($confrel,'/') and (-f$confrel + # vvv $confrel and $_[1] are assumed not to contain weird characters + my $cmd="kpsewhich --must-exist --progname=$_[1] --format=\"$_[2]\" -- \"$confrel\" 2>&1"; + $confabs=qx($cmd); + chomp $confabs; + } + # Dat: $confabs might begin with `./' + (length($confabs)<length($confrel)-1 + # or substr($confabs,-length($confrel)-1,1) ne "/" + # or substr($confabs,-length($confrel)) ne $confrel # $confrel may contain `..' + or !-f $confabs) ? undef : $confabs +} + +sub romannumeral($) { + my $N=$_[0]+0; + my $ret=""; + if ($N>0) { + if ($N>=1000) { $ret="m"x($N%1000); $N=$N%1000 } + if ($N>=900) { $ret.="cm"; $N-=900 } + if ($N>=500) { $ret.="d"; $N-=500 } + if ($N>=400) { $ret.="cd"; $N-=400 } + while ($N>=100) { $ret.="c"; $N-=100 } + if ($N>=90) { $ret.="xc"; $N-=90 } + if ($N>=50) { $ret.="l"; $N-=50 } + if ($N>=40) { $ret.="xl"; $N-=40 } + while ($N>=10) { $ret.="x"; $N-=10 } + if ($N>=9) { $ret.="ix"; $N-=9 } + if ($N>=5) { $ret.="v"; $N-=5 } + if ($N>=4) { $ret.="iv"; $N-=4 } + while ($N>=1) { $ret.="i"; $N-=1 } + } + $ret +} + +my $destdir='CDfiles'; +my $default_D="\\documentclass{article}\n\n"; +my $default_L="\\usepackage[latin2]{inputenc} +\\usepackage[T1]{fontenc} +\\usepackage[magyar]{babel}\n"; +my $default_B="\n\\begin{document}\n\n"; +my $default_E="\n\\end{document}\n"; + +my %to_coco=('0 '=>'p ','c '=>'< ','o '=>'> ','2 '=>' '); +my %to_class=('f '=>'F','v '=>'F','f!'=>'F','v!'=>'F','d '=>'D', + 'l '=>'L','p '=>'P','t '=>'P','b '=>'B','< '=>'C','> '=>'C','x '=>'C', + ' '=>'C','e '=>'E',"\n\n"=>'Z','w '=>'C','% '=>'C','s '=>'C'); + +my %cleanup_files; +sub cleanup() { while (my($k,$v)=each%cleanup_files) { unlink $k if $v!=0 } } +$SIG{INT}=$SIG{TERM}=$SIG{HUP}=sub { cleanup; exit 1 }; +END { cleanup } + +my %had_files; # $had_files{$filename}++ +sub do_code($$$) { + my($texfn,$lineno,$destfn)=@_; + die if $lineno<1; + my $texabs=get_absname($texfn,"latex","tex"); # adds .tex extension (but not needed) + die "$0: .tex file not found: $texfn\n" if !defined $texabs; + die unless open F, "< $texabs"; + if (exists $had_files{$destfn}) { + if ($destfn=~s@^((?:(?:\d+|[a-zA-Z])_)?(?:\d+|[a-zA-Z]{1,5}))([_.])@$2@) { + # vvv change `1_2_foo.tex' to `1_2ii_foo.tex'. It won't conflict with + # test (1) + $destfn=$1.romannumeral(++$had_files{$1.$destfn}).$destfn; + die if exists $had_files{$destfn}; + } else { + die "$0: multiple target file: $destfn ($texfn:$.)\n"; + } + } else { + $had_files{$destfn}=1 + } + $cleanup_files{"$destdir/$destfn"}++; + die unless open KI, "> $destdir/$destfn"; + my $S; + my $L=$lineno; + while ($L-->0) { die "$0: file too short\n" if !defined($S=<F>) } + # Dat: now $S is the line of the original $lineno + chomp $S; + die "$0: not a code environment ($S) at $texfn:$lineno.\nMaybe wrong \\input{} or \\include{}?\n" + if $S!~m@\\begin{(pelda|peldak|kod|code)}(.*)@; + my $currenvir=$1; + $S=$2; $S=~s@[ \t\r\n]+\Z(?!\n)@@; # Dat: LaTeX also ignores this + my $going_p=1; + my %had_from_class; + print "Dumping env $currenvir from $texfn:$lineno to $destdir/$destfn\n"; + if ($currenvir eq 'kod' or $currenvir eq 'pelda') { + # Dat: kod, pelda and peldak are legacy environments from lakk + die if !print KI $default_D.$default_L.$default_B; + while ($going_p) { + if (0==length$S) { + die "$0: unexpected EOF\n" if !defined($S=<F>); + $going_p=$currenvir eq 'kod' ? $S!~s@\\end\{kod\}.*@@s : $S!~s@\\end\{pelda\}.*@@s; + last if !$going_p and 0==length($S); + chomp $S; + } + die if !print KI "$S\n"; + $S=""; + } + die if !print KI $default_E; + } elsif ($currenvir eq 'code') { + my $oldclass='F'; + while (1) { + if (0==length$S) { + die "$0: unexpected EOF\n" if !defined($S=<F>); + chomp $S; + $going_p=$S!~s@\\end\{code\}.*@@s; + $S="\n\n" if !$going_p and 0==length($S); + } + if (length($S)==0) { $S=" " } + elsif (length($S)==1) { $S.=" " } + do_end: + my $coco=substr($S,0,2); # code command + $S=substr($S,2); + ## print"[$coco][$S]\n"; + $coco=$to_coco{$coco} if exists $to_coco{$coco}; + my $curclass; + die "$0: unknown code command `$coco'\n" if !defined($curclass=$to_class{$coco}); + my $oldclass0=$oldclass; + while ($oldclass ne $curclass) { + if ($oldclass eq 'F') { + $oldclass='G'; + } elsif ($oldclass eq 'G') { + $oldclass='D'; + } elsif ($oldclass eq 'D') { + die if !exists $had_from_class{'D'} and !print KI $default_D; + $oldclass='L'; + } elsif ($oldclass eq 'L') { + die if !exists $had_from_class{'L'} and !print KI $default_L; + $oldclass='P'; + } elsif ($oldclass eq 'P') { + $oldclass='B'; + } elsif ($oldclass eq 'B') { + die if !exists $had_from_class{'B'} and !print KI $default_B; + $oldclass='C'; + } elsif ($oldclass eq 'C') { + $oldclass='E'; + } elsif ($oldclass eq 'E') { + die if !exists $had_from_class{'E'} and !print KI $default_E; + $oldclass='Z'; + } elsif ($oldclass eq 'Z') { + die "cannot move from class $oldclass0 to $curclass\n"; + } + } + ## print "($curclass)($coco)($S)\n"; + if ($curclass eq 'F') { + die "$0: inconsistent filename: $destfn\n" if length($destfn)<length($S) + or substr($destfn,length($destfn)-length$S) ne $S; # test (1) + if ($coco eq 'v!' or $coco eq 'v ') { $oldclass='C'; $had_from_class{'E'}=1 } + } elsif ($coco eq '> ' or $coco eq '% ' or $coco eq 's ') { + } elsif ($curclass eq 'D' or $curclass eq 'L' or $curclass eq 'P' + or $curclass eq 'B' or $curclass eq 'E' or $curclass eq 'C') { + die if !print KI "$S\n"; + $had_from_class{$curclass}=1; + } elsif ($curclass eq 'Z') { + last + } else { die } + if (!$going_p) { $S="\n\n"; goto do_end } + $S=""; + } + } elsif ($currenvir eq 'peldak') { + die if !print KI $default_D.$default_L.$default_B; + if (!length$S) { $S="" if !defined($S=<F>) } + die "$0: opening brace expected, got: $S ($.)\n" if substr($S,0,1) ne '{'; + $S=substr($S,1); + my $depth=1; + while (1) { + ##print "A$depth($S)\n"; + if ($depth!=0) { # skip to-document-Sample part + $S="" if substr($S,0,1)eq'%'; + my $T=$S; $S=""; + my $C; + while ($T=~m@\G(\\.?|[%{}]|[^\\%{}]+)@sg) { + if ($depth==0) { $S.=$1 } + elsif ('%'eq($C=substr$1,0,1)) { last } + elsif ($C eq '{') { $depth++ } + elsif ($C eq '}') { $depth-- } + } + if ($depth==0 and 0!=length$S) { + die if !print KI "$S\n"; + } + } else { + die if !print KI "$S\n"; + } + last if !$going_p; + die "$0: unexpected EOF\n" if !defined($S=<F>); + chomp $S; + $going_p=$S!~s@\\end\{peldak\}.*@@s; + last if !$going_p and 0==length($S); + } + die if !print KI $default_E; + } else { die } + die unless close KI; + die unless close F; + $cleanup_files{"$destdir/$destfn"}--; +} + +my $gendepth=0; +#** @param #_[1] bool: must exist? +sub do_aux($$); +sub do_aux($$) { + no strict 'refs'; + my $auxfn=$_[0]; + my $auxabs=get_absname($auxfn,"latex","tex"); + if (!defined $auxabs) { + die "$0: .aux file not found: $auxfn\n" if $_[1]; + return + } + my $F=\*{'FILE'.$gendepth++}; + die unless open $F, "< $auxfn"; + print "Processing $auxfn\n"; + while (<$F>) { + if (/^\\\@gobble\{code:.*\}/) { + die "$0: syntax error ($.)\n" if !/^\\\@gobble\{code:([^:\}]+):(\d+):([^:\}]+)\}$/; + do_code($1,$2+0,$3); + } elsif (/^\\\@gobble\{(cd[dlbe]):(.*)\}/) { + my $ftype=uc($1); + die "$0: cannot open $ftype file: $2: $!\n" unless open CDL, "< $2"; + print "Using $ftype file: $2\n"; + my $S=join('',<CDL>); + $S=~s@\A[\n\r]+@@; + $S=~s@\s+\Z(?!\n)@\n@; + ## die $S; + if ($ftype eq 'CDD') { $default_D="$S\n" } + elsif ($ftype eq 'CDL') { $default_L=$S } + elsif ($ftype eq 'CDB') { $default_B="$S\n" } + elsif ($ftype eq 'CDE') { $default_E=$S } + else { die } + die unless close CDL; + } elsif (/^\\\@input\{/) { + die "$0: syntax error ($.)\n" if !/^\\\@input\{([^}]+)\}$/; + do_aux($1,0); + } + } + die unless close $F; + $gendepth--; +} + +die "Usage: $0 <jobname>[.tex|.aux]\n" if @ARGV!=1; +my $fn=$ARGV[0]; +$fn=~s@[.](tex|aux)\Z(?!\n)@@; # Imp: foo.bar.log? + +select STDERR; $|=1; select STDOUT; $|=1; +if (-e $destdir) { + print STDERR "warning: destination dir exists: $destdir\n" +} +mkdir $destdir; +die unless -d $destdir; +do_aux "$ARGV[0].aux", 1; + +__END__ |