diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/generic/misc/outerhbox.sty |
Initial commit
Diffstat (limited to 'macros/generic/misc/outerhbox.sty')
-rw-r--r-- | macros/generic/misc/outerhbox.sty | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/macros/generic/misc/outerhbox.sty b/macros/generic/misc/outerhbox.sty new file mode 100644 index 0000000000..75b618dc9a --- /dev/null +++ b/macros/generic/misc/outerhbox.sty @@ -0,0 +1,86 @@ +% Copyright (c) 2005 Jonathan Fine <jfine@pytex.org> +% License: GPL version 2 or (at your option) any later version. +% $Source: /cvsroot/pytex/pytex/texmacros/outerhbox.sty,v $ + +% $Log: outerhbox.sty,v $ +% Revision 1.2 2005/10/06 07:00:19 jfine +% Added description, as provided to CTAN +% +% Revision 1.1 2005/10/06 06:32:18 jfine +% As posted to comp.text.tex, but \outerhbox instead of \outerbox + +% Collects horizontal mode material into an \hbox, suitable for later +% \unhbox'ing into a paragraph. For use with plain, LaTeX, ConTeXt, etc. + +% Provides \outerhbox, which is roughly similar to \hbox, except that +% material is set in outer horizontal mode. This prevents TeX from +% optimising away math penalties and the like, that are needed when the +% material is \unhbox'ed. + +% Based on code I posted to comp.text.tex + +% Message-ID: <43399D5A.50803@pytex.org> +% Date: Tue, 27 Sep 2005 20:28:26 +0100 +% Newsgroups: comp.text.tex +% Subject: Re: overlong lines in List of Figures +% <http://groups.google.com/group/comp.text.tex/msg/56ea490ad6d13dae> + +\ifx\undefined\outerhbox +\else\endinput\fi + +\ifx \documentstyle \undefined \else + \ifx \documentclass \undefined + \else \ProvidesPackage{outerhbox}[2005/09/29] \fi +\fi + + +\long\def\outerhbox #1% +% like \hbox, but sets material in outer horizontal mode +% #1 - horizontal material, to be set in outer horizontal mode +% Note: inappropriate commands in #1 can cause an \outerhboxerror +{% + \hbox{% + \setbox0 \vbox{% + \hsize\maxdimen + \pretolerance -1 + \rightskip 0pt + \parfillskip 0pt plus 1fil + \noindent #1\endgraf + \global\setbox1 \lastbox + }% + % check that size of \box 0 is 0.0+0.0x0.0 + \ifcase + % skip to \else if any dimension is non-zero + \ifcase\wd0 \else 1 \fi + \ifcase\ht0 \else 1 \fi + \ifcase\dp0 \else 1 \fi + 0 % satisfy the \ifcase + % + % place material into \hbox + \unhbox 1 + \unskip % remove \rightskip glue + \unskip % remove \parfillskip glue + \unpenalty % remove paragraph ending \penalty 10000 + \else + % there's something left in \box 0 + \outerhboxerror % default handler is to be \undefined + \fi + }% +} + +% \endinut % some test code follows + +\tracingall +\tracingonline = 1 +% \nonstopmode + +\setbox 0 \hbox{$2+2=2$} \showbox 0 +\setbox 0 \outerhbox{$2+2=2$} \showbox 0 +{ \leftskip 1in + \setbox 0 \outerhbox{$2+2=2$} \showbox 0 +} + +\setbox 0 \outerhbox{a\par b} \showbox 0 +\setbox 0 \outerhbox{} \showbox 0 +\setbox 0 \outerhbox{\ } \showbox 0 +\end |