
Ich möchte in meiner Präsentation zwischen 3D-Ansichten wechseln. Ich habe im movie15-Paket gelesen, dass dies mit dem folgenden Befehl möglich ist: (Würfelbeispiel aus movie15.pdf Seite 16)
\movieref[3Dviewindex=N]{dice}{Click here}
In diesem Fall muss ich aber mit der Maus auf eine Schaltfläche klicken. Ist es möglich, den Befehl auf eine Taste zu legen oder die Schaltfläche über eine Taste aufzurufen oder dies mit dem Befehl \pause zu kombinieren?
Grüße,
Großartig.
Antwort1
Erstens: Nicht movie15
mehr verwenden. Das Paket media9
soll es ersetzen.
Wir können eine PDF-Funktion namensUnterseitennavigationum Aktionen zu binden GoTo3DView
an dielinks <-- und rechts -->Tastatur-Tastendruckereignisse. Erst nach Ausführung der vollständigen Aktionssequenz wechselt der Reader zur nächsten/vorherigen Dokumentseite.
Beachten Sie, dass diese Funktion dieGanzer BildschirmModus.
Der folgende Code definiert den Befehl , der als Argument \ThreeDPresSteps
eine durch Kommas getrennte Liste von Paaren verwendet . (Klammern um Paare sind obligatorisch, auch bei einem einzelnen Paar.){<3D label>,<number of views>}
\ThreeDPresSteps{...}
wird vor dem Code eines beamer
Frames verwendet, der 3D-Objekte enthält. Die Ansichten der vom Befehl referenzierten 3D-Objekte werden in der Reihenfolge durchlaufen, die in den Ansichtsdateien angegeben ist, und in der Reihenfolge der <3D label>
s im Befehlsargument.
Denken Sie daran, dass nur diePfeil nach links und rechtsTasten ermöglichen die Navigation in beide Richtungen zwischen den Präsentationsschritten innerhalb einer Seite. Die anderen Pfeiltasten und Bild-Auf/Bild-Ab-Tasten dienen nur der Vorwärtsnavigation (AR-9 für Linux).
...
% initialise 3D presentation steps for the next frame
\ThreeDPresSteps{{3DobjA,7},{3DobjB,5}}
\begin{frame}{...}
\includemedia[label=3DobjA,3Dviews=3DviewsA.txt,...]{...}{...}
\includemedia[label=3DobjB,3Dviews=3DviewsB.txt,...]{...}{...}
\end{frame}
% clear 3D presentation steps before next frame
\ThreeDPresStepsReset
...
Minimalbeispielmit zwei 3D-Objekten (2 xdice.u3d
) in einem Beamer-Rahmen:
\documentclass{beamer}
\usepackage{media9}[2015/11/02]
%write file with 7 predefined 3D views
\usepackage{filecontents}
\begin{filecontents*}{3Dviews.txt}
VIEW=Front
ROO=27
END
VIEW=Back
ROO=27
C2C=0 1 0
END
VIEW=Left
ROO=27
C2C=-1 0 0
END
VIEW=Right
ROO=27
C2C=1 0 0
END
VIEW=Top
ROO=27
C2C=0 0 1
END
VIEW=Bottom
ROO=27
C2C=0 0 -1
END
VIEW=Fish Eye at Centre
AAC=130
END
\end{filecontents*}
\ExplSyntaxOn
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% command to build presentation steps for navigating through 3D views
% Argument: comma separated list of {label,number of views} pairs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\ThreeDPresSteps[1]{
\tl_set:Nn\l_initactn_tl{}
\clist_map_inline:nn{#1}{\tl_if_exist:cT{ann@\clist_item:nn{##1}{1}}{
\pbs_pdfobj:nnn{}{dict}{ %init. actions for all 3D objects -> goto 1st view
/S/GoTo3DView/V~0/TA~\use:c{ann@\clist_item:nn{##1}{1}}
}
\tl_put_right:Nx\l_initactn_tl{~\pbs_pdflastobj:}
}}
\pbs_pdfobj:nnn{}{dict}{} %reserve pdf obj for the `Next' nav. node
\tl_set:Nx\l_nextnode_tl{\pbs_pdflastobj:}
%primary nav. node, initialise all 3D objects in the page
\pbs_pdfobj:nnn{}{dict}{
/NA<</S/Named/N/NOP/Next[\l_initactn_tl]>>/Next~\l_nextnode_tl
}
\tl_set:Nn\l_prevactn_tl{}\tl_set:Nx\l_prevnode_tl{/Prev~\pbs_pdflastobj:}
\tl_set_eq:NN\l_currnode_tl\l_nextnode_tl
%register primary navigation node of this page
\sys_if_output_pdf:TF{
\edef\pdfpageattrsave{\the\pdfpageattr}
\tl_set:Nx\l_temp_tl{\pdfpageattrsave/PresSteps~\pbs_pdflastobj:}
\immediate\pdfpageattr\exp_after:wN{\l_temp_tl}
}{
\bool_if:NTF\g_pbs_dvipdfmx_bool{ %dvipdfmx/XeTeX
\special{pdf:put~@thispage <</PresSteps~\pbs_pdflastobj:>>~}
}{
\special{ps:~
mark~{ThisPage}~<</PresSteps~\pbs_pdflastobj:>>/PUT~pdfmark~
}
}
}
%build doubly linked list of navigation nodes
\clist_map_inline:nn{#1}{
\tl_if_exist:cT{ann@\clist_item:nn{##1}{1}}{
\int_step_inline:nnnn{1}{1}{\int_eval:n{\clist_item:nn{##1}{2}-1}}{
\pbs_pdfobj:nnn{}{dict}{} %reserve pdf obj for the `Next' nav. node
\tl_set:Nx\l_nextnode_tl{\pbs_pdflastobj:}
\pbs_pdfobj:nnn{\l_currnode_tl}{dict}{ %current navigation node
\l_prevactn_tl\l_prevnode_tl
/NA<</S/GoTo3DView/V/N/TA~\use:c{ann@\clist_item:nn{##1}{1}}>>
/Next~\l_nextnode_tl
}
\tl_set:Nx\l_prevactn_tl{
/PA<</S/GoTo3DView/V/P/TA~\use:c{ann@\clist_item:nn{##1}{1}}>>}
\tl_set:Nx\l_prevnode_tl{/Prev~\pbs_pdflastobj:}
\tl_set_eq:NN\l_currnode_tl\l_nextnode_tl
}
}
}
%final navigation node
\pbs_pdfobj:nnn{\l_currnode_tl}{dict}{\l_prevactn_tl\l_prevnode_tl}
}
\newcommand\ThreeDPresStepsReset{ %cmd for resetting pres. steps
\bool_if:nT{
\sys_if_output_pdf_p: && \cs_if_exist_p:N\pdfpageattrsave}{
\immediate\pdfpageattr\exp_after:wN{\pdfpageattrsave}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatother
\ExplSyntaxOff
\begin{document}
\begin{frame}{Intro}
Put the Reader into \Acrobatmenu{FullScreen}{\color{blue}Full Screen Mode} first!
\end{frame}
% initialise 3D presentation steps for the next frame
\ThreeDPresSteps{{diceA,7},{diceB,7}}
\begin{frame}{Go forth and back through 3D views using $\leftarrow$ and $\rightarrow$}
\centering
\includemedia[
label=diceA,
width=0.3\textheight,height=0.3\textheight,
activate=pageopen,deactivate=pageclose,
3Dviews=3Dviews.txt,
]{}{dice.U3D}
\includemedia[
label=diceB,
width=0.3\textheight,height=0.3\textheight,
activate=pageopen,deactivate=pageclose,
3Dviews=3Dviews.txt,
]{}{dice.U3D}
\end{frame}
% clear 3D presentation steps
\ThreeDPresStepsReset
\begin{frame}{The End}
\dots
\end{frame}
\end{document}