使用计算值定义重复的表格/数组列来指定数量

使用计算值定义重复的表格/数组列来指定数量

背景:

我最近看到可以使用以下语法在tabular或中定义多个列:array

*{num}{<align>} 

因此,例如\begin{tabular}{r*{3}{l}r}与 相同\begin{tabular}{rlllr}, 也类似array

问题:

我用这个来解决问题创建方程组环境的最佳方法是什么? 其中使用的数字作为参数提供。如果指定的参数比变量数少一,则此方法有效。

因此,我尝试修改它以接受变量的实际数量,并将其设置为计数器值,将其减一,然后使用计数器的新值来指定要使用多少个变量。我怀疑这是一个扩展问题(我还没有完全掌握)。

或者,如果我能以某种方式执行减量运算并将该值应用于列规范也可以。

错误结果:

目前,下面的代码产生: 在此处输入图片描述

期望结果:

我想使用与注释意图等同的东西\begin{array},使用比提供的参数小一的值。因此,当它按预期工作时,输出应该是(注意右侧垂直条中的偏移): 在此处输入图片描述

代码:

\documentclass[border=5pt]{standalone}
\usepackage{xcolor}
\usepackage{array}
\usepackage[paperwidth=4.7in]{geometry}

\newcounter{NumberOfRepeatedColumns}
\newenvironment{MySystem}[2]{% <num+1> <r|l|c>
    \setcounter{NumberOfRepeatedColumns}{#1}
    \addtocounter{NumberOfRepeatedColumns}{-1}
    \begin{array}{c| *#1{#2} | c}% want to replace this with something equivalent to line below 
    %\begin{array}{c| *{\the\value{NumberOfRepeatedColumns}}{#2}}%
        \the\value{NumberOfRepeatedColumns}\\
}{%
    \end{array}%
}


\newcommand{\data}{123 & abc & de  & f \\1   & a   & def & fg}%

\begin{document}
\color{red}
$\begin{MySystem}{4}{r}
    \data
\end{MySystem}$
\hspace{0.5in}
$\begin{MySystem}{4}{l}
    \data
\end{MySystem}$

\color{blue}
$\begin{MySystem}{3}{r}
    \data
\end{MySystem}$
\hspace{0.5in}
$\begin{MySystem}{3}{l}
    \data
\end{MySystem}$
\end{document}

答案1

您可以使用

\newcounter{NumberOfRepeatedColumns}
\newenvironment{MySystem}[2]{% <num+1> <r|l|c>
    \setcounter{NumberOfRepeatedColumns}{#1}
    \addtocounter{NumberOfRepeatedColumns}{-1}
    \begin{array}{c| *{\theNumberOfRepeatedColumns}{#2} | c}
}{%
    \end{array}%
}

甚至更好,没有额外的计数器,并且\numexpr

\newenvironment{MySystem}[2]{% <num+1> <r|l|c>
    \begin{array}{c| *{\numexpr#1-1\relax}{#2} | c}
}{%
    \end{array}%
}

相关内容