[OS X TeX] pdfsync.sty testers needed
Alessandro Andretta
alessandroandretta at mac.com
Wed Nov 29 14:37:15 EST 2006
works MUCH better than the previous version. In particular, it does
not seem to affect the pdf file too much.
The old version was creating lots of extra spaces here and there: on
the document I am working on, the
length used to increase from 250 to 258.
Good job!
--aa
On 27 Nov 2006, at 10:00, Jérome Laurens wrote:
> 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/
>
------------------------- 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