Verwenden einer Tabelle in der Lösungsumgebung der Prüfungsdokumentklasse

Verwenden einer Tabelle in der Lösungsumgebung der Prüfungsdokumentklasse

Ich versuche, die Tabellenumgebung innerhalb der solutionUmgebung der examDokumentklasse zu verwenden. Leider funktioniert dies nicht wie inDasFrage, da tablees sich auch um einen Float handelt.

Die Lösungsumgebung verwendet intern eine \vbox und dies hat zur Folge, dass Floats in dieser Umgebung nicht zulässig sind. Anstatt die Floating-Umgebungstabelle zu verwenden, können Sie eine Center-Umgebung verwenden.

Da sie außerhalb der solutionUmgebung arbeiten, suche ich nach einer Möglichkeit, sie so zu ändern, \begin{table} ... \end{table}dass sie sich außerhalb der Lösung verhalten und sich innerhalb durch ersetzen \begin{center}...\end{center}.

Zum GlückDasDer Beitrag zeigt, dass es einfach ist, herauszufinden, ob Sie sich in einer solutionUmgebung befinden oder nicht. Ich habe das getestet und es funktioniert.
Da die Dokumente, die ich an die Dokumentklasse anpassen muss, jedoch examzahlreich sind und auch in anderen Dokumentklassen verwendet werden, würde ich idealerweise keine neue Umgebung erstellen, sondern die tableUmgebungen ähnlich anpassen, wie es passiert istHierzum figureoderHierzur tabellarischen Umgebung. Das ist mein Code bisher:
AKTUALISIEREN:Ich weiß nicht warum, aber mit \centerstatt \begin{center}ist der Fehler weg und ermöglicht auch eine Möglichkeit, das optionale Argument von zu verwenden.table

\documentclass{exam}

\let\oldtable\table
\let\endoldtable\endtable

\renewenvironment{table}[1][h]
{\ifinner \center    \else  \oldtable[#1] \fi}
{\ifinner \endcenter \else  \endoldtable  \fi}

\begin{document}

\begin{questions} %error is no \question 
\printanswers

\question{Question featuring a table environment}

\begin{table}[h]
    \begin{tabular}{|ll|}
        Question & in  \\
        Question & part \\
    \end{tabular}
\end{table}


\begin{solution}
Solution featuring a table environment

    \begin{table}[h]
        \begin{tabular}{|ll|}
            Solution & in  \\
            Solution & part \\
        \end{tabular}
    \end{table}

\end{solution}

\end{questions}

\end{document}

Ich befürchte aber, dass ich den Parameter nicht richtig handhabe table, da dies zu folgendem Fehler führt: Unbekannte Float-Option `['. \begin{table}[

Diese Lösung funktioniert außerhalb von „inner“ und kann das optionale Argument von verarbeiten table. Wenn jedoch \ifinner„true“ ist, erhalte ich den Fehler

Extra } oder vergessen \endgroup. \end{table}

Hat jemand einen Vorschlag zur Anpassung tablean die Umgebung?

Vielen Dank

Antwort1

Ich habe eine Lösung gefunden und poste sie hier als Antwort, falls jemand anderes dieses Problem hat. Das (im Nachhinein offensichtliche) Problem war, dass es \ifinneram Anfang funktioniert, weil es eine schwebende Umgebung ist, aber sobald \tablees beginnt, funktioniert es nicht mehr. Daher konnte das \endcenternicht erreicht werden. Ich habe ein paar Alternativen ausprobiert und festgestellt, dass der einfachste Weg darin besteht, einen benutzerdefinierten Booleschen Wert zu definieren, der prüft, ob das ifinnerdes geänderten Werts tableerreicht ist, und diesen zu verwenden, um einen Booleschen Wert festzulegen. \endtableDaraufhin kann dieser Boolesche Wert verwendet werden, um dafür zu sorgen, dass es korrekt beendet wird.

\let\oldtable\table
\let\endoldtable\endtable
\newif\ifinsidefloatingenv  %set boolean for 
\insidefloatingenvfalse     %not necessary but to be sure its false

\renewenvironment{table}[1][h]
{\ifinner               \center \insidefloatingenvtrue     \else    \oldtable[#1]   \fi}
{\ifinsidefloatingenv   \endcenter \insidefloatingenvfalse \else    \endoldtable    \fi}

verwandte Informationen