Teste para argumento vazio possivelmente detalhado em tabu

Teste para argumento vazio possivelmente detalhado em tabu

Por algum motivo, não posso testar se #2está vazio no seguinte tabucaso de uso. Um

\ifx incompleto; todo o texto foi ignorado após a linha 14

é lançado executando o código a seguir.

\documentclass{article}
\usepackage{tabu}
\usepackage[english]{babel}

\newcommand \test [2]{%
%Works
%#1  \ifx&#2& empty \else  {\begin{minipage}[t]{\linewidth}#2\end{minipage}} \fi

% Doesn't with Arg A
\begin{tabu}{XX} #1 & \ifx&#2& 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}

Responder1

Isso parece ter algo a ver com a forma como tabuexamina o conteúdo das células. Adicionar um par de aparelho ajuda.

Também mudei o teste de vazio para algo mais 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}}

Responder2

Você tem

 \ifx&

quando o TeX vê que &a célula termina e o Tex alterna o código que encerra a definição da coluna. Portanto, aqui \ifxiremos comparar os dois primeiros tokens na definição de fechamento do Xtipo de coluna em tabu. A seguir, usamos um teste mais seguro para vazio.

Além disso, não está claro por que você deseja colocar uma minipágina em uma coluna X, já que as colunas X já são parboxes?

insira a descrição da imagem aqui

\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}

informação relacionada