使用多个 ifthenelse equal 文本

使用多个 ifthenelse equal 文本

在问题中使用 xifthen:如何设置 \cnttest 不等于数字,我学会了如何执行 if-then-else 测试,其中条件比较两个整数。现在,我想做同样的事情,但使用字符串比较而不是整数比较。例如,我想测试存储在宏中的值,其中\No值可以是XYZ等。

我的最小代码:

\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 ?\Notest.csv

提前致谢。

答案1

所以,现在你正在使用如果那么包。这与西弗森我在我的之前关于该主题的回答,并且还 egreg 在您链接到的问题。注意不要混淆ifthenxifthen包。

使用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}

截屏

相关内容