Test auf leeres, möglicherweise aufgelistetes Argument in Tabu

Test auf leeres, möglicherweise aufgelistetes Argument in Tabu

#2Aus irgendeinem Grund kann ich im folgenden tabuAnwendungsfall nicht testen, ob leer ist.

Unvollständig \ifx; der gesamte Text nach Zeile 14 wurde ignoriert

wird beim Ausführen des folgenden Codes ausgelöst.

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

Antwort1

Dies scheint etwas damit zu tun zu haben, wie tabuZellinhalte untersucht werden. Das Hinzufügen von Klammern hilft.

Ich habe auch den Leeretest durch etwas Sichereres geändert.

\newcommand\test[2]{%
  \begin{tabu}{XX}
  #1 &
  {\if\relax\detokenize{#2}\relax 
     empty%
   \else
    \begin{minipage}[t]{\linewidth}#2\end{minipage}%
   \fi}
  \end{tabu}}

Antwort2

Du hast

 \ifx&

wenn TeX das &Ende der Zelle erkennt, wechselt Tex in den Code, der die Spaltendefinition beendet. Hier \ifxwerden also die ersten beiden Token in der schließenden Definition des XSpaltentyps in Tabu verglichen. Im Folgenden wird ein sicherer Test auf leer verwendet.

Abgesehen davon ist nicht klar, warum Sie eine Miniseite in eine X-Spalte einfügen möchten, da X-Spalten bereits Parboxen sind?

Bildbeschreibung hier eingeben

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

verwandte Informationen