diff options
author | Karl Berry <karl@freefriends.org> | 2015-07-24 21:32:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-07-24 21:32:13 +0000 |
commit | 45753dabbb93091efcea2a70996bcbdc51a39761 (patch) | |
tree | fe2868a7aa1ee754a2fbb7dee92bb9a534d10145 | |
parent | 5700bb5345e7a304c811f215f1d0e5a7da2b7ff1 (diff) |
pdfpagediff (24jul15)
git-svn-id: svn://tug.org/texlive/trunk@37946 c570f23f-e606-0410-a88d-b1316a301751
17 files changed, 916 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/README b/Master/texmf-dist/doc/latex/pdfpagediff/README new file mode 100644 index 00000000000..d3d7011f2fa --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/README @@ -0,0 +1,24 @@ +This directory contains the LaTeX2e package 'pdfpagediff' +Version: 1.4; July 24, 2015 + +This package shall be used to find differences between two versions of +PDF's of same document. + +Copyright (C) 2010-2015, CV Radhakrishnan + JWRA 34, Jagathy + Trivandrum 695014, India + Email: <cvr@cvr.cc> + +This program can be redistributed and/or modified under the terms +of the LaTeX Project Public License Distributed from CTAN +archives in directory macros/latex/base/lppl.txt; either +version 1 of the License, or any later version. + +If you find this package useful, please send me a postcard. + +To install: + copy pdfdocdiff.sty to a directory in your $TEXINPUTS path and + update TeX's file database. + +$Id: README,v 1.2 2015/07/24 09:57:54 cvr Exp cvr $ + diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/Makefile b/Master/texmf-dist/doc/latex/pdfpagediff/doc/Makefile new file mode 100644 index 00000000000..84aaa5a4b2b --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/Makefile @@ -0,0 +1,42 @@ +## +## Makefile +## +## +## +## +## + +file=pdfpagediff-doc + + +all: pdf out + make pdf + +out: + if [ -f $(file).out ] ; then cp $(file).out tmp.out; fi ; + sed 's/BOOKMARK/dtxmark/g;' tmp.out > x.out; mv x.out tmp.out ; + +pdf: + pdflatex $(file).tex + +index: + makeindex -s gind.ist -o $(file).ind $(file).idx + +changes: + makeindex -s gglo.ist -o $(file).gls $(file).glo + +xview: + xpdf -z 200 $(file).pdf &>/dev/null + +view: + acroread $(file).pdf + +ins: + latex $(file).ins + +diff: + diff $(file).sty ../$(file).sty |less + +copy: + cp $(file).sty ../ + diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar1.png b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar1.png Binary files differnew file mode 100644 index 00000000000..61f00dd2814 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar1.png diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar2.png b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar2.png Binary files differnew file mode 100644 index 00000000000..8c8420e8e09 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar2.png diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar3.png b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar3.png Binary files differnew file mode 100644 index 00000000000..c6504d26c50 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/ar3.png diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.pdf b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.pdf Binary files differnew file mode 100644 index 00000000000..8a20c5afc10 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.pdf diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.sty b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.sty new file mode 100644 index 00000000000..582f6ecd9fa --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.sty @@ -0,0 +1,360 @@ +%% +%% This is file 'pdfpagediff-doc.sty'. +%% +%% A supplementary package with auxiliary macros needed to typeset +%% the documentation file, pdfpagediff-doc.tex. +%% +%% File: pdfpagediff-doc.sty Copyright (c) 2010-2015, CV Radhakrishnan +%% JWRA 34, Jagathy, Trivandrum 695014 +%% http://www.cvr.cc Email: <cvr@cvr.cc> +%% +%% This package may be distributed under the terms of the LaTeX Project +%% Public License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% $Id: pdfpagediff-doc.sty,v 1.3 2015/07/24 09:46:59 cvr Exp cvr $ +%% +%% +\RequirePackage[dvipsnames,svgnames]{xcolor} +\RequirePackage{graphicx} +\RequirePackage{tikz} +\usetikzlibrary{backgrounds} +\newdimen\lmrgn +\def\rulecolor{seccolor} +\def\rulewidth{1pt} +\pgfdeclareshape{filledbox}{% + \inheritsavedanchors[from=rectangle] % + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \inheritanchor[from=rectangle]{north} + \inheritanchor[from=rectangle]{south} + \inheritanchor[from=rectangle]{west} + \inheritanchor[from=rectangle]{east} + \backgroundpath{% + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + \pgf@xc=\pgf@xb \advance\pgf@xc by-5pt + \pgf@yc=\pgf@yb \advance\pgf@yc by-5pt + \pgfsetlinewidth{.2pt} + \pgfsetstrokecolor{seccolor} + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfsetcornersarced{\pgfpoint{9pt}{9pt}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} + \pgfsetcornersarced{\pgforigin} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} + \pgfsetcornersarced{\pgfpoint{9pt}{9pt}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} + \pgfsetcornersarced{\pgforigin} + \pgfpathclose ; + }% +} + +\newdimen\Linewidth +\setlength\Linewidth{\textwidth} +\addtolength{\Linewidth}{-17pt} +\newcounter{clip} +\def\src#1{\gdef\@src{#1}}\let\@src\@empty +\def\includeclip{\@ifnextchar[{\@includeclip}{\@includeclip[]}} +\def\@includeclip[#1]#2#3#4{\par + \vskip.75\baselineskip plus 3pt minus 1pt + \begingroup\color{white}% + \noindent% + \begin{tikzpicture} + %\node[fill=black!10,draw,shape=filledbox, + \node[fill=white,% + draw, + shade,% + top color=white!10, + bottom color=white, + shape=filledbox, + inner sep=8pt, + text width=\Linewidth] (x) + {\parbox{\Linewidth} + {\ifx\@src\@empty\else\refstepcounter{clip}\label{clip\theclip}% + {\color{seccolor}\sffamily\scriptsize + Clip \theclip\space\@src, p.\,#2}% + \par\vskip3pt\fi\normalcolor + \includegraphics[width=\Linewidth,page={#2},% + viewport={#3},clip=true,#1]{#4}} + \hspace*{-10pt}}; + \end{tikzpicture} + \endgroup + \par\vskip.5\baselineskip + plus 3pt minus 1pt} +%% +%% include clippings from a pdf document: +%% #1 => Optional argument for \includegraphics +%% #2 => page number +%% #3 => co-ordinates +%% #4 => file name + + \colorlet{itemcolor}{brown} + \colorlet{verbcolor}{Sepia} + \colorlet{botrulecolor}{orange!25} + \colorlet{botbgcolor}{orange!15} + \colorlet{botcolor}{orange!80} + \colorlet{pgrulecolor}{orange} + \colorlet{pgbgcolor}{white} + + \colorlet{quicklinkrulecolor}{orange!40} + \colorlet{quicklinkcolor}{brown} + \colorlet{topverticalrule}{brown} + \colorlet{titlecolor}{brown} + \colorlet{hlinkcolor}{brown} + \colorlet{hlinktricolor}{orange!70} + \colorlet{linkcolor}{brown} + \colorlet{urlcolor}{brown} + + \colorlet{arrayrulecolor}{olive!30} + \colorlet{seccolor}{brown} + + \colorlet{toprulecolor}{orange!30} + \colorlet{topbgcolor}{orange!10} + \colorlet{topcolor}{brown!80} +% +% +\def\floatpagefraction{.99} +\RequirePackage{geometry} +\geometry{top=2in, + bottom=1in, + left=2in, + right=1in, + a4paper} + +\DeclareRobustCommand{\LaTeX}{L\kern-.25em% + {\sbox\z@ T% + \vbox to\ht\z@{% + \hbox{% + \check@mathfonts + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }% + \kern-.10em% + \TeX} + +\RequirePackage{comment,xspace} +\def\xml{\textsc{xml}\xspace} +\def\latex{{\small\LaTeX}\xspace} +\def\pdf{\textsc{pdf}\xspace} +\def\pdfa{\textsc{pdf/a-1}b\xspace} +\def\pdfx{\textsc{pdf/x-1}a\xspace} +\def\xmp{\textsc{xmp}\xspace} +\def\pdftex{\textsc{pdf{\small\TeX}}\xspace} +\def\defmacro#1{\texttt{\bsl#1}} +\def\thanh{H\`an Th\^e\llap{\raise 0.5ex\hbox{\'{}}} Th\`anh\xspace} +\def\gnulinux{\textsc{gnu/linux}\xspace} +\def\bsl{\expandafter\@gobble\string\\} +\def\tex{{\small\TeX}\xspace} + +\let\@DRAFTout@Hook\@empty +\newcommand{\DRAFTout}{\g@addto@macro\@DRAFTout@Hook} +\newcommand{\@DRAFTout@Out}{% + \afterassignment\@DRAFTout@Test + \global\setbox\@cclv= % + } +\newcommand{\@DRAFTout@Test}{% + \ifvoid\@cclv\relax + \aftergroup\@DRAFTout@Output + \else + \@DRAFTout@Output + \fi% + } +\newcommand{\@DRAFTout@Output}{% + \@DRAFTout@Hook% + \@DRAFTout@Org@Out\box\@cclv% + } +\newcommand{\@DRAFTout@Org@Out}{} +\newcommand*{\@DRAFTout@Init}{% + \let\@DRAFTout@Org@Out\shipout + \let\shipout\@DRAFTout@Out + } +\newdimen\OHeight +\setlength\OHeight{\textheight} +\addtolength\OHeight{\headheight} +\addtolength\OHeight{\headsep} +\addtolength\OHeight{\footskip} + +\newif\ifoverlay\overlayfalse + +\AtBeginDocument{\@DRAFTout@Init} +\newcommand{\@DraftOverlay@Hook}{} +\newcommand{\AddToDraftOverlay}{\g@addto@macro\@DraftOverlay@Hook} +\newcommand{\ClearDraftOverlay}{\let\@DraftOverlay@Hook\@empty} +\newcommand{\@DraftOverlay}{% + \ifx\@DraftOverlay@Hook\@empty + \else + \bgroup + \@tempdima=1in + \@tempcnta=\@tempdima + \@tempcntb=-\@tempdima + \advance\@tempcntb\paperheight + \ifoverlay + \global\setbox\@cclv\vbox{% + \box\@cclv + \vbox{\let\protect\relax% + \unitlength=1pt% + \pictur@(0,0)(\strip@pt\@tempdima,\strip@pt\@tempdimb)% + \@DraftOverlay@Hook% + \endpicture}}% + \else + \global\setbox\@cclv\vbox{% + \vbox{\let\protect\relax% + \unitlength=1sp% + \pictur@(0,0)(\@tempcnta,\@tempcntb)% + \@DraftOverlay@Hook% + \endpicture}% + \box\@cclv}% + \fi + \egroup + \fi +} + +\definecolor{gray30}{gray}{.7} +\definecolor{gray20}{gray}{.8} +\definecolor{gray10}{gray}{.9} + +\DRAFTout{\@DraftOverlay} +\long\def\puttext(#1)#2{\AddToDraftOverlay{% + \setlength{\unitlength}{1pt}\thinlines% + \put(#1){#2}}} + +\RequirePackage{shortvrb} +\MakeShortVerb{\|} +\RequirePackage{amsfonts,amssymb} +\IfFileExists{mathpazo.sty}{\RequirePackage{mathpazo}}{} +\IfFileExists{charter.sty}{\RequirePackage{charter}}{} +\IfFileExists{sourcesanspro.sty}{\RequirePackage[osf,light,default]{sourcesanspro}}{} +\IfFileExists{inconsolata.sty}{\RequirePackage[scaled=.9]{inconsolata}}{} + +\def\theCodelineNo{\reset@font\tiny\arabic{CodelineNo}} + +\def\@seccntformat#1{\llap{\csname the#1\endcsname.\hspace*{6pt}}} +\def\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\large\bfseries\color{seccolor}}} +\def\subsection{\@startsection{subsection}{2}{\z@}% + {-2.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries\color{seccolor}}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-1.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries\color{seccolor}}} + +\puttext(0,36){\botstring}% + \puttext(0,840){\copy\topbox} + +\RequirePackage{colortbl} +\arrayrulecolor{arrayrulecolor} +\let\shline\hline +\def\hline{\noalign{\vskip3pt}\shline\noalign{\vskip4pt}} + +\RequirePackage[pdftex,colorlinks]{hyperref} +\def\Hlink#1#2{\hyperlink{#2}{\color{hlinktricolor}% + $\blacktriangleright$~\color{hlinkcolor}#1}} + \def\@linkcolor{linkcolor} + \def\@urlcolor{urlcolor} + +\pagestyle{empty} +\def\version#1{\gdef\@version{#1}} +\def\@version{1.0} +\def\contact#1{\gdef\@contact{#1}} +\def\author#1{\gdef\@author{#1}} +\def\@author{CV Radhakrishnan} +\def\@contact{\texttt{cvr@cvr.cc}} +\def\keywords#1{\gdef\@keywords{#1}} +\def\@keywords{\LaTeX, \xml} + +\long\def\Hrule{\\[-4pt]\hspace*{-3em}% + {\color{quicklinkrulecolor}\rule{\linewidth}{.1pt}}\\} + +\long\def\dtxmarkone[#1][#2]#3#4#5{\def\next{#1}% + \ifcase\next\or\Hlink{#4}{#3}\Hrule \fi} + +\newcounter{dtx} + +\long\def\dtxmarktwo[#1][#2]#3#4#5{\def\next{#1}% + \stepcounter{dtx}\parbox{.45\linewidth}% + {\ifcase\next\or\Hlink{#4}{#3}\fi}% + \ifodd\thedtx\relax\else\Hrule\fi} + +%\let\dtxmark\dtxmarkone +\let\dtxmark\dtxmarktwo + +\newbox\topbox +\long\def\maketitle{\global\setbox\topbox=\vbox{\hsize=\paperwidth + \parindent=0pt + \fcolorbox{toprulecolor}{topbgcolor}% + {\parbox[t][1.5in][c]{\paperwidth}% + {\hspace*{15mm}% + \parbox[c]{.35\paperwidth}{\fontsize{18pt}{20pt}% + \raggedright\normalfont\sffamily \selectfont + \color{titlecolor} \@title\\[6pt] + {\normalsize\rmfamily\scshape\@author}\\% + {\footnotesize\textsc{keywords:} \@keywords}}% + \hfill + \parbox[c][1.5in][c]{1mm}{\color{topverticalrule}% + \rule{.1pt}{1.5in}}% + \hfill + \parbox[c][1.5in][c]{.35\paperwidth}% + {\normalfont\footnotesize\sffamily\color{quicklinkcolor}% + \vspace*{6pt} QUICK LINKS\Hrule + \IfFileExists{tmp.out}{\input tmp.out}{}% + }\hspace*{5mm}% + }% + }% + }% +} +\gdef\botstring{\fcolorbox{botrulecolor}{botbgcolor}% + {\parbox[t][.5in][t]{\paperwidth}% + {\normalfont\sffamily\footnotesize% + \color{botcolor}% + \hspace*{5mm}\parbox[c][.5in][c]{.45\paperwidth}% + {\raggedright CVR.CC, + \href{http://www.cvr.cc}{% + http://www.cvr.cc}\\ + JWRA 34, Jagathy, Trivandrum + 695014, India + }\hfill% + \parbox[c][.5in][c]{1cm} + {\centering\sffamily\mdseries + \fcolorbox{pgrulecolor}{pgbgcolor}{\thepage}% + }\hfill + \parbox[c][.5in][c]{.45\paperwidth} + {\raggedleft\begin{tabular}{rl}% + Version:&\@version\\ + Date:&\@date\\ + Contact:&\@contact + \end{tabular}\hspace*{5mm}% + }% + }% + }% + } + +\RequirePackage{enumitem} +\setitemize[1]{label={\small\color{itemcolor}$\blacktriangleright$},itemsep=0pt} +\setitemize[2]{label={\small\color{itemcolor}$\triangleright$},itemsep=0pt} +\setenumerate[1]{label={\small\color{itemcolor}\arabic*.},itemsep=0pt} + +\def\MacroFont{\fontencoding\encodingdefault + \fontfamily\ttdefault + \fontseries\mddefault + \fontshape\updefault + \color{verbcolor}\small}% + +\def\verbatim@font{\normalfont\color{verbcolor}\ttfamily} + +\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \verb@eol@error \let\do\@makeother \dospecials + \verbatim@font\@noligs + \@ifstar\@sverb\@verb} + +\endinput + +%% +%% End of file 'pdfpagediff-doc.sty' +%%
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.tex b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.tex new file mode 100644 index 00000000000..43a7d2a7e7a --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/doc/pdfpagediff-doc.tex @@ -0,0 +1,179 @@ +%% +%% +%% This is file 'pdfpagediff-doc.tex'. +%% +%% File: pdfpagediff-doc.tex Copyright (c) 2010 C. V. Radhakrishnan +%% JWRA 34, Jagathy, Trivandrum 695014 +%% http://www.cvr.cc Email: <cvr@cvr.cc> +%% +%% This document may be distributed under the terms of the LaTeX Project +%% Public License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% $Id: pdfpagediff-doc.tex,v 1.5 2015/07/24 09:42:14 cvr Exp cvr $ +%% +%% + +\documentclass[a4paper]{article} + +\usepackage{pdfpagediff-doc} + +\begin{document} + +\title{User Manual of \texttt{pdfpagediff} Package} +\date{2015/07/24} +\version{1.5} +\keywords{\pdf, \textsc{pdf}{\fontsize{6.5}{7}\selectfont\TeX, \LaTeX}} +\author{C.\,V.\,Radhakrishnan} +\contact{\texttt{cvr@cvr.cc}} + +\maketitle +\advance\baselineskip by 1pt + +\noindent We often encounter nightmarish scenario while generating +final versions of a long document when one or more of the following +happens: +\begin{enumerate} +\item New revised versions of packages used. +\item Smaller changes to a fewer number of pages of a long document. +\item No change in the document, but recompiled with revised page + numbers as it happens during compilation of journal articles into an + issue for printing. +\item Simply you happened to retypeset for no reason and then you're + forced to check each page for surprises. +\end{enumerate} + +Now you are left with the job of comparing the \textsc{pdf}s generated +now and that of previous version and it is not fun. To make the job +easier, |pdgpagediff| package is written. + +\section{Principles} + +We have a version of document, say, |file1.pdf| and we have its +revised version, |file2.pdf|. |pdfpagediff| will create a composite +pdf by juxtaposing each page of |file1.pdf| over the corresponding +page of |file2.pdf| or vice-versa. Since the pdf's are transparent, +you can notice the slightest change visually by simply flipping +through the pages. + +\section{Dependencies} + +|pdfpagediff| depends on the following packages: +\begin{enumerate} +\item |geometry.sty| +\item |graphicx.sty| +\item |color.sty| +\item |substr.sty| +\end{enumerate} + +\section{Usage} + +Package can be loaded with the following command: +\begin{verbatim} + \usepackage{pdfpagediff} +\end{verbatim} +Another command |\layerPages| has been defined to include two versions +of the \pdf documents to create the composite document, the syntax is: +\begin{verbatim} + \layerPages[<optional page numbers>]{<file1>}{<file2>}| +\end{verbatim} +First one doesn't have an optional argument of page numbers, which +means all the pages will be used to create the composite document. +Second one has comma separted page numbers and hyphen separated page +ranges which can be mixed in any order as shown in subsequent examples +of usage. The last one has |10-| which means from page |10| to end +of the document. + +\begin{enumerate} +\item |\layerPages{file1.pdf}{file2}| +\item |\layerPages[1,2,4-6,8]{file1}{file2.pdf}| +\item |\layerPages[1,2,4-6,8,10-22]{file1.pdf}{file2.pdf}| +\item |\layerPages[1,2,4-6,8-13,17]{file1}{file2.pdf}| +\item |\layerPages[10-]{file1.pdf}{file2.pdf}| +\end{enumerate} +You need Adobe Reader to view the composite document which only +provides to view each layer or all layers together or no layers at +all. There is a small layer button at top left hand side of the +Adobe Reader window, see the figure below: + +\medskip +\noindent\includegraphics[width=\linewidth]{ar1} + +\medskip\noindent +You can see |Layers| icon, clicking on the icon will show you the +layers. We have two layers in this example, namely, |First| and +|Second| which are also the default. These labels can be changed with +|\FirstDoc| and |\SecondDoc| commands respectively. + +\subsubsection*{First Document} +\noindent\includegraphics[width=\linewidth]{ar2.png} + +\medskip\noindent The above figure shows the first document alone. You +might note that icon for second layer is not visible now. + +\subsubsection*{Second Document} +\noindent\includegraphics[width=\linewidth]{ar3.png} + +\medskip\noindent The second document is generated with 30\% gray +instead of black to facilitate easy indication of locations with +differences. Also, note that icon for first layer is invisible since +the second layer alone is mode visible here. + +\section{Examples} + +You might take a look at Clip \ref{clip1} which has a paragraph from +the composite document. The last word of the paragraph has a +mismatch. + +\src{A paragraph from composite document.} +\includeclip{3}{104 419 508 556}{ltest.pdf} + +Now let us take a look at the last two lines of the above para from +the first document: + +\src{Last two lines from first document.} +\includeclip{3}{104 380 508 408}{file1.pdf} + +Here is the same location of the second document: + +\src{Last two lines from second document.} +\includeclip{3}{104 380 508 408}{file2.pdf} + +\noindent The difference is a space added before the last word +`concepts'. If you look at Clip \ref{clip1} now, you will get to know +the difference quickly. + +Further differences can be observed in pages 9 and 17 of the included +document, |ltest.pdf|. + +\section{Limitations} +Following limitations apply: +\begin{enumerate} +\item Documents with enormous changes cannot be comapared. +\item Documents with opaque backgrounds cannot be compared. +\item Tables and figures with background will not provide any + meaningful information even if there are differences. +\item This is not a character by character or word by word diff + program, instead it depends largely on your eyes very much. +\item |pdfpagediff| will work only with \pdftex and will not work with + any other \tex compilers. + +\end{enumerate} + +\section{Acknowledgements} + +The test document is a chapter namely, |matrices.tex| from a freely +available textbook, \emph{Matrix Overview} by Paul Hewson, at: +\url{http://knowledgeforge.net/opentextbook/svn/multivariatestatistics/}. +Permission to use this chapter to demonstrate the features of +|pdfpagediff| is gratefully acknowledged. + +\section{Download} + +The package can be downloaded from +\url{http://www.ctan.org/pkg/pdfpagediff}. Bug +reports, feature requests and suggestions can be posted at +\url{http://www.cvr.cc/pdfpagediff/}. The author can be contacted at +\url{<cvr@cvr.cc>}. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/example/file1.pdf b/Master/texmf-dist/doc/latex/pdfpagediff/example/file1.pdf Binary files differnew file mode 100644 index 00000000000..518574d0699 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/example/file1.pdf diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/example/file2.pdf b/Master/texmf-dist/doc/latex/pdfpagediff/example/file2.pdf Binary files differnew file mode 100644 index 00000000000..d2bee0f2477 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/example/file2.pdf diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.pdf b/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.pdf Binary files differnew file mode 100644 index 00000000000..30831d78eee --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.pdf diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.tex b/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.tex new file mode 100644 index 00000000000..bbcb83299cf --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/example/ltest.tex @@ -0,0 +1,22 @@ +% +% This document is in public domain. +% +\documentclass[a4paper]{article} +\usepackage{pdfpagediff} + +\begin{document} + +% \definejnldata{stat}{-12pt}{0pt}{0pt} +% \nameUse{statnormal} + +%% examples of usage + +% \layerPages{file1.pdf}{file2} +% \layerPages[1,2,4-6,8,10-22]{file1.pdf}{file2.pdf} +% \layerPages[1,2,4-6,8]{file1}{file2.pdf} +% \layerPages[1-]{file1.pdf}{file2.pdf} +% \layerPages[1,2,4-6,8,11-22]{file1.pdf}{file2} + +\layerPages{file1.pdf}{file2.pdf} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/pdfpagediff/manifest.txt b/Master/texmf-dist/doc/latex/pdfpagediff/manifest.txt new file mode 100644 index 00000000000..6a0d417133b --- /dev/null +++ b/Master/texmf-dist/doc/latex/pdfpagediff/manifest.txt @@ -0,0 +1,25 @@ +Following files are available in the package, 'pdfpagediff' +---------------------------------------------------------- + + manifest.txt this file + pdfpagediff.sty package + README readme + + +./doc: documentation directory + ar1.png image included in doc + ar2.png -do- + ar3.png -do- + Makefile GNU makefile to generate pdf + pdfpagediff-doc.pdf pdf output of doc + pdfpagediff-doc.sty package needed to run doc + pdfpagediff-doc.tex documentation source + +./example: example directory + + file1.pdf pdf of first version + file2.pdf pdf of second version + ltest.pdf pdf of composite version + ltest.tex source tex to generate composite + + diff --git a/Master/texmf-dist/tex/latex/pdfpagediff/pdfpagediff.sty b/Master/texmf-dist/tex/latex/pdfpagediff/pdfpagediff.sty new file mode 100644 index 00000000000..75dfefe87b8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pdfpagediff/pdfpagediff.sty @@ -0,0 +1,261 @@ +%% +%% +%% This is file 'pdfpagediff.sty'. +%% +%% File: pdfpagediff.sty Copyright (c) 2010-2015, C. V. Radhakrishnan +%% JWRA 34, Jagathy, Trivandrum 695014 +%% http://www.cvr.cc Email: <cvr@cvr.cc> +%% +%% This package may be distributed under the terms of the LaTeX Project +%% Public License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% $Id: pdfpagediff.sty,v 1.4 2015/07/24 09:39:20 cvr Exp cvr $ +%% +\NeedsTeXFormat{LaTeX2e} +\def\Fileversion$#1: #2 ${\gdef\fileversion{#2}} +\def\Filedate$#1: #2 #3 ${\gdef\filedate{#2}} +\Fileversion$Revision: 1.4 $ +\Filedate$Date: 2015/07/24 09:39:20 $ +\ProvidesPackage{pdfpagediff} + [\filedate\space\fileversion\space Page diff of 2 PDFs (CVR)] +\PackageWarningNoLine{pdfpagediff} + {****************************************\MessageBreak + Package pdfpagediff v,\fileversion\space loaded\MessageBreak + [Page diff of two PDFs (CVR)]\MessageBreak + ****************************************} +% +% Load needed packages: +% +\RequirePackage[margin=0pt,headsep=0pt,headheight=0pt,footskip=0pt]{geometry} +\RequirePackage{graphicx,color} +\pagestyle{empty} + +\@ifundefined{pdfoutput} + {\PackageError{pdfpagediff} + {You're either not using pdfLaTeX\MessageBreak + or have turn off PDF output.\MessageBreak + 'pdfpagediff' only works with pdfLaTeX\MessageBreak + and PDF output} + {Use 'pdflatex' instead of 'latex'\MessageBreak + and set output to PDF (usage: \pdfoutput = 1)!} + \endinput + } + {\ifnum\pdfoutput=\z@ + \PackageError{pdfpagediff} + {PdfTeX is set to DVI output, but\MessageBreak + PDF is required for 'pdfpagediff' package} + {Set output to PDF. (usage: \pdfoutput = 1)} + \expandafter\endinput + \fi} + +\def\obj{\immediate\pdfobj} + +\def\objref#1{\space\expandafter\doobjref\number#1\relax} +\def\doobjref#1\relax{#1 0 R} + +\def\objrefs#1{% + \ifx#1\relax + \space + \else + \objref{#1}\expandafter\objrefs + \fi} + +\def\lastobjref{\objref\pdflastobj} +\def\thisobjref{\objref{\numexpr\pdflastobj+1\relax}} +\def\nextobjref{\objref{\numexpr\pdflastobj+2\relax}} % eTeX needed + +% +% We will make two layers +% +\def\FirstDoc#1{\gdef\@FirstDoc{#1}} +\def\SecondDoc#1{\gdef\@SecondDoc{#1}} +\def\@FirstDoc{First} +\def\@SecondDoc{Second} + +\def\openlayer{ BDC} +\def\closelayer{ EMC} + +\obj{<< /Type /OCG /Name (\@FirstDoc) >>} +\def\PPDonercname{/OC1} +\edef\PPDoneobjnum{\the\pdflastobj} +\edef\PPDone{ /OC \PPDonercname} + +\obj{<< /Type /OCG /Name (\@SecondDoc) >>} +\def\PPDtworcname{/OC2} +\edef\PPDtwoobjnum{\the\pdflastobj} +\edef\PPDtwo{ /OC \PPDtworcname} + +\obj{% +<< + \PPDonercname\space\objref\PPDoneobjnum \space + \PPDtworcname\space\objref\PPDtwoobjnum \space +>> +} + +\edef\layersnames{\lastobjref} + +\edef\next{\pdfpageresources={/Properties \layersnames}} +\next + +\edef\layersorder{\objrefs\PPDoneobjnum\PPDtwoobjnum\relax} +\edef\layerson{\objrefs\PPDoneobjnum\relax} +\edef\layersoff{\objrefs\PPDtwoobjnum\relax} + +\obj{% +<< + /Order [\layersorder] \space + /ON [\layerson ] \space +% /OFF [\layersoff ] \space + /ON [\layersoff ] \space +>> +} + +\edef\layersconfig{\lastobjref} + +\obj{% +<< +/S /SetOCGState +/State [ /ON \objrefs\PPDoneobjnum\PPDtwoobjnum\relax ] +>>} + +\edef\layersOn{\lastobjref} + +\pdfcatalog{% +/OCProperties +<< + /OCGs [\layersorder ]\space + /D \layersconfig \space +>> +} + +\parindent=0pt + +\newcounter{cpages} +\newcounter{pages} +\newdimen\vlength +\newdimen\hoddlength +\newdimen\hevenlength + +\vlength=-12pt +\hoddlength=0pt +\hevenlength=0pt + +% +% Let's load substr package to parse various kinds of page numbers +% +\RequirePackage{substr} + +\def\buildPageList#1{\IfSubStringInString{,}{#1}% + {\processComma{#1}}{\processOther{#1}}} + +\def\processNormal#1{\pdf@addtolist{#1}} + +\def\processComma#1{\@for\@comma:=#1\do{% + {\IfSubStringInString{-}{\@comma}% + {{\expandafter\@processHyphen\@comma\END}}% + {\processNormal{\@comma}}% + }% + }% +} + +\def\processOther#1{\IfSubStringInString{-}{#1}% + {\processHyphen{#1}}{\processNormal{#1}}} + +\def\processHyphen#1{\@processHyphen#1\END} +\def\@processHyphen#1-#2\END{\def\next{#2}\ifx\next\@empty + \@tempcntb=\pdflastpage \else \@tempcntb=#2\fi + \@tempcnta=#1 + \global\advance\@tempcntb by 1 + \loop\ifnum\@tempcnta<\@tempcntb + \pdf@addtolist{\the\@tempcnta} + \advance\@tempcnta by 1 + \repeat} + +\let\pdf@pagelist\@empty + +\gdef\pdf@addtolist#1{% + \let\savepdf@pagelist\pdf@pagelist + \ifnum#1<\numexpr\pdflastpage+1 + \xdef\pdf@pagelist{\ifx\savepdf@pagelist\@empty + \else\savepdf@pagelist,\fi#1}\fi} + +\def\findPages#1{\pdfximage{#1}% + \@tempcntb=\the\pdflastximagepages\relax + \edef\lastpage{\the\@tempcntb}% +} + +\newif\ifFiles \Filestrue + +\def\layerPages{\@ifnextchar[{\@@layerPages}{\@@layerPages[1-]}}%] + +\long\def\@@layerPages[#1]#2#3{% + \filename@parse{#2}% + \IfFileExists{\filename@base.pdf}% + {\xdef\PPDfirstdoc{\filename@base.pdf}}{\global\Filesfalse} + \filename@parse{#3}% + \IfFileExists{\filename@base.pdf}% + {\xdef\PPDseconddoc{\filename@base.pdf}}{\global\Filesfalse}% + \ifFiles + \findPages{\PPDfirstdoc} \edef\PPDfirstlastpage{\lastpage}% + \findPages{\PPDseconddoc} \edef\PPDsecondlastpage{\lastpage}% + \ifnum\PPDfirstlastpage<\PPDsecondlastpage + \xdef\pdflastpage{\PPDfirstlastpage}\else% + \ifnum\PPDsecondlastpage<\PPDfirstlastpage + \xdef\pdflastpage{\PPDsecondlastpage}\else + \ifnum\PPDfirstlastpage=\PPDsecondlastpage + \xdef\pdflastpage{\PPDfirstlastpage}\fi\fi\fi + \buildPageList{#1}% +% + \@for\pdfpage:=\pdf@pagelist\do{{% + {\placepages}}}% + \else + \PackageError{pdfpagediff}{Not all PDF docs are available, exiting ...}{} + \expandafter\enddocument\fi +} + +\long\def\placepages{% + \vbox to\z@{\pdfliteral{\PPDone\openlayer}% + \includegraphics[page=\pdfpage]{\PPDfirstdoc}% + \pdfliteral{\closelayer}\vspace{-\textheight}\vfill}% + \par\vskip\vlength + \vbox to\z@{\pdfliteral{\PPDtwo\openlayer}% + \ifodd\thecpages \hspace*{\hoddlength}\else + \hspace*{\hevenlength}\fi + \includegraphics[page=\pdfpage]{\PPDseconddoc}% + \pdfliteral{\closelayer}\vspace{-\textheight}\vfill}% + \clearpage +} + +%% +%% For River Valley to adjust horizontal or vertical shifts +%% between documents. This happens while making CRC's +%% when the first version starts from odd page while +%% second version might start from even page since +%% \openright is not followed by all journals. +%% +\def\definejnldata{\@ifstar{\starjnldata}{\normaljnldata}} +\def\normaljnldata#1#2#3#4{\@namedef{#1normal}{\vlength=#2 + \hoddlength=#3 \hevenlength=#4}} +\def\starjnldata#1#2#3#4{\@namedef{#1even}{\vlength=#2 + \hoddlength=#3 \hevenlength=#4}} +% +% \definedata{<jid>}{<vlength>}{<hodd>}{<heven>} +% +\definejnldata{aml}{-12pt}{0pt}{0pt} +\definejnldata*{aml}{-7pt}{-4pt}{4pt} + +\def\nameUse#1{\@nameuse{#1}% + \typeout{[vlength = \the\vlength]}% + \typeout{[hoddlength = \the\hoddlength]}% + \typeout{[hevenlength = \the\hevenlength]}% +} +%% +%% An example of usage will be: +%% \nameUse{amlnormal} or \nameUse{amleven} +%% +\endinput + +%% +%% End of file, 'pdfpagediff.sty' +%% diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index f57b08a2c8c..34fc610e215 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -414,7 +414,8 @@ my @TLP_working = qw( pbox pb-diagram pbsheet pdf14 pdf-trans pdfbook2 pdfcomment pdfcprot pdfcrop pdfjam pdfmarginpar - pdfpages pdfscreen pdfslide pdfsync pdftex-def pdftricks pdftricks2 pdfx + pdfpagediff pdfpages pdfscreen pdfslide pdfsync + pdftex-def pdftricks pdftricks2 pdfx pecha pedigree-perl perception perfectcut perltex permute persian-bib petiteannonce petri-nets pfarrei diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 3597357e1b7..000dd2a7023 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -721,6 +721,7 @@ depend pdf14 depend pdfcomment depend pdfcprot depend pdfmarginpar +depend pdfpagediff depend pdfscreen depend pdfslide depend pdfsync diff --git a/Master/tlpkg/tlpsrc/pdfpagediff.tlpsrc b/Master/tlpkg/tlpsrc/pdfpagediff.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/pdfpagediff.tlpsrc |