Uso de la tabla dentro del entorno de solución de la clase de documento del examen

Uso de la tabla dentro del entorno de solución de la clase de documento del examen

Estoy intentando utilizar el entorno de tabla dentro del solutionentorno de la examclase de documento. Desafortunadamente esto no funciona como se indica enestePregunta ya que tabletambién es un flotador.

El entorno de la solución utiliza internamente un \vbox y esto tiene como consecuencia que no se permiten flotantes dentro de este entorno. En lugar de utilizar la mesa de entorno flotante, puedes utilizar un entorno central.

Dado que funcionan fuera del solutionentorno, estoy buscando una manera de modificarlos \begin{table} ... \end{table}para que actúen como si estuvieran fuera de la solución y por dentro se reemplacen con \begin{center}...\end{center}.

Afortunadamente comoesteLa publicación muestra que es fácil saber si estás o no dentro de un solutionentorno. Probé esto y funciona.
Sin embargo, dado que los documentos que tengo que adaptar a la examclase de documentos son numerosos y también se usan en otras clases de documentos, lo ideal sería no crear un entorno nuevo, sino adaptar los tableentornos de manera similar a lo que sucedió.aquíal figureoaquíal entorno tabular. Este es mi código hasta ahora:
ACTUALIZAR:No sé por qué, pero en \centerlugar del \begin{center}error desapareció y también permite una forma de analizar el argumento opcional detable

\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}

Pero me temo que no estoy manejando el parámetro tablecorrecto, ya que esto genera el error: Opción flotante desconocida `['. \begin{tabla}[

Esta solución funciona fuera de "interno" y puede manejar el argumento opcional de table, sin embargo, si \ifinneres cierto, aparece el error.

Extra } u olvidado \endgroup. \mesa final}

¿Alguien tiene alguna sugerencia sobre cómo adaptarse tableen función del entorno?

Muchas gracias

Respuesta1

Encontré una solución y la publiqué aquí como respuesta si alguien más enfrenta este problema. El problema (obvio en retrospectiva) fue que \ifinnerfunciona al principio, porque es un entorno flotante, pero tan pronto como \tablecomienza ya no lo es. Por lo tanto \endcenterno se pudo alcanzar. Probé algunas alternativas y descubrí que la forma más fácil es definir un booleano personalizado que verifique si se alcanza el ifinnervalor modificado tabley usarlo para establecer un booleano. En este caso, \endtableeste valor booleano se puede utilizar para encargarse de finalizarlo correctamente.

\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}

información relacionada