Почему tikz жалуется, когда я использую \NewDocumentEnvironment?

Почему tikz жалуется, когда я использую \NewDocumentEnvironment?

Вот код:

\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}

Я получаю это странное сообщение:

! 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};

В чем дело?

решение1

Как было замеченопо комментарию @David Carlisle, ваш кошачий код будет путаться и после \end{foo}... texdoc lthooksговорит

введите описание изображения здесь

Поэтому вы, вероятно, захотите использовать beginхук:

\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}

введите описание изображения здесь

Связанный контент