[OS X TeX] pdfsync.sty testers needed

Jérome Laurens jerome.laurens at u-bourgogne.fr
Mon Nov 27 04:00:13 EST 2006


Hi,

the package now contains stronger code than ever thanks D. Kastrup
which is good news because David's knowledge in LaTeX is far beyond  
what I will ever reach...
pdfsync.sty is expected to work correctly in almost all situations  
but if you could make some tests on long production documents, it  
would help a lot.

Now, pdfsync requires pdfetex like engines (including xetex I guess),  
what most people should already have, no need to switch.

usage

\usepackage{pdfsync}

of

\usepackage[novbox]{pdfsync}

in case of problems.

There are 2 situations where there can be a problem:
1 -  for the layout, spacing or page breaking can be affected. This  
would be extremely rare.
2 - for the code, some incompatibility exists with actual packages:  
with bigfoot, pdfsync must be run in novbox mode

Finally, let me emphasize that pdfsync.sty is -not- an obsolete  
technology, despite what is said here and there.

TIA for your contribution

----- cut here: save the rest of the file as pdfsync.sty in your  
working directory

%%
%% pdfsync.sty Copyright (C) 2006 J\'er\^ome Laurens
%%
% 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., 51 Franklin St, Fifth Floor, Boston, MA   
02110-1301  USA
%%%%
%%%%  Version 1.0beta usage: \usepackage[options]{pdfsync}
%%%%  ==================
%%%%  appends reference points before each \par and at each \hbox,  
inline math;
%%%%  Known commands:
%%%%  \pdfsync: add this command everywhere you want to reference a  
point
%%%%  \pdfsyncstop, \pdfsyncstart: if pdfsync beaks your code,  
enclose the dangerous part in stop start group
%%%%  option: nopar
%%%%  don't insert reference point at par's
%%%%  option: nomath
%%%%  don't insert reference point at math's
%%%%  option: nohbox
%%%%  don't insert reference point at hboxes
%%%%  option: noextra
%%%%  don't insert reference point at LaTeX extra commands
%%%%  option: off
%%%%  All the pdfsync related commands are \relax'ed
%%%%
%%%%  If you want additional files to be parsed, please use the command
%%%%  \include{foo} or \input{foo},
%%%%  the \input foo will break up the synchronization
%%%%
%%%%  Credits:
%%%%  ========
%%%%  This file is due to Piero D'Ancona and  
jlaurens at users.sourceforge.net
%%%%  iTeXMac, TeXShop, AucTeX, TeXNiscope are supporting pdfsync
%%%%  Copy this file to ~/Library/texmf/tex/latex or ~/Library/TeX/ 
texmf/tex/latex if available
%%%%  This file is distributed under the GPL and the "smart licence":  
please make things better if you can
%%%%  copyright 2006, jlaurens at users.sourceforge.net
%%%%
%%%
%%%
\ifx\pdfsync\undefined\else\message{****  pdfsync.sty: WARNING, the  
package is already loaded.}\expandafter\endinput\fi%
\def\c at nfigPDFSYNC@ff{%
   \let\pdfsync\relax%
   \let\pdfsyncstart\relax%
   \let\pdfsyncstop\relax%
}%
\ifx\pdfsavepos\undefined
\message{****  pdfsync.sty: WARNING, synchronization is only  
available with pdeftex like engines.}%
\c at nfigPDFSYNC@ff
\let\c at nfigPDFSYNC@ff=\undefined
\expandafter\endinput
\fi
% Defining the preamble of the style file:
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{pdfsync}[2006/09/07 v1.0beta]%
% start of the code
\let\c at nfigPDFSYNCp@r\relax%
\let\c at nfigPDFSYNCm@th\relax%
\let\c at nfigPDFSYNCdispl@y\relax%
\let\c at nfigPDFSYNChb@x\relax%
\let\c at nfigPDFSYNCvb@x\relax%
\let\c at nfigPDFSYNC@cr\relax%
% Subverting |\everypar| to prepend pdfsync |\@PDFSYNC| specific code  
that will
% be executed for each new paragraph.
%This was primarly suggested by Curtis Clifton on 12/17/2004 (google  
"subvert token" for details).
\def\c at nfigPDFSYNCp@r{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everypar}%
\newtoks\PDFSYNCeveryp at r
\PDFSYNCeveryp at r\everypar
\everypar{\bgroup\setbox\z@\lastbox\@PDFSYNC\box\z@\egroup
   \the\PDFSYNCeveryp at r}%
\let\everypar\PDFSYNCeveryp at r
}%
%
\def\c at nfigPDFSYNCdispl@y{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everydisplay}%
\newtoks\PDFSYNCeverydispl at y
\PDFSYNCeverydispl at y\frozen at everydisplay
\frozen at everydisplay{\@PDFSYNC\the\PDFSYNCeverydispl at y}%
\let\frozen at everydisplay\PDFSYNCeverydispl at y
}%
%
\def\c at nfigPDFSYNCm@th{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everymath}%
\newtoks\PDFSYNCeverym at th
\PDFSYNCeverym at th\frozen at everymath
\frozen at everymath{\@PDFSYNC\the\PDFSYNCeverym at th}%
\let\frozen at everymath\PDFSYNCeverym at th
}%
%
\def\c at nfigPDFSYNChb@x{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everyhbox}%
\newtoks\PDFSYNCeveryhb at x
\PDFSYNCeveryhb at x\everyhbox
\everyhbox{\ifPDFSYNC at unblocked
     \begingroup
       \PDFSYNC at unblockedfalse
       \setbox\z@\hbox\bgroup
        \@PDFSYNC
        \setbox\z@\hbox\bgroup\bgroup
          \aftergroup\PDFSYNC at endhbox\the\PDFSYNCeveryhb at x
     \PDFSYNC at unblockedtrue
   \fi}%
\let\everyhbox\PDFSYNCeveryhb at x
\def\PDFSYNC at endhbox{\ifnum\lastnodetype>\m at ne
     \egroup \unhbox\z@ \egroup \unhbox\z@
   \else \egroup \egroup \fi \endgroup \egroup}%
}
%
\def\c at nfigPDFSYNCvb@x{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everyvbox}%
\newtoks\PDFSYNCeveryvb at x
\PDFSYNCeveryvb at x\everyvbox
\everyvbox{\ifPDFSYNC at unblocked
     \begingroup
       \PDFSYNC at unblockedfalse
       \setbox\z@\vbox\bgroup
        \@PDFSYNC
        \setbox\z@\vtop\bgroup\bgroup
          \aftergroup\PDFSYNC at endvbox\the\PDFSYNCeveryvb at x
     \PDFSYNC at unblockedtrue
   \fi}%
\let\everyvbox\PDFSYNCeveryvb at x
\def\PDFSYNC at endvbox{\ifnum\lastnodetype>\m at ne
     \egroup
     \edef\next{\egroup\hrule\@height\the\ht\z@\@depth-\the\ht\z@ 
\relax}%
     \unvbox\z@ \next \unvbox\z@
   \else \egroup \egroup \fi \endgroup \egroup}%
}
%
\def\c at nfigPDFSYNC@cr{\wlog{****  pdfsync.sty: Synchronizing at  
\string\everycr}%
\newtoks\PDFSYNCevery at cr
\PDFSYNCevery at cr\everycr
\everycr{\the\PDFSYNCevery at cr\@PDFSYNC}%
\let\everycr\PDFSYNCevery at cr
}%
% Configure pdsync
\def\c at nfigPDFSYNC{\wlog{Configuring pdfsync}%
\newwrite\PDFSYNC at ut%
\immediate\openout\PDFSYNC at ut\jobname.pdfsync%
\immediate\write\PDFSYNC at ut{\jobname}% control info
\immediate\write\PDFSYNC at ut{version 1}% control info
%   patching \shipout
\let\PDFSYNCship at ut@ld\shipout%
\gdef\PDFSYNCship at utn@w{%
\afterassignment\PDFSYNC at utput%
\setbox\@cclv= %
}%
\def\PDFSYNC at utput{%
\relax%
\ifvoid\@cclv\relax%
\aftergroup\PDFSYNC@@utput%
\else%
\PDFSYNC@@utput%
\fi%
}%
\gdef\PDFSYNC@@utput{%
\global\advance\PDFSYNCf at li@ by 1%
\immediate\write\PDFSYNC at ut{s\space\the\PDFSYNCf at li@}%
\PDFSYNCship at ut@ld\box\@cclv%
}%
%
% patching LaTeX \InputIfFileExists for \include and \input
\let\PDFSYNCInputIfFileExists at ff\InputIfFileExists%
\long\def\PDFSYNCInputIfFileExists at n##1##2##3{%
\immediate\write\PDFSYNC at ut{(##1}%
\PDFSYNCInputIfFileExists at ff{##1}{##2}{##3}%
\immediate\write\PDFSYNC at ut{)}}%
%
\def\PDFSYNCP at siti@n{\the\pdflastxpos\space\the\pdflastypos}%
%
\newif\ifPDFSYNCst at r%
\newif\ifPDFSYNCvb at x%
\newcount\PDFSYNCf at li@\PDFSYNCf at li@=0%
\newcount\PDFSYNC at rder\PDFSYNC at rder=0%
\newif\ifPDFSYNC at unblocked
\PDFSYNC at unblockedtrue
% defining \@@PDFSYNC: the macro that writes to the .pdfsync file
\def\@@PDFSYNC{%
\relax%
\immediate\write\PDFSYNC at ut{l\space\the\PDFSYNC at rder\space\the 
\inputlineno}%
\pdfsavepos%
\edef\next{\write\PDFSYNC at ut{p\ifPDFSYNCst at r*\else\ifPDFSYNCvb at x+\fi 
\fi\space\the\PDFSYNC at rder\space\noexpand\PDFSYNCP at siti@n}}%
\next%
\global\advance\PDFSYNC at rder by 1%
\relax%
}%
%
\def\@pdfsync{\bgroup\PDFSYNCst at rtrue\@PDFSYNC\egroup}%
%
\def\pdfsyncstart{%
\let\shipout\PDFSYNCship at utn@w%
\let\pdfsync\@pdfsync%
\let\@PDFSYNC\@@PDFSYNC%
\let\InputIfFileExists\PDFSYNCInputIfFileExists at n%
}%
\def\pdfsyncstop{%
\let\shipout\PDFSYNCship at ut@ld%
\let\pdfsync\relax%
\let\@PDFSYNC\relax%
\let\InputIfFileExists\PDFSYNCInputIfFileExists at ff%
}%
%
\c at nfigPDFSYNCp@r%
\let\c at nfigPDFSYNCp@r\undefined%
\c at nfigPDFSYNCm@th%
\let\c at nfigPDFSYNCm@th\undefined%
%\c at nfigPDFSYNCdispl@y% This does not work with amsmath
\let\c at nfigPDFSYNCdispl@y\undefined%
\c at nfigPDFSYNChb@x%
\let\c at nfigPDFSYNChb@x\undefined%
\c at nfigPDFSYNCvb@x%
\let\c at nfigPDFSYNCvb@x\undefined%
%\c at nfigPDFSYNC@cr% This does not work "Missing \cr inserted" in  
maketitle
\let\c at nfigPDFSYNC@cr\undefined%
% the problem of the soul package
     \ifx\SOUL@\undefined\relax\else%
	\message{! pdfsync is patching the soul package}
         \let\PDFSYNC at SOUL@\SOUL@
         \def\SOUL@##1{%
             \bgroup\pdfsyncstop\PDFSYNC at SOUL@{##1}\egroup
         }%
     \fi%
\pdfsyncstart%
\wlog{****  pdfsync.sty: started}%
}%
%
\AtBeginDocument{%
\c at nfigPDFSYNC%
\let\c at nfigPDFSYNC\undefined%
}%
% end of the core code
% Declaring the option 'nopar' to disable this feature
\DeclareOption{nopar}{\let\c at nfigPDFSYNCp@r\relax}%
% Declaring the option 'nomath' to disable this feature
\DeclareOption{nomath}{\let\c at nfigPDFSYNCm@th\relax}%
% Declaring the option 'nodisplay' to disable this feature
\DeclareOption{nodisplay}{\let\c at nfigPDFSYNCdispl@y\relax}%
% Declaring the option 'nohbox' to disable this feature
\DeclareOption{nohbox}{\let\c at nfigPDFSYNChb@x\relax}%
% Declaring the option 'novbox' to disable this feature
\DeclareOption{novbox}{\let\c at nfigPDFSYNCvb@x\relax}%
% Declaring the option 'nocr' to disable this feature
\DeclareOption{nocr}{\let\c at nfigPDFSYNC@cr\relax}%
% Declaring the option 'off', all the macros are set to \relax
\DeclareOption{off}{\let\c at nfigPDFSYNC\c at nfigPDFSYNC@ff}%
\ProcessOptions%
\endinput%



------------------------- Info --------------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
          & FAQ: http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Archive: http://tug.org/pipermail/macostex-archives/




More information about the MacOSX-TeX mailing list