[tex-eplain] Marginal notes

Oleg Katsitadze olegkat at gmail.com
Sat Jun 14 07:11:06 CEST 2008


On Thu, Jun 12, 2008 at 11:31:18AM +0000, Adam Fenn wrote:
> My problem is that if I enable hyperlinks and use the indexing macros I get the following message:
> 
> pdfTeX warning (dest): name {IDXPG2} has been referenced but does not exist, replaced by a fixed one.

This is because your handling of the .aux file interferes with that of
Eplain.  You shouldn't try to open/close it yourself, let Eplain
handle it.  Below I include a corrected sample.  I commented out all
.aux-related commands and replaced them with those from Eplain.
Another approach would be to use a different extension for the
marginalia aux file, e.g., .aum.  (Caveat:  don't try to use .tmp
either -- it might be used by Eplain under certain circumstances).

> The warning goes away if I use the optional argument [idxexact] with \enablehyperlinks

This is because idxexact-style index hyperlinks don't use the .aux
file.

Best,
Oleg


\input eplain
\enablehyperlinks%[idxexact]
\hsize = 10cm

% \marginalia macro
\def\raggedleft{\spaceskip=.3333em \xspaceskip=.5em
     \parfillskip=0pt \leftskip=0pt plus\hsize}    

\def\lmarginaliabox#1{%
    \vtop to 0pt{%
      \raggedright
      \hsize=.9in
      \parindent=0pt
      #1
      \vss
      }}

\def\rmarginaliabox#1{%
    \vtop to 0pt{%
      \raggedleft
      \hsize=.9in
      \parindent=0pt
      #1
      \vss
     }}

\newskip\inmarginspacing \inmarginspacing=1em
\def\strutdepth{\dp\strutbox}

\newcount\marginalno
\marginalno0

\def\marginalpage#1#2{%
    \expandafter\def\csname marginalpage#1\endcsname{#2}}

\let\protect\relax
%\newread\auxin
%\newwrite\auxout
%\openin\auxin\jobname.aux
%\ifeof\auxin
%  \let\noaux=1
%  \immediate\openout\auxout\jobname.aux
%  \immediate\closeout\auxout
%\else
%  \let\noaux=0
%  \closein\auxin
%\fi
%\input \jobname.aux
\readauxfile

\outer\def\bye{%
  \par\vfill\supereject
%  \ifx\noaux1
%    \newlinechar=`\^^J
%    \message{^^J(Run TeX a second time to resolve marginal note placing)}%
%  \fi
  \end
}

%\immediate\openout\auxout \jobname.aux
\def\protect{\noexpand\protect\noexpand}

\def\marginalia#1{%
\strut\vadjust{%
  \nobreak
  \kern-\strutdepth
  \vtop to \strutdepth{%
    \vss

  \global\advance\marginalno1
%  \edef\writeit{\write\auxout{%
  \edef\writeit{\write\auxfile{%
                    \protect\marginalpage
                   {\number\marginalno}%
                    {\noexpand\number\count0}}}
  \writeit
  \expandafter\ifodd0\csname marginalpage\number\marginalno\endcsname

% odd page stuff here
\rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces
\lmarginaliabox{{\it #1}}}
\else
% even page stuff here
\llap{\ignorespaces \rmarginaliabox{{\it #1}}\hskip\inmarginspacing}
 \fi
\baselineskip=\strutdepth
\null
}}}


This is a test \marginalia{a note in the margin} to see what happens.


\vfill\eject
\idx{Test}
\vfill\eject
\readindexfile{i}
\bye


More information about the tex-eplain mailing list