summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorReinhard Kotucha <reinhard.kotucha@web.de>2006-11-25 04:26:32 +0000
committerReinhard Kotucha <reinhard.kotucha@web.de>2006-11-25 04:26:32 +0000
commit82db8f99deb2aff5f2ccc4f896b7431d93147fa7 (patch)
treeed19c96064a701aa73b1d6dd6f973df09e408369 /Master/texmf-dist
parentec573a613cbc9a1c6d7f9d9497a8b9dcd5312b42 (diff)
update shapepar.
git-svn-id: svn://tug.org/texlive/trunk@2523 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/Canflagshape.def32
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/README.shapepar20
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/dropshape.def41
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/shapepar.ltx140
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/shapepar.pdfbin198422 -> 178792 bytes
-rw-r--r--Master/texmf-dist/doc/generic/shapepar/triangleshapes.def45
-rw-r--r--Master/texmf-dist/tex/generic/shapepar/shapepar.sty423
-rw-r--r--Master/texmf-dist/tpm/shapepar.tpm8
8 files changed, 330 insertions, 379 deletions
diff --git a/Master/texmf-dist/doc/generic/shapepar/Canflagshape.def b/Master/texmf-dist/doc/generic/shapepar/Canflagshape.def
index 114014b60cc..1b76c6ea381 100644
--- a/Master/texmf-dist/doc/generic/shapepar/Canflagshape.def
+++ b/Master/texmf-dist/doc/generic/shapepar/Canflagshape.def
@@ -9,22 +9,22 @@
{6.250} b{27.000} t{30.160}{3.680} b{37.000}\\
{7.300} t{27.217}{1.654} t{29.600}{4.800} t{35.128}{1.654}\\
{7.400} t{27.238}{1.812} j t{29.050}{5.900} j t{34.950}{1.812}\\
-{10.450} b{24.500} t{27.869}{8.262} b{39.500}\\
-{11.800} b{19.900} t{23.984}{1.768} t{28.148}{7.703} t{38.248}{1.768} b{44.100}\\
-{12.150} t{20.005}{2.651} t{23.850}{2.227} t{28.221}{7.559} t{37.923}{2.227} t{41.344}{2.651}\\
-{12.200} t{20.021}{3.029} j t{23.050}{3.073} t{28.231}{7.538} t{37.877}{3.073} j t{40.950}{3.029}\\
-{13.500} t{20.412}{6.917} t{28.500}{7.000} t{36.671}{6.917}\\
-{13.900} t{20.533}{7.167} j t{27.700}{8.600} j t{36.300}{7.167}\\
-{15.450} t{21.000}{22.000}\\
-{16.000} t{21.000}{22.000}\\
-{17.000} t{19.550}{24.900}\\
-{22.050} t{25.900}{12.200}\\
-{22.600} t{25.900}{12.200}\\
-{23.550} t{25.489}{5.961} s t{31.450}{1.100} s t{32.550}{5.961}\\
-{24.000} t{25.295}{2.980} t{31.600}{0.800} t{35.725}{2.980}\\
-{24.450} e{25.100} t{31.593}{0.815} e{38.900}\\
-{30.000} t{31.500}{1.000}\\
-{30.000} e{32.0}\\
+{10.45} b{24.500} t{27.869}{8.262} b{39.500}\\
+{11.80} b{19.900} t{23.984}{1.768} t{28.148}{7.703} t{38.248}{1.768} b{44.100}\\
+{12.15} t{20.005}{2.651} t{23.850}{2.227} t{28.221}{7.559} t{37.923}{2.227} t{41.344}{2.651}\\
+{12.20} t{20.021}{3.029} j t{23.050}{3.073} t{28.231}{7.538} t{37.877}{3.073} j t{40.950}{3.029}\\
+{13.50} t{20.412}{6.917} t{28.500}{7.000} t{36.671}{6.917}\\
+{13.90} t{20.533}{7.167} j t{27.700}{8.600} j t{36.300}{7.167}\\
+{15.45} t{21.000}{22.000}\\
+{16.00} t{21.000}{22.000}\\
+{17.00} t{19.550}{24.900}\\
+{22.05} t{25.900}{12.200}\\
+{22.60} t{25.900}{12.200}\\
+{23.55} t{25.489}{5.961} s t{31.450}{1.100} s t{32.550}{5.961}\\
+{24.00} t{25.295}{2.980} t{31.600}{0.800} t{35.725}{2.980}\\
+{24.45} e{25.100} t{31.593}{0.815} e{38.900}\\
+{30.00} t{31.500}{1.000}\\
+{30.00} e{32.0}\\
%
{0}b{48}\\
{0}t{48}{16}\\
diff --git a/Master/texmf-dist/doc/generic/shapepar/README.shapepar b/Master/texmf-dist/doc/generic/shapepar/README.shapepar
index cb0322b03a1..4c95814282a 100644
--- a/Master/texmf-dist/doc/generic/shapepar/README.shapepar
+++ b/Master/texmf-dist/doc/generic/shapepar/README.shapepar
@@ -3,16 +3,20 @@ shapepar.sty by Donald Arseneau.
\shapepar: a macro to typeset paragraphs in a specific shape. The
size is adjusted automatically so that the entire shape is filled
with text. There can be no displayed math, and no "\vadjust"
-material (no "\vspace"). These macros work for both LaTeX and plain
+material (no "\vspace"). These macros work for both LaTeX and Plain
TeX. For LaTeX, specify \usepackage{shapepar}, or for Plain,
\input shapepar.sty.
Contents:
-README.shapepar this file
-shapepar.sty macro definitions (for LaTeX or Plain TeX)
-shapepar.ltx manual for shapepar (run latex shapepar.ltx)
-Canflagshape.def Canadian flag shape definition
-TeXshape.def \TeX\ shape definition
-candleshape.def burning candle shape definition (Timothy C. Burt)
-proshap.py shape generator by Manuel Gutierrez Algaba
+README.shapepar this file
+shapepar.sty macro definitions (for LaTeX or Plain TeX)
+shapepar.ltx manual for shapepar (run latex shapepar.ltx)
+shapepar.pdf the processed manual
+Canflagshape.def Canadian flag shape definition
+TeXshape.def TeX shape definition
+candleshape.def burning candle shape definition (Timothy C. Burt)
+dropshape.def rain drop shapes
+triangleshapes.def triangles
+proshap.py shape generator by Manuel Gutierrez Algaba
+
diff --git a/Master/texmf-dist/doc/generic/shapepar/dropshape.def b/Master/texmf-dist/doc/generic/shapepar/dropshape.def
new file mode 100644
index 00000000000..3694fdc6d41
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/shapepar/dropshape.def
@@ -0,0 +1,41 @@
+% from Gerhard A. Bachmaier (gerhard.bachmaier@meduni-graz.at)
+%
+% drops in two orientations
+%
+% version June 21th, 2006
+
+\def\dropshape{%
+{0.0}%
+{0.0}b{0}\\%
+{0.00}t{0}{0}
+{0.550}t{-0.433}{0.866}\\%
+{0.671}t{-0.483}{0.966}\\%
+{0.800}t{-0.500}{1.000}\\%
+{0.929}t{-0.483}{0.966}\\%
+{1.050}t{-0.433}{0.866}\\%
+{1.154}t{-0.354}{0.707}\\%
+{1.233}t{-0.250}{0.500}\\%
+{1.283}t{-0.129}{0.259}\\%
+{1.3}e{0}
+}
+\def\droppar#1{\Shapepar\dropshape #1\par}
+
+
+\def\dropupshape{%
+{0.0}%
+{0.0}b{0}\\%
+{0.017}t{-0.129}{0.259}\\%
+{0.067}t{-0.250}{0.500}\\%
+{0.146}t{-0.354}{0.707}\\%
+{0.250}t{-0.433}{0.866}\\%
+{0.371}t{-0.483}{0.966}\\%
+{0.500}t{-0.500}{1.000}\\%
+{0.629}t{-0.483}{0.966}\\%
+{0.750}t{-0.433}{0.866}\\%
+{1.3}t{0}{0}\\%
+{1.3}e{0}
+}
+\def\dropuppar#1{\Shapepar\dropupshape #1\par}
+
+\endinput
+
diff --git a/Master/texmf-dist/doc/generic/shapepar/shapepar.ltx b/Master/texmf-dist/doc/generic/shapepar/shapepar.ltx
index a583ad0d4a5..59919d795e6 100644
--- a/Master/texmf-dist/doc/generic/shapepar/shapepar.ltx
+++ b/Master/texmf-dist/doc/generic/shapepar/shapepar.ltx
@@ -1,14 +1,14 @@
% shapepar.ltx Manual for shapepar.sty
%
-% Version 2.0 (Dec 2002)
+% Version 2.1 (September 2006)
%
-% Copyright (c) 1993,2002 Donald Arseneau
+% Copyright (c) 1993,2002,2006 Donald Arseneau
% These definitions may be freely transmitted, reproduced, or modified
% provided that any modifications are clearly identified and this notice
% is left intact.
%
-\documentclass[draft]{article}
+\documentclass{article}
\usepackage{shapepar}
@@ -18,6 +18,8 @@
\renewcommand{\floatpagefraction}{.66}
\renewcommand{\dbltopfraction}{.66}
\renewcommand{\dblfloatpagefraction}{.66}
+
+\sloppy
\raggedbottom
\addtolength{\topskip}{0pt plus 8pt}
@@ -74,7 +76,7 @@
\title{shapepar.sty}
\author{Donald Arseneau\\ Vancouver, Canada\\ asnd@triumf.ca}
-\date{v 2.0 \ Dec 2002}
+\date{v 2.1 \ September 2006}
\begin{document}
@@ -123,7 +125,7 @@ intended for cards, invitations etc., not for whole books! Although
short paragraphs process much faster, only long paragraphs accurately
fill complex shapes.
-These macros work for both \LaTeX\ and plain \TeX. For \LaTeX, specify
+These macros work for both \LaTeX\ and Plain \TeX. For \LaTeX, specify
"\usepackage""{shapepar}", or for Plain, "\input" "shapepar.sty".
The command "\shapepar" should be used at the beginning of a paragraph,
@@ -262,8 +264,8 @@ will usually be needed to position a shaped paragraph precisely.
\section{Shapes}
-There are some shapes predefined in shapepar.sty (square, circle,
-circle-with-hole, diamond, heart, star and hex-nut) which are used as
+There are some shapes predefined in shapepar.sty (square, rectangle, circle,
+circle-with-hole, diamond, heart, star, hexagon and hex-nut) which are used as
examples in the instructions below. Each of these shapes is stored in
a macro, and there is a command to use that shape:
\begin{flushleft}
@@ -275,18 +277,23 @@ a macro, and there is a command to use that shape:
"\diamondshape" & "\diamondpar" & Rhomboid `diamond' ($\diamondsuit$)\\
"\heartshape" & "\heartpar" & Heart (symbolic shape $\heartsuit$)\\
"\starshape" & "\starpar" & Five-point star\\
-"\nutshape" & "\nutpar" & Nut for bolt (hexagon with circular hole)
+"\hexagonshape"&"\hexagonpar"& Hexagon\\
+"\nutshape" & "\nutpar" & Nut for bolt (hexagon with circular hole)\\
+\multicolumn{2}{l}{"\rectangleshape"\texttt{\string{<height>\string}\string{<width>\string}}} &
+ Rectangle shapes
\end{tabular}
\end{flushleft}
For example, "\heartpar{"<text>"}" performs
"\shapepar" "{\heartshape}" <text>"\ \ $""\heartsuit""$""\par"
-(ending the text with a heart symbol).
+(ending the text with a heart symbol).
More shape definitions are provided in separate files named
$*$shape.def. Look on your disk to be sure, but the
list should include:
\begin{flushleft}
\begin{tabular}{ll}
+dropshape & Rain drop\\
+triangleshapes & Triangles in different orientations\\
candleshape & A burning candle\\
TeXshape & The \TeX\ logo\\
Canflagshape & The Canadian flag
@@ -299,55 +306,6 @@ Please contribute your shapes!
Although defining shapes by hand can be difficult, there are
programs to aid you.
-\subsection{proshap.py by Man\-uel Gu\-ti\-er\-rez Al\-ga\-ba}
-\gdef\bassshape{{9.4}{0}b{9.4}
-\\{0}t{7.6}{6.8}
-\\{0.8}t{5.2}{11.6}
-\\{1.6}t{4.4}{13.2}
-\\{2.4}t{4.0}{14.0}
-\\{3.2}t{3.6}{4.933333}st{8.533333}{4.933333}st{13.46666}{4.933333}
-\\{4.0}t{3.6}{2.4}t{9.6}{2.8}t{16.4}{2.4}
-\\{6.4}t{3.6}{2.0}t{10.0}{2.0}t{16.8}{2.0}
-\\{8.8}t{3.6}{2.4}t{9.6}{1.4}st{11.0}{1.4}t{16.4}{2.0}
-\\{11.2}t{3.6}{3.4}jt{7.0}{3.4}t{11.6}{3.4}jt{15.0}{3.4}
-\\{12.8}t{4.0}{6.0}t{12.0}{6.0}
-\\{14.4}t{4.4}{5.2}t{12.4}{5.2}
-\\{16.0}t{4.8}{6.0}jt{10.8}{6.0}
-\\{16.8}t{5.2}{5.6}st{10.8}{5.6}
-\\{17.6}t{5.6}{0.8}t{14.8}{1.2}
-\\{19.2}t{6.0}{2.4}t{12.0}{3.6}
-\\{20.8}t{6.4}{4.4}jt{10.8}{4.4}
-\\{22.4}e{9.4}}
-
-
-\shapepar\bassshape
-proshap.py (ver 1.1) is a python script written by Man\-uel
-Gu\-ti\-er\-rez Al\-ga\-ba to produce shape definitions from rough
-`ascii art'. There is no instruction manual, so here are Donald
-Arseneau's observations. There is not much of a user interface; look
-in proshap.py (which is a plain text file) and see how the various
-`test' shapes are defined (note the triple-double quotes). Choose
-one of them, or add a new one, then change the line `test = test3' to select
-the desired picture. Execute `python proshap.py' which will output a
-definition of "\bassshape" to the screen and to the file `result.tex'.
-The goul\-ish face you see here is the test3 shape. You should be
-aware that the characters in the ascii input are treated as square,
-even though they are taller than they are wide, so the output shape
-specification will be taller and thinner than the input text. There
-also seems to be a problem with all `bottoms': flat bottoms of text
-blocks and of holes are expanded downwards to end at a point. Compare
-this face to the original face in proshap.py. Warning: These
-instructions and observations are probably wrong; the author does not
-program in python so can't even read the code properly. For now, look
-for proshap.py bundled with shapepar.sty.
-
-\vspace{0pt plus 5cm}
-\penalty 0
-\vspace{0pt plus -5cm}
-\vspace{5cm}
-\penalty 9999
-\vspace{-5cm}
-
\subsection{ShapePatch by Christian Gollwitzer}
\def\faceshape{%
@@ -444,12 +402,10 @@ convert it to a shapepar shape definition, either by manually running
fig2dev (a component of transfig), or by choosing `Export/Shape' in
Xfig. Its odd name is indicative of its implementation: it is an
upgrade or `patch' to both the Xfig program and the transfig tool-set.
-ShapePatch can be found on \textsc{ctan} under
-"graphics/""trans""fig-shape""patch", and includes instructions
+ShapePatch is included with transfig, or can be found on \textsc{ctan} under
+"graphics/""trans""fig-shape""patch", which includes instructions
(\textsc{readme}) and sample shapes besides the patch itself. This
-smiley face is one of the sample shapes. In the future, the
-ShapePatch utility will be included in transfig, so there will be no
-need to install the patch. Besides enabling a graphical utility
+smiley face is one of the sample shapes. Besides enabling a graphical utility
(Xfig) to produce shapepar specifications, the ShapePatch upgrade
opens up great libraries of existing Fig clip-art to be used for
paragraph shapes. For example, a Canadian flag taken from the Xfig
@@ -457,8 +413,64 @@ flag library is one of the examples provided with ShapePatch, for
comparison with the hand-coded one bundled with shapepar.sty. (I
prefer my own version because there is an error in the maple leaf
shape on the Xfig flag library version. The error is not the fault of
-ShapePatch, but ShapePatch faithfully reproduces the faulty shape.)
+ShapePatch, but ShapePatch faithfully reproduces the faulty shape!)
+
+
+\vspace{0pt plus 5cm}
+\penalty 0
+\vspace{0pt plus -5cm}
+\vspace{5cm}
+\penalty 9999
+\vspace{-5cm}
+\subsection{proshap.py by Man\-uel Gu\-ti\-er\-rez Al\-ga\-ba}
+\gdef\bassshape{{9.4}{0}b{9.4}
+\\{0}t{7.6}{6.8}
+\\{0.8}t{5.2}{11.6}
+\\{1.6}t{4.4}{13.2}
+\\{2.4}t{4.0}{14.0}
+\\{3.2}t{3.6}{4.933333}st{8.533333}{4.933333}st{13.46666}{4.933333}
+\\{4.0}t{3.6}{2.4}t{9.6}{2.8}t{16.4}{2.4}
+\\{6.4}t{3.6}{2.0}t{10.0}{2.0}t{16.8}{2.0}
+\\{8.8}t{3.6}{2.4}t{9.6}{1.4}st{11.0}{1.4}t{16.4}{2.0}
+\\{11.2}t{3.6}{3.4}jt{7.0}{3.4}t{11.6}{3.4}jt{15.0}{3.4}
+\\{12.8}t{4.0}{6.0}t{12.0}{6.0}
+\\{14.4}t{4.4}{5.2}t{12.4}{5.2}
+\\{16.0}t{4.8}{6.0}jt{10.8}{6.0}
+\\{16.8}t{5.2}{5.6}st{10.8}{5.6}
+\\{17.6}t{5.6}{0.8}t{14.8}{1.2}
+\\{19.2}t{6.0}{2.4}t{12.0}{3.6}
+\\{20.8}t{6.4}{4.4}jt{10.8}{4.4}
+\\{22.4}e{9.4}}
+
+
+\shapepar\bassshape
+proshap.py (ver 1.1) is a python script written by Man\-uel
+Gu\-ti\-er\-rez Al\-ga\-ba to produce shape definitions from rough
+`ascii art'. There is no instruction manual, so here are Donald
+Arseneau's observations. There is not much of a user interface; look
+in proshap.py (which is a plain text file) and see how the various
+`test' shapes are defined (note the triple-double quotes). Choose
+one of them, or add a new one, then change the line `test = test3' to select
+the desired picture. Execute `python proshap.py' which will output a
+definition of "\bassshape" to the screen and to the file `result.tex'.
+The goul\-ish face you see here is the test3 shape. You should be
+aware that the characters in the ascii input are treated as square,
+even though they are taller than they are wide, so the output shape
+specification will be taller and thinner than the input text. There
+also seems to be a problem with all `bottoms': flat bottoms of text
+blocks and of holes are expanded downwards to end at a point. Compare
+this face to the original face in proshap.py. Warning: These
+instructions and observations are probably wrong; the author does not
+program in python so can't even read the code properly. For now, look
+for proshap.py bundled with shapepar.sty.
+
+\vspace{0pt plus 5cm}
+\penalty 0
+\vspace{0pt plus -5cm}
+\vspace{5cm}
+\penalty 9999
+\vspace{-5cm}
diff --git a/Master/texmf-dist/doc/generic/shapepar/shapepar.pdf b/Master/texmf-dist/doc/generic/shapepar/shapepar.pdf
index 9af7d855079..a04ab9b774f 100644
--- a/Master/texmf-dist/doc/generic/shapepar/shapepar.pdf
+++ b/Master/texmf-dist/doc/generic/shapepar/shapepar.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/shapepar/triangleshapes.def b/Master/texmf-dist/doc/generic/shapepar/triangleshapes.def
new file mode 100644
index 00000000000..914b9f9f1a6
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/shapepar/triangleshapes.def
@@ -0,0 +1,45 @@
+% from Gerhard A. Bachmaier (gerhard.bachmaier@meduni-graz.at)
+%
+% triangle shapes in four orientaions:
+% triangleup, triangledown, triangleright, triangleleft.
+% version June 21th, 2006
+
+\def\triangleupshape{%
+{0}%
+{0}b{0}\\%
+{8.66}t{-5}{10}\\%
+{17.32}t{-10}{20}\\%
+{17.32}e{0}%
+}
+\def\triangleuppar#1{\Shapepar\triangleupshape $\bigtriangleup$ \ignorespaces #1\par}
+
+\def\triangledownshape{%
+{0}%
+{0}b{0}\\%
+{0}t{-10}{20}\\%
+{8.66}t{-5}{10}\\%
+{17.32}e{0}%
+}
+\def\triangledownpar#1{\Shapepar\triangledownshape #1\unskip\ $\bigtriangledown$\par}
+
+\def\triangleleftshape{%
+{0}%
+{0}b{8.66}\\%
+{0}t{8.66}{0}\\%
+{10}t{-8.66}{17.32}\\%
+{20}t{8.66}{0}\\%
+{20}e{8.66}%
+}
+\def\triangleleftpar#1{\Shapepar\triangleleftshape
+ $\triangleleft$ \ignorespaces #1\unskip\ $\triangleleft$\par}
+
+\def\trianglerightshape{%
+{0}%
+{0}b{-8.66}\\%
+{0}t{-8.66}{0}\\%
+{10}t{-8.66}{17.32}\\%
+{20}t{-8.66}{0}\\%
+{20}e{-8.66}%
+}
+\def\trianglerightpar#1{\Shapepar\trianglerightshape
+ $\triangleright$ \ignorespaces #1\unskip\ $\triangleright$\par}
diff --git a/Master/texmf-dist/tex/generic/shapepar/shapepar.sty b/Master/texmf-dist/tex/generic/shapepar/shapepar.sty
index c64fc6dccdc..cef41e5b84f 100644
--- a/Master/texmf-dist/tex/generic/shapepar/shapepar.sty
+++ b/Master/texmf-dist/tex/generic/shapepar/shapepar.sty
@@ -2,9 +2,9 @@
%
% Typeset paragraphs in various shapes.
%
-% Version 2.0 (Dec 2002)
+% Version 2.1 (Sept 2006)
%
-% Copyright (c) 1993,2002 Donald Arseneau
+% Copyright (c) 1993,2002,2006 Donald Arseneau
% These definitions may be freely transmitted, reproduced, or modified
% provided that any modifications are clearly identified and this notice
% is left intact.
@@ -12,11 +12,11 @@
% \shapepar: a macro to typeset paragraphs in a specific shape. The
% size is adjusted automatically so that the entire shape is filled
% with text. There can be no displayed math, and no "\vadjust"
-% material (no "\vspace"). These macros work for both LaTeX and Plain
-% TeX. For LaTeX, specify \usepackage{shapepar}, or for Plain,
+% material (no "\vspace"). These macros work for both LaTeX and plain
+% TeX. For LaTeX, specify \usepackage{shapepar}, or for either,
% \input shapepar.sty . Configuration parameters are set just
% below here. Instructions for use are given in the LaTeX document
-% shapepar.tex; a short summary is given after \endinput below.
+% shapepar.ltx; a short summary is given after \endinput below.
%
% ToDo:
% Vertical correction for character height applied to shape.
@@ -31,10 +31,10 @@
\edef\squarepar
{\catcode\string `\string @ \the\catcode `\@
\catcode\string `\string $ \the\catcode `$
- \catcode\string `\string * \the\catcode `\*
+ \catcode\string `\string ! \the\catcode `\!
\catcode\string `\string ^ \the\catcode `\^}
\catcode\string`\@=11 \catcode\string`\$=11
-\catcode\string`\^=14 \catcode\string`\*=10
+\catcode\string`\^=14 \catcode\string`\!=10
% ------ Configuration parameters ------
@@ -64,8 +64,8 @@
% --------------------------------------
\ifx\DeclareOption\undefined\else
- \ProvidesPackage{shapepar}[2002/12/30 v 2.0, Shaped paragraphs]
- \DeclareOption{quiet}{\catcode`\*=14}
+ \ProvidesPackage{shapepar}[2006/09/11 v 2.1, Shaped paragraphs]
+ \DeclareOption{quiet}{\catcode`\!=14}
\DeclareOption{noisy}{\catcode`\^=10}
\ProcessOptions
@@ -172,8 +172,7 @@
% \spaceskip .333333emplus.8emminus.15em % optimise stretch
\parfillskip\z@ plus\@ne fil
\begingroup
- \linepenalty\@m
- \def\\{\unskip\penalty-200 \hskip1em plus\@m\p@ \penalty-60 }%
+ \linepenalty\@m \let\\\SH@newline
\let\par\SH@endpar \hsize\maxdimen \rightskip\spaceskip
\pretolerance\m@ne \hyphenpenalty 9000 % make discretionaries
\ifx\textwidth\undefined\else \textwidth\hsize
@@ -186,19 +185,22 @@
\def\SH@dm{display-math}
+% Explicit \\ commands insert a marker (kern) that will later preserve a line-break
+\def\SH@newline{\unskip\hfill\kern9sp\break\ignorespaces}
+
\def\SH@endpar{% Insert filler for fixed-scale paragraphs
\ifdim\SH@scale>\z@ \def~{\hfil\null\hfil\null\hfil\null\hfil\null}%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\fi
\xdef\SH@baseset{\noexpand\baselineskip\the\baselineskip \relax}%
\endgraf \endgroup % still inside \vbox and \begingroup
\SH@baseset
- \global\SH@dscale\z@
% get tottext = total length / 256 because total length may be > \maxdimen
\setbox\@tempboxa\box\voidb@x \global\SH@tottext\z@
\SH@sumlines % combine multiple lines -> \@tempboxa; width/256 ->\SH@tottext
-^ \message{total length = 256 times \the\SH@tottext;
-^ \string\baselineskip=\the\baselineskip;
-^ and spec height = \Pointless\spec@height. }%
+^ \message{total text length = \the\wd\@tempboxa, or 256 x \the\SH@tottext;
+^ \string\baselineskip=\the\baselineskip;}%
+^ {\let\\\relax\message{Spec is: \SH@spec}}%
+^ \message{spec height = \Pointless\spec@height. }%
\unskip\unkern\unpenalty\unskip\unkern\unpenalty
\setbox\SH@boxa\box\@tempboxa % all the text
\ifdim\SH@scale>\z@ % for specified fixed scale: only format once
@@ -206,17 +208,23 @@
\else % Automatic scaling. Get a first-guess scale
% Get 1/256 of total segment length into \@tempdima
\@tempdima\z@ \spec@prevpos\z@
-^ {\let\\relax\message{Measure area of spec: \SH@spec}}%
\expandafter\SH@measline\SH@spec \\\delimiter
^ \message{Spec area/256 = \Pointless\@tempdima}%
-% scale = 1.02 * sqrt( [text_length/256]*\baselineskip / [spec_area/256] )
- \SH@scale \Pointless\SH@tottext\baselineskip
+% scale = 1.01 * sqrt( [text_length/256]*\baselineskip / [spec_area/256] )
+% Pull out some large factors from square-root to extend numeric range
+% available for division.
+ \SH@dscale=1.01\p@ % optimize
+ \loop \if\AbsVal\@tempdima<\p@
+ \multiply\@tempdima\@cclvi \multiply\SH@dscale\sixt@@n
+ \repeat
+ \SH@scale=\Pointless\SH@tottext\baselineskip
\fpdivide\SH@scale\@tempdima
\sqrtofdim\SH@scale
- \SH@scale 1.0\SH@scale % optimize
+ \SH@scale=\Pointless\SH@dscale\SH@scale
^ \message{Initial scale = \the\SH@scale}%
\global\SH@ntries\z@ % will count maximum \ScaleMaxTries trial scales
\fi
+ \global\SH@dscale\z@
\SH@parpars \SH@tryparshape}
% Measure the area covered by segments in the shape spec. Accumulate
@@ -232,7 +240,12 @@
\expandafter\SH@measline
\fi {#3}}
-\def\SH@measseg#1t#2#3{%
+% Recursively measure and accumulate widths of text segments on a line.
+% Invoke as \SH@measseg <segments>t\fam\fam, as the "t\fam\fam" serves
+% as an end-marker. All the widths are scaled by a factor \@tempa and
+% added to \@tempdima. (Overwrites \@tempdimb.)
+
+\def\SH@measseg#1t#2#3{% #1 = stuff before "t", #2,#3 = posn,wid
\ifx \fam #3\else
\@tempdimb #3\p@
\advance\@tempdima\@tempa\@tempdimb
@@ -251,8 +264,8 @@
\def\SH@tryparshape{%
\advance\SH@scale\SH@dscale % shift scale factor by delta
^ \message{------------------------------------------------------------------------}%
-* \message{(\the\SH@ntries) Try shape with scale \the\SH@scale. \space
-* (Delta = \Pointless\SH@dscale). \space }%
+! \message{(\the\SH@ntries) Try shape with scale \the\SH@scale. \space
+! (Delta = \Pointless\SH@dscale). \space }%
\spec@incr\baselineskip \fpdivide\spec@incr\SH@scale
\spec@position\spec@height \advance\spec@position-.3\spec@incr % height-delta
\SH@nline\spec@position \divide\SH@nline\spec@incr % number of lines
@@ -366,7 +379,7 @@
\def\SH@updps{% Update parshape with `new' info
^\message{Segment \Pointless\SH@posold, \Pointless\SH@widold}%
\ifdim\SH@widold>\SmallestSegment
-* \message{.}%
+! \message{.}%
\xdef\SH@parshape{\SH@parshape\the\SH@posold\the\SH@widold\space}%
\xdef\SH@lines{\@elt{\the\SH@nline}{\the\SH@posold}{\the\SH@widold}\SH@lines}%
\advance\SH@npslines\@ne
@@ -417,16 +430,16 @@
\advance\SH@npslines\@ne
\parshape\the\SH@npslines\space \SH@parshape \z@ \maxdimen
\advance\SH@npslines\m@ne
-* \message{Formatting. }%
+! \message{Formatting. }%
\noindent \unhcopy\SH@boxa \endgraf
-* \message{Expected \the\SH@npslines\space lines;
-* got \the\prevgraf\space lines}%
+! \message{Expected \the\SH@npslines\space lines;
+! got \the\prevgraf\space lines}%
\ifnum\prevgraf=\SH@npslines % maybe right size; check last line
\ifdim\SH@widseg>\z@ % yes, we can check
\ifnum\SH@ntries<\ScaleMaxTries % safe to screw around with \SH@npslines
\SH@grablast \@tempdima\wd\SH@boxa \advance\@tempdima 20\p@
\ifdim\@tempdima<.8\SH@widseg % final line underfull % optimise
-* \message{but the last line is too empty. }%
+! \message{but the last line is too empty. }%
\advance\SH@npslines\@ne % flag underfullness
\fi\fi\fi\fi
\ifnum\prevgraf=\SH@npslines % right size, done
@@ -487,12 +500,13 @@
\fi}
\def\SH@parpars{%
- \lineskiplimit-99\p@ \linepenalty\thr@@
+ \lineskiplimit-0\p@ \linepenalty\thr@@
\tolerance9999
\ifx\emergencystretch\undefined % TeX2
\rightskip\z@ plus.5emminus.2em % optimise
\else \rightskip\z@skip \emergencystretch 3em % TeX 3
- \fi \pretolerance\m@ne \hbadness\@MM % avoid error messages
+ \fi \pretolerance\m@ne
+ \hbadness\@MM \hfuzz\maxdimen % avoid formatting warning messages
\SH@baseset
}
@@ -500,7 +514,6 @@
\skip@ 1spplus2\p@ minus\p@
\parfillskip.5\maxdimen % this will drag text to the bottom point.
\advance\SH@npslines\@ne
-% \message{Parshape: \parshape\the\SH@npslines\space \SH@parshape 0 .5\maxdimen. }%
\SH@reform % reformat paragraph with new parfillskip
\ifx\SH@usebox\box % boxed \Shapepar: find min pos
\let\@elt\SH@measureh \SH@posold\maxdimen \SH@lines
@@ -509,10 +522,10 @@
\fi
% {\let\@elt\relax \message{SH@lines: \SH@lines. }}%
\SH@nline\m@ne \SH@highline-\@m \SH@lowline\m@ne \let\@elt\SH@restack
-* \message{Restacking.}%
+^ \message{Restacking.}%
% re-stack segments and re-justify lines; put in \vtop or \vbox appropriately
\global\setbox\SH@boxb \ifx\SH@margin\@empty \vbox \else \vtop \fi {%
- \setbox\SH@boxa\vbox{}\leftskip\z@ plus55sp minus5\p@ % optimise
+ \setbox\SH@boxa\vbox{}\leftskip=\z@ plus55sp minus99sp % optimise
\unvbox\SH@boxb
\SH@lines \unvbox\SH@boxa
\ifnum\SH@highline<\SH@lowline
@@ -561,14 +574,15 @@
\def\SH@reform{%
\global\setbox\SH@boxb\vbox\bgroup
-* \message{Reformat paragraph with \string\rightskip = \the\rightskip.}%
+! \message{Reformat paragraph with \string\rightskip = \the\rightskip.}%
\advance\parfillskip-\rightskip \advance\parfillskip-\leftskip
\parshape\the\SH@npslines\space \SH@parshape \z@ .5\maxdimen
%% Maybe use prevdepth from outside, penalty puts \parskip and favors breaks
\ifx\SH@margin\@empty \ifx\SH@usebox\unvbox
\prevdepth\SH@pd \ifdim\SH@pd>-\@m\p@ \penalty-50 \fi
- \fi \fi
- \noindent \unhcopy\SH@boxa \unskip\unskip\unpenalty\strut
+ \fi \fi
+ \noindent \unhcopy\SH@boxa \unskip\unskip\unpenalty
+ \lower\dp\strutbox\hbox{}% depth-only strut (\@finalstrut not defined in plain TeX)
\penalty-\@M\hbox{\kern\maxdimen}\endgraf
\ifnum\prevgraf=\SH@npslines % good, it worked.
\setbox\SH@boxa\lastbox \unskip\unpenalty % remove mongo last box
@@ -686,8 +700,10 @@
\@tempdima\wd\SH@boxa \divide\@tempdima\@cclvi
\global\advance\SH@tottext\@tempdima
\setbox\@tempboxa\hbox{%
- \ifvoid\@tempboxa\else \unhbox\@tempboxa\space \fi
- \unhbox\SH@boxa}%
+ \unhbox\SH@boxa
+ \ifdim\lastkern=9sp \hfill\break \fi
+ \ifvoid\@tempboxa\else \unhbox\@tempboxa \fi
+ }% Repeat until complete:
\expandafter\SH@sumlines
\fi}
@@ -906,7 +922,6 @@
-\newcount\FPD@hi \FPD@hi=67108863
% Approximate Fixed Point Division of two dimensions
% 3.14159/2.71828 = 1.15573
@@ -916,20 +931,35 @@
% as an explicit *integer* string, "123", which is treated as 0.001877
% = 123/65536.) % \@tempcntb is used and altered.
%
-\def\fpdivide#1#2{\let\FPD@nume#1\@tempcntb#2\relax
- \FPD@scale\FPD@scale\FPD@scale\FPD@scale
- \divide#1\@tempcntb}
-
-% Rescale numbers to preserve accuracy. The number 16 is the level of
-% uncertainty. Use a lower power of 2 for more accuracy (2 is most precise).
-% But if you change it, you must change the repetions of \FPD@scale in
-% \fpdivide above: magic_number^repetitions = 65536 (16^4 = 65536).
-%
-\def\FPD@scale{\ifnum\AbsVal\FPD@nume<\FPD@hi
- \multiply\FPD@nume\sixt@@n
- \else
- \divide\@tempcntb\sixt@@n
- \fi}
+\ifx\dimexpr\undefined % Use original TeX's integer \divide
+
+ \def\fpdivide#1#2{\let\FPD@nume#1\@tempcntb#2\relax
+ \FPD@scale\FPD@scale\FPD@scale\FPD@scale
+ \FPD@scale\FPD@scale\FPD@scale\FPD@scale
+ \divide#1\@tempcntb}
+
+ % Rescale numbers to preserve accuracy. The magnum is the level of
+ % uncertainty. Use a lower power of 2 for more accuracy (2 is most precise).
+ % But if you change it, you must change the repetions of \FPD@scale in
+ % \fpdivide above: magic_number^repetitions = 65536 (16^4 = 4^8 = 65536).
+ %
+ \chardef\FPD@magnum=4
+ \newcount\FPD@hi \FPD@hi=\maxdimen \divide\FPD@hi\FPD@magnum
+
+ \def\FPD@scale{%
+ \ifnum\AbsVal\FPD@nume<\FPD@hi
+ \multiply\FPD@nume\FPD@magnum
+ \else
+ \divide\@tempcntb\FPD@magnum
+ \fi}
+
+\else % Else, use eTeX's \dimexpr
+
+ \def\fpdivide#1#2{\@tempcntb#2\relax
+ #1=\dimexpr #1*\p@/\@tempcntb \relax
+ }
+
+\fi
% take absolute value of TeX number or dimension (dimen must be a register)
\def\AbsVal#1{\ifnum#1<\z@-\fi#1}
@@ -955,6 +985,14 @@
}
\def\squarepar#1{\shapepar{\squareshape}#1\par}
+\def\rectangleshape#1#2{% <height> <width>
+ {0}% "center" the left edge... sorry, better use \Shapepar
+ {0}b{0}\\%
+ {0}t{0}{#2}\\%
+ {#1}t{0}{#2}\\%
+ {#1}e{0}%
+}
+
\def\heartshape{%
{20}{0}b{13.32}b{26.68}%
\\{.14}t{10.12}{4.42}t{25.46}{4.42}%
@@ -1028,6 +1066,17 @@
}
\def\nutpar#1{\Shapepar\nutshape #1\par}
+% Just the nut shape with the central hole erased:
+\def\hexagonshape{%
+{0}%
+{0}b{0}\\%
+{0}t{-12.5}{25}\\%
+{21.65}t{-25}{50}\\%
+{43.3}t{-12.5}{25}\\%
+{43.3}e{0}%
+}
+\def\hexagonpar#1{\Shapepar\hexagonshape #1\par}
+
\def\CDlabshape{%
{0}%
{-5.5}b{0}\\%
@@ -1065,256 +1114,54 @@
%-------------------------------------------------------------------
- S H A P E P A R . S T Y -- Instructions
+ S H A P E P A R . S T Y -- Short Instructions
\shapepar is a macro to typeset paragraphs of a specified shape.
-The total size is adjusted automatically so that the entire shape is
-filled with text. This is distinct from the normal \parshape command
-which specifies a shape *and* a size, which may be only partially
-filled, or over-filled, from top to bottom. In a \shapepar there
-can be no displayed math, and no "\vadjust" material, (including
-"\vspace"). \Shapepar (capital S) is just like \shapepar except the
-paragraph is boxed and not centered. Shaping paragraphs this way is a
-slow process, so this is mainly intended for cards, invitations etc.,
-not for whole books! Although short paragraphs process much faster,
-only long paragraphs accurately fill complex shapes.
-
-These macros work for both LaTeX and plain TeX. For LaTeX, specify
-\usepackage{shapepar}, or for either, \input shapepar.sty.
-
-The command \shapepar should be used at the beginning of a paragraph,
-and it applies to the entire paragraph. There is one optional length
-parameter -- a fixed scale, <scale>, and one required parameter -- a
-description of the shape, <shape_spec>.
+
+See shapepar.ltx (or shapepar.pdf etc) for full instructions.
+
+Loading:
+
+plain TeX: \input shapepar.sty
+
+LaTeX: \usepackage{shapepar}
+
+LaTeX package options: [quiet], [noisy]
+
+Usage:
\shapepar [<scale>]{<shape_spec>} Text of the paragraph...
-The text of the paragraph is not literally a *parameter*, so verbatim
-macros will work there.
-
-Ordinarily, the scale is calculated automatically so the pargaraph
-fills the shape. If a scale length is given, then the shape is
-reproduced so one unit of the <shape_spec> equals the <scale>, and
-the shape is filled with whitespace after the paragraph text.
-
-The <shape_spec> parameter is very complex, but there are a few
-shapes predefined as macros in this file: \diamondshape, \heartshape
-and \nutshape, which are used as examples in the instructions below.
-There are also commands to use these shapes: \diamondpar, \squarepar
-and \heartpar; for example, \heartpar begins \shapepar{\heartshape}#1
-so you can use it like:
-
-\heartpar{This paragraph is too short to be recognized as a heart shape.}
-
-The syntax rules for <shape_spec> are very specific, and must be
-followed closely. (In these rules, { } mean explicit braces, [ ]
-denote optional parts, < > surround a keyword that is defined (perhaps
-loosely), and | means "or"; do not type [ ] < > or |, but do type { }.)
-
-<shape_spec> = {<h_center>} <lines>
-
-<lines> = <line_spec> [\\<lines>]
-
-That is, the shape is specified as a single number in braces, followed
-by the specifications for the lines, with the lines separated by \\. The
-final paragraph will have its <h_center> position centered on the page.
-<h_center> is a number (like 10.5) of arbitrary units; whatever units
-are used for lengths and positions in the <lines>, they just need to be
-consistent.
-
-The lines in the spec are not lines of text; nor are they the lines
-that you would use to draw the shape itself. They are horizontal
-scans across the shape at irregular intervals. Curved shapes need
-many scan lines for accurate rendering while simple shapes need only
-a few. To determine the line specifications, start by drawing the
-shape on paper, then draw a series of horizontal lines across it,
-including lines that just touch the top and the bottom of the figure.
-Each line crosses over pieces of the figure in some region. These
-intersections of line and figure define a <line_spec>.
-
-<line_spec> = {<v_pos>} <segment> [ other <segment>s ]
-
-The <v_pos> is the vertical position of the line. Each <line_spec> must
-usually have a position greater than or equal to that of the previous
-line, and with all <v_pos> > -1000. The exception is that between consecutive
-lines relating to completely disconnected parts of the figure the <vpos>
-may decrease (backspacing). Position is measured from top to bottom, and
-always moving down. Each <segment> represents a region where text will
-go in the final paragraph; it is the segment of the horizontal scan line
-that overlaps the body of the figure. There are five types of segment:
-
-<segment> = t{pos}{len} | b{pos} | e{pos} | s | j
-
- b{pos} begin text at a point at horizontal position pos
- e{pos} end text at a point at horizontal position pos
- t{pos}{len} make a block of text at position pos with length len
- s split text (begin whitespace)
- j join two text blocks (end a gap)
-
-The most common type of segment is t (text). The other types are
-degenerate in that they are single points rather than finite segments.
-Types s and j have no explicit position, but they must appear between
-text segments, and those texts should abut; e.g., t{3}{2}st{5}{4}
-(text from 3 to 5 and text from 5 to 9).
-
-Let's jump right into a simple example, and the meanings will be
-clearer. A "diamond" shape can have the four vertices:
-
- (x=1,y=0)
- .
- +---> x
- ! (0,1) . . (2,1)
- !
- V y .
- (1,2)
-
-
-This shape can be exactly specified by just three scan lines passing
-through the vertices. The specification is:
-
-{1}% h_center: x = 1
-{0}b{1}\\% text block begins at point y=0, x=1
-{1}t{0}{2}\\% this scan (at y=1) crosses text (len=2) starting at x=0
-{2}e{1} text block ends at point y=2, x=1
-
-Other specification lines, like
-
-{1.5}t{0.5}{1}\\%
-
-could be inserted, but would make no difference--the shape is
-interpolated linearly between scan lines.
-
-Every block of text must start with a b specifier and end with an e
-spec on some line below. Every segment specified by t must have a
-length greater than zero. If two blocks of text merge to form one (like
-at the notch of a heart shape) there should be a j spec at the point of
-junction. If one block bifurcates (like at the top of a hole in a
-doughnut) there should be an s spec.
-
-Thus, the first line for any valid shape description must consist
-of only b segment descriptors; the last line can only have e type
-descriptors. Although the definition of the units is arbitrary, the
-numbers should range in magnitude from ~.1 - 100 to avoid numeric
-overflows and underflows.
-
-If there are errors in the format of the specification, \shapepar
-might complain with the error message
-
- Shaped Paragraph Error: Error in specification. Check carefully!
-
-At this point you may as well type x or e, as there is very little
-chance that TeX will continue successfully. You might also get one
-of TeX's regular error messages, like
-
- Illegal unit of measure (pt inserted).
-or
- Missing number, treated as zero.
-
-or you might get no error message at all, just ridiculous formatting.
-Check shape syntax carefully against the rules and the examples before
-running them through TeX.
-
-What to do if the figure does not start at a point--if it has a flat
-top? It can start at a single point, but have the next scan line at
-the same vertical position! A square paragraph is specified by:
-
- {1}% centerline at x=1 (x=1 is horizontally centered on page)
- {0}b{0}\\% begin at (0,0)
- {0}t{0}{2}\\% text at y=0, width=2
- {2}t{0}{2}\\% text at y=2, width=2
- {2}e{1}% end at (1,2)
+The <scale> is a length (like \unitlength for the picture environment)
+used for scaling the <shape_spec> to positions on the page. When the
+<scale> parameter is absent, the scaling is adjusted automatically so
+that the entire shape is filled with text.
-Both \diamondpar and \squarepar are defined above as paragraphs with
-these shapes.
+\Shapepar (capital S) is just like \shapepar except the paragraph
+is boxed and not centered.
-Now let's get more ambitious. A heart shape must have two simultaneous
-beginnings, a short stretch of separate text, ending with a join,
-whereafter there is just one stretch of text leading to the final
-bottom point. This shape has many scan lines so that the smooth
-flowing curves are preserved.
+\cutout {<side>} (<hoffset>,<voffset>) \shapepar...as above...
-\def\heartshape{%
-{20}{0}b{13.32}b{26.68}%
-\\{.14}t{10.12}{4.42}t{25.46}{4.42}%
-\\{.7}t{9.14}{7.16}t{23.7}{7.16}%
-\\{1.4}t{8.4}{9.02}t{22.58}{9.02}%
-\\{2.1}t{7.82}{10.42}t{21.76}{10.42}%
-\\{2.8}t{7.36}{11.58}t{21.06}{11.58}%
-\\{3.5}t{6.98}{12.56}t{20.46}{12.56}%
-\\{4.2}t{6.68}{13.32}jt{20}{13.32}%
-\\{4.9}t{6.48}{27.04}%
-\\{5.6}t{6.34}{27.32}%
-\\{6.3}t{6.28}{27.44}%
-\\{7}t{6.26}{27.48}%
-\\{7.7}t{6.27}{27.46}%
-\\{8.4}t{6.32}{27.36}%
-\\{9.1}t{6.4}{27.2}%
-\\{9.8}t{6.52}{26.96}%
-\\{10.5}t{6.68}{26.64}%
-\\{11.9}t{7.12}{25.76}%
-\\{13.3}t{7.72}{24.56}%
-\\{14.7}t{8.51}{22.98}%
-\\{16.1}t{9.5}{21}%
-\\{17.5}t{10.69}{18.62}%
-\\{18.9}t{12.08}{15.84}%
-\\{20.3}t{13.7}{12.6}%
-\\{21.7}t{15.62}{8.76}%
-\\{22.4}t{16.7}{6.6}%
-\\{23.1}t{17.87}{4.26}%
-\\{24.6}e{20}%
-}
+This cuts out a section of the surrounding text to fit the shaped par.
+The <side> is l (left) or r (right). The pair of offsets is optional.
-Look at \heartshape and find the two b specifiers at the beginning; find
-the j a few lines below. Notice that above the j there are two segments
-per line, but only one below it; the text to the left and right of the
-join meet at the join point: 20. I drew this heart freehand, and measured
-lengths from the sketch, so you should be able to do better!
-
-Text can have holes. For example, a doughnut-shape would have a b on
-the first line, followed by some lines with a single t, then a line with
-t s t at the start of the hole. The hole is represented by lines with two
-t specs--the gap between them is the hole. A line with t j t ends the
-hole. There are more lines with single t, and then an e line to end
-with. Our final example is a nut. Not a doughnut, but a hex-nut (for a
-machine screw) -- a regular hexagon with a circular hole in the center.
-The hexagon is flat on top and bottom so the specification begins and
-ends like the square shape. The circle is rendered as a 24-gon, beginning
-with a split (s) of the surrounding text and ending with a join (j). If
-the spacing of the scan lines looks odd, it is because the hexagon alone
-would need few scans, but the circle needs many; the points on the circle
-are at 15 degree intervals.
+Pre-defined shapes, and commands to use the shape:
-\def\nutshape{%
-{0}%
-{0}b{0}\\%
-{0}t{-12.5}{25}\\%
-{11.65}t{-19.23}{19.23}st{0}{19.23}\\%
-{11.99}t{-19.42}{16.835}t{2.59}{16.835}\\%
-{12.99}t{-20}{15}t{5}{15}\\%
-{14.58}t{-20.92}{13.85}t{7.07}{13.85}\\%
-{16.65}t{-22.11}{13.45}t{8.66}{13.45}\\%
-{19.06}t{-23.51}{13.85}t{9.66}{13.85}\\%
-{21.65}t{-25}{15}t{10}{15}\\%
-{24.24}t{-23.51}{13.85}t{9.66}{13.85}\\%
-{26.65}t{-22.11}{13.45}t{8.66}{13.45}\\%
-{28.72}t{-20.92}{13.85}t{7.07}{13.85}\\%
-{30.31}t{-20}{15}t{5}{15}\\%
-{31.31}t{-19.42}{16.835}t{2.59}{16.835}\\%
-{31.65}t{-19.23}{19.23}jt{0}{19.23}\\%
-{43.3}t{-12.5}{25}\\%
-{43.3}e{0}%
-}
+\diamondshape, \diamondpar; \squareshape, \squarepar; \heartshape,
+\heartpar; \circleshape, \circlepar; \nutshape, \nutpar; \CDlabshape,
+\CDlabel; \starshape, \starpar; \hexagonshape, \hexagonpar.
+
+Shape generator:
+
+\rectangleshape{height}{width}
-\shapepar cheats a bit when the horizontal gap between two bits of text
-is small (like down in the notch of \heartpar). When the gap is less
-than an interword space it is eliminated, and the texts are joined; when
-it is somewhat larger it is expanded to give it more visibility. If you
-want to eliminate this behavior, move the following definitions up into
-the main part of the file.
+Typeset shapepar.ltx (or see shapepar.pdf) for detailed instructions.
-See shapepar.tex for more detailed instructions.
%-----------------------------------------
+Version 2.1 (Sep 2006) Repair \\, fix multibox ordering, \rectangleshape,
+ hexagon.
+Version 2.01 (Jun 2006) Avoid some numeric overflows.
Version 2.00 (Dec 2002) \cutout, disjoint parts, set scale, much rewrite
Version 1.01 (March 1993) Small changes from initial release.
diff --git a/Master/texmf-dist/tpm/shapepar.tpm b/Master/texmf-dist/tpm/shapepar.tpm
index f3f8000b66d..3b4267e869f 100644
--- a/Master/texmf-dist/tpm/shapepar.tpm
+++ b/Master/texmf-dist/tpm/shapepar.tpm
@@ -3,7 +3,7 @@
<rdf:Description about="http://texlive.dante.de/texlive/Package/shapepar.zip">
<TPM:Name>shapepar</TPM:Name>
<TPM:Type>Package</TPM:Type>
- <TPM:Date>2006/08/14 18:28:24</TPM:Date>
+ <TPM:Date>2006/11/17 19:15:00</TPM:Date>
<TPM:Version>2.0</TPM:Version>
<TPM:Creator>staszek</TPM:Creator>
<TPM:Title>
@@ -29,18 +29,20 @@ output to \shapepar polygon form.
<TPM:Author>Donald Arseneau</TPM:Author>
<TPM:Size>306810</TPM:Size>
<TPM:Build/>
- <TPM:RunFiles size="53665">
+ <TPM:RunFiles size="46098">
texmf-dist/tex/generic/shapepar/shapepar.sty
texmf-dist/tpm/shapepar.tpm
</TPM:RunFiles>
- <TPM:DocFiles size="253145">
+ <TPM:DocFiles size="235727">
texmf-dist/doc/generic/shapepar/Canflagshape.def
texmf-dist/doc/generic/shapepar/README.shapepar
texmf-dist/doc/generic/shapepar/TeXshape.def
texmf-dist/doc/generic/shapepar/candleshape.def
+texmf-dist/doc/generic/shapepar/dropshape.def
texmf-dist/doc/generic/shapepar/proshap.py
texmf-dist/doc/generic/shapepar/shapepar.ltx
texmf-dist/doc/generic/shapepar/shapepar.pdf
+texmf-dist/doc/generic/shapepar/triangleshapes.def
</TPM:DocFiles>
<TPM:Provides>Package/shapepar</TPM:Provides>
</rdf:Description>