## 编译环境
操作系统
* [x] Windows 10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive `2020`...
## 编译环境
操作系统
* [x] Windows 10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive `2020`
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
需求是这样的,前面使用 csv 排版很多试题(50道选择题+判断题),然后在最后一页用一个表格输出答案。一开始想着在前面拼接一个命令,比如 `\ansfornow`,每遇到一个答案就把它拼进去,但是因为表格中存在 & 和换行符,会报错,所以又想用一个数组或者列表之类的东西把它存起来,后面在表格中用一个循环,从数组中读取答案,把它们放进表格当中,但是这里不太会,也没搜到什么。
后来找到一个办法,用 `csname` 创建很多的命令,代码如下:
```
\newcommand{\saveToAns}[2]{\expandafter\newcommand\expandafter{\csname theAnswer-#1\endcsname}{#2}}
\newcommand{\useAnAns}[1]{\csname theAnswer-#1\endcsname}
```
但是在使用 `multido` 做循环的时候,发现输出不了:
```
\documentclass{ctexart}
\usepackage{multido}
\newcommand{\saveToAns}[2]{\expandafter\newcommand\csname theAnswer-#1\endcsname{#2}}
\newcommand{\useAnAns}[1]{\csname theAnswer-#1\endcsname}
\begin{document}
\multido{\i=1+1,\n=1+3}{5}{\saveToAns{\i}{s}}
\multido{}{10}{\TeX\ }
123
\multido{\i=1+1}{5}{\useAnAns{\i}}
\saveToAns{99}{a}
\useAnAns{99}
\useAnAns{1}
\end{document}
```
![](https://wenda.latexstudio.net/data/attach/210125/jxduRASw.png)
直接使用明文写 `\saveToAns{99}{a}` 和 `\useAnAns{99}` 是可以输出的,但是用 `\multido` 的都输出不了,麻烦帮我看看是什么问题导致的,或者有更好的实现方式吗?
一周热门 更多>