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}