我想将数据转换\g
为大写字母,然后我想使用该数据进行比较命令,例如\IfStrEq{\g}{F}{}{}
因为其中\g
可能包含f
或F
;如果它包含f
则将其转换为大写字母,\MakeUppercase
命令在里面不起作用\IfStrEq
。这是我的 MWE:
\documentclass[10.0pt,legalpaper,landscape]{article}
\usepackage[top=0.5cm,bottom=1.4cm,left=2cm,right=0.1cm]{geometry}
\usepackage[table]{xcolor}
\usepackage[all]{tcolorbox}
\usepackage{filecontents}
\usepackage[english]{babel}
\usepackage{graphicx,booktabs,xstring,datatool,xintexpr,longtable,minted} %for including eps graphics
\usepackage{multirow,colortbl}
\usepackage{ifthen}
\newboolean{long}
\renewcommand{\dtldisplaystarttab}{\toprule}
\renewcommand{\dtldisplayafterhead}{\midrule}
\renewcommand{\dtldisplayendtab}{\\\bottomrule}
\begin{filecontents*}{test.csv}
Name,Gender,Blood Group
Mr. A,f,A+
Mr B,m,AB-
Mr. C,f,O+
Mr D,M,AB-
Mr. E,F,O+
Mr. F,F,O+
Mr. G,F,O+
\end{filecontents*}
\newcounter{Female}
\newcounter{Male}
\newcounter{Total}
\DTLloaddb{name}{test.csv}
\begin{document}
\begin{longtable}{|c|l|c|c|}
\hline
Sl. No. & Name & Gender & Blood Group
\DTLforeach*{name}{\name=Name,\b=Blood Group,\g=Gender}{%
\IfStrEq{\MakeUppercase{\g}}{F}{\stepcounter{Female}\\\hline \theFemale & \name & \b & \g }{}
}\\\hline
&&\MakeUppercase{latex}&
\end{longtable}
\centering
\MakeUppercase{latex}
\end{document}
答案1
测试性别是否是的子字符串f,F
:
\documentclass{article}
\usepackage{filecontents}
\usepackage{xstring,datatool}
\begin{filecontents*}{test.csv}
Name,Gender,Blood Group
Mr. A,f,A+
Mr B,m,AB-
Mr. C,f,O+
Mr D,M,AB-
Mr. E,F,O+
Mr. F,F,O+
Mr. G,F,O+
\end{filecontents*}
\newcounter{Female}
\DTLloaddb{name}{test.csv}
\begin{document}
\begin{tabular}{|c|l|c|c|}
\hline
Sl. No. & Name & Gender & Blood Group
\DTLforeach*{name}{\name=Name,\b=Blood Group,\g=Gender}{%
\IfSubStr{f,F}{\g}{\stepcounter{Female}%
\\
\hline \theFemale & \name & \b & \g }{}
}\\
\hline
\end{tabular}
\end{document}
\MakeUppercase{\g}
在比较中不可展开,这意味着它\g
直到很晚才会变成大写等价物。由于您正在处理一组非常具体的可能性,\IfSubStr
因此可以使用其他字符分隔选项。