¿Manejando un newif definido condicionalmente, anidado en un condicional ifx?

¿Manejando un newif definido condicionalmente, anidado en un condicional ifx?

Considere este MWE:

\documentclass[11pt]{book}

\def\entrytest{WORD}
\def\entrycurrent{NOWORD}
% \def\entrycurrent{WORD}

\ifx\entrytest\entrycurrent
  \newif\ifsomething
  \somethingfalse
\fi

\ifx\entrytest\entrycurrent
  \ifsomething\typeout{Yes}\else\typeout{No}\fi
\fi

\begin{document}
\end{document}

En el caso actual, hubiera esperado que \ifsomething\typeout...hubiera estado "protegido" por el \ifxque lo envuelve; pero algo no está bien, porque el código se detiene con:

...
No
! Extra \fi.
l.15 \fi

? 

Por supuesto, si es \def\entrycurrent{WORD}así, todos los \ifxmensajes de correo electrónico se ejecutan en la rama "verdadera", entonces todo funciona como se esperaba.

Entonces, ¿cómo debo manejar los usos de \newifs que pueden haber sido definidos condicionalmente?

Respuesta1

En el segundo \ifx\entrytest\entrycurrent, \ifsomethingno está definido, por lo que elprimero \fipartidos \ifxy el segundo \fiestá fuera de lugar.

No es el nombre de la macro lo que hace que algo sea condicional; sólo una muestra que esdefinidoy es equivalente a uno de los condicionales primitivos.

lo que \newif\ifsomethinghace es

\let\ifsomething\iffalse
\def\somethingtrue{\let\ifsomething\iftrue}
\def\somethingfalse{\let\ifsomething\iffalse}

Probablemente quieras algo como

\newif\ifsomething
\somethingtrue

\ifx\entrytest\entrycurrent
  \somethingfalse
\fi

\ifx\entrytest\entrycurrent
  \ifsomething\typeout{Yes}\else\typeout{No}\fi
\fi

pero no está claro por qué harías esto para empezar.

información relacionada