У меня проблема, связанная с пакетами 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}