下面的语法有什么问题\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}
生产