blefloch / latex-unravel

Watching TeX digest tokens
24 stars 1 forks source link

With an \else part, false \if-test still shows "skipped to \fi" in action part #35

Closed muzimuzhi closed 4 years ago

muzimuzhi commented 5 years ago

A false \if-test will skip to \fi if there is no \else before \fi, and to \else if there is such \else. But currently the action part shows skipped to \fi in both occasions.

An example:

\documentclass{article}
\usepackage{unravel}
\begin{document}
\leavevmode
\unravel{%
  \ifx\relax\relax T\else F\fi
  \ifx\abc\relax T\else F\fi
}
\end{document}

Terminal output

|| 
|> \ifx \relax \relax T\else F\fi \ifx \abc \relax T\else F\fi 

[===== Step 1 =====] \ifx = \ifx
|| \ifx 
|> \relax \relax T\else F\fi \ifx \abc \relax T\else F\fi 

[===== Step 2 =====] Compare: \ifx \relax \relax =true
|| 
|> T\else F\fi \ifx \abc \relax T\else F\fi 

[===== Step 3 =====] T
<| T
|| 
|> \else F\fi \ifx \abc \relax T\else F\fi 

[===== Step 4 =====] \else = \else => skipped to \fi 
<| T
|| 
|> \ifx \abc \relax T\else F\fi 

[===== Step 5 =====] \ifx = \ifx
<| T
|| \ifx 
|> \abc \relax T\else F\fi 

[===== Step 6 =====] Compare: \ifx \abc \relax =false => skipped to \fi
<| T
|| 
|> F\fi 

[===== Step 7 =====] F
<| TF
|| 
|> \fi 

[===== Step 8 =====] \fi = \fi
<| TF
|| 
|> 

[===== End =====]

In step 6, the action part says

[===== Step 6 =====] Compare: \ifx \abc \relax =false => skipped to \fi

It's better to say skipped to \else rather than \fi.

muzimuzhi commented 4 years ago

Thanks.