使用 Spreadtab 有条件地写入表格的行

使用 Spreadtab 有条件地写入表格的行

我正在使用spreadtab包为一些微积分编写表格。我想仅在特定条件下写入它的行,即在每一行中测试条件是否为真,然后写入此行,如果条件为假则不写入该行。当我在表格环境中执行此操作时,一切都正常,例如在此示例中,其中未写入第3行,因为“1 = 2”为假:

Tabular\\
\begin{tabular}{|c|c|}
\hline
1&1         \\  \hline
\ifnum 1=1 2&2 \fi \\ \hline
\ifnum 1=2 3&3 \\ \hline\fi 
\ifnum 1=1 4&4 \fi \\ \hline
\end{tabular}
\\ 
End of Tabular

编译结果如下: 在此处输入图片描述 现在,如果我在电子表格环境中插入相同的表格,如下宏所示:

\begin{spreadtab}{{tabular}{|c|c|}}
\hline
1&1\\
\ifnum 1=1 2&2 \fi \\ \hline
\ifnum 1=2 3&3 \\ \hline\fi 
\ifnum 1=1 4&4 \fi \\ \hline
\end{spreadtab}

该程序无法编译,并且出现以下错误消息:

! Undefined control sequence.
<argument> 2 \fi \@@nil
&
l.26 ^^I\end{spreadtab}

我的程序出了什么问题?我该如何修复?谢谢

答案1

如果你只想在单元格中放置文本,只需spreadtab将字符放置在单元格中的某个位置@这个答案说明如何跳过&条件语句。

带有三个参数的命令\condRow测试第一个参数是否等于 1,表格的第一个和第二个单元格将是该命令的第二个和第三个参数。

\documentclass{article}
\usepackage{spreadtab}

\begin{document}

\newcommand{\condRow}[3]{\ifnum \numexpr#1\relax=1  #2\uppercase{&}#3\\\fi 
\ifnum \numexpr#1\relax=1 \hline\fi}


\begin{spreadtab}{{tabular}{|c|c|}}
\hline
1&1\\ \hline
@\condRow{1}{34}{202}
3&3\\ \hline 
4&4\\ \hline
\end{spreadtab}

\end{document}

相关内容