![使用 csvsimple 进行字符串测试时出现编译错误](https://linux22.com/image/396129/%E4%BD%BF%E7%94%A8%20csvsimple%20%E8%BF%9B%E8%A1%8C%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B5%8B%E8%AF%95%E6%97%B6%E5%87%BA%E7%8E%B0%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF.png)
考虑这个最小的工作示例:
\documentclass{beamer}
\usepackage{csvsimple,filecontents}
\begin{document}
\begin{filecontents*}{data.csv}
id,type
1,a
2,b
\end{filecontents*}
\begin{frame}
\csvreader{data.csv}{1=\id,2=\type}{
\ifcsvstrcmp{\type}{a}{
%do something
}{
%do something else
}
}
\end{frame}
\end{document}
\ifcsvstrcmp{}{}{}{}
除非注释掉,否则上述代码无法编译。
错误信息如下:
pdflatex> ! 未定义的控制序列。pdflatex
> \csv@@body -> \ifcsvstrcmp
pdflatex> --------------------------------------{\type }{a}{}{}
pdflatex> l.14 }
感谢任何有关我可能做错的事情的提示......
谢谢!
答案1
调试可能很困难。通常,问题不是错误,而是用户误解了宏的语法或限制。通常,这只是输入中的简单拼写错误、宏名称拼写错误或括号不匹配。正如 KJO 所指出的,一个真正令人讨厌的问题是非打印字符溜进您的输入中。找到并消除这些字符可能令人抓狂。
当所有这些方法都失败时,另一个可以检查的方法是检查你的包是否过期或彼此不匹配。这是我通过评论向原帖提出的建议。
更新所有软件包后,问题消失,因此确认过时的软件包是问题的根源。