¿Por qué tikz se queja cuando uso \NewDocumentEnvironment?

¿Por qué tikz se queja cuando uso \NewDocumentEnvironment?

Este es el código:

\documentclass{article}
\usepackage{tikz}
\NewDocumentEnvironment{foo}{b}{hello}{}
\AddToHook{env/foo/before}{\obeylines\obeyspaces}
\begin{document}
\begin{tikzpicture}
\node (v) {hi};
\end{tikzpicture}
\begin{foo}
first
second
\end{foo}
\begin{tikzpicture}
\node (v) {hi};
\end{tikzpicture}
\end{document}

Recibo este mensaje extraño:

! Package tikz Error: A node must have a (possibly empty) label text.

See the tikz package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.14 \node
           (v) {hi};

¿Qué ocurre?

Respuesta1

Como se notópor el comentario de @David Carlisle, la confusión de tu código catcode persistirá después de \end{foo}... texdoc lthooksdice

ingrese la descripción de la imagen aquí

Entonces probablemente quieras usar beginel gancho:

\documentclass{article}
\usepackage{tikz}
\NewDocumentEnvironment{foo}{b}{hello}{}
\AddToHook{env/foo/begin}{\obeylines\obeyspaces}
\begin{document}
\begin{tikzpicture}
\node (v) {hi};
\end{tikzpicture}
\begin{foo}
first
second
\end{foo}
\begin{tikzpicture}
\node (v) {hi};
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada