Ich erhalte Fehlermeldungen bei Verwendung von

Open in Online-Editor
\AtBeginEnvironment{\Environment}{\begin{tcolorbox}}
\AtEndEnvironment{\Environment}{\end{tcolorbox}}

Was muss ich anders machen?

Händisch geht es, z.B.

Open in Online-Editor
\begin{table}
\begin{tcolorbox}
....
\end{tcolorbox}
\end{table}

Ganzes Dokument

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{tcolorbox}
\tcbset{colframe=gray, colback=yellow!20,}

\usepackage{pgffor} % Schleifen
\usepackage{etoolbox}
\foreach \Environment in {figure, table}{%% 
\BeforeBeginEnvironment{\Environment}{\newpage}
% Problem hier .....
\AtBeginEnvironment{\Environment}{\begin{tcolorbox}}
\AtEndEnvironment{\Environment}{\end{tcolorbox}}
% .....
\AfterEndEnvironment{\Environment}{\clearpage}
}%%

\begin{document}

\begin{figure}\label{fig:Bild}
\centering
\includegraphics[scale=0.6]{example-image-a}
\caption{Bildunterschrift}
\end{figure}

\begin{table}
\begin{tcolorbox}
\label{tab:Tabelle}
\centering\Huge
\caption{Tabellen\"uberschrift}
\begin{tabular}{c|c|c}
A & B & C \\ \hline
X & Y & Z \\ 
\end{tabular}
\end{tcolorbox}
\end{table}

\end{document}

gefragt 13 Sep '16, 02:51

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 13 Sep '16, 07:57

saputello's gravatar image

saputello
11.1k174365


\AtBeginEnvironment führt den zusätzlichen Code nach dem Öffnen der zugehörigen Gruppe aber vor dem \begin-Code der Umgebung aus. Du hast hier also wieder die Gleitumgebung in der tcolorbox statt umgekehrt. Siehe float und blend into etc. in der tcolorbox-Anleitung wie das mit den Gleitumgebungen korrekt funktioniert, beispielsweise so:

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{tcolorbox}
\tcbset{colframe=gray, colback=yellow!20,}

\newtcolorbox[blend into=figures]{boxedfigure}[2][]{float=tbp,title={#2},capture=hbox,every float=\centering}

\begin{document}

\begin{boxedfigure}[label=fig:Bild]{Bildunterschrift}
\includegraphics[scale=0.6]{example-image-a}
\end{boxedfigure}

\end{document}

gleitende tcolorbox-Umgebung

Eine andere Möglichkeit besteht darin, die interne @foat-Umgebung von LaTeX zu patchen, die im einspaltigen Satz von allen Gleitumgebungen verwendet wird. Dabei ist aber zu beachten, dass diese Umgebung in der Regel intern nicht mit \begin{@float} und \end{@float} aufgerufen wird, sondern mit \@float und \end@float und daher direkt diese Anweisungen geändert werden müssen:

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{tcolorbox}
\tcbset{colframe=gray, colback=yellow!20,}

\usepackage{etoolbox}
\makeatletter
\pretocmd{\@float}{\newpage}{}{}
% Problem hier .....
\apptocmd{\@float}{\begin{tcolorbox}}{}{}
\pretocmd{\end@float}{\end{tcolorbox}}{}{}
% .....
\apptocmd{\end@float}{\clearpage}{}{}
\makeatother

\begin{document}

\begin{figure}\label{fig:Bild}
\centering
\includegraphics[scale=0.6]{example-image-a}
\caption{Bildunterschrift}
\end{figure}

\begin{table}
\begin{tcolorbox}
\label{tab:Tabelle}
\centering\Huge
\caption{Tabellen\"uberschrift}
\begin{tabular}{c|c|c}
A & B & C \\ \hline
X & Y & Z \\ 
\end{tabular}
\end{tcolorbox}
\end{table}

\end{document}

gepatchte Gleitumgebung in einer tcolorbox

Dass in diesem Beispiel die Tabelle nun doppelt umrandet ist, ist korrekt, da hier nun eine explizite tcolorbox in der impliziten tcolorbox der Gleitumgebung @float gesetzt wird.

Permanenter link

beantwortet 13 Sep '16, 07:36

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 13 Sep '16, 07:58

Ahhhja... Was immer Du da gezaubert hast beim 2. Beispiel, es scheint zu funktionieren. :() Zumindest bei figure- und table-Umgebungen (welche ich im MWE als Bsp. genommen habe). Allerdings nicht bei Umgebungen des Typs \newtheorem{defi}{Definition}[chapter] - sehe ich das richtig?

Es wäre irgendwie praktisch gewesen, wenn etoolbox.sty etwas bereitgestellt hätte, was Befehle direkt nach \begin{<Umgebung>} <ALSO HIER> postitionieren würde.

(13 Sep '16, 17:11) cis

@cis: Auch für theorem-Umgebungen bietet tcolorbox eigene Befehle. Mit etoolbox kann man prinzipiell die Anweisungen, über die Umgebungen definiert sind per \apptocmd und \pretocmd erweitern, wie ich das für @float gemacht habe. Allerdings kann etoolbox (und auch das bessere xpatch) nicht jede Anweisung/Umgebung so einfach erweitern. Wenn eine Anweisung intern eine andere aufruft und die Auswertung der Argumente diesen überlässt, dann funktioniert das nicht. Das ist genau der Grund, warum man nicht einfach \figure erweitern kann, sondern \@float erweitern muss …

(13 Sep '16, 18:11) saputello

@cis: Diese Begrenzung von \apptocmd und \xapptocmd wurde übrigens bereits in »Warum funktioniert \xapptocmd{\part}{\KOMAoptions{open=any}}{}{} nicht?« behandelt.

(13 Sep '16, 18:14) saputello

Puh, wird das kompliziert (für mich). Ich wollte egtl. nicht mit tcolorbox Theoreme erzeugen, sondern vorhandene amsmath-Theoreme farbig hinterlegen (und das muss für mein Projekt zwingend automatisiert bzw. globalisiert sein), so wie es beim 2. MWE mit tables und figures gemacht wird.

(13 Sep '16, 19:35) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×32
×14
×5

gestellte Frage: 13 Sep '16, 02:51

Frage wurde gesehen: 6,112 Mal

zuletzt geändert: 13 Sep '16, 20:24