diff options
author | Karl Berry <karl@freefriends.org> | 2011-02-13 23:29:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-02-13 23:29:19 +0000 |
commit | 9fa55f9a7454d978f593a04380ba2fec148a72f1 (patch) | |
tree | 047975fc95d8593f3e0ef56a42593aed3348f337 /Master/texmf-dist/tex/latex/finstrut | |
parent | 12809cd1a2331fcb5d546f5e5077bf891e0a473e (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.sty | 151 |
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 |