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}" など) が発生し、次の出力が表示されます:

出力不良

何か手がかりがあればありがたいです...

編集: \include の代わりに \input を使用した場合も、問題は同じままです。

答え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}

ここに画像の説明を入力してください

関連情報