diff options
author | Norbert Preining <norbert@preining.info> | 2018-06-11 12:41:38 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2018-06-11 12:41:38 +0900 |
commit | 119c41f672f44e3acc86d1518ed0a3d8e0149d77 (patch) | |
tree | d8ff092e105b1cfe5ce75b5c259201b4356de136 | |
parent | a490ec665932a1db0f08a98eacea1bf799256db8 (diff) |
update annot-pro
16 files changed, 466 insertions, 127 deletions
diff --git a/texmf-dist/doc/latex/annot-pro/README.md b/texmf-dist/doc/latex/annot-pro/README.md index 113594e6..c73f2de6 100644 --- a/texmf-dist/doc/latex/annot-pro/README.md +++ b/texmf-dist/doc/latex/annot-pro/README.md @@ -1,8 +1,8 @@ -annot_pro --- D. P. Story -Dated: 2016/10/18 +annot_pro +Dated: 2018/04/26 +Version: v1.2 +Author: D. P. Story -What's New: Added support for text box annotations (originally called free -text annotations). Added new sample file textbox.tex. This package is used to create text, stamp, file attachment, and text box annotations using Adobe Distiller, these annotations can be viewed in @@ -11,9 +11,11 @@ Kleber might suffice. Check out my http://www.acrotex.net/ website and my blog site as well at http://blog.acrotex.net/. +What's New (2018/04/26): Added dummy package named annot-pro to conform with +CTAN naming. + Now, I simply must get back to my retirement. D. P. Story -dpstory@uakron.edu dpstory@acrotex.net diff --git a/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf b/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf Binary files differindex 1f28487d..e1209d59 100644 --- a/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf +++ b/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf diff --git a/texmf-dist/doc/latex/annot-pro/examples/annots.pdf b/texmf-dist/doc/latex/annot-pro/examples/annots.pdf Binary files differindex ddf49ec7..e1b6bfea 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/annots.pdf +++ b/texmf-dist/doc/latex/annot-pro/examples/annots.pdf diff --git a/texmf-dist/doc/latex/annot-pro/examples/annots.tex b/texmf-dist/doc/latex/annot-pro/examples/annots.tex index baddee5f..e8fa584c 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/annots.tex +++ b/texmf-dist/doc/latex/annot-pro/examples/annots.tex @@ -1,9 +1,8 @@ -\listfiles \documentclass{article} \usepackage[% web={tight,usesf,usetemplates}, ]{aeb_pro} -\usepackage{annot_pro} +\usepackage[scandoc]{annot_pro} \title{The \textsf{annot\_pro} Package\texorpdfstring{\\[2ex]}{: }Text, Stamp, and File Attachment Annotations} \author{D. P. Story} @@ -60,8 +59,7 @@ these are \texttt{title} (whose value is usually the author of the annotation), and \texttt{subject}. The \texttt{<content>} argument is the text of the pop-up window (in the case of text and stamp annotations), and the file attachment description (for file -attachment annotations).For example, \annotpro[title=Don -Story,subject=AcroTeX.Net]{This is the content of the sticky note.}; the code is +attachment annotations).For example, \annotpro[title=Don Story,subject=AcroTeX.Net]{This is the content of the sticky note.}; the code is \begin{verbatim} \annotpro[title=Don Story,subject=AcroTeX.Net] {This is the content of the sticky note.} @@ -121,7 +119,7 @@ various combinations of \cs{smash} and \cs{makebox}. The code for the stamp abov \smash{\makebox[0pt][l]{\raisebox{36pt}{ \annotpro[type=stamp,name=Approved,widthTo=150bp, color=blue]{I give my stamp of approval!}}}} -\end{verbatim}\previewtrue +\end{verbatim} Did I forget to mention \cs{raisebox}? I needed that command keep the stamp from covering page content. The \textsf{annot\_pro} package has a \texttt{preview} option. If used, the bounding rectangles of the annotations can be viewed in a dvi previewer. This helped me to place the stamp through my dvi previewer. @@ -162,8 +160,8 @@ These stamps are representatives of the many stamps that reside in the reference stamps are known by \textsf{annot\_pro} for these stamps. These can be resized using the \texttt{widthTo}, \texttt{heightTo}, or \texttt{scale} keys. -Note that the names in the \texttt{Dynamic.pdf} file begin with the \texttt{\#} symbol. To reference these stamps, use -\verb!\#!, like so \verb!name=\#DApproved!. +Note that the names in the \texttt{Dynamic.pdf} file begin with the `\texttt{\#}' symbol. To reference these stamps, use +\verb!\#!, like so, \verb!name=\#DApproved!. The bounding rectangle for the non-standard stamps---ones whose dimensions are not known to this package---can be set using the @@ -196,8 +194,5 @@ a value of the file key must be set, here \verb!file={\graphicsPath/AdobeDon.pdf that expands to the path to the folder holding \texttt{AdobeDon.pdf}. The definition of the path was made using a special command, \cs{defineAPath}, in \texttt{annot\_pro}. - - \end{document} -width=185.76bp,height=185.46bp diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps b/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps Binary files differindex 80c8438b..f6db3684 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps +++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps Binary files differindex 1f4b8ffc..d07d5a91 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps +++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps diff --git a/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf b/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf Binary files differindex 19913ab8..44adad38 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf +++ b/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf diff --git a/texmf-dist/doc/latex/annot-pro/examples/stamps.tex b/texmf-dist/doc/latex/annot-pro/examples/stamps.tex index cb961ab7..08c01730 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/stamps.tex +++ b/texmf-dist/doc/latex/annot-pro/examples/stamps.tex @@ -1,7 +1,7 @@ \documentclass[12pt]{article} \usepackage[forpaper]{web} %\usepackage{graphicx} -\usepackage{annot_pro} +\usepackage[scandoc]{annot_pro} \usepackage{array} \setAnnotOptions{subject={annot\_pro by AcroTeX},title={D.P. Story}} @@ -114,6 +114,8 @@ The following three sets were at one time shipped with Acrobat, you may not have \end{tabular} \end{center} +Annot: \annotpro[type=stamp,name=\#AST,widthTo=2in,rotate=45]{Annot\_pro rocks!} + \end{document} diff --git a/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf b/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf Binary files differindex 5534dcc8..92ae5db4 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf +++ b/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf diff --git a/texmf-dist/doc/latex/annot-pro/examples/textbox.tex b/texmf-dist/doc/latex/annot-pro/examples/textbox.tex index 90470cec..9c2f4600 100644 --- a/texmf-dist/doc/latex/annot-pro/examples/textbox.tex +++ b/texmf-dist/doc/latex/annot-pro/examples/textbox.tex @@ -1,6 +1,6 @@ \documentclass[12pt]{article} \usepackage[web={tight*,designiii}]{aeb_pro} -\usepackage[useTextBox]{annot_pro} +\usepackage[useTextBox]{annot-pro} \title{The \textsf{annot\_pro} Package\texorpdfstring{\\[2ex]}{: }The text box annotation} \author{D. P. Story} diff --git a/texmf-dist/source/latex/annot-pro/annot_pro.dtx b/texmf-dist/source/latex/annot-pro/annot_pro.dtx index 7e30b00e..ab9649a5 100644 --- a/texmf-dist/source/latex/annot-pro/annot_pro.dtx +++ b/texmf-dist/source/latex/annot-pro/annot_pro.dtx @@ -2,7 +2,7 @@ %<*copyright> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% annot_pro package, %% -%% Copyright (C) 2002-2016 D. P. Story %% +%% Copyright (C) 2002-2017 D. P. Story %% %% dpstory@uakron.edu %% %% %% %% This program can redistributed and/or modified under %% @@ -14,7 +14,7 @@ %</copyright> %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{annot_pro} -%<package> [2016/10/18 v1.1b Provides selected PDF annotation support (dps)] +%<package> [2018/04/26 v1.2 Provides selected PDF annotation support (dps)] %<*driver> \documentclass{ltxdoc} \usepackage[fleqn]{amsmath} @@ -22,6 +22,7 @@ \let\uif\textsf\let\app\textsf \let\pkg\textsf\let\env\texttt \def\psf#1{\textsf{\textbf{#1}}} +\let\opt\texttt %\def\texorpdfstring#1#2{#1} %\pdfstringdefDisableCommands{\let\\\textbackslash} \OnlyDescription % comment out for implementation details @@ -59,7 +60,21 @@ of changes goes here. Execute % \InputIfFileExists{aebdonotindex.def}{\PackageInfo{web}{Inputting aebdonotindex.def}} % {\PackageInfo{web}{cannot find aebdonotindex.def}} % +% \section{Alternate package name: \texorpdfstring{\protect\pkg{annot-pro}}{annot-pro}} +% CTAN lists this package (\pkg{annot\_pro}) as \pkg{annot-pro}, so we'll create +% a dummy package by that name. +% \changes{v1.2}{2018/04/26}{Added dummy package \string\pkg{annot-pro}} % \begin{macrocode} +%<*altpkgname> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{annot-pro} + [2018/04/26 v1.0 annot-pro Alt-name (dps)] +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{annot_pro}} +\ProcessOptions +\RequirePackage{annot_pro} +% \end{macrocode} +% \begin{macrocode} +%</altpkgname> %<*package> \RequirePackage{xkeyval} % \end{macrocode} @@ -121,6 +136,8 @@ of changes goes here. Execute % \begin{macrocode} \DeclareOptionX{preview}{\previewtrue} \@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{} +\providecommand{\previewOn}{\previewtrue} +\providecommand{\previewOff}{\previewfalse} % \end{macrocode} % \changes{v1.1}{2016/09/29}{Added \string\texttt{useA10Icons} and \string\texttt{useTextBox} options} % (2016/09/29) Added \texttt{useA10Icons} and \texttt{useTextBox} options @@ -136,10 +153,36 @@ of changes goes here. Execute \DeclareOptionX{useTextBox}{\def\ap@requireRichTextAsNeeded{% \RequirePackage{richtext}[2016/10/03]}} \let\ap@requireRichTextAsNeeded\relax +% \end{macrocode} +% The \IndexOpt{scandoc}\opt{scandoc} option calls some doc assembly JavaScript to scan the document +% for stamp annotations. For stamps shipped by Adobe this is not necessary, but for any custom stamps, +% this is needed. +% \begin{macrocode} +\DeclareOptionX{scandoc}{\let\anp@InputScanDoc\anp@scanDoc + \PassOptionsToPackage{execJS}{insdljs}} +% \end{macrocode} +% During document development, you don't what to scan the newly created PDF after you build it to, +% perhaps, edit the text. In this case, use the \IndexOpt{!scandoc}\opt{!scandoc} option. You want to scan the document when you build the document for the last time +% before publishing it. Be sure to save the document using the SaveAs menu item. This saves the +% stamp appearances (symbology in this case) as part of the document. +% \begin{macrocode} +\DeclareOptionX{!scandoc}{\let\anp@InputScanDoc\relax} +% \end{macrocode} +% The default is not to scan the document. Remember, the final document must be scanned; that is, +% it must be build with the \opt{scandoc} option in effect. +% \begin{macrocode} +\let\anp@InputScanDoc\relax +\def\anp@scanDoc{\InputIfFileExists{scandoc-anp.def} + {\PackageInfo{annot_pro}{Inputting the scandoc-anp.def file}} + {\PackageWarning{annot_pro}{Cannot find the file scandoc-anp.def}}} +% \end{macrocode} +% \begin{macrocode} \ProcessOptionsX\relax +\RequirePackage{trig} \RequirePackage{hyperref} \RequirePackage{calc} \RequirePackage{insdljs} +\ifx\anp@InputScanDoc\relax\else\let\execjs=y\fi \RequirePackage[structure]{taborder} \ap@requireRichTextAsNeeded % \end{macrocode} @@ -159,7 +202,6 @@ of changes goes here. Execute \def\ap@csarg#1#2{\expandafter#1\csname#2\endcsname} % \end{macrocode} % Definitions for creating a rectangle used to create a building box for the annot. -% This switch is later used when creating a custom stamp. % \begin{macrocode} \def\ap@Bbox#1#2{% \edef\bbox@width{#1}\edef\bbox@height{#2}% @@ -207,6 +249,14 @@ of changes goes here. Execute \define@key{annotpro}{name}[]{\def\annotpro@name{#1}} \let\annotpro@name\@empty % \end{macrocode} +% The \opt{internalID} key allows you to specify the \psf{NM} entry. Must be +% unique throughout the page. The default is \texttt{annotpro\string\the\string\ap@annot@cnt}. +% The key is used only for the most particular of applications. +% \changes{v1.1c}{2017/06/06}{Added \string\texttt{internalID}} +% \begin{macrocode} +\define@key{annotpro}{internalID}[]{\def\annotpro@internalID{#1}} +\let\annotpro@internalID\@empty +% \end{macrocode} % \end{macro} % For a text annotation, the following are permitted values for \texttt{name}: % \begin{macrocode} @@ -236,7 +286,7 @@ TopSecret}[Draft]{\def\annotpro@@name{#1}}% % \begin{macrocode} % \end{macrocode} % \begin{macro}{customStamp} -% There is a third case. The user can create a custom stamp using graphicxsp +% There is a third case. The user can create a custom stamp using \pkg{graphicxsp} % package. % \begin{macrocode} \define@key{annotpro}{customStamp}[]{\def\ap@customstamp@name{#1}} @@ -334,6 +384,15 @@ are Graph,Paperclip,PushPin,Tag. Try again}} % \end{macro} % \end{macro} % \end{macro} +% \begin{macro}{margprior} +% Again, when the \texttt{margin} option is taken, we can insert content just inside +% the left brace of the \cs{marginpar} command. +% \changes{v1.1c}{2017/06/06}{Added the key \string\texttt{margprior}} +% \begin{macrocode} +\define@key{annotpro}{margprior}[]{\def\anp@margprior{#1}} +\let\anp@margprior\@empty +% \end{macrocode} +% \end{macro} % \begin{macro}{presets} % A convenience key to allow the introduction of pre-defined options, for example, % you might like all your comment fields to be red, so you can define @@ -402,28 +461,39 @@ are Graph,Paperclip,PushPin,Tag. Try again}} dash1,dash2,dash3,dash4,dash5,dash6,cloud1,cloud2}[solid]{% \ifcase\nr\relax \def\ap@border@code{}\or - \def\ap@border@code{/BS <</S/S\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or - \def\ap@border@code{/BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc + \def\ap@border@code{% + /BS <</S/S\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or + \def\ap@border@code{% + /BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc \space\ap@BE@i@calc\space\ap@BE@i@calc]% \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\or - \def\ap@border@code{/BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc + \def\ap@border@code{% + /BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc \space\ap@BE@ii@calc\space\ap@BE@ii@calc]% \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\fi \def\annotpro@border{#1}}{\PackageWarning{annot_pro}{Bad - choice for borderstyle,\MessageBreak permissible values are none, solid,% - dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6, cloud1, cloud2. Try again}} + choice for borderstyle,\MessageBreak permissible values are none, + solid, dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6, + cloud1, cloud2. Try again}} \def\ap@border@code{/BS <</S/S\ap@bwidth>>} -\define@choicekey+{annotpro}{borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{% +\define@choicekey+{annotpro} + {borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{% \edef\ap@bwidthNum{\val}% \def\ap@bwidth{/W #1}}{\PackageWarning{annot_pro}{Bad - choice for borderwidth,\MessageBreak permissible values are .5, 1, 2,\MessageBreak - 3, 4, 6, 8, 10. Try again}} + choice for borderwidth,\MessageBreak permissible values are + .5, 1, 2,\MessageBreak 3, 4, 6, 8, 10. Try again}} \def\ap@bwidthNum{1} \let\ap@bwidth\@empty % \end{macrocode} @@ -431,9 +501,19 @@ are Graph,Paperclip,PushPin,Tag. Try again}} % \begin{macro}{readonly} % Set the annotation to readonly. % \begin{macrocode} -\define@key{annotpro}{readonly}[ 64 add]{\def\ap@readonly{#1}} +%\define@key{annotpro}{readonly}[ 64 add]{\def\ap@readonly{#1}} +\define@boolkey{annotpro}{readonly}[true]{\ifKV@annotpro@readonly + \def\ap@readonly{ 65 add}\else\let\ap@readonly\@empty\fi} \let\ap@readonly\@empty % \end{macrocode} +% Added the \texttt{hidden} option. +% \changes{v1.1c}{2017/06/06}{Added \string\texttt{hidden} property} +% \begin{macrocode} +%\define@key{annotpro}{hidden}[ 2 add]{\def\ap@hidden{#1}} +\define@boolkey{annotpro}{hidden}[true]{\ifKV@annotpro@hidden + \def\ap@hidden{ 2 add}\else\let\ap@hidden\@empty\fi} +\let\ap@hidden\@empty +% \end{macrocode} % \end{macro} % \begin{macro}{nohspace} % \begin{macro}{nohspace} @@ -685,8 +765,10 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \endgroup % \end{macrocode} % \section{The main code} +% \changes{v1.1c}{2017/06/06}{Define convenience command \string\cs{currentAnnotName}} % \begin{macrocode} \newcount\ap@annot@cnt +\def\currentAnnotName{annotpro\the\ap@annot@cnt} \newcount\ap@cusstamp@cnt {\catcode`\#=12\gdef\ap@signalCustomAP{#}} \def\pStamp#1{\ap@signalCustomAP#1} @@ -702,8 +784,10 @@ are Graph,Paperclip,PushPin,Tag. Try again}} % The implementation of rich text in a FreeText annotation is a little different from % that of a rich text form field. We made some adjustments here for an annotation. % \begin{macrocode} -\def\ap@sub#1{\rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}% -\def\ap@sup#1{\rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}% +\def\ap@sub#1{% + \rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}% +\def\ap@sup#1{% + \rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}% \def\ap@uDec#1{\rt@amp\rt@hashtag#1;} \def\ap@uHex#1{\rt@amp\rt@hashtag x#1;} \def\ap@afterParaFont{% @@ -718,6 +802,8 @@ are Graph,Paperclip,PushPin,Tag. Try again}} } % \end{macrocode} % \begin{environment}{textboxpara} +% Rich text for the Text Box annotation is enclosed within this environment, then use \cs{rtpara} to +% format the text. % \begin{macrocode} \newenvironment{textboxpara}{% \let\rt@sub\ap@sub\let\rt@sup\ap@sup @@ -742,19 +828,29 @@ are Graph,Paperclip,PushPin,Tag. Try again}} % \verb!\#! % \begin{macrocode} \let\#\ap@signalCustomAP - \@nnotpro -} -\newcommand{\@nnotpro}[1][]{% + \@nnotpro} % \end{macrocode} -% Increment a global counter, to count the annots as we create them. +% Added a star option to \cs{annotpro}. When specified (\DescribeMacro{\annotpro*}\cs{annotpro*}), +% the options are expanded with \cs{setkeys*}. Also new is the +% options are expanded first before \cs{setkeys} or \cs{setkeys*} is applied. +% \changes{v1.1c}{2017/06/06}{Added a star option to \string\cs{annotpro}} % \begin{macrocode} - \global\advance\ap@annot@cnt1\relax +\def\@nnotpro{\@ifstar{\def\qr@isStar{*}\@nnotproi} + {\let\qr@isStar\@empty\@nnotproi}} +\newcommand{\@nnotproi}[1][]{% % \end{macrocode} -% Process options +% Process options after expanding them % \begin{macrocode} - \setkeys{annotpro}{#1}% - \@nn@tpro -} + \expandafter\setkeys\qr@isStar{annotpro}{#1}% +% \edef\temp@exp{\noexpand\setkeys\qr@isStar{annotpro}{#1}}\temp@exp +\ifx\annotpro@internalID\@empty +% \end{macrocode} +% Increment a global counter, to count the annots as we create them. +% \begin{macrocode} + \global\advance\ap@annot@cnt1\relax + \xdef\currentAnnotName{annotpro\the\ap@annot@cnt}\else + \xdef\currentAnnotName{\annotpro@internalID}\fi + \@nn@tpro} \newcommand{\@nn@tpro}[1] {% % \end{macrocode} @@ -903,6 +999,17 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \def\ap@ImageRef{\annotpro@ap\the\ap@cusstamp@cnt}% \expandafter\ap@useStamp\expandafter{\annotpro@ap}% % \end{macrocode} +% We do not allow custom stamps to be initially rotated. +% \changes{v1.1c}{2017/06/06}{For custom stamps, do not allow the rotate +% key to be nonzero.} +% \begin{macrocode} + \ifx\annotpro@rotate\@empty\else + \PackageWarning{annot_pro}{The rotate + key for a custom stamp is not\MessageBreak + supported. Setting rotate=0}% + \let\annotpro@rotate\@empty + \fi +% \end{macrocode} % After making many experiments, there seems to be a need to % reduce dimensions by \texttt{2bp} so that the desired dimensions % are displayed through the user interface. There seems to @@ -1028,10 +1135,13 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \expandafter\relax\else\expandafter\marginpar\fi % \end{macrocode} % Set the bounding box, and layout the annotation using the \textbf{pdfmark} operator. +% \changes{v1.1c}{2017/06/06}{added \string\cs{anp@margprior} followed by braces, so +% \string\cs{anp@margprior} could operate on the annot as a whole.} % \begin{macrocode} - {\pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{% + {\anp@margprior{% + \pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{% [ \eq@objdef\ap@Rect - /F 4\ap@readonly + /F 4\ap@hidden\ap@readonly /Open \annotpro@open /Title (\annotpro@enc@title) /Subj (\annotpro@enc@subject) @@ -1062,10 +1172,11 @@ are Graph,Paperclip,PushPin,Tag. Try again}} % \begin{macrocode} /Name (\annotpro@@name) /Subtype/\ap@type - /NM (annotpro\the\ap@annot@cnt) + /NM (\currentAnnotName) +% /NM (annotpro\the\ap@annot@cnt) /M (D:\ap@pdfdate) \ap@this@AP\ap@this@FS\ap@this@CA\ap@this@Rotate - /ANN pdfmark}\apmargintext}% + /ANN pdfmark}\apmargintext}}%end grouping, end marginpar \to@insertStrucTabOrder{Annot}\endgroup } % \end{macrocode} @@ -1152,10 +1263,62 @@ are Graph,Paperclip,PushPin,Tag. Try again}} >> /PUT pdfmark [ {apFileStream\the\ap@annot@cnt} /CLOSE pdfmark}% } +%</package> +%<*scandoc> +% \end{macrocode} +% \subsection{Document assembly} +% The document assembly code is executed when the \texttt{scandoc} option is used. It is executed +% then the document is first opened. +% \begin{macrocode} +\begin{execJS}{scan4anp} +var aANPStamps=new Array(); +if (typeof scancomplete=="undefined") { + var scancomplete=false; + this.syncAnnotScan(); + for (var p=0; p<this.numPages; p++) { + a=this.getAnnots(p); + if (a!=null) { + for (var i=0; i<a.length; i++) { +% \end{macrocode} +% At this time, we search only for annots of type \texttt{"Stamp"} and with AP beginning +% with `\texttt{\#}', for these are user installed stamps or dynamic stamps. +% \begin{macrocode} + if ( a[i].type=="Stamp" && a[i].AP.indexOf("\#")==0 ) { + aANPStamps.push(p); + break; + } + } + } + } +} +ANPscrollPage.index=0; +function ANPscrollPage() { +% \end{macrocode} +% We go to the page where each stamp of the type we are interested in. Opening the page +% causes \app{Acrobat} to populate the dynamic stamps. +% \begin{macrocode} + if (ANPscrollPage.index<aANPStamps.length) { + this.pageNum=aANPStamps[ANPscrollPage.index]; + ANPscrollPage.index+=1; + } else { + app.clearInterval(anpTO); + scancomplete=true; + this.pageNum=0; + } +} +if (aANPStamps.length>0) + var anpTO=app.setInterval("ANPscrollPage()", 5); +\end{execJS} +%</scandoc> +%<*package> % \end{macrocode} % Set global options for this package. % \begin{macrocode} \setAnnotOptions{title,subject,open=false,color} +% \end{macrocode} +% Input \texttt{scandoc-anp.def}, if required. +% \begin{macrocode} +\anp@InputScanDoc %</package> % \end{macrocode} % \Finale diff --git a/texmf-dist/source/latex/annot-pro/annot_pro.ins b/texmf-dist/source/latex/annot-pro/annot_pro.ins index db093b1d..50819072 100644 --- a/texmf-dist/source/latex/annot-pro/annot_pro.ins +++ b/texmf-dist/source/latex/annot-pro/annot_pro.ins @@ -49,6 +49,8 @@ \generate{% \file{annot_pro.sty}{\from{annot_pro.dtx}{copyright,package}} + \file{annot-pro.sty}{\from{annot_pro.dtx}{copyright,altpkgname}} + \file{scandoc-anp.def}{\from{annot_pro.dtx}{copyright,scandoc}} } \Msg{***************************************************************} diff --git a/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex b/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex index 167bc0ea..e67994fb 100644 --- a/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex +++ b/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex @@ -63,7 +63,7 @@ email={dpstory@acrotex.net}, subject={Documentation for annot\textunderscore pro from AcroTeX}, talksite={\url{www.acrotex.net}}, - version={1.1b, 2016/10/18}, + version={1.2, 2018/04/26}, keywords={sticky notes, stamps, file attachment text box, free text, annotations}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, @@ -164,6 +164,13 @@ _path=_path.substring(0,pos)+"/"+manualfilename; \tableofcontents \selectColors{linkColor=webgreen} +% New +% X internalID +% margprior +% X hidden +% X \currentAnnotName +% annotpro* + \section{Introduction} This package is used to create text, stamp, and file attachment @@ -175,6 +182,11 @@ The package primarily in support of my \href{http://www.math.uakron.edu/~dpstory {{Acro\negthinspace\TeX} PDF Blog}. I plan to use sticky notes, file attachments, and custom stamps to make side-comments, and to provide source files. +\section{Alternate package name: \texorpdfstring{\protect\pkg{annot-pro}}{annot-pro}} + +CTAN lists this package as \pkg{annot-pro}, so might as well have such a package by that name: +\pkg{annot-pro} loads \pkg{annot\_pro} with the specified options. + \section{Requirements} The requirements for your {\LaTeX} system, and well as any other @@ -284,25 +296,31 @@ right in the \texttt{AllowPSFileOps} row to select Yes as the value. The main command of this package is \Com{annotpro}; the command is controlled by its optional parameters. The same command can create a text annotation (sticky note), a stamp annotation, a file attachment or a Free Text (Text Box) annotation. The syntax of this command is -\bVerb\takeMeasure{\string\annotpro[\ameta{KV-pairs}]\darg{\ameta{text}}}% +\bVerb\takeMeasure{\string\annotpro*[\ameta{KV-pairs}]\darg{\ameta{text}}}% \begin{minipage}{\linewidth} \begin{minipage}{\bxSize} \xdef\panelWidth{\the\linewidth}% \begin{Verbatim}[frame=single,commandchars=!()] -\annotpro[!ameta(KV-pairs)]{!ameta(text)} +\annotpro*[!ameta(KV-pairs)]{!ameta(text)} \end{Verbatim} \end{minipage}\hfill \begin{minipage}{\linewidth-\panelWidth} \setDisplayNumber\label{display:arbproCmd} \end{minipage}\end{minipage}\eVerb -\PD The optional argument is one or more key-value pairs that describe the -annotation; the required argument, \ameta{text}, is the ``contents'' of the -annotation; for the text and stamp annotation, \ameta{text} becomes the -contents of the popup annotation, for a file attachment annotation, which has -not associated pop-up, it is the description of the file attachment that -appears in the file attachment panel of Adobe Reader. In the latter case, the -value of \ameta{text} should be rather short. The key-value pairs (\ameta{KV-pairs}) are -described over the next few sections. +\PD The optional argument consists is one or more key-value pairs +(\ameta{KV-pairs}) that describe the annotation; the required argument, +\ameta{text}, is the ``contents'' of the annotation; for the text and stamp +annotation, \ameta{text} becomes the contents of the popup annotation, for a +file attachment annotation, which has no associated pop-up, it is the +description of the file attachment that appears in the file attachment panel +of Adobe Reader. In the latter case, the value of \ameta{text} should be +rather short. The key-value pairs (\ameta{KV-pairs}) are described over the +next few sections. + +Normally, \cs{annotpro} uses the \cs{setkeys} command of \pkg{xkeyval} to +determine the options specified, when the star-option is specified, \cs{annotpro} +uses \cs{setkeys*} to evaluate the options, refer to the \pkg{xkeyval} documentation +for a description of \cs{setkeys} and \cs{setkeys*}. \paragraph*{\color{red}Sample files.} The sample files \texttt{annots.tex} and \texttt{textbox.tex} illustrate the features of the \pkg{annotpro} package. @@ -332,38 +350,69 @@ The following are key-value pairs common to all annotations. \end{Verbatim} \item \texttt{color}: The color of the title bar of the pop-up window of the annotation. \item \texttt{readonly=\ameta{\upshape{true|false}}} Set the annotation to readonly. The user can click on the annot to - see the popup, but the user, if using Acrobat, cannot move the annotation around on the page. - The popup window can still be move by the user. (This property makes no difference to the - user of Adobe Reader.) + see the popup, but the user, if using \app{Acrobat}, cannot move the annotation around on the page. + The popup window can still be moved by the user. (\texttt{readonly} is the same as \texttt{readonly=true}.) + \item \texttt{hidden=\ameta{\upshape{true|false}}} This key sets the annotation to hidden, it is not visible + and does not interact with the user. (\texttt{hidden} is the same as \texttt{hidden=true}.) \item \texttt{opacity=\ameta{dec}}: The opacity value ($ \text0\le\text{\ameta{dec}}\le\text1$) to be used in painting the (icon of the) annotation, but does apply to the pop-up window. The default is 1.0. \item[] Adobe Distiller handles the opacity for us in all cases except when we create a (dynamic) stamp. If an opacity value less than 1 is desired, special techniques are needed, and the file needs to - be distilled using the \textbf{Standard\_tranparency} job options. - + be distilled using the \textbf{Standard\_transparency} job options. + \item \texttt{internalID=\ameta{name}} Each annot must have an internal + name (or ID), \emph{unique to the page on which it appears}. The + \pkg{annot\_pro} package maintains an internal counter + (\cs{ap@annot@cnt}) and routinely assigns each annotation an internal + name (or ID) of + \begin{quote}\ttfamily + annotpro\string\the\string\ap@annot@cnt + \end{quote} + The \opt{internamID} key allows you to assign an alternate internal + name. Thus, if you assign \texttt{internalID=myCoolAnnot}, an + annotation is created with the name \texttt{myCoolAnnot}. The + internal ID can be used by JavaScript to find a particular annot on + the page and to get its properties. The macro \cs{currentAnnotName} + contains the internal name of the most recent annot created. \end{itemize} -The following key-values are {\LaTeX} based concerning placement of the annotation in the margin. +The following key-values are {\LaTeX} based concerning placement of the +annotation in the margin. \begin{itemize} - \item \texttt{margin}: Use this key (it has no value), to declare that you want the annotation - to appear in the margin. The \cs{marginpar} command from core {\LaTeX} is used, the placement - of the annotation follows the rules set down by {\LaTeX}. You can reverse the placement of the - annotation by using the {\LaTeX} command \cs{reversemarginpar} (annots placed in the right margin, and now placed in the left); - you can return to the default by using \cs{normalmarginpar}. - - \item[] Given that you have use the \texttt{margin} key, there is an associated key that can be used, as well - as a command. + \item \texttt{margin}: Use this key (it has no value), to declare that + you want the annotation to appear in the margin. The \cs{marginpar} + command from core {\LaTeX} is used, the placement of the annotation + follows the rules set down by {\LaTeX}. You can reverse the + placement of the annotation by using the {\LaTeX} command + \cs{reversemarginpar} (annots placed in the right margin, and now + placed in the left); you can return to the default by using + \cs{normalmarginpar}. + + \item[] Given that you have use the \texttt{margin} key, there is an + associated key that can be used, as well as a command. \begin{itemize} - \item \texttt{margintext}: The value of this key is text that will be typeset just below the annotation icon. - \item \cs{marginpartextformat}: A {\LaTeX} command for - formatting the text in the margin, the default definition is\smallskip + \item \texttt{margintext}: The value of this key is text that + will be typeset just below the annotation icon. + \item \cs{marginpartextformat}: A {\LaTeX} command for formatting + the text in the margin, the default definition is\smallskip \begin{Verbatim} \margintextformat{\bfseries\tiny\color{blue}} \end{Verbatim} \end{itemize} - \item[] For an annotation placed in the margin with margin text, you might want to use the \texttt{readonly} - key, this prevents the user---even one using Acrobat---from moving the annotation away from its caption. + \item[] For an annotation placed in the margin with margin text, you + might want to use the \texttt{readonly} key, this prevents the + user---even one using Acrobat---from moving the annotation away + from its caption. + \item \texttt{margprior=\ameta{\cs{cmd}}} This key allows you to + operate on the annotation as a whole. The value \ameta{\cs{cmd}} is + expected to be, but it is not a requirement, a command taking one + argument. (This key-value pair defines \cs{anp@margprior} which + expands to \ameta{\cs{cmd}}; placement of \cs{anp@margprior} is + \texttt{\cs{anp@margprior}\darg{\meta{the-annot-code}}}. For + example, declaring \texttt{marprior=\cs{fbox}} draws an frame box + around the annotation, or + \texttt{marprior=\cs{raisebox\darg{10pt}}} raises the annotation + 10pt. \end{itemize} The following key-value is for your convenience. \begin{itemize} @@ -494,7 +543,7 @@ The following are the key-values associated with this annotation type. \texttt{stamps.pdf}), the width and height are not known to \textsf{annot\_pro}. In this case, use the \texttt{height} and \texttt{width} keys to set the dimensions of the bounding box. Adobe Distiller will - resize the stamp to the stamp is the largest one that can fit in + resize the stamp to the stamp that is the largest one that can fit in the bounding box, the stamp will be centered vertically and horizontally within the bounding box. @@ -713,7 +762,9 @@ The required second argument is empty, which leads to an empty \uif{Text Box}. A much more interesting exercise is to pre-populate the \uif{Text Box} with rich text for the document consumer to read and/or to respond. -\paragraph[Steps to create rich text content]{Steps to create rich text content.}\chgCurrLblName{Steps to create rich text content}\label{para:StepsRC} +%[Steps to create rich text content] + +\paragraph{Steps to create rich text content.}\label{para:StepsRC} We briefly outline the techniques to create rich text for a \uif{Text Box} annotation. \begin{itemize} @@ -785,7 +836,7 @@ This default style is assignment a name that is used as the value of the Once the \cs{rtpara}-declared paragraphs have been made and their names have passed through \cs{setRVVContent}, you are ready to create a \uif{Text Box} annotation. -\paragraph[Key-values for second argument]{Key-values for second argument.}\chgCurrLblName{Key-values for second argument}\label{para:KV2ndArg} +\paragraph[Key-values for second argument]{Key-values for second argument.}\label{para:KV2ndArg} The required second argument, refer to display~\eqref{display:textbox}, has two keys, both of which are optional. You are encouraged to read the documentation for the \pkg{richtext} package for greater understanding of the @@ -867,8 +918,7 @@ result, features listed in the \uif{Paragraph} and \uif{Link} tabs of the \uif{Text Box}. \paragraph[Keys \& commands inherited from the \texorpdfstring{\protect\pkg{richtext}}{richtext} package]% -{Keys \& commands inherited from the \pkg{richtext} package.}% -\chgCurrLblName{Keys \& commands inherited from the \pkg{richtext} package}\label{para:InheritedKeys} +{Keys \& commands inherited from the \pkg{richtext} package.}\label{para:InheritedKeys} The following keys are supported by the \uif{Text Box} annotation: \bVerb\begin{minipage}{\linewidth} \begin{minipage}[c]{4in} @@ -897,17 +947,18 @@ not within an \uif{Text Box}. Refer to the documentation of the \pkg{richtext} for details of these keys and commands. In this document, we illustrate by example. -\paragraph[Key-values of \texorpdfstring{\protect\cs{rtpara}}{\textbackslash{rtpara}}]{Key-values of \cs{rtpara}.}% -\chgCurrLblName{Key-values of \cs{rtpara}}\label{para:KeysPara} The -keys of display~\eqref{display:suppKeys} -- excluding the overstrike ones -- may be used in the -\ameta{KV-pairs} argument of \cs{rtpara} of display~\eqref{display:rtpara}. + +\paragraph[Key-values of \texorpdfstring{\protect\cs{rtpara}}{\textbackslash{rtpara}}]{% +Key-values of \cs{rtpara}.}\label{para:KeysPara} +The keys of display~\eqref{display:suppKeys} -- excluding the overstrike ones +-- may be used in the \ameta{KV-pairs} argument of \cs{rtpara} of +display~\eqref{display:rtpara}. \paragraph[Permissible commands within \texorpdfstring{\protect\ameta{rich-content}}{<rich-content>}]{% -Permissible commands within \ameta{rich-content}.}\chgCurrLblName{Permissible -commands within \ameta{\ameta{rich-content}}}\label{para:KeysCmdsRC} The -\ameta{rich-content} argument of display~\eqref{display:rtpara} (normally) -consists of Latin 1 characters, plus any markup in the form of the commands -listed in display~\eqref{display:suppCmds}. +Permissible commands within \ameta{rich-content}.}\label{para:KeysCmdsRC} +The \ameta{rich-content} argument of display~\eqref{display:rtpara} +(normally) consists of Latin 1 characters, plus any markup in the form of the +commands listed in display~\eqref{display:suppCmds}. \begin{itemize} \item \cs{span} has two arguments, more on this command in the paragraph below titled \Nameref{para:Span}. @@ -944,7 +995,7 @@ The above markups, with the exception of \cs{span} are illustrated below. The verbatim listing for this example is in the sticky note in the margin. \paragraph[Some comments on the \texorpdfstring{\protect\cs{span}}{\textbackslash{span}} -command]{Some comments on the \cs{span} command.}\chgCurrLblName{Some comments on the \cs{span} command}\label{para:Span} +command]{Some comments on the \cs{span} command.}\label{para:Span} the \cs{span} command, defined only locally within the \ameta{rich-text} argument \cs{rtspan} is a general purpose command to format text. It has two argument: \begin{quote} @@ -981,8 +1032,7 @@ There are several styles of underlining \span{ulstyle=ul}{basic underlining}, The verbatim listing for this example is in the sticky note in the margin. \paragraph[Key-values of \texorpdfstring{\protect\cs{setDefaultStyle}}{\textbackslash{setDefaultStyle}}]% -{Key-values of \cs{setDefaultStyle}.}% -\chgCurrLblName{Key-values of \cs{setDefaultStyle}}\label{para:KeysDS} The +{Key-values of \cs{setDefaultStyle}.}\label{para:KeysDS} The keys of display~\eqref{display:suppKeys} -- excluding the overstrike ones -- may be used in the \ameta{KV-pairs} argument of \cs{setDefaultStyle} of display~\eqref{display:setDefStyle}; however, only the keys \opt{font}, diff --git a/texmf-dist/tex/latex/annot-pro/annot-pro.sty b/texmf-dist/tex/latex/annot-pro/annot-pro.sty new file mode 100644 index 00000000..d2003651 --- /dev/null +++ b/texmf-dist/tex/latex/annot-pro/annot-pro.sty @@ -0,0 +1,28 @@ +%%
+%% This is file `annot-pro.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% annot_pro.dtx (with options: `copyright,altpkgname')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% annot_pro package, %%
+%% Copyright (C) 2002-2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can 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 (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{annot-pro}
+ [2018/04/26 v1.0 annot-pro Alt-name (dps)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{annot_pro}}
+\ProcessOptions
+\RequirePackage{annot_pro}
+\endinput
+%%
+%% End of file `annot-pro.sty'.
diff --git a/texmf-dist/tex/latex/annot-pro/annot_pro.sty b/texmf-dist/tex/latex/annot-pro/annot_pro.sty index e6b108b3..675bd36c 100644 --- a/texmf-dist/tex/latex/annot-pro/annot_pro.sty +++ b/texmf-dist/tex/latex/annot-pro/annot_pro.sty @@ -8,7 +8,7 @@ %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% annot_pro package, %%
-%% Copyright (C) 2002-2016 D. P. Story %%
+%% Copyright (C) 2002-2017 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,20 +19,31 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{annot_pro}
- [2016/10/18 v1.1b Provides selected PDF annotation support (dps)]
+ [2018/04/26 v1.2 Provides selected PDF annotation support (dps)]
\RequirePackage{xkeyval}
\DeclareOptionX{preview}{\previewtrue}
\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+\providecommand{\previewOn}{\previewtrue}
+\providecommand{\previewOff}{\previewfalse}
\newif\ifuseAAXdim\useAAXdimtrue
\DeclareOptionX{useA10Icons}{\useAAXdimtrue}
\DeclareOptionX{!useA10Icons}{\useAAXdimfalse}
\DeclareOptionX{useTextBox}{\def\ap@requireRichTextAsNeeded{%
\RequirePackage{richtext}[2016/10/03]}}
\let\ap@requireRichTextAsNeeded\relax
+\DeclareOptionX{scandoc}{\let\anp@InputScanDoc\anp@scanDoc
+ \PassOptionsToPackage{execJS}{insdljs}}
+\DeclareOptionX{!scandoc}{\let\anp@InputScanDoc\relax}
+\let\anp@InputScanDoc\relax
+\def\anp@scanDoc{\InputIfFileExists{scandoc-anp.def}
+ {\PackageInfo{annot_pro}{Inputting the scandoc-anp.def file}}
+ {\PackageWarning{annot_pro}{Cannot find the file scandoc-anp.def}}}
\ProcessOptionsX\relax
+\RequirePackage{trig}
\RequirePackage{hyperref}
\RequirePackage{calc}
\RequirePackage{insdljs}
+\ifx\anp@InputScanDoc\relax\else\let\execjs=y\fi
\RequirePackage[structure]{taborder}
\ap@requireRichTextAsNeeded
\@ifpackageloaded{graphicxsp}{%
@@ -66,6 +77,8 @@ \let\ap@type\@empty
\define@key{annotpro}{name}[]{\def\annotpro@name{#1}}
\let\annotpro@name\@empty
+\define@key{annotpro}{internalID}[]{\def\annotpro@internalID{#1}}
+\let\annotpro@internalID\@empty
\define@choicekey+{annnotprotext}{name}{%
Comment,Key,Note,Help,NewParagraph,Paragraph,Insert,Check,%
Circle,Cross,Star,RightArrow,RightPointer,UpArrow,UpLeftArrow,%
@@ -123,6 +136,8 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \let\apmargintext\@empty
\newcommand{\margintextformat}[1]{\def\apmargintextformat{#1}}
\margintextformat{\bfseries\tiny\color{blue}}
+\define@key{annotpro}{margprior}[]{\def\anp@margprior{#1}}
+\let\anp@margprior\@empty
\define@key{annotpro}{presets}[]{\def\annotpro@presets{#1}}
\let\annotpro@presets\@empty
\define@key{annotpro}{objdef}[]{\def\eq@objdef{/_objdef {#1}}%
@@ -150,32 +165,47 @@ are Graph,Paperclip,PushPin,Tag. Try again}} dash1,dash2,dash3,dash4,dash5,dash6,cloud1,cloud2}[solid]{%
\ifcase\nr\relax
\def\ap@border@code{}\or
- \def\ap@border@code{/BS <</S/S\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or
- \def\ap@border@code{/BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc
+ \def\ap@border@code{%
+ /BS <</S/S\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{%
+ /BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc
\space\ap@BE@i@calc\space\ap@BE@i@calc]%
\ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\or
- \def\ap@border@code{/BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc
+ \def\ap@border@code{%
+ /BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc
\space\ap@BE@ii@calc\space\ap@BE@ii@calc]%
\ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\fi
\def\annotpro@border{#1}}{\PackageWarning{annot_pro}{Bad
- choice for borderstyle,\MessageBreak permissible values are none, solid,%
- dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6, cloud1, cloud2. Try again}}
+ choice for borderstyle,\MessageBreak permissible values are none,
+ solid, dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6,
+ cloud1, cloud2. Try again}}
\def\ap@border@code{/BS <</S/S\ap@bwidth>>}
-\define@choicekey+{annotpro}{borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{%
+\define@choicekey+{annotpro}
+ {borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{%
\edef\ap@bwidthNum{\val}%
\def\ap@bwidth{/W #1}}{\PackageWarning{annot_pro}{Bad
- choice for borderwidth,\MessageBreak permissible values are .5, 1, 2,\MessageBreak
- 3, 4, 6, 8, 10. Try again}}
+ choice for borderwidth,\MessageBreak permissible values are
+ .5, 1, 2,\MessageBreak 3, 4, 6, 8, 10. Try again}}
\def\ap@bwidthNum{1}
\let\ap@bwidth\@empty
-\define@key{annotpro}{readonly}[ 64 add]{\def\ap@readonly{#1}}
+\define@boolkey{annotpro}{readonly}[true]{\ifKV@annotpro@readonly
+ \def\ap@readonly{ 65 add}\else\let\ap@readonly\@empty\fi}
\let\ap@readonly\@empty
+\define@boolkey{annotpro}{hidden}[true]{\ifKV@annotpro@hidden
+ \def\ap@hidden{ 2 add}\else\let\ap@hidden\@empty\fi}
+\let\ap@hidden\@empty
\define@key{annotpro}{nohspace}[]{\def\annotpro@hspace{0pt}}
\define@key{annotpro}{novspace}[]{\def\annotpro@vspace{0pt}}
\define@key{annotpro}{nospace}[]{\def\annotpro@hspace{0pt}%
@@ -336,6 +366,7 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \xdef\ap@pdfdate{\ap@pdfdate\withoptz@{\count0}00}
\endgroup
\newcount\ap@annot@cnt
+\def\currentAnnotName{annotpro\the\ap@annot@cnt}
\newcount\ap@cusstamp@cnt
{\catcode`\#=12\gdef\ap@signalCustomAP{#}}
\def\pStamp#1{\ap@signalCustomAP#1}
@@ -345,8 +376,10 @@ are Graph,Paperclip,PushPin,Tag. Try again}} xfa:spec="2.0.2" xmlns="http://www.w3.org/1999/xhtml" %
xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
\def\ap@RV@endBody{<body>}
-\def\ap@sub#1{\rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}%
-\def\ap@sup#1{\rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}%
+\def\ap@sub#1{%
+ \rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}%
+\def\ap@sup#1{%
+ \rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}%
\def\ap@uDec#1{\rt@amp\rt@hashtag#1;}
\def\ap@uHex#1{\rt@amp\rt@hashtag x#1;}
\def\ap@afterParaFont{%
@@ -366,13 +399,16 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \newcommand{\annotpro}{%
\begingroup
\let\#\ap@signalCustomAP
- \@nnotpro
-}
-\newcommand{\@nnotpro}[1][]{%
+ \@nnotpro}
+\def\@nnotpro{\@ifstar{\def\qr@isStar{*}\@nnotproi}
+ {\let\qr@isStar\@empty\@nnotproi}}
+\newcommand{\@nnotproi}[1][]{%
+ \expandafter\setkeys\qr@isStar{annotpro}{#1}%
+\ifx\annotpro@internalID\@empty
\global\advance\ap@annot@cnt1\relax
- \setkeys{annotpro}{#1}%
- \@nn@tpro
-}
+ \xdef\currentAnnotName{annotpro\the\ap@annot@cnt}\else
+ \xdef\currentAnnotName{\annotpro@internalID}\fi
+ \@nn@tpro}
\newcommand{\@nn@tpro}[1]
{%
\ifx\annotpro@presets\@empty\else
@@ -456,6 +492,12 @@ are Graph,Paperclip,PushPin,Tag. Try again}} for the ap key}\fi
\def\ap@ImageRef{\annotpro@ap\the\ap@cusstamp@cnt}%
\expandafter\ap@useStamp\expandafter{\annotpro@ap}%
+ \ifx\annotpro@rotate\@empty\else
+ \PackageWarning{annot_pro}{The rotate
+ key for a custom stamp is not\MessageBreak
+ supported. Setting rotate=0}%
+ \let\annotpro@rotate\@empty
+ \fi
\edef\ap@thisWidth{\widthOf{\ap@ImageRef}bp}%
\@tempdima=\ap@thisWidth\advance\@tempdima-2bp
\edef\ap@thisWidth{\the\@tempdima}%
@@ -540,9 +582,10 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \fi
\ifx\annotpro@margin\@empty\let\apmargintext\@empty
\expandafter\relax\else\expandafter\marginpar\fi
- {\pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{%
+ {\anp@margprior{%
+ \pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{%
[ \eq@objdef\ap@Rect
- /F 4\ap@readonly
+ /F 4\ap@hidden\ap@readonly
/Open \annotpro@open
/Title (\annotpro@enc@title)
/Subj (\annotpro@enc@subject)
@@ -561,10 +604,10 @@ are Graph,Paperclip,PushPin,Tag. Try again}} \fi
/Name (\annotpro@@name)
/Subtype/\ap@type
- /NM (annotpro\the\ap@annot@cnt)
+ /NM (\currentAnnotName)
/M (D:\ap@pdfdate)
\ap@this@AP\ap@this@FS\ap@this@CA\ap@this@Rotate
- /ANN pdfmark}\apmargintext}%
+ /ANN pdfmark}\apmargintext}}%end grouping, end marginpar
\to@insertStrucTabOrder{Annot}\endgroup
}
\def\ap@set@Rotate@BBox{%
@@ -611,6 +654,7 @@ are Graph,Paperclip,PushPin,Tag. Try again}} [ {apFileStream\the\ap@annot@cnt} /CLOSE pdfmark}%
}
\setAnnotOptions{title,subject,open=false,color}
+\anp@InputScanDoc
\endinput
%%
%% End of file `annot_pro.sty'.
diff --git a/texmf-dist/tex/latex/annot-pro/scandoc-anp.def b/texmf-dist/tex/latex/annot-pro/scandoc-anp.def new file mode 100644 index 00000000..f651c08e --- /dev/null +++ b/texmf-dist/tex/latex/annot-pro/scandoc-anp.def @@ -0,0 +1,53 @@ +%%
+%% This is file `scandoc-anp.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% annot_pro.dtx (with options: `copyright,scandoc')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% annot_pro package, %%
+%% Copyright (C) 2002-2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can 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 (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{execJS}{scan4anp}
+var aANPStamps=new Array();
+if (typeof scancomplete=="undefined") {
+ var scancomplete=false;
+ this.syncAnnotScan();
+ for (var p=0; p<this.numPages; p++) {
+ a=this.getAnnots(p);
+ if (a!=null) {
+ for (var i=0; i<a.length; i++) {
+ if ( a[i].type=="Stamp" && a[i].AP.indexOf("\#")==0 ) {
+ aANPStamps.push(p);
+ break;
+ }
+ }
+ }
+ }
+}
+ANPscrollPage.index=0;
+function ANPscrollPage() {
+ if (ANPscrollPage.index<aANPStamps.length) {
+ this.pageNum=aANPStamps[ANPscrollPage.index];
+ ANPscrollPage.index+=1;
+ } else {
+ app.clearInterval(anpTO);
+ scancomplete=true;
+ this.pageNum=0;
+ }
+}
+if (aANPStamps.length>0)
+ var anpTO=app.setInterval("ANPscrollPage()", 5);
+\end{execJS}
+\endinput
+%%
+%% End of file `scandoc-anp.def'.
|