Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8309539
mparhack.sty
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Subscribers
None
mparhack.sty
View Options
%%
%% This is file `mparhack.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% mparhack.dtx (with options: `sty')
%%
%% Workaround for the marginpar bug.
%%
%% This program is free software; you can redistribute it and/or
%% modify it under the terms of the GNU General Public License
%% as published by the Free Software Foundation; either version 2
%% of the License, or (at your option) any later version.
%%
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%% GNU General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with this program; if not, write to the Free Software
%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
%%
\NeedsTeXFormat{LaTeX2e}[1997/04/14]
\ProvidesPackage{mparhack}
[2005/04/17 v1.4 (T. Sgouros and S. Ulrich)]
\newif\if@mph@firstcol@
\newif\if@mph@warning@
\newif\if@debug@
\newcommand*\mph@debug[2][]{%
\if@debug@
\typeout{DBG: #2}%
\else
\ifx#1\@empty\else
\typeout{DBG (#1): #2}%
\fi
\fi
}
\DeclareOption{debug}{%
\newcommand\mph@info{%
\@tempcnta=\mph@cnt
\advance\@tempcnta1
\raisebox{0pt}[0pt][0pt]{\makebox[0pt][r]{\tiny\the\@tempcnta}}%
}%
\long\def\@xmpar[#1]#2{%
\@savemarbox\@marbox{\mph@info#1}%
\@savemarbox\@currbox{\mph@info#2}%
\@xympar
}%
\long\def\@ympar#1{%
\@savemarbox\@marbox{\mph@info#1}%
\global\setbox\@currbox\copy\@marbox
\@xympar
}%
\global\@debug@true
}%
\ProcessOptions*
\newcommand*\mph@nr{0}
\newcommand*\mph@pg@new{0}
\newcommand*\mph@lastpage{0}
\newcommand*\mph@cnt{0}
\newcommand*\mph@step@cnt[1]{%
\begingroup
\@tempcnta#1
\advance\@tempcnta\@ne
\protected@xdef#1{\the\@tempcnta}%
\endgroup
}
\newcommand*\mph@setcol[2]{%
\expandafter\xdef\csname mph@last@#1\endcsname{#2}%
}
\newcommand*\mph@tempa{}
\newcommand*\mph@check[2]{%
\protected@edef\mph@tempa{#2}%
\expandafter\ifx\csname mph@last@#1\endcsname\mph@tempa
\mph@debug{\csname mph@last@#1\endcsname\space == \mph@tempa}%
\else
\mph@debug{\csname mph@last@#1\endcsname\space != \mph@tempa!}%
\global\@mph@warning@true
\fi
}
\newcommand*\mph@do@warn{%
\if@mph@warning@
\PackageWarningNoLine{mparhack}{Marginpars may have
changed.\MessageBreak Rerun to get them right%
}%
\fi
}
\AtBeginDocument{%
\protected@write\@auxout{}{%
\string\providecommand\string\mph@setcol[2]{}%
}%
\@ifpackageloaded{eso-pic}{%
\let\mph@orig@picture\@picture
\renewcommand\@picture{\let\hb@xt@\mph@orig@hb@xt@\mph@orig@picture}%
}{%
\relax
}%
}
\AtEndDocument{%
\let\mph@setcol\mph@check
\clearpage
\immediate\write\@auxout{%
\string\gdef\string\mph@lastpage{\the\c@page}^^J%
\string\csname\space mph@do@warn\string\endcsname
}%
}
\newcommand*\mph@ifundef@or@smaller[1]{%
\expandafter\ifx#1\relax
\let\mph@tempa\@firstoftwo
\else
\ifnum#1<\mph@cnt\relax
\let\mph@tempa\@firstoftwo
\else
\let\mph@tempa\@secondoftwo
\fi
\fi
\mph@tempa
}
\newcommand*\mph@pg@orig{}
\newcommand*\mph@get@margin{%
\begingroup
\edef\mph@pg@orig{\the\c@page}
\loop
\@tempswafalse
\mph@debug{--- checking marginpar \mph@cnt}%
\if@twocolumn
\mph@debug{last on page \thepage:
\csname mph@last@i:\thepage\endcsname(i)
\csname mph@last@ii:\thepage\endcsname(ii),
}%
\mph@ifundef@or@smaller{%
\csname mph@last@i:\thepage\endcsname
}{%
\mph@ifundef@or@smaller{%
\csname mph@last@ii:\thepage\endcsname
}{%
\global\@mph@firstcol@true
\@tempswatrue
\advance\c@page by 1
\mph@debug{\mph@cnt\space >
\csname mph@last@ii:\thepage\endcsname,
incrementing \thepage, set col to i
}%
}{%
\global\@mph@firstcol@false
\@tempswafalse
\mph@debug{\mph@cnt\space <=
\csname mph@last@ii:\thepage\endcsname,
exiting loop
}%
}%
}{%
\@tempswafalse
\global\@mph@firstcol@true
\mph@debug{exiting loop}%
}%
\else
\mph@debug{last on page \thepage\space is
\csname mph@last@ii:\thepage\endcsname
}%
\mph@ifundef@or@smaller{%
\csname mph@last@ii:\thepage\endcsname
}{%
\@tempswatrue
\advance\c@page by 1
\mph@debug{\mph@cnt\space >
\csname mph@last@ii:\thepage\endcsname,
incrementing page number
}%
}{%
\@tempswafalse
\mph@debug{\mph@cnt\space <=
\csname mph@last@ii:\thepage\endcsname,
exiting loop
}%
}%
\fi
\ifnum\mph@lastpage>\c@page
\else
\@tempswafalse
\mph@debug{\c@page >= \mph@lastpage!}%
\c@page=\mph@pg@orig
\if@firstcolumn
\global\@mph@firstcol@true
\else
\global\@mph@firstcol@false
\fi
\mph@debug{using original value: \c@page for
\string\c@page and exiting loop.
}%
\fi
\if@tempswa
\mph@debug{iterating ...}%
\repeat
\mph@debug{=== marginpar \mph@cnt\space is on page \thepage%
\if@twocolumn, col \if@mph@firstcol@ 1 \else 2 \fi\fi
}%
\protected@xdef\mph@pg@new{\the\c@page}%
\endgroup
}
\newcommand\mph@error[1]{%
\PackageError{mparhack}{%
Couldn't hook into command `#1'
}{%
This means that a LaTeX version incompatible with
mparhack.sty^^J%
has been used. See also the section on `Bugs/Restrictions'^^J%
in mparhack.dvi. Please send an email about this bug to^^J%
<stefanulrich@users.sourceforge.net>, along with the file `\jobname.log'.
}%
}
\newcommand\mph@orig@c@page{}
\newcommand\mph@orig@addmarginpar{}
\let\mph@orig@addmarginpar\@addmarginpar
\renewcommand\@addmarginpar{%
\mph@step@cnt\mph@cnt
\protected@write\@auxout{}%
{\string\def\string\mph@nr{\mph@cnt}}%
\mph@get@margin
\def\mph@orig@c@page{\c@page}
\c@page=\mph@pg@new
\if@mph@firstcol@
\@firstcolumntrue
\else
\@firstcolumnfalse
\fi
\mph@orig@addmarginpar
\c@page=\mph@orig@c@page
}
\newcommand*\mph@outputpage@hook{%
\bgroup
\advance\c@page\m@ne
\immediate\write\@auxout{%
\string\mph@setcol{ii:\thepage}{\string\mph@nr}%
}%
\egroup
}
\g@addto@macro{\@outputpage}{\mph@outputpage@hook}
\newcommand\mph@orig@hb@xt@{}
\newcommand\mph@orig@outputdblcol{}
\newcommand\mph@chk@dcl{0}%
\let\mph@orig@hb@xt@\hb@xt@
\let\mph@orig@outputdblcol\@outputdblcol
\renewcommand\@outputdblcol{%
\def\mph@chk@dcl{0}%
\def\hb@xt@##1##2{%
\ifx##1\columnwidth
\mph@step@cnt\mph@chk@dcl
\protected@edef\mph@tempa{%
\noexpand\write\noexpand\@auxout{%
\noexpand\string\noexpand\mph@setcol{%
\romannumeral\mph@chk@dcl:\noexpand\thepage%
}{%
\noexpand\string\noexpand\mph@nr%
}%
}%
}%
\else
\def\mph@tempa{}%
\fi
\mph@orig@hb@xt@##1{##2\mph@tempa}%
}%
\mph@orig@outputdblcol
\def\hb@xt@{\mph@orig@hb@xt@}%
\ifnum\mph@chk@dcl=0\relax
\else
\ifnum\mph@chk@dcl=2\relax
\else
\mph@error{\string\@outputdblcol}%
\fi
\fi
}
\newcommand\mph@orig@picture{}
\endinput
%%
%% End of file `mparhack.sty'.
File Metadata
Details
Attached
Mime Type
text/x-tex
Expires
Sat, Dec 21, 3:40 PM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023323
Default Alt Text
mparhack.sty (7 KB)
Attached To
rRIVETSVN rivetsvn
Event Timeline
Log In to Comment