在迭代 tabularx 中执行迭代算术

在迭代 tabularx 中执行迭代算术

我正在尝试创建一个矩阵表,该表将根据我可以更改的输入迭代地填充单元格。我最初尝试这里显示的解决方案,\i但是当我实际在单元格中使用迭代值而不是像t1和这样t2的纯文本时,我无法让 Latex 正确扩展。

所以我也遇到了这个很棒的解决方案,哪个做过处理输入\i值。但是,在对该\i值和其他值进行数学运算时,我遇到了问题。根据第二种解决方案,这是我的 MWE:

\documentclass[]{article}
\usepackage{tikz}
\usepackage{tabularx}
\begin{document}
    \newcommand\costsmall{60}
    \newcommand\costmed{80}
    \newcommand\costlarge{100}
    \newcommand\rentsmall{10}
    \newcommand\rentmed{15}
    \newcommand\rentlarge{20}

    \makeatletter
    \newtoks\@tabtoks
    \newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}}
    \newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}}
    \newcommand*\resettabtoks{\global\@tabtoks{}}
    \newcommand*\printtabtoks{\the\@tabtoks}
    \makeatother

    \resettabtoks
    \addtabtoks{\textbf{Num1} & \textbf{Num2} & \textbf{Num3} & \textbf{Num2/Num3}\\ \cline{1-4}}

    \foreach \x [count=\xi] in {\costsmall,\costmed,\costlarge}{
        \foreach \y [count=\yi] in {\the\numexpr\x - 10,\the\numexpr\x,\the\numexpr\x + 10}{
            \foreach \z [count=\zi] in {\rentsmall,\rentmed,\rentlarge}{
                \ifnum\zi=2 {
                    \ifnum\yi=2 {
                        \eaddtabtoks{\x}
                    }
                    \else {
                    }
                    \fi
                    \addtabtoks{&}
                    \eaddtabtoks{\y}
                    \addtabtoks{&}
                } 
                \else {
                    \addtabtoks{ & & }
                }
                \fi
                \eaddtabtoks{\z }
                \addtabtoks{&}
    %           \newcommand{\testthing}[2]{y is #1, z is #2, and together they are #1/#2}
    %           \testthing{\y}{\z}
                \eaddtabtoks{\y/\z}
                \addtabtoks{\\}

                \ifnum\zi=3 {
                    \ifnum\yi=3 {
                        \addtabtoks{ \cline{1-4} }
                    }
                    \else{
                        \addtabtoks{ \cline{2-4} }
                    }
                    \fi
                }
                \fi
            }
        }
    }

    \begin{tabularx}{\textwidth}{|c|c|c|c|c|}
        \printtabtoks
    \end{tabularx}%

\end{document}

结果,我得到了这个图,其中大多数情况下“要支付的租金数量”显然计算错误: 绘图时数字不正确

在此代码中,这是行\eaddtabtoks{\y/\z}。我能够追溯它并发现它在所有将\y10 减去或添加到\foreach行中的情况中都失败了。在这些情况下,它看起来像是一种奇怪的运算顺序,或者10不被视为数字或其他东西。我\y/\z无休止地玩弄这行,尝试了不同的选项\the\numexpr和括号和圆括号来正确完成运算顺序,但似乎没有任何效果。

附注:我确实不得不使用这种\ifnum\zi=2居中前几个多列的棘手方法,因为我无法让多列使用此方法工作。 \multicolumn{9}{*}{random}使用像 这样的字符串可以正常工作random,但是一旦我输入像\x或 这样的迭代器\y,我就会收到无法修复的错误。

相关内容