Ich habe Probleme mit meiner Beamer-Präsentation. Ich möchte 2 Tikz-Unterfiguren in nur eine Folie einfügen. Dazu verwende ich eine Adjustbox, aber ich habe Fehler.
Wenn ich jedes Tikz-Bild einzeln einfüge, tritt kein Fehler auf. Der Fehler tritt jedoch auf, wenn ich versuche, sie in zwei Unterbilder aufzuteilen.
Ich habe nach Antworten auf verwandte Probleme gesucht. Es sieht so aus, als ob das Problem mit Subfloats in der Figurenumgebung zusammenhängt, aber ich habe keine zufriedenstellende Antwort.
Mein Code:
\documentclass[serif, xcolor={usenames,dvipsnames,table}]{beamer}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage{mathpazo}
\let\Tiny=\tiny
\mode<presentation> {
\usetheme{Malmoe}
\usecolortheme{beaver}
}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{enumerate}
\setbeamertemplate{section in head/foot}{\hfill\insertsectionhead}
\setbeamertemplate{section in head/foot shaded}{\color{red!40}\hfill\insertsectionhead}
\setbeamertemplate{section in toc}{\inserttocsectionnumber.~\inserttocsection}
\usepackage{hyperref}
\usepackage[alf]{abntex2cite}
\usepackage{tikz}
\usetikzlibrary{arrows}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=2pt] (char) {#1};}} %texto circulado
\usepackage{adjustbox}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{multicol}
%------------------------------------------------
\begin{document}
\begin{frame}{Eliminação de \textit{subtour}}
\begin{adjustbox}{max totalsize={1\textwidth}{.9\textheight},center}
\begin{figure}[htpb]
\centering
\subfigure[Eliminado pela variável $ \gamma $ e os conjuntos $ \Xi $]{
\begin{tikzpicture}[->, >=stealth', shorten >=1pt, auto, node distance=3cm, thick, main node/.style={circle, draw, font=\sffamily}]
\node[main node, label={above:Q1}] (1) {a};
\node[main node, label={above:R1}] (2) [right of=1] {c};
\node[main node, label={above:Q2}] (3) [right of=2] {d};
\node[main node, label={above:S2}] (4) [right of=3] {b};
\node[](aux1) at (5,-0.5) {};
\node[main node, label={left:P1}] (5) [below of=aux1] {g};
\node[](aux2) [below left of=1] {};
\node[main node, label={right:P3}] (6) [above right of=5] {e};
\node[main node, label={right:P2}] (7) [below right of=5] {f};
\path[every node/.style={font=\sffamily\small}]
(1) edge [right] node[left, below] {} (2)
(2) edge [right] node[left, below] {} (3)
(3) edge [right] node[left, below] {} (4)
(5) edge [right] node[left] {} (7)
(7) edge [right] node[right] {} (6)
(6) edge [red, right, line width=1.8pt] node[left, red] {} (5);
\end{tikzpicture}}
\subfigure[Eliminado pelas restrições \eqref{eq:sd-subtour-lmo}]{
\begin{tikzpicture}[->, >=stealth', shorten >=1pt, auto, node distance=3cm, thick, main node/.style={circle, draw, font=\sffamily}]
\node[main node, label={above:Q1}] (1) {a};
\node[main node, label={above:R2}] (2) [right of=1] {c};
\node[main node, label={above:Q2}] (3) [right of=2] {d};
\node[main node, label={above:S2}] (4) [right of=3] {b};
\node[](aux1) at (3,-0.5) {};
\node[main node, label={left:R1}] (5) [below of=aux1] {g};
\node[](aux2) [left of=5] {};
\node[main node, label={right:P3}] (6) [above right of=5] {e};
\node[main node, label={right:P2}] (7) [below right of=5] {f};
\path[every node/.style={font=\sffamily\small}]
(1) edge [right] node[left, below] {} (2)
(2) edge [right] node[left, below] {} (3)
(3) edge [right] node[left, below] {} (4)
(5) edge [right] node[left] {} (7)
(7) edge [right] node[right] {} (6)
(6) edge [right] node[left, red] {} (5);
\end{tikzpicture}}
\end{figure}
\end{adjustbox}
\end{frame}
\end{document}
Danke schön!
Antwort1
Off-Topic, aber wichtig:
- zwischen anderen Paketen lädt beamer auch
graphicx
undhyperref
, so dass es überflüssig ist, sie erneut zu laden - Beamer hat eine eigene Liste (
itemize
,enumerate
), die an seine Besonderheiten angepasst ist. Verwenden Sie daher keine anderen Pakete, da die Liste instabil sein kann.
adjustbox
Ihr Problem scheint durch (und die Verwendung eines veralteten Pakets) verursacht zu werden subfigure
. Stattdessen schlage ich vor, ein Makro adjustwidth
aus dem Paket zu verwenden changepage
. Im MWE unten entferne ich allen Ballast aus Ihrem MWE (nicht verwendete Codefragmente), sodass der Code jetzt sehr prägnant ist. Außerdem ersetze ich die veraltete subfigure package with
Unterüberschrift.
\documentclass[serif, xcolor={usenames,dvipsnames,table}]{beamer}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage{mathpazo}
\let\Tiny=\tiny
\mode<presentation> {
\usetheme{Malmoe}
\usecolortheme{beaver}
}
%\usepackage{graphicx} not needed
\usepackage{subcaption}
\usepackage{amssymb, mathtools}
%\usepackage{enumerate}
\setbeamertemplate{section in head/foot}{\hfill\insertsectionhead}
\setbeamertemplate{section in head/foot shaded}{\color{red!40}\hfill\insertsectionhead}
\setbeamertemplate{section in toc}{\inserttocsectionnumber.~\inserttocsection}
%\usepackage{hyperref}
\usepackage[alf]{abntex2cite}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, chains, positioning}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=2pt] (char) {#1};}} %texto circulado
\makeatletter
\tikzset{join reset/.code={\def\tikz@after@path{}}}
\makeatother
%\usepackage{adjustbox} better not use it
\usepackage{booktabs, multirow}
%\usepackage{multicol} not needed, beamer has own
\usepackage{changepage} % for more space fo image
%------------------------------------------------
\begin{document}
\begin{frame}
\frametitle{Eliminação de \textit{subtour}}
\begin{figure}
\tikzset{
shorten >=1pt,
node distance = 9mm and 5mm,
start chain = going right,
MN/.style = {% Main Node
circle, draw, semithick, font=\sffamily\scriptsize,
minimum size=3ex, inner sep=2pt,
on chain, join=by -{Straight Barb[]}},
}
\begin{adjustwidth}{-6mm}{-6mm}
\centering
\begin{subfigure}[t]{0.48\linewidth}
\begin{tikzpicture}
\node[MN, label=Q1] (1) {a};
\node[MN, label=R2] (2) {c};
\node[MN, label=Q2] (3) {d};
\node[MN, label=S2] (4) {b};
%
\node[MN, join reset,
label=left:P1,
below=of 4] (5) {g};
\node[MN, label=right:P3,
above right=of 5.south] (6) {e};
\node[MN, label=right:P2,
below right=of 5.north] (7) {f};
\draw[-{Straight Barb[]}] (7) -- (5);
\draw[red, line width=1pt,-{Straight Barb[]}] (5) -- (6);
\end{tikzpicture}
\caption{Eliminado pela variável $ \gamma $ e os conjuntos $ \Xi $}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.48\linewidth}
\begin{tikzpicture}
\node[MN, label=Q1] (1) {a};
\node[MN, label=R2] (2) {c};
\node[MN, label=Q2] (3) {d};
\node[MN, label=S2] (4) {b};
%
\node[MN, join reset,
label=left:P1,
below=of 4] (5) {g};
\node[MN, label=right:R1,
above right=of 5.south] (6) {e};
\node[MN, label=right:P2,
below right=of 5.north] (7) {f};
\draw[-{Straight Barb[]}] (7) -- (5);
\end{tikzpicture}
\caption{Eliminado pelas restrições \eqref{eq:sd-subtour-lmo}}
\end{subfigure}
\end{adjustwidth}
\end{figure}
\end{frame}
\end{document}
Ich hoffe, dass das Bild Ihren Wünschen nahe kommt :)