problemas com ifthen e tabularx

problemas com ifthen e tabularx

Estou com um problema relacionado aos pacotes ifthen e tabularx.

Aqui está um exemplo 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}

se o arquivo incluído for:

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

Eu obtenho a saída desejada:

saída desejada

No entanto, se eu alterar o 'arquivo' para (observe as 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}  

Recebo vários erros ("Misplaced \noalign \end{tabularx}" etc.) e esta saída:

saída defeituosa

Agradeço qualquer pista...

Editar: se eu usar \input em vez de \include o problema permanece o mesmo.

Responder1

Observe que \includedeveria ser \input, mas não é o problema.

A questão é que \rowcolordeve ser o primeiro item consecutivo, após a expansão, então você precisa usar um teste expansível, o que \ifthenelsenão é. Com etoolboxisso é fácil.

Aliás, beamerjá carrega xcolor, então para carregar colortblé melhor passar a tableopção, o que é feito adicionando xcolor=tablenas opções globais.

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

insira a descrição da imagem aqui

Responder2

Experimente isso.

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

insira a descrição da imagem aqui

informação relacionada