summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ocgx2
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-03-07 22:42:51 +0000
committerKarl Berry <karl@freefriends.org>2017-03-07 22:42:51 +0000
commit5242a77f951726f37e97cc73e0109bc8d18f617e (patch)
treec871da59f739fee3c21ed9b6daf61d86c2c19f32 /Master/texmf-dist/tex/latex/ocgx2
parent5a673be1e4c328c044a8bd4f2fe3ca81ed571a34 (diff)
ocgx2 (7mar17)
git-svn-id: svn://tug.org/texlive/trunk@43425 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/ocgx2')
-rw-r--r--Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty261
1 files changed, 173 insertions, 88 deletions
diff --git a/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty b/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
index acb40f60174..36db66b8cfd 100644
--- a/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
+++ b/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
@@ -37,7 +37,7 @@
\RequirePackage{xparse}
\RequirePackage{l3keys2e}
-\ProvidesExplPackage{ocgx2}{2016/03/22}{0.17}
+\ProvidesExplPackage{ocgx2}{2017/03/07}{0.18}
{ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
%creating global definitions
@@ -375,19 +375,35 @@
%re-implement commands from ocg-p.sty / ocgx.sty (all engines including
%ps2pdf [gs>=9.15])
-\DeclareDocumentCommand\switchocg{o m +m}{
+\DeclareDocumentCommand\switchocg{s o m +m}{
\leavevmode
- \IfNoValueTF{#1}{
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#2}
- \ocgxii_pdflink:nn{
- /Subtype/Link\ocgxii@insert@OC
- /A <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/Toggle~\l_ocgxii_u_list_tl}]>>
- /Border [0~0~0]
- }{#3}
+ \bool_if:nTF{
+ \IfBooleanTF{#1}{\c_true_bool}{\c_false_bool} ||
+ \IfValueTF{#2}{\c_true_bool}{\c_false_bool}
}{
- \ocgxii_ocglist_process_idlist:nn{#1}{#2}
- \ocgxii_pdflink:nn{
+ % implemented as Widget annot (non-breakable)
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#3}
+ \hbox_set:Nn\l_tmpa_box{#4}
+ %dummy Widget, workaround for AR bug;
+ %see https://forums.adobe.com/message/5787612#5787612
+ \bool_if:nT{
+ !\cs_if_exist:NTF\ocgxii@insert@OC{
+ \tl_if_blank_p:V\ocgxii@insert@OC
+ }{
+ \c_true_bool
+ }
+ }{\pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{/Subtype/Widget/F~2}}
+ \pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{
/Subtype/Widget/Ff~65536/FT/Btn/H/I
/T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
\ocgxii@insert@OC
@@ -405,25 +421,49 @@
/X <</S/SetOCGState/State [/Toggle~\l_ocgxii_x_list_tl]>>
}
>>
- }{\mbox{#3}} %Widget annots should not be broken across lines
+ }\box_use_clear:N\l_tmpa_box
\pbs_appendtofields:n{\pbs_pdflastann:}
\int_gincr:N\g_ocgxii_widcount_int
+ }{
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#3}
+ \pbs_pdflink:nn{
+ /Subtype/Link
+ /A <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/Toggle~\l_ocgxii_u_list_tl}]>>
+ /Border [0~0~0]
+ }{#4}
}
}
-\DeclareDocumentCommand\showocg{o m +m}{
+\DeclareDocumentCommand\showocg{s o m +m}{
\leavevmode
- \IfNoValueTF{#1}{
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#2}
- \ocgxii_pdflink:nn{
- /Subtype/Link\ocgxii@insert@OC
- /A <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/ON~\l_ocgxii_u_list_tl}]>>
- /Border [0~0~0]
- }{#3}
+ \bool_if:nTF{
+ \IfBooleanTF{#1}{\c_true_bool}{\c_false_bool} ||
+ \IfValueTF{#2}{\c_true_bool}{\c_false_bool}
}{
- \ocgxii_ocglist_process_idlist:nn{#1}{#2}
- \ocgxii_pdflink:nn{
+ % implemented as Widget annot (non-breakable)
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#3}
+ \hbox_set:Nn\l_tmpa_box{#4}
+ %dummy Widget, workaround for AR bug;
+ %see https://forums.adobe.com/message/5787612#5787612
+ \bool_if:nT{
+ !\cs_if_exist:NTF\ocgxii@insert@OC{
+ \tl_if_blank_p:V\ocgxii@insert@OC
+ }{
+ \c_true_bool
+ }
+ }{\pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{/Subtype/Widget/F~2}}
+ \pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{
/Subtype/Widget/Ff~65536/FT/Btn/H/I
/T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
\ocgxii@insert@OC
@@ -441,25 +481,49 @@
/X <</S/SetOCGState/State [/ON~\l_ocgxii_x_list_tl]>>
}
>>
- }{\mbox{#3}} %Widget annots should not be broken across lines
+ }\box_use_clear:N\l_tmpa_box
\pbs_appendtofields:n{\pbs_pdflastann:}
\int_gincr:N\g_ocgxii_widcount_int
+ }{
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#3}
+ \pbs_pdflink:nn{
+ /Subtype/Link
+ /A <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/ON~\l_ocgxii_u_list_tl}]>>
+ /Border [0~0~0]
+ }{#4}
}
}
-\DeclareDocumentCommand\hideocg{o m +m}{
+\DeclareDocumentCommand\hideocg{s o m +m}{
\leavevmode
- \IfNoValueTF{#1}{
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#2}
- \ocgxii_pdflink:nn{
- /Subtype/Link\ocgxii@insert@OC
- /A <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/OFF~\l_ocgxii_u_list_tl}]>>
- /Border [0~0~0]
- }{#3}
+ \bool_if:nTF{
+ \IfBooleanTF{#1}{\c_true_bool}{\c_false_bool} ||
+ \IfValueTF{#2}{\c_true_bool}{\c_false_bool}
}{
- \ocgxii_ocglist_process_idlist:nn{#1}{#2}
- \ocgxii_pdflink:nn{
+ % implemented as Widget annot (non-breakable)
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#3}
+ \hbox_set:Nn\l_tmpa_box{#4}
+ %dummy Widget, workaround for AR bug;
+ %see https://forums.adobe.com/message/5787612#5787612
+ \bool_if:nT{
+ !\cs_if_exist:NTF\ocgxii@insert@OC{
+ \tl_if_blank_p:V\ocgxii@insert@OC
+ }{
+ \c_true_bool
+ }
+ }{\pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{/Subtype/Widget/F~2}}
+ \pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{
/Subtype/Widget/Ff~65536/FT/Btn/H/I
/T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
\ocgxii@insert@OC
@@ -477,50 +541,67 @@
/X <</S/SetOCGState/State [/OFF~\l_ocgxii_x_list_tl]>>
}
>>
- }{\mbox{#3}} %Widget annots should not be broken across lines
+ }\box_use_clear:N\l_tmpa_box
\pbs_appendtofields:n{\pbs_pdflastann:}
\int_gincr:N\g_ocgxii_widcount_int
+ }{
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#3}
+ \pbs_pdflink:nn{
+ /Subtype/Link
+ /A <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_u_list_tl{}{/OFF~\l_ocgxii_u_list_tl}]>>
+ /Border [0~0~0]
+ }{#4}
}
}
-\DeclareDocumentCommand\actionsocg{o m m m +m}{
+\DeclareDocumentCommand\actionsocg{s o m m m +m}{
\leavevmode
- \IfNoValueTF{#1}{
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#2}
- \tl_set_eq:NN\l_ocgxii_toswitch_u_tl\l_ocgxii_u_list_tl
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#3}
- \tl_set_eq:NN\l_ocgxii_toshow_u_tl\l_ocgxii_u_list_tl
- \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#4}
- \tl_set_eq:NN\l_ocgxii_tohide_u_tl\l_ocgxii_u_list_tl
- \ocgxii_pdflink:nn{
- /Subtype/Link\ocgxii@insert@OC
- /A <</S/SetOCGState
- /State [
- \str_if_eq:VnF{\l_ocgxii_toswitch_u_tl}{}{
- /Toggle~\l_ocgxii_toswitch_u_tl}~
- \str_if_eq:VnF{\l_ocgxii_toshow_u_tl}{}{/ON~\l_ocgxii_toshow_u_tl}~
- \str_if_eq:VnF{\l_ocgxii_tohide_u_tl}{}{/OFF~\l_ocgxii_tohide_u_tl}
- ]
- >>
- /Border [0~0~0]
- }{#5}
+ \bool_if:nTF{
+ \IfBooleanTF{#1}{\c_true_bool}{\c_false_bool} ||
+ \IfValueTF{#2}{\c_true_bool}{\c_false_bool}
}{
- \ocgxii_ocglist_process_idlist:nn{#1}{#2}
+ % implemented as Widget annot (non-breakable)
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#3}
\tl_set_eq:NN\l_ocgxii_toswitch_e_tl\l_ocgxii_e_list_tl
\tl_set_eq:NN\l_ocgxii_toswitch_x_tl\l_ocgxii_x_list_tl
\tl_set_eq:NN\l_ocgxii_toswitch_d_tl\l_ocgxii_d_list_tl
\tl_set_eq:NN\l_ocgxii_toswitch_u_tl\l_ocgxii_u_list_tl
- \ocgxii_ocglist_process_idlist:nn{#1}{#3}
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#4}
\tl_set_eq:NN\l_ocgxii_toshow_e_tl\l_ocgxii_e_list_tl
\tl_set_eq:NN\l_ocgxii_toshow_x_tl\l_ocgxii_x_list_tl
\tl_set_eq:NN\l_ocgxii_toshow_d_tl\l_ocgxii_d_list_tl
\tl_set_eq:NN\l_ocgxii_toshow_u_tl\l_ocgxii_u_list_tl
- \ocgxii_ocglist_process_idlist:nn{#1}{#4}
+ \ocgxii_ocglist_process_idlist:nn{
+ \IfValueTF{#2}{#2}{triggerocg=onmouseup}
+ }{#5}
\tl_set_eq:NN\l_ocgxii_tohide_e_tl\l_ocgxii_e_list_tl
\tl_set_eq:NN\l_ocgxii_tohide_x_tl\l_ocgxii_x_list_tl
\tl_set_eq:NN\l_ocgxii_tohide_d_tl\l_ocgxii_d_list_tl
\tl_set_eq:NN\l_ocgxii_tohide_u_tl\l_ocgxii_u_list_tl
- \ocgxii_pdflink:nn{
+ \hbox_set:Nn\l_tmpa_box{#6}
+ %dummy Widget, workaround for AR bug;
+ %see https://forums.adobe.com/message/5787612#5787612
+ \bool_if:nT{
+ !\cs_if_exist:NTF\ocgxii@insert@OC{
+ \tl_if_blank_p:V\ocgxii@insert@OC
+ }{
+ \c_true_bool
+ }
+ }{\pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{/Subtype/Widget/F~2}}
+ \pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{
/Subtype/Widget/Ff~65536/FT/Btn/H/I
/T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
\ocgxii@insert@OC
@@ -586,17 +667,36 @@
]>>
}
>>
- }{\mbox{#5}} %Widget annots should not be broken across lines
+ }\box_use_clear:N\l_tmpa_box
\pbs_appendtofields:n{\pbs_pdflastann:}
\int_gincr:N\g_ocgxii_widcount_int
+ }{
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#3}
+ \tl_set_eq:NN\l_ocgxii_toswitch_u_tl\l_ocgxii_u_list_tl
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#4}
+ \tl_set_eq:NN\l_ocgxii_toshow_u_tl\l_ocgxii_u_list_tl
+ \ocgxii_ocglist_process_idlist:nn{triggerocg=onmouseup}{#5}
+ \tl_set_eq:NN\l_ocgxii_tohide_u_tl\l_ocgxii_u_list_tl
+ \pbs_pdflink:nn{
+ /Subtype/Link
+ /A <</S/SetOCGState
+ /State [
+ \str_if_eq:VnF{\l_ocgxii_toswitch_u_tl}{}{
+ /Toggle~\l_ocgxii_toswitch_u_tl}~
+ \str_if_eq:VnF{\l_ocgxii_toshow_u_tl}{}{/ON~\l_ocgxii_toshow_u_tl}~
+ \str_if_eq:VnF{\l_ocgxii_tohide_u_tl}{}{/OFF~\l_ocgxii_tohide_u_tl}
+ ]
+ >>
+ /Border [0~0~0]
+ }{#6}
}
}
% mimic commands from ocg-p
-\let\toggleocgs\switchocg
-\let\showocgs\showocg
-\let\hideocgs\hideocg
-\let\setocgs\actionsocg
+\def\toggleocgs{\switchocg*}
+\def\showocgs{\showocg*}
+\def\hideocgs{\hideocg*}
+\def\setocgs{\actionsocg*}
\cs_new:Nn\ocgxii_process_ocgref:NN{
\str_if_eq_x:nnF{#2}{}{
@@ -672,23 +772,6 @@
Line~\msg_line_number: :~unknown~option~`#1'.
}
-% dvipdfmx and xelatex workaround for ocg buttons within `tikzpicture' context
-\cs_new:Nn\ocgxii_pdflink:nn{
- \bool_if:nTF{
- \g_ocgxii_dvipdfmx_bool && \cs_if_exist_p:N\pgfpictureid
- }{
- \hbox_set:Nn\l_tmpa_box{#2}
- \pbs_pdfannot:nnnn{
- \dim_use:N\box_wd:N\l_tmpa_box}{
- \dim_use:N\box_ht:N\l_tmpa_box}{
- \dim_use:N\box_dp:N\l_tmpa_box
- }{#1}
- \box_use_clear:N\l_tmpa_box
- }{
- \pbs_pdflink:nn{#1}{#2}
- }
-}
-
\cs_gset_eq:NN\ocgxii_atenddvi_checkimpl_orig:\AtEndDvi@CheckImpl%
\def\AtEndDvi@CheckImpl{
\ocgxii_atenddvi_checkimpl_orig:
@@ -780,7 +863,9 @@
% ref
ref/.style={
/tikz/execute at begin scope={%
- \begin{ocg}[\ocgxii@opts]{\ocgxii@name}{#1}{\ocgxii@visibility}},
+ \begin{ocg}[\ocgxii@opts]{%
+ \ifx\empty\ocgxii@name\empty#1\else\ocgxii@name\fi%
+ }{#1}{\ocgxii@visibility}},
/tikz/execute at end scope={\end{ocg}},
},
},
@@ -794,7 +879,7 @@
in
(path picture bounding box.center)
node[inner sep=0pt,anchor=center,outer sep=0pt]
- {\switchocg{#1}{\phantom{\rule{\x3}{\y3}}}};
+ {\switchocg*{#1}{\phantom{\rule{\x3}{\y3}}}};
}
},
},
@@ -842,7 +927,7 @@
in
(path picture bounding box.center)
node[inner sep=0pt,anchor=center]
- {\showocg{#1}{\phantom{\rule{\x3}{\y3}}}};
+ {\showocg*{#1}{\phantom{\rule{\x3}{\y3}}}};
},
},
},
@@ -856,7 +941,7 @@
in
(path picture bounding box.center)
node[inner sep=0pt,anchor=center]
- {\hideocg{#1}{\phantom{\rule{\x3}{\y3}}}};
+ {\hideocg*{#1}{\phantom{\rule{\x3}{\y3}}}};
},
},
},
@@ -870,7 +955,7 @@
in
(path picture bounding box.center)
node[inner sep=0pt,anchor=center]
- {\actionsocg{#1}{#2}{#3}{\phantom{\rule{\x3}{\y3}}}};
+ {\actionsocg*{#1}{#2}{#3}{\phantom{\rule{\x3}{\y3}}}};
},
},
},