打印带条件的宏内容

打印带条件的宏内容

我想要如下内容:

\documentclass{article}
\newcommand{\acell}{}
\newcommand{\bcell}
\newccomand{\zcell}[1]{#1}
\ifx\acell{A}
 \ifx\bcell{A}
  \zcell{yes}
 \else
  \zcell{no}
 \fi
\else
\fi
\begin{document}
\begin{tabular}{ccc}
\acell{A} & \bcell{A} & \zcell{} \\
\acell{A} & \bcell{B} & \zcell{} \\  
\end{document}

但是此代码不起作用。它没有在“zcell”宏所在的位置打印“yes”和“no”。可以实现这一点吗?

答案1

你的问题不太清楚(你的例子也很不完整),但我认为你想要

在此处输入图片描述

\documentclass{article}
\newcommand{\acell}[1]{\gdef\acontent{#1}#1}
\newcommand{\bcell}[1]{\gdef\bcontent{#1}#1}
\def\atest{A}
\newcommand{\zcell}{%
\ifx\acontent\atest
 \ifx\bcontent\atest
  yes%
 \else
  no%
 \fi
\else
  no%
\fi}
\begin{document}
\begin{tabular}{ccc}
\acell{A} & \bcell{A} & \zcell \\
\acell{A} & \bcell{B} & \zcell 
\end{tabular}
\end{document}

关于你的例子的一些注释

\newcommand{\acell}{}

定义\acell为不带任何参数并且扩展为无,但是您使用它就好像它带了一个参数一样。

\newcommand{\bcell}

是语法错误(你根本没有提供定义)

\newccomand{\zcell}[1]{#1}

只是定义\zcell来呼应其论点。

\ifx\acell{A}

不在任何定义中,并将标记\acell与标记进行比较{,然后跳至匹配,\fi因为这些标记不相等。

答案2

您可以执行以下操作,但我不知道您想要实现什么:

\documentclass[11pt]{article}
\makeatletter
\def\acell#1{\gdef\@acell{#1}}
\def\bcell#1{\gdef\@bcell{#1}}
\def\zcell{%
 \ifx\@acell\@bcell
     yes\acell{a}\bcell{b}%
 \else
   no
 \fi%
}
\makeatother
\begin{document}
\begin{tabular}{ccc}
\acell{A} & \bcell{A} & \zcell{} \\
\acell{A} & \bcell{B} & \zcell{} \\  
\end{tabular}
\end{document}

其他一些提示:

相关内容