Por alguna razón, no puedo probar si #2
está vacío en el siguiente tabu
caso de uso. Un
\ifx incompleto; todo el texto fue ignorado después de la línea 14
se lanza ejecutando el siguiente código.
\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}
Respuesta1
Esto parece tener algo que ver con la forma en que tabu
se examina el contenido de las células. Agregar un par de aparatos ortopédicos ayuda.
También cambié la prueba de vacío por algo más seguro.
\newcommand\test[2]{%
\begin{tabu}{XX}
#1 &
{\if\relax\detokenize{#2}\relax
empty%
\else
\begin{minipage}[t]{\linewidth}#2\end{minipage}%
\fi}
\end{tabu}}
Respuesta2
Tienes
\ifx&
cuando TeX ve que &
la celda termina y Tex cambia en el código que finaliza la definición de la columna. Entonces, aquí \ifx
compararemos los dos primeros tokens en la definición de cierre del X
tipo de columna en tabú. Lo siguiente utiliza una prueba más segura para vacío.
Aparte de eso, no está claro por qué querrías poner una minipágina en una columna X, ya que las columnas X ya son parboxes.
\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}