嵌套 if .. else

嵌套 if .. else

下面的语法有什么问题\if...\else \if...\else...\fi

我的意图是,如果其中一个OptA为真,则\which定义为Chose A,或者如果为OptB真,则\which定义为Chose B,或者如果两个都不为真,则\which定义为Chose other

但尽管设置OptA了值true,我仍然发现\which产生了Chose other

  \documentclass{article}
  
  \usepackage{ifthen}
  \newboolean{OptA}
  \newboolean{OptB}

  \setboolean{OptA}{true}
        
  \ifOptA
    \newcommand\which{Chose A} 
  \else
    \ifOptB
        \newcommand\which{Chose B}
  \else
    \newcommand\which{Chose other}
  \fi
     
  \begin{document}
  \which
  \end{document}

答案1

该文件发出警告

(\end occurred when \iffalse on line 7 was incomplete)

因为外部\ifOpA永远不会关闭。

\newcommand\which}

如果执行,将产生错误,因为虚假}

修复这两个问题会产生

\documentclass{article}
  
  \usepackage{ifthen}
  \newboolean{OptA}
  \newboolean{OptB}
  
  \ifOptA
    \newcommand\which{Chose A} 
  \else
    \ifOptB
        \newcommand\which{Chose B}
    \else
        \newcommand\which{Chose other}
    \fi
  \fi
  
  \setboolean{OptA}{true}
  
  \begin{document}
  \which
  \end{document}

在此处输入图片描述

optA如果你在测试之后设置,那么的设置显然没有任何效果,因此将设置移到更早的地方:

 \documentclass{article}
  
  \usepackage{ifthen}
  \newboolean{OptA}
  \newboolean{OptB}
  
  \setboolean{OptA}{true}

  \ifOptA
    \newcommand\which{Chose A} 
  \else
    \ifOptB
        \newcommand\which{Chose B}
    \else
        \newcommand\which{Chose other}
    \fi
  \fi
  
 
  
  \begin{document}
  \which
  \end{document}

生产

在此处输入图片描述

相关内容