newcommand 的 if 条件问题

newcommand 的 if 条件问题

大家好,我写了一段简单的代码,创建了一些简单的变量和一些 If 条件。但是输出结果并不理想。

以下是代码:

\documentclass[a4paper,11pt,english]{report}

\usepackage{longtable}
 \usepackage{multirow}
 \usepackage{graphicx}
 \usepackage[table,xcdraw]{xcolor}

\begin{document}

%\newcommand{\ReqOpenIssues}{}

\newcommand{\NoOpenIssues}{}

\newcommand{\OpenIssues}[1]{\ifdefined\#1OpenIssues REQ \else \ifdefined\NoOpenIssues NA \fi \fi 
}

\OpenIssues{Req}

\end{document}

期望的输出是 NA 但这是输出:

在此处输入图片描述

有什么帮助吗?

答案1

如果您希望使用加上一些附加文本来构建宏名称#1,则需要使用\ifcsname

\documentclass[a4paper,11pt,english]{report}

\usepackage{longtable}
 \usepackage{multirow}
 \usepackage{graphicx}
 \usepackage[table,xcdraw]{xcolor}

\begin{document}


\newcommand{\NoOpenIssues}{}

\newcommand{\OpenIssues}[1]{\ifcsname#1OpenIssues\endcsname
   REQ \else \ifdefined\NoOpenIssues NA \fi \fi 
}

\OpenIssues{Req}

\newcommand{\ReqOpenIssues}{}

\OpenIssues{Req}

\end{document}

在此处输入图片描述

也可以看看在 \csname 宏上使用 \ifdefined

相关内容