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}

在此处输入图片描述

相关内容