1-我想制作一个有 n 行的表格?
我的错误代码
\newcommand{\xx}{
\begin{tabular}{|c|c|c|}
\hline
\newcount\fooo
\fooo=10
\loop
11 & 12 & 13\\
\hline
\advance \fooo -1
\ifnum \fooo>0
\repeat
\end{tabular}
}
我想要使用循环或任何命令得到这样的结果
2-\def\abc{dd}
创造一个价值
我想要命令创建多个值
类似
\def
- 多个 \abc {dd,cc,vv,mm}
现在我正在使用这个代码
\foreach \x in {1,...,\nRows} {\addtabtoks{ \abc(\x) & yyy & yyy \\\hline}}
所需命令是\abc(\x)
或\abc(2)
第一个循环类型的第一个值\abc
第二个循环类型第二个值\abc
等等
答案1
该表由基元实现\halign
,其中组被分配在单元格中,扩展过程和宏的扫描参数稍微复杂一些,以便将它们与替换单元格的声明数据相协调。这就是为什么在单元格内和跨单元格进行计算和复杂的宏扩展不是一个好主意的原因。这是可能的,但你必须\halign
详细了解行为,你需要确切地知道你和 TeX 在做什么。
但更简单的解决方案是可能的。您可以\tabledata
在处理表之前做好准备。这项工作:
\documentclass[12pt]{article}
\newcount\fooo
\long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\begin{document}
\def\tabledata{} \fooo=10
\loop
\addto\tabledata{11 & 12 & 13\\
\hline}
\advance \fooo -1
\ifnum \fooo>0
\repeat
\begin{tabular}{|c|c|c|}
\hline
\tabledata
\end{tabular}
\end{document}
当你需要插入一些依赖于循环变量的东西时,你就必须在循环内部展开它。但其他脆弱的宏不能展开。例如,你需要插入循环变量的值。那么你可以这样做:
\edef\tabline{\the\fooo & 12 & 13}
\expandafter\addto\expandafter\tabledata\expandafter{\tabline \\ \hline}
答案2
这是一个LaTeX
解决方案,带有\forloop
fromforloop
包。它使用命令构建一个表格数组\maketablerows{number_of_rows}{rowcontent}
,其中 rowcontent 被怀疑用于保存一行中单元格的值,无论是直接保存还是通过命令保存。
\documentclass[paper=a4,12pt]{scrbook}
\usepackage{forloop}%
\usepackage{etoolbox}%
\begin{document}
\makeatletter
\newcounter{column@@counter}
\newcounter{row@@counter}
\newcounter{inner@@counter}%
\edef\t@@blerow{}%
\edef\t@@blerowtemp{}%
\newrobustcmd{\singletablerow}[3]{%
#1 & #2 & #3
}%
\newrobustcmd{\maketablerows}[2]{%
\setcounter{row@@counter}{0}%
\forloop{row@@counter}{0}{\number\value{row@@counter} < #1}{%
\setcounter{inner@@counter}{\number\value{row@@counter}}%
\stepcounter{inner@@counter}%
\ifnumequal{\number\value{inner@@counter}}{#1}{%
#2%
}{%
#2 \tabularnewline%
%\hline
}%
}%
}%
\begin{tabular}{lll}
%\hline%
\maketablerows{10}{\singletablerow{11}{12}{13}}%
\tabularnewline%
%\hline%
\end{tabular}
\makeatother
\end{document}