problemas con ifthen y tabularx

problemas con ifthen y tabularx

Tengo un problema relacionado con los paquetes ifthen y tabularx.

Aquí hay un ejemplo mínimo:

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage{tabularx,colortbl}
\usepackage{xcolor}
\usepackage{ifthen}

\def\kw{2}

\begin{document}
    \begin{frame}{Title}
        \include{file}
    \end{frame}
\end{document}

si el archivo incluido es:

\begin{tabularx}{\textwidth}{|c|X|}
    \hline
    Bla & Blabla\\
    \hline
    \hline
    1 & something \\
    %\ifthenelse{\equal{\kw}{2}}{\rowcolor{red}}{}
    \rowcolor{red}
    \hline      
    2 & something else\\
    \hline
    3 & something else\\
    \hline      
\end{tabularx}  

Obtengo el resultado deseado:

salida deseada

Sin embargo, si cambio el 'archivo' a (tenga en cuenta las partes comentadas)

\begin{tabularx}{\textwidth}{|c|X|}
    \hline
    Bla & Blabla\\
    \hline
    \hline
    1 & something \\
    \ifthenelse{\equal{\kw}{2}}{\rowcolor{red}}{}
    %\rowcolor{red}
    \hline      
    2 & something else\\
    \hline
    3 & something else\\
    \hline      
\end{tabularx}  

Recibo un montón de errores ("Mal colocado \noalign \end{tabularx}", etc.) y este resultado:

salida defectuosa

Estoy agradecido por cualquier pista...

Editar: si uso \input en lugar de \include el problema sigue siendo el mismo.

Respuesta1

Tenga en cuenta que \includedebería ser así \input, pero ese no es el problema.

El problema es que \rowcolordebe ser el primer elemento de una fila, después de la expansión, por lo que es necesario utilizar una prueba ampliable, que \ifthenelseno lo es. Con etoolboxeso es fácil.

Por cierto, beamerya carga xcolor, así que para cargar colortbles mejor pasarle la tableopción, lo cual se hace agregando xcolor=tablea las opciones globales.

\documentclass[xcolor=table]{beamer}

\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{etoolbox}

\def\kw{2}

\begin{document}

\begin{frame}{Title}

\begin{tabularx}{\textwidth}{|c|X|}
  \hline
  Bla & Blabla\\
  \hline
  \hline
  1 & something \\
  \ifnumcomp{\kw}{=}{2}{\rowcolor{red}}{}
  \hline
  2 & something else\\
  \hline
  3 & something else\\
  \hline
\end{tabularx}

\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Prueba esto.

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage{tabularx,colortbl}
\usepackage{xcolor}
\usepackage{ifthen}

\def\kw{2}

\begin{document}
    \begin{frame}{Title}
\begin{tabularx}{\textwidth}{|c|X|}
    \hline
    Bla & Blabla\\
    \hline
    \hline
    1 & something\ifthenelse{\equal{\kw}{2}}{\\\rowcolor{red}}{\\}%
    \hline      
    2 & something else\\
    \hline
    3 & something else\\
    \hline      
\end{tabularx}
    \end{frame}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada