summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/finstrut
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-02-13 23:29:19 +0000
committerKarl Berry <karl@freefriends.org>2011-02-13 23:29:19 +0000
commit9fa55f9a7454d978f593a04380ba2fec148a72f1 (patch)
tree047975fc95d8593f3e0ef56a42593aed3348f337 /Master/texmf-dist/tex/latex/finstrut
parent12809cd1a2331fcb5d546f5e5077bf891e0a473e (diff)
finstrut (13feb11)
git-svn-id: svn://tug.org/texlive/trunk@21386 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/finstrut')
-rw-r--r--Master/texmf-dist/tex/latex/finstrut/finstrut.sty151
1 files changed, 121 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/latex/finstrut/finstrut.sty b/Master/texmf-dist/tex/latex/finstrut/finstrut.sty
index 71604491c1f..102384df2d5 100644
--- a/Master/texmf-dist/tex/latex/finstrut/finstrut.sty
+++ b/Master/texmf-dist/tex/latex/finstrut/finstrut.sty
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{finstrut}[2010/12/20 v0.1 vmode final strut (UL)]
+\ProvidesPackage{finstrut}[2011/02/12 v0.4 vmode final strut (DA/UL)]
-%% Copyright (C) 2010 Uwe Lueck,
+%% Copyright (C) 2010 2011 Uwe Lueck,
%% http://www.contact-ednotes.sty.de.vu
%% -- author-maintained in the sense of LPPL below --
%%
@@ -16,36 +16,127 @@
%%
%% http://www.contact-ednotes.sty.de.vu
%%
-%% This is a variant of LaTeX's `\@finalstrut'
-%% that doesn't produce a spurious empty line
-%% in vmode. In general, this deals with a
-%% closing `\par' from users in footnotes,
-%% the idea especially came from using the
-%% 'lipsum' package.
-%% See `source2e.pdf' for the rationale
-%% behind the original definition; it may imply
-%% that the present suggestion is bad with
-%% `p' columns in `tabular' etc.
-\renewcommand*{\@finalstrut}[1]{%
- \unskip
- \ifhmode
- \nobreak
-%% ... allows hyphenation of last word.
- \vrule \@width\z@ \@height\z@
- \@depth \expandafter \dp
- \else
-%% Assuming it's vmode:
- \kern -\prevdepth
- \kern \expandafter \dp
- \fi
-%% With the applications in `latex.ltx', namely with
-%% one-token parameters only, the parameter could be
-%% dropped. Keeping it may once be useful for referring
-%% to a box register by `\box<n>'.
- #1%
+%% % *** Another Introduction ***
+%% % This is a variant of LaTeX's `\@finalstrut'
+%% % that doesn't produce a spurious empty line
+%% % in vmode. In general, this deals with a
+%% % closing `\par' from users in footnotes,
+%% % the idea especially came from using the
+%% % 'lipsum' package.
+%% % See `source2e.pdf' (`ltboxes.dtx') for the rationale
+%% % behind the original definition; it may imply
+%% % that the present suggestion is bad with
+%% % `p' columns in `tabular' etc.
+%% %
+%% % With v0.4, the code essentially is Donald Arseneau's.
+%%
+%% === Outline ===
+%% v0.4 considers recommendations by Donald Arseneau.
+%% Some of them may break in applications that we do not
+%% know about, therefore they must be called by package
+%% options. Package Option |[full]| calls all of them.
+%%
+%% The choices shall not be checked at each invocation
+%% of `\@finalstrut', instead they are evaluated at the
+%% definition of `\@finalstrut', at the end of the package.
+%% Choices are prepended to this definition by defining
+%% `\@tempe', `\@tempd', `\@tempc', and `\@tempb'.
+%%
+%% === Options ===
+%% According to `ltboxes.dtx', a `vmode' test once
+%% was introduced for \LaTeXe, but in 1994 removed again---it
+%% ``broke" in `p' columns. For this reason, v0.1 and v0.3
+%% used an `hmode' test instead.
+%% `ltboxes.dtx' does not tell exactly what code broke in
+%% exactly which situation. Bad.
+%% Brave users may dare the `vmode' test again by choosing
+%% package option |[v]|. It sets `\@tempe' for
+%% `\edef\@finalstrut'. While other conditionals are disabled
+%% right before the latter, we disable the mode test here:
+\AtEndOfPackage{%
+ \def\@tempe#1#2{\noexpand\ifhmode#1\else#2\fi}}
+\DeclareOption{v}{%
+ \AtEndOfPackage{%
+ \def\@tempe#1#2{\noexpand\ifvmode#2\else#1\fi}}}
+%% |[argdelim]| appends a `\relax' to `\@finalstrut''s argument
+%% in case the box number is given as a string of digits
+%% (whereas `latex.ltx' only has `\strutbox' and
+%% `\@arstrutbox' as arguments).
+%% This does not work when somebody tries (e.g.\@)
+%% `\@finalstrut11 '. I.e., a ``multi-token" argument must
+%% be enclosed in braces indeed.
+\AtEndOfPackage{\let\@tempd\@empty}
+\DeclareOption{argdelim}{%
+ \AtEndOfPackage{\def\@tempd{\relax}}}
+\AtEndOfPackage{\let\@tempc\@secondoftwo}
+%% |[dptest]| caters for depth exceeeding the depth of the
+%% strut box and for negative depth. The test requires that
+%% a multi-token argument (see above) is enclosed in braces.
+\DeclareOption{dptest}{%
+ \AtEndOfPackage{%
+ \def\@tempd{\relax}%
+ \let\@tempc\@firstoftwo}}
+%% |[full]| enables all of Donald Arseneau's suggestions:
+\DeclareOption{full}{%
+ \AtEndOfPackage{%
+ \def\@tempe#1#2{\noexpand\ifvmode#2\else#1\fi}%
+ \def\@tempd{\relax}%
+ \let\@tempc\@firstoftwo
+}}
+%% |[show]| displays the definition of `\@finalstrut'
+%% actually resulting:
+\AtEndOfPackage{\let\@tempb\relax}
+\DeclareOption{show}{%
+ \AtEndOfPackage{\def\@tempb{\show\@finalstrut}}}
+%% Appending choices to the end-of-package hook:
+\ProcessOptions
+%%
+%% === Core Code ===
+%% Now we append the `\edef' of `\@finalstrut' to the
+%% end-of-package hook
+%% (we must hurry so that nobody changes `\@tempe' etc.).
+%% |\dp@only| will be an abbreviation for invoking a strut rule;
+%% it will only be enabled after the `\edef':
+\let\dp@only\relax
+\AtEndOfPackage{%
+ \begingroup
+%% Some conditionals are disabled for the `\edef':
+ \let\ifdim\relax \let\else\relax \let\fi\relax
+ \xdef\@gtempa#1{%
+ \unskip
+ \@tempe{% %% \ifhmode/\ifvmode
+ \noexpand\nobreak
+ \vrule \dp@only #1\@tempd %% maybe \relax
+ }{%
+%% Whereas v0.1 and v0.3 used `\kern' to get the bottom
+%% distance in `vmode', Donald Arseneau recommends `\hrule'
+%% for the sake of bottom alignment with 'array.sty'
+%% (`b' type columns):
+ \@tempc{% %% depth test or not
+ \ifdim\prevdepth<\dp#1\relax
+ \ifdim\prevdepth>\z@
+ \kern -\prevdepth
+ \fi
+ \hrule \dp@only#1\relax
+ \fi
+ }{\hrule \dp@only #1\@tempd}% %% maybe \relax
+ }%
+ }
+ \endgroup
+ \let\@finalstrut\@gtempa
+ \@tempb %% maybe \show
+%% |\dp@only|
+ \def\dp@only{\@width\z@ \@height\z@ \@depth\dp}
}
+%%
+%% === Leaving ===
\endinput
%%
-%% == VERSION HISTORY ==
+%% === VERSION HISTORY ===
v0.1 2010/12/20 very first
+v0.2 2011/02/09 redundancies removed -- still bad
+ NOT DISTRIBUTED
+v0.3 2011/02/11 code much reduced again (no \expandafter at all!);
+ wrong comments replaced; \subsection
+v0.4 2011/02/12 Donald Arseneau's full suggestions as options