![Тест на пустой, возможно детализированный аргумент в табу](https://rvso.com/image/266404/%D0%A2%D0%B5%D1%81%D1%82%20%D0%BD%D0%B0%20%D0%BF%D1%83%D1%81%D1%82%D0%BE%D0%B9%2C%20%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%B4%D0%B5%D1%82%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%20%D0%B2%20%D1%82%D0%B0%D0%B1%D1%83.png)
По какой-то причине я не могу проверить, является ли #2
он пустым в следующем tabu
варианте использования.
Неполный \ifx; весь текст после строки 14 был проигнорирован
выдается при выполнении следующего кода.
\documentclass{article}
\usepackage{tabu}
\usepackage[english]{babel}
\newcommand \test [2]{%
%Works
%#1 \ifx& empty \else {\begin{minipage}[t]{\linewidth}#2\end{minipage}} \fi
% Doesn't with Arg A
\begin{tabu}{XX} #1 & \ifx& empty \else {\begin{minipage}[t]{\linewidth}#2\end{minipage}} \fi \end{tabu}
}
\begin{document}%
\test{A}{\begin{itemize}\item Test\end{itemize}} % Arg A
%\test{A}{}
\end{document}
решение1
Кажется, это как-то связано с тем, как tabu
проверяет содержимое ячеек. Добавление пары скобок помогает.
Я также изменил тест на пустоту на что-то более безопасное.
\newcommand\test[2]{%
\begin{tabu}{XX}
#1 &
{\if\relax\detokenize{#2}\relax
empty%
\else
\begin{minipage}[t]{\linewidth}#2\end{minipage}%
\fi}
\end{tabu}}
решение2
У вас есть
\ifx&
когда TeX видит, что &
ячейка заканчивается, и Tex переключается в коде, который завершает определение столбца. Так что здесь \ifx
будет сравнивать первые два токена в закрывающем определении X
типа столбца в табу, следующее использует более безопасный тест на пустоту.
Кроме того, не совсем понятно, зачем вам понадобилось помещать мини-страницу в столбец X, если столбцы X уже являются парбоксами?
\documentclass{article}
\usepackage{tabu}
\usepackage[english]{babel}
\makeatletter
\newcommand \test [2]{%
\begin{tabu}{XX}%
#1&%
\def\tmp{#2}%
\ifx\tmp\@empty
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{empty}%
{\begin{minipage}[t]{\linewidth}#2\end{minipage}}%
\end{tabu}}
\makeatother
\begin{document}%
\test{A}{\begin{itemize}\item Test\end{itemize}} % Arg A
\test{A}{}
\end{document}