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}  

我收到一堆錯誤(“Misplaced \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}

在此輸入影像描述

相關內容