%% Save file as: MHACK.TEX              Source: FILESERV@SHSU.BITNET  
%% Original author: Norman Walsh <walsh@cs.umass.edu>
%% Original source: Posted to INFO-TeX@SHSU.edu by 
%% RAY BROHINSKY <RAYBRO%HOLON@utrcgw.utc.com> on Fri, 27 Sep 1991 16:29 EDT
%%
%Here are two solutions for marginal hacks.  \ihack is based upon
%the marginal hacks notes in the book and requires the section that
%redefines \pagecontents.  It has the defect that marginal hacks
%start at the top of the page rather than where you put them in the
%text.

%\vhack doesn't use inserts and has the advantage that you don't
%need to redefine part of the output routine (\pagecontents) but if
%you put several hacks very close to each other, they may overlap.%

%Let me know what you think.  If you have try to integrate them into
%your notes and you have trouble, just let me know.

% mhack.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\font\marginhackfont=cmr7
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newinsert\margin
\dimen\margin=\maxdimen
\count\margin=0 \skip\margin=0pt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newdimen\marginhackwidth
\newdimen\marginhackshift
\newdimen\marginhacknudge
\marginhackwidth=.8in
\marginhackshift=\hsize
\advance\marginhackshift by .1in
\marginhacknudge=.1in
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\ihack#1{\marginhacknudge=0pt\insert\margin{\hbox{\marginhackpara{#1}}}}
\def\vhack#1{\vadjust{\vbox to 0pt{%
             \marginhacknudge=.1in%
             \vskip-8.5pt% move it back up the page
             \hskip6.2in\rlap{%
             \marginhackpara{#1}}\vss}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% this is a modified version of \para that I got
% from ... somewhere
%
\long\def\marginhackpara#1{%            %
   \hskip\marginhacknudge               %
   \vtop{\leftskip=0pt\rightskip=0pt    % Make width ok
   \hsize=\marginhackwidth              %
   \marginhackfont                      % select font
   \parindent=0pt                       %
   \baselineskip=6pt                    %
   \everypar={}                         %
   \lineskip=1pt                        %
   \lineskiplimit=1pt                   %
   \raggedright                         %
   \hbadness=10000                      % I don't care about underfull boxes
   \tolerance=10000                     % I don't care about overfull ones
   \noindent                            % don't indent
   \vrule width0pt height8.5pt          % line up top of hack and text
   #1\relax                             % add the text
   \vrule width 0pt depth 7pt}%         % pad bottom of box
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Include the marginal hacks in the plain output routine
% (only needed for \ihack)
\catcode`@=11
\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
  \ifvoid\margin\else %
    \rlap{\kern\marginhackshift\vbox to 0pt{\box\margin\vss}}\fi
  \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
  \ifvoid\footins\else % footnote info is present
    \vskip\skip\footins
    \footnoterule
    \unvbox\footins\fi
  \ifr@ggedbottom \kern-\dimen@ \vfil \fi}
\catcode`@=12 % at signs are no longer letters

\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Here is some text followed by more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and VHACK\vhack{this is a vhack, it starts
here and goes on for several lines} more text and more text and
more text and more text and more text and more text and more text and
more VHACK\vhack{this is another vhack, which collides}
and more text and more text and more text and more text and
more text and more IHACK\ihack{this is an ihack, it starts at the top}
and more text and more text and more
IHACK\ihack{this is a second ihack, but it doesn't collide}
and  more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text and
more text and more text and more text and more text and more text.
\bye
% end of mhack.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
