如何在 \rlap 中设置变量

如何在 \rlap 中设置变量

关于此代码示例,请问两个问题:

1) 为什么\rlap阻止我设置变量?
2) 如何从 内部设置一个\rlap在 外部可见的变量\rlap

我正在使用 MikTex 2.8。谢谢您的任何提示!

\documentclass{article}
\newif\ifmycheck
\begin{document}
\rlap{\mychecktrue}
% \mychecktrue
\ifmycheck
Check True!
\else
Check False!  % always takes this path!
\fi
\end{document}

答案1

  1. 组内的更改保留在该组内,并将\rlap其参数放在 内\hbox,因此位于其自己的组内。因此,如果您这样做:

    \rlap{\mychecktrue % group is still open!
    % \mychecktrue
    \ifmycheck
    Check True!
    \else
    Check False!  
    \fi}
    

    你会得到

    檢查真實!

    因此您会看到您确实在里面设置了变量\rlap

  2. 您希望更改在组外持续存在。因此请使用前缀\global

    \rlap{\global\mychecktrue}
    % \mychecktrue
    \ifmycheck
    Check True!
    \else
    Check False!  
    \fi
    

    这将再次导致“检查正确!”

答案2

为了补充马修的回答,除了全局设置变量之外,还有一个解决方案,那就是使用 aftergroup 来延迟分配,直到组(由 生成\hbox)完成后。您的示例变为

\documentclass{article}
\newif\ifmycheck
\begin{document}
\rlap{\aftergroup\mychecktrue}
\ifmycheck
Check True!
\else
Check False!  
\fi
\end{document}

现在排版Check True!

相关内容