어떤 이유로 #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가 전환됩니다. 따라서 여기서는 tabu의 열 유형 \ifx
종료 정의에서 처음 두 토큰을 비교합니다 X
. 다음은 비어 있음에 대한 더 안전한 테스트를 사용합니다.
그 외에도 X 열이 이미 parbox이므로 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}