在问题中使用 xifthen:如何设置 \cnttest 不等于数字,我学会了如何执行 if-then-else 测试,其中条件比较两个整数。现在,我想做同样的事情,但使用字符串比较而不是整数比较。例如,我想测试存储在宏中的值,其中\No
值可以是X
、Y
、Z
等。
我的最小代码:
\RequirePackage{filecontents}
\begin{filecontents*}{test.csv}
Acol, Bcol, NoCol
A0,0000,0
Ax,Bx,1
Ay,By,2
A1,B22,3
A2,B44,4
A3,29,5
A3,29,99
A3,449,100
AX,500,X
AY,500,Y
AZ,600,Z
\end{filecontents*}
\documentclass{article}
\usepackage[a5paper,landscape]{geometry}
\usepackage{ifthen}
\usepackage{datatool}
\DTLloaddb{mydata}{test.csv}
\newcommand{\inserpageX}{%
\subsubsection*{Page X}
\newpage
}
\newcommand{\inserpageY}{%
\subsubsection*{Page Y}
\newpage
}
\newcommand{\inserpageZ}{%
\subsubsection*{Page Z}
\newpage
}
\begin{document}
\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
\ifthenelse{\No=0}% X
{\newpage
\inserpageX}%
{
\ifthenelse{\No=1}% Y
{\newpage \inserpageY}%
{
\ifthenelse{\No=100}% Z
{\newpage \inserpageZ}%
{
{\No \hspace{1cm}\B \hspace{5cm}\A\par}
}
}
}
}
\end{document}
如何区分 示例文件中出现的三种情况\No
= X、\No
= Y 和= Z ?\No
test.csv
提前致谢。
答案1
所以,现在你正在使用如果那么包。这与西弗森我在我的之前关于该主题的回答,并且还 egreg 在您链接到的问题。注意不要混淆ifthen
和xifthen
包。
使用ifthen
,您可以使用测试进行字符串比较\equal{string1}{string2}
,如下面的修改示例所示。相同的语法xifthen
也适用于,但如果不先查看这些软件包的手册或代码,就无法确定。
不要忘记行尾括号(或)后面%
的符号,除非您确实想在输出中添加空格。我没有在 之前的右括号后面放置一个,因为这个右括号()位于段落的最末尾,而段落末尾的空格会被忽略。但如果您不确定,也可以在那里附加一个,这不会造成任何损害。如果不确定,请用 结束行,除非您确实想插入空格。{
}
\end{document}
}
%
%
以下是包含字符串相等性测试的代码。如果用 替换 ,它也会\usepackage{ifthen}
起作用\usepackage{xifthen}
。
\RequirePackage{filecontents}
\begin{filecontents*}{test.csv}
Acol, Bcol, NoCol
A0,0000,0
Ax,Bx,1
Ay,By,2
A1,B22,3
A2,B44,4
A3,29,5
A3,29,99
A3,449,100
AX,500,X
AY,500,Y
AZ,600,Z
\end{filecontents*}
\documentclass{article}
\usepackage{ifthen}
\usepackage{datatool}
\DTLloaddb{mydata}{test.csv}
\newcommand{\inserpageX}{%
\subsubsection*{Page X}
\newpage
}
\newcommand{\inserpageY}{%
\subsubsection*{Page Y}
\newpage
}
\newcommand{\inserpageZ}{%
\subsubsection*{Page Z}
\newpage
}
\begin{document}
\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
\ifthenelse{\equal{\No}{X}}%
{\newpage \inserpageX}%
{%
\ifthenelse{\equal{\No}{Y}}%
{\newpage \inserpageY}%
{%
\ifthenelse{\equal{\No}{Z}}%
{\newpage \inserpageZ}%
{\No \hspace{1cm}\B \hspace{5cm}\A\par}%
}%
}%
}
\end{document}