Ich habe versucht, ein PDF-Dokument einzubinden und würde gerne in der Mitte Sprechblasen/Kommentarrahmen hinzufügen. Hier ist ein Teil meines Codes (da das Projekt zu lang ist) (ich verwende Beamer): Grundsätzlich funktioniert es gut, aber nicht, wenn ich sie sehen möchte. Ich würde sie gerne in die Mitte jedes PDFs setzen. Ich habe eine Abbildung angefügt, damit das Problem leicht zu erkennen ist. bearbeitet Link zum gesamten Projekt
\PassOptionsToPackage{many}{tcolorbox}
\documentclass{bredelebeamer}
\setbeamertemplate{caption}[numbered]{}
\usepackage[absolute,overlay]{textpos}
%%%%%%%%%%%%%%%%
\usepackage{array,colortbl,xcolor}
\usepackage{array}
\usepackage{booktabs}
%\setbeamertemplate{caption}[numbered]
\numberwithin{figure}{section}
\usepackage[export]{adjustbox}
\setbeamercovered{dynamic}
\usepackage{pgfplots}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usetikzlibrary{shapes}
\usetikzlibrary{mindmap}
\usetikzlibrary{decorations.text}
% tikzmark command, for shading over items
%\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts}
\usepackage{xparse}
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't
change the path
},
}
\NewDocumentCommand{\mycallout}{r<> O{opacity=0.8,text opacity=1} m m}{%
\tikz[remember picture, overlay]\node[align=center, fill=cyan!20, text
width=2cm,
#2,visible on=<#1>, rounded corners,
draw,rectangle callout,anchor=pointer,callout relative pointer=
{(230:1cm)}]
at (#3) {#4};
}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember
picture,baseline=-0.5ex] \node (#1) {};}
% standard enumeration
\setbeamertemplate{enumerate items}{(\arabic{enumi})}
% default itemize
\setbeamertemplate{itemize items}[circle]
% transparency
\setbeamercovered{transparent=15}
% for resuming lists across frames
\newcounter{savedenum}
\newcommand*{\saveenum}{\setcounter{savedenum}{\theenumi}}
\newcommand*{\resume}{\setcounter{enumi}{\thesavedenum}}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't
change the path
},
}
\title[]{efijrj iejijdfikj ldlckd,dkf}
% Titre du diaporama
\subtitle{}
% Sous-titre optionnel
\author{Majikdid Mkks}
% La commande \inst{...} Permet d'afficher l' affiliation de
l'intervenant.
% Si il y a plusieurs intervenants: Marcel Dupont\inst{1}, Roger
Durand\inst{2}
% Il suffit alors d'ajouter un autre institut sur le modèle ci-dessous.
\institute[]
{
MASTER RECHERCHE\\
Gestion \\
}
\date{\today}
%\date{18 Brumaire 2015}
% Optionnel. La date, généralement celle du jour de la conférence
\subject{Sujet de votre diaporama}
% C'est utilisé dans les métadonnes du PDF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{IAL \& feature ordering}
\begin{frame}{Danhjhuiiu hhyhuui yhgyygtyt (1/2)}
\includegraphics[page=1,height=0.80\textheight,scale=0.90]
{images/file.pdf} \tikzmark{mf1}
\mycallout<1>[opacity=1,yshift=1cm]{mf1}{gvhh hhj: 2.929}
\includegraphics[page=1,height=0.90\textheight,scale=0.90]
{images/file1.pdf}\tikzmark{mf2}
\mycallout<1>[opacity=1]{mf2}{ddfb jjhg: 5}
\end{frame}
\begin{frame}{Danhjhuiiu hhyhuui yhgyygtyt(2/2)}
\includegraphics[page=1,height=0.90\textheight,scale=0.90]
{images/file3.pdf}\tikzmark{mf1}
\mycallout<1>[opacity=1]{mf1}{tftgt jjjb: 0.31}
\includegraphics[page=1,height=0.90\textheight,scale=0.90]
{images/file2.pdf}\tikzmark{mf2}
\mycallout<1>[opacity=1]{mf2} {fgh nhhjj: 1.457}
\end{frame}
\end{document}
Antwort1
Wenn Sie das Bild in einen TikZ
Knoten einfügen, können Sie es als Referenz (mit remember picture
und overlay
Optionen) für die Callout-Knoten verwenden.
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts, calc}
\begin{document}
\begin{frame}
\centering
\begin{tikzpicture}[remember picture, overlay]
\node (a) {\includegraphics[width=.75\linewidth]{example-image-a}};
\node<2->[ellipse callout, draw=blue, fill=blue!30] at ($(a.center)!.5!(a.north east)$) (b) {Hello!};
\end{tikzpicture}
\end{frame}
\end{document}
Aktualisieren: Auf mirette
Kommentar antworten.
Ihr Code ist korrekt und das Ergebnis ist das erwartete. tikzmark
erstellt einen Verweis auf seine Position, die in Ihrem Fall nach dem includegraphics
Befehl liegt und mycallout
entsprechend diesem Verweis platziert wird, der sich in diesem Fall unterhalb der unteren linken Ecke der eingefügten Abbildung befindet.
Die vorgeschlagene Lösung ersetzt tikzmark
durch ein node
, das die ganze Seite umfasst. Anschließend können Sie jede beliebige Position auf der Seite verwenden, um die Sprechblase zu platzieren.
Da mycallout
der Befehl bereits innerhalb einer Umgebung definiert ist, tikzpicture
ist es besser, ihn außerhalb des für eingeschlossene Seiten definierten Tikzpicture zu verwenden.
Der folgende Code zeigt ein Beispiel mit zwei Figuren auf einem Frame. Beide Figuren wurden mithilfe der Beamer- columns
Umgebung verteilt.
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts, calc}
\usepackage[most]{tcolorbox}
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't
change the path
},
}
\NewDocumentCommand{\mycallout}{r<> O{opacity=0.8,text opacity=1} m m}{%
\tikz[remember picture, overlay]\node[align=center, fill=cyan!20, text
width=2cm,
#2,visible on=<#1>, rounded corners,
draw,rectangle callout,anchor=pointer,callout relative pointer=
{(230:1cm)}]
at (#3) {#4};
}
\begin{document}
\begin{frame}{Test callouts}
\begin{columns}[onlytextwidth]
\column{.5\linewidth}
\centering
\begin{tikzpicture}[remember picture, overlay]
\node (a) {\includegraphics[width=.85\linewidth, height=.7\textheight]{example-image-a}};
\end{tikzpicture}
\mycallout<1>[opacity=1,yshift=1cm]{a}{gvhh hhj: 2.929}
\column{.5\linewidth}
\centering
\begin{tikzpicture}[remember picture, overlay]
\node (b) {\includegraphics[width=.85\linewidth, height=.7\textheight]{example-image-b}};
\end{tikzpicture}
\mycallout<1>[opacity=1,yshift=1cm]{[shift={(-1cm,-2cm)}]b.center}{gvhh hhj: 2.929}
\end{columns}
\end{frame}
\end{document}