我正在努力使用条件,下面给出了一个基本示例,它将输出所包含的表格。
代码首先定义\myletterA
为 A 字符,然后是一个名为\test
A、B、C 的数组。我有一个名为的函数\indenterer
,我在下面的表格循环中调用它。
\documentclass[12pt]{article}
\usepackage[a6paper,landscape]{geometry}
\usepackage{arrayjobx}
\usepackage{ifthen}
\def\tand{&}
\begin{document}
\newcommand{\myletterA}{}
\newcommand{\myletterwriter}[1]{\renewcommand\myletterA{#1}}
\myletterwriter{A}
\newarray\test
\newcommand{\indenterer}{%
\readarray{test}{A&B&C}%writes A,B,C to array test
\checktest(1)%reads the first value
\cachedata%returns the value last read by \checktest
\myletterA%returns the value stored i.e. A
\ifx\cachedata\myletterA%
a% \true case
\else%
b% false case
\fi%
}
\newcounter{it}
\begin{tabular}{ll}%
\hline%
\setcounter{it}{1}%
\whiledo{\theit<4}{%
{\indenterer} Y \tand z \\%
\stepcounter{it}%
}%
\end{tabular}
space
\checktest(1)
\cachedata
\myletterA
\end{document}
表格的输出行应显示\cachedata\myletterA_ Y Z
_ 为 a 或 b。所以我的问题是,为什么此代码始终执行错误的情况(请注意字母 b 而不是 a),即使\cashdata
和\myletterA
扩展都给出相同的结果?