проблемы с ifthen и tabularx

проблемы с ifthen и tabularx

У меня проблема, связанная с пакетами ifthen и tabularx.

Вот минимальный пример:

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

если включенный файл:

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

Получаю желаемый результат:

желаемый результат

Однако, если я изменю «файл» на (обратите внимание на прокомментированные части)

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

Я получаю кучу ошибок («Неверное расположение \noalign \end{tabularx}» и т. д.) и такой вывод:

неисправный выход

Я буду благодарен за любые подсказки...

Редактировать: если я использую \input вместо \include, проблема остается той же.

решение1

Обратите внимание, что \includeтак и должно быть \input, но проблема не в этом.

Проблема в том, что это \rowcolorдолжен быть первый элемент в строке, после расширения, поэтому вам нужно использовать расширяемый тест, который \ifthenelseне является. С etoolboxним все просто.

Кстати, beamerуже загружается xcolor, поэтому для загрузки colortblлучше всего передать ему tableопцию, что делается путем добавления xcolor=tableк глобальным опциям.

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

введите описание изображения здесь

решение2

Попробуй это.

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

введите описание изображения здесь

Связанный контент