\newif?是plain TeX(LaTeX2ε中依然支持)中創建邏輯變量,變量(variable)、控制序列(control sequence)、命令(command)、宏(macro)在TeX中基本是同義詞的方法,語法很簡單:

\newif\ifboolcondition
簡單的語法卻有不簡單的含義!簡單的說,這同時創建了三個命令: \ifboolcondition 創建邏輯變量ifboolcondition(只有true/false兩種狀態),并根據相應的狀態執行相應的代碼,需要配合\fi一起使用,即一旦通過\newif創建了邏輯變量ifboolcondition,在實際使用時一般的形式為:
\ifboolcondition

…%ifboolcondition為true時的輸出

\else

…%ifboolcondition為false時的輸出

\fi
\boolconditiontrue\ifboolcondition?設置為true。注意,這個命令不包含if! \boolconditionfalse\ifboolcondition?設置為false。注意,這個命令不包含if! 默認的,\newif\ifboolcondition?命令創建一個false狀態的邏輯變量\ifboolcondition?,即\new\ifboolcondition?等價于:\new\ifboolcondition \boolconditionfalse?。 有了\newif創建邏輯變量,關于分支的處理就方便多了:在合適的時候使用\xxxtrue或者\xxxfalse設置\xxx邏輯變量的狀態,通過監測\xxx的狀態決定輸出的文本即可。

舉例

\newif\ifstudent

\def\printstudent{\ifstudent here is a student. \else here is not a student.\fi}

\studenttrue\printstudent

\studentfalse\printstudent
輸出結果為: here is a student. here is not a student.

勿濫用newif

TeX提供了大量的\if開頭的條件判斷命令,比如\if?、\ifx?、\ifodd?、\ifnum?、\ifdim?、\ifvmode?、\ifhmode?、\ifmmode?、\ifinner?等等,顯然應該優先使用這些預定義的條件判斷命令。當以上命令無法表達當前的邏輯關系時,才考慮使用\newif自定義邏輯變量。 選自:http://softlab.sdut.edu.cn/blog/subaochen/2017/08/newif%E7%9A%84%E7%94%A8%E6%B3%95/