我想要如下内容:
\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}
其他一些提示:
- 表格单元格的材质始终是本地的。因此
\gdef
是必要的。 - \ifx\\#1\\ 代表什么?-- 解释
\ifx
- 如何创建类似于 \author 的新命令——解释了
\acell