%%
%% This is file `setouterhbox.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% setouterhbox.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Project: setouterhbox
%% Version: 2007/09/09 v1.7
%% 
%% Copyright (C) 2005, 2006, 2007 by
%%    Heiko Oberdiek <heiko.oberdiek at googlemail.com>
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%%    http://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% This Current Maintainer of this work is Heiko Oberdiek.
%% 
%% The Base Interpreter refers to any `TeX-Format',
%% because some files are installed in TDS:tex/generic//.
%% 
%% This work consists of the main source file setouterhbox.dtx
%% and the derived files
%%    setouterhbox.sty, setouterhbox.pdf, setouterhbox.ins, setouterhbox.drv,
%%    setouterhbox-example.tex, setouterhbox-test1.tex,
%%    setouterhbox-test2.tex.
%% 
\begingroup\catcode61\catcode48\catcode32=10\relax%
  \catcode13=5 % ^^M
  \endlinechar=13 %
  \catcode35=6 % #
  \catcode39=12 % '
  \catcode44=12 % ,
  \catcode45=12 % -
  \catcode46=12 % .
  \catcode58=12 % :
  \catcode64=11 % @
  \catcode123=1 % {
  \catcode125=2 % }
  \expandafter\let\expandafter\x\csname ver@setouterhbox.sty\endcsname
  \ifx\x\relax % plain-TeX, first loading
  \else
    \def\empty{}%
    \ifx\x\empty % LaTeX, first loading,
      % variable is initialized, but \ProvidesPackage not yet seen
    \else
      \expandafter\ifx\csname PackageInfo\endcsname\relax
        \def\x#1#2{%
          \immediate\write-1{Package #1 Info: #2.}%
        }%
      \else
        \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
      \fi
      \x{setouterhbox}{The package is already loaded}%
      \aftergroup\endinput
    \fi
  \fi
\endgroup%
\begingroup\catcode61\catcode48\catcode32=10\relax%
  \catcode13=5 % ^^M
  \endlinechar=13 %
  \catcode35=6 % #
  \catcode39=12 % '
  \catcode40=12 % (
  \catcode41=12 % )
  \catcode44=12 % ,
  \catcode45=12 % -
  \catcode46=12 % .
  \catcode47=12 % /
  \catcode58=12 % :
  \catcode64=11 % @
  \catcode91=12 % [
  \catcode93=12 % ]
  \catcode123=1 % {
  \catcode125=2 % }
  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
    \def\x#1#2#3[#4]{\endgroup
      \immediate\write-1{Package: #3 #4}%
      \xdef#1{#4}%
    }%
  \else
    \def\x#1#2[#3]{\endgroup
      #2[{#3}]%
      \ifx#1\@undefined
        \xdef#1{#3}%
      \fi
      \ifx#1\relax
        \xdef#1{#3}%
      \fi
    }%
  \fi
\expandafter\x\csname ver@setouterhbox.sty\endcsname
\ProvidesPackage{setouterhbox}%
  [2007/09/09 v1.7 Set hbox in outer horizontal mode (HO)]%
\begingroup\catcode61\catcode48\catcode32=10\relax%
  \catcode13=5 % ^^M
  \endlinechar=13 %
  \catcode123=1 % {
  \catcode125=2 % }
  \catcode64=11 % @
  \def\x{\endgroup
    \expandafter\edef\csname setouterhboxAtEnd\endcsname{%
      \endlinechar=\the\endlinechar\relax
      \catcode13=\the\catcode13\relax
      \catcode32=\the\catcode32\relax
      \catcode35=\the\catcode35\relax
      \catcode61=\the\catcode61\relax
      \catcode64=\the\catcode64\relax
      \catcode123=\the\catcode123\relax
      \catcode125=\the\catcode125\relax
    }%
  }%
\x\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode64=11 % @
\catcode123=1 % {
\catcode125=2 % }
\def\TMP@EnsureCode#1#2{%
  \edef\setouterhboxAtEnd{%
    \setouterhboxAtEnd
    \catcode#1=\the\catcode#1\relax
  }%
  \catcode#1=#2\relax
}
\TMP@EnsureCode{40}{12}% (
\TMP@EnsureCode{41}{12}% )
\TMP@EnsureCode{44}{12}% ,
\TMP@EnsureCode{45}{12}% -
\TMP@EnsureCode{46}{12}% .
\TMP@EnsureCode{47}{12}% /
\TMP@EnsureCode{58}{12}% :
\TMP@EnsureCode{60}{12}% <
\TMP@EnsureCode{62}{12}% >
\TMP@EnsureCode{91}{12}% [
\TMP@EnsureCode{93}{12}% ]
\TMP@EnsureCode{96}{12}% `
\edef\setouterhboxAtEnd{\setouterhboxAtEnd\noexpand\endinput}
\newbox\setouterhboxBox
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
  \input infwarerr.sty\relax
\else
  \RequirePackage{infwarerr}[2007/09/09]%
\fi
\edef\setouterhboxFailure#1#2{%
  \expandafter\noexpand\csname @PackageError\endcsname
      {setouterhbox}{#1}{#2}%
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname lastnodetype\endcsname\relax
  \catcode`T=9 % ignore
  \catcode`E=14 % comment
\else
  \catcode`T=14 % comment
  \catcode`E=9 % ignore
\fi
\def\setouterhboxRemove{%
E \ifnum\lastnodetype<11 %
E   \else
E   \ifnum\lastnodetype>13 %
E   \else
      \unskip\unkern\unpenalty
E     \expandafter\expandafter\expandafter\setouterhboxRemove
E   \fi
E \fi
}%
\def\setouterhbox#1{%
  \begingroup
    \def\setouterhboxNum{#1}%
    \setbox0\vbox\bgroup
T     \kern.123pt\relax % marker
T     \kern0pt\relax % removed by \setouterhboxRemove
      \begingroup
        \everypar{}%
        \noindent
}
\def\endsetouterhbox{%
      \endgroup
      \pretolerance-1 %
      \tolerance10000 %
      \hsize\maxdimen
      \parfillskip 0pt plus 1filll\relax
      \leftskip0pt\relax
      \rightskip0pt plus 1fil\relax
      \everypar{}%
      \kern0pt%
      \endgraf
      \setouterhboxRemove
E     \ifnum\lastnodetype=1 %
E       \global\setbox\setouterhboxBox\lastbox
E       \loop
E         \setouterhboxRemove
E       \ifnum\lastnodetype=1 %
E         \setbox0=\lastbox
E         \global\setbox\setouterhboxBox=\hbox{%
E           \unhbox0 %
E           \unskip
E           \unhbox\setouterhboxBox
E         }%
E       \repeat
E     \else
E       \setouterhboxFailure{%
E         Something is wrong%
E       }{%
E         Could not find expected line.%
E         \MessageBreak
E         (\string\lastnodetype: \number\lastnodetype, expected: 1)%
E       }%
E     \fi
E     \setouterhboxRemove
T     \global\setbox\setouterhboxBox\lastbox
T     \loop
T       \setouterhboxRemove
T       \setbox0=\lastbox
T     \ifcase\ifvoid0 1\else0\fi
T       \global\setbox\setouterhboxBox=\hbox{%
T         \unhbox0 %
T         \unskip
T         \unhbox\setouterhboxBox
T       }%
T     \repeat
T     \ifdim.123pt=\lastkern
T     \else
T       \setouterhboxFailure{%
T         Something is wrong%
T       }{%
T         Unexpected stuff was detected before the line.%
T       }%
T     \fi
T   \egroup
T   \ifcase \ifnum\wd0=0 \else 1\fi
T           \ifdim\ht0=.123pt \else 1\fi
T           \ifnum\dp0=0 \else 1\fi
T           0 %
E     \ifnum\lastnodetype=-1 %
      \else
        \setouterhboxFailure{%
            Something is wrong%
        }{%
            After fetching the line there is more unexpected stuff.%
E           \MessageBreak
E           (\string\lastnodetype: \number\lastnodetype, expected: -1)%
        }%
      \fi
E   \egroup
  \expandafter\endgroup
  \expandafter\setouterhboxFinish\expandafter{%
    \number\setouterhboxNum
  }%
}
\def\setouterhboxCurr{setouterhbox}
\def\setouterhboxLast#1{%
  \setbox#1\hbox{%
    \unhbox\setouterhboxBox
    \unskip % remove \rightskip glue
    \unskip % remove \parfillskip glue
    \unpenalty % remove paragraph ending \penalty 10000
    \unkern % remove explicit kern inserted above
  }%
}
\def\setouterhboxFinish#1{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname @currenvir\endcsname\setouterhboxCurr
    \aftergroup\setouterhboxLast
    \aftergroup{%
    \setouterhboxAfter #1\NIL
    \aftergroup}%
  \else
    \setouterhboxLast{#1}%
  \fi
}
\def\setouterhboxAfter#1#2\NIL{%
  \aftergroup#1%
  \ifx\\#2\\%
  \else
    \setouterhboxReturnAfterFi{%
      \setouterhboxAfter#2\NIL
    }%
  \fi
}
\long\def\setouterhboxReturnAfterFi#1\fi{\fi#1}
\catcode69=11\relax % E
\catcode84=11\relax % T
\begingroup
  \def\x{LaTeX2e}%
\expandafter\endgroup
\ifx\x\fmtname
\else
  \expandafter\setouterhboxAtEnd
\fi%
\DeclareOption{hyperref}{%
  \long\def\Hy@setouterhbox#1#2{%
    \setouterhbox{#1}#2\endsetouterhbox
  }%
}
\ProcessOptions\relax
\setouterhboxAtEnd%
\endinput
%%
%% End of file `setouterhbox.sty'.
