![我如何才能检测到 \centering 是否有效?](https://linux22.com/image/461882/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%A3%80%E6%B5%8B%E5%88%B0%20%5Ccentering%20%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88%EF%BC%9F.png)
我需要检测用户是否在命令前输入了 \centering。目前,我正在使用以下代码检测它:我是否遗漏了极端情况?有没有更好的方法,有人可以帮忙创建一个 skip_compare:nNnTF l3 函数来改进代码吗?
\documentclass{article}
\begin{document}
\centering
%\raggedright
%\raggedleft
\ExplSyntaxOn
\bool_new:N \centering_bool
\skip_if_eq:nnTF{\rightskip+\rightskip}{0pt plus 2.0fil}{\bool_set_true:N\centering_bool}{\bool_set_false:N\centering_bool}
\bool_if:NTF\centering_bool{TRUE}{FALSE}
\ExplSyntaxOff
\end{document}
答案1
我将在 \centering 中设置布尔值:
\documentclass{article}
\ExplSyntaxOn
\bool_new:N \l_yannis_centering_bool
\AddToHook{cmd/centering/before}{\bool_set_true:N\l_yannis_centering_bool}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\bool_if:NTF \l_yannis_centering_bool{centering}{no~centering}\par
{\centering \bool_if:NTF
\l_yannis_centering_bool{centering}{nocentering}\par}
\ExplSyntaxOff
\end{document}