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:
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:
Estoy agradecido por cualquier pista...
Editar: si uso \input en lugar de \include el problema sigue siendo el mismo.
Respuesta1
Tenga en cuenta que \include
debería ser así \input
, pero ese no es el problema.
El problema es que \rowcolor
debe ser el primer elemento de una fila, después de la expansión, por lo que es necesario utilizar una prueba ampliable, que \ifthenelse
no lo es. Con etoolbox
eso es fácil.
Por cierto, beamer
ya carga xcolor
, así que para cargar colortbl
es mejor pasarle la table
opción, lo cual se hace agregando xcolor=table
a 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}
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}