2 Tikzpicktures, 2 Subfigures in 1 Adjustbox, 1 Folie und einige Fehler

2 Tikzpicktures, 2 Subfigures in 1 Adjustbox, 1 Folie und einige Fehler

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 graphicxund hyperref, 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.

adjustboxIhr Problem scheint durch (und die Verwendung eines veralteten Pakets) verursacht zu werden subfigure. Stattdessen schlage ich vor, ein Makro adjustwidthaus 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 withUnterü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}

Bildbeschreibung hier eingeben

Ich hoffe, dass das Bild Ihren Wünschen nahe kommt :)

verwandte Informationen