1

I use the fancytooltips package without problem but I just realise that it does not work when the page numbering is roman (or non-arabic). Is there any way I can get it working? I read the package file but I am not sure how I would patch it. It could also be a problem with acrotex since part of it is required. I want to give a good MWE but don't know how to provide the tooltips files.

\documentclass[12pt]{article}

\usepackage[filename=my_tooltips, movetips, mouseover, noextratext]{fancytooltips}

\begin{document} \pagenumbering{roman} %%% does not work with that

My \tooltip{tooltip}{defQuantifiE} does not work with roman page number.
\end{document}

sipaq11
  • 103
  • Out of curiosity, how do you compile this input? Just pdflatex? (I would like to experiment with the pkg.) – AlexG Dec 04 '20 at 16:16
  • Did you try this alternative \tooltip command? Maybe it meets your needs already. – AlexG Dec 04 '20 at 16:24
  • @AlexG one can reproduce the problem without external files: use filename=example-image and \tooltip{tooltip}{1} (the javascript should be deleted). Beside this, it looks like a bug, the code is using \thepage all over the place and probably didn't consider that it isn't always a humber. – Ulrike Fischer Dec 04 '20 at 16:28
  • @AlexG Yes, I compile with pdfLatex (I should have mention it). I'm pretty sure that I tried the tooltip alternative long time ago. But, if I remember correctly, I never succeed to make it works. Now that you remember it to me, I could try it again. I am using tooltips in a class so it would require lot of recoding to change how tooltips are handle. – sipaq11 Dec 04 '20 at 16:32
  • Then let me try to convince you again :) – AlexG Dec 04 '20 at 16:38
  • Handling is very easy, just replace the second argument of \tooltip with an {\includegraphics[page=..., width=....]{...your file with graphical tooltips...}}, and insert normal text directly (or in a \parbox, if necessary). – AlexG Dec 04 '20 at 16:47
  • @AlexG I will try it! – sipaq11 Dec 04 '20 at 16:49
  • I give you an example with graphics as tooltips below ;) – AlexG Dec 04 '20 at 16:50

3 Answers3

1

This example, using an alternative tooltip command, is page-numbering agnostic. The tooltip box content is defined inline, as the second argument of the \tooltip command:

\documentclass[12pt]{article}
\usepackage[a6paper]{geometry}
\usepackage{graphicx}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % tooltips with LaTeX v. 2019/09/26 % % \tooltip[[[[]]]] % [<link colour>]{<link text>} % [<tip box colour>]{<tip text>} % [<x-offset>,<y-offset>] % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \tooltip --> draggable tip, visible on mouse-over, hidden on mouse-out % % \tooltip* --> draggable tip, toggle visiblity on mouse-over % % \tooltip** --> NON-draggable tip, visible on mouse-over, hidden on mouse-out % % \tooltip*** --> NON-draggable tip, toggle visiblity on mouse-over % % \tooltip**** --> NON-draggable tip, toggle visiblity on mouse-click (Evince!) % % Default link colour can be set with % % \usepackage[linkcolor=<colour>]{hyperref} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ocgbase} \usepackage{xcolor,calc} \usepackage{tikzpagenodes,linegoal} \usetikzlibrary{calc} \usepackage{tcolorbox} \usepackage{xparse}

\ExplSyntaxOn \let\tpPdfLink\pbs_pdflink:nn \let\tpPdfAnnot\pbs_pdfannot:nnnn\let\tpPdfLastAnn\pbs_pdflastann: \let\tpAppendToFields\pbs_appendtofields:n \def\tpPdfXform{\pbs_pdfxform:nnnnn{1}{1}{}{}} \let\tpPdfLastXform\pbs_pdflastxform: \let\cListSet\clist_set:Nn\let\cListItem\clist_item:Nn \ExplSyntaxOff

\makeatletter \NewDocumentCommand{\tooltip}{% ssssO{\ifdefined@linkcolor@linkcolor\else blue\fi}mO{yellow!20}mO{0pt,0pt}% }{{% \leavevmode% \IfBooleanT{#2}{% %for variants with two and more stars, put tip box on a PDF Layer (OCG) \ocgbase@new@ocg{tipOCG.\thetcnt}{% /Print<</PrintState/OFF>>/Export<</ExportState/OFF>>% }{false}% \xdef\tpTipOcg{\ocgbase@last@ocg}% %prevent simultaneous visibility of multiple non-draggable tooltips \ocgbase@add@ocg@to@radiobtn@grp{tool@tips}{\ocgbase@last@ocg}% }% \tpPdfLink{% \IfBooleanTF{#4}{% /Subtype/Link/Border[0 0 0]/A <</S/SetOCGState/State [/Toggle \tpTipOcg]>> }{% /Subtype/Screen% /AA<<% \IfBooleanTF{#3}{% /E<</S/SetOCGState/State [/Toggle \tpTipOcg]>>% }{% \IfBooleanTF{#2}{% /E<</S/SetOCGState/State [/ON \tpTipOcg]>>% /X<</S/SetOCGState/State [/OFF \tpTipOcg]>>% }{ \IfBooleanTF{#1}{% /E<</S/JavaScript/JS(% var fd=this.getField('tip.\thetcnt');% if(typeof(click\thetcnt)=='undefined'){% var click\thetcnt=false;% var fdor\thetcnt=fd.rect;var dragging\thetcnt=false;% }% if(fd.display==display.hidden){% fd.delay=true;fd.display=display.visible;fd.delay=false;% }else{% if(!click\thetcnt&&!dragging\thetcnt){fd.display=display.hidden;}% if(!dragging\thetcnt){click\thetcnt=false;}% }% this.dirty=false;% )>>% }{% /E<</S/JavaScript/JS(% var fd=this.getField('tip.\thetcnt');% if(typeof(click\thetcnt)=='undefined'){% var click\thetcnt=false;% var fdor\thetcnt=fd.rect;var dragging\thetcnt=false;% }% if(fd.display==display.hidden){% fd.delay=true;fd.display=display.visible;fd.delay=false;% }% this.dirty=false;% )>>% /X<</S/JavaScript/JS(% if(!click\thetcnt&&!dragging\thetcnt){fd.display=display.hidden;}% if(!dragging\thetcnt){click\thetcnt=false;}% this.dirty=false;% )>>% }% /U<</S/JavaScript/JS(click\thetcnt=true;this.dirty=false;)>>% /PC<</S/JavaScript/JS (% var fd=this.getField('tip.\thetcnt');% try{fd.rect=fdor\thetcnt;}catch(e){}% fd.display=display.hidden;this.dirty=false;% )>>% /PO<</S/JavaScript/JS(this.dirty=false;)>>% }% }% >>% }% }{{\color{#5}#6}}% \sbox\tiptext{% \IfBooleanT{#2}{% \ocgbase@oc@bdc{\tpTipOcg}\ocgbase@open@stack@push{\tpTipOcg}}% %\fcolorbox{black}{#7}{#8}% \tcbox[colframe=black,colback=#7,size=fbox,arc=1ex,sharp corners=southwest]{#8}% \IfBooleanT{#2}{\ocgbase@oc@emc\ocgbase@open@stack@pop\tpNull}% }% \cListSet\tpOffsets{#9}% \edef\twd{\the\wd\tiptext}% \edef\tht{\the\ht\tiptext}% \edef\tdp{\the\dp\tiptext}% \tipshift=0pt% \IfBooleanTF{#2}{% %OCG-based (that is, all non-draggable) boxes should not extend beyond the %current column as they may get overlaid by text in the neighbouring column \setlength\whatsleft{\linegoal}% }{% \measureremainder{\whatsleft}% }% \ifdim\whatsleft<\dimexpr\twd+\cListItem\tpOffsets{1}\relax% \setlength\tipshift{\whatsleft-\twd-\cListItem\tpOffsets{1}}\fi% \IfBooleanF{#2}{\tpPdfXform{\tiptext}}% \raisebox{\heightof{#6}+\tdp+\cListItem\tpOffsets{2}}[0pt][0pt]{% \makebox[0pt][l]{\hspace{\dimexpr\tipshift+\cListItem\tpOffsets{1}\relax}% \IfBooleanTF{#2}{\usebox{\tiptext}}{% \tpPdfAnnot{\twd}{\tht}{\tdp}{% /Subtype/Widget/FT/Btn/T (tip.\thetcnt)% /AP<</N \tpPdfLastXform>>% /MK<</TP 1/I \tpPdfLastXform/IF<</S/A/FB true/A [0.0 0.0]>>>>% /Ff 65536/F 3% /AA <<% /U <<% /S/JavaScript/JS(% var fd=event.target;% var mX=this.mouseX;var mY=this.mouseY;% var drag=function(){% var nX=this.mouseX;var nY=this.mouseY;% var dX=nX-mX;var dY=nY-mY;% var fdr=fd.rect;% fdr[0]+=dX;fdr[1]+=dY;fdr[2]+=dX;fdr[3]+=dY;% fd.rect=fdr;mX=nX;mY=nY;% };% if(!dragging\thetcnt){% dragging\thetcnt=true;Int=app.setInterval("drag()",1);% }% else{app.clearInterval(Int);dragging\thetcnt=false;}% this.dirty=false;% )% >>% >>% }% \tpAppendToFields{\tpPdfLastAnn}% }% }}% \stepcounter{tcnt}% }} \makeatother \newsavebox\tiptext\newcounter{tcnt} \newlength{\whatsleft}\newlength{\tipshift} \newcommand{\measureremainder}[1]{% \begin{tikzpicture}[overlay,remember picture] \path let \p0 = (0,0), \p1 = (current page.east) in [/utils/exec={\pgfmathsetlength#1{\x1-\x0}\global#1=#1}]; \end{tikzpicture}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}\pagenumbering{roman} My \tooltip{tooltip}{\includegraphics[width=1cm,page=1]{example-image-a4-numbered.pdf}} works in AR as advertised.

My \tooltip****{tooltip}{\includegraphics[width=1cm,page=2]{example-image-a4-numbered.pdf}} works in Evince as advertised. \end{document}

sipaq11
  • 103
AlexG
  • 54,894
0

It will need further testing but these patchs makes the example working. I will edit if I find some problems using it.

\documentclass[12pt]{article}

\usepackage[filename=my_tooltips, movetips, mouseover, noextratext]{fancytooltips} \usepackage{etoolbox}

\makeatletter

\patchcmd\frametip@{% /T (ikona.\thepage) }{% /T (ikona.\arabic{page}) }{}{}

\patchcmd\frametip{% \expandafter\ifx \csname TooltipPage\thepage\endcsname\relax }{% \expandafter\ifx \csname TooltipPage\arabic{page}\endcsname\relax }{}{}

\tooltip@pagetoks={\arabic{page}}

\makeatother

\begin{document} \pagenumbering{roman}

My \tooltip{tooltip}{defQuantifiE} works with roman page number.
\end{document}

sipaq11
  • 103
0

You can see the pdf tooltip feature that was implemented in Poppler, so that feature works in Evince and possibly Okular.

Nelson
  • 166