Como usar muitos \write para escrever texto em apenas uma linha?

Como usar muitos \write para escrever texto em apenas uma linha?

Eu tenho que usar muitos comandos de gravação para gravar no arquivo temporário da seguinte maneira

\newwrite\tempfile
\immediate\openout\tempfile=tempt.txt
\immediate\write\tempfile{data 1}
\immediate\write\tempfile{data 2}
\immediate\write\tempfile{data 3}
\immediate\write\tempfile{data 4}
\immediate\closeout\tempfile

Saída

dados 1

dados 2

dados 3

dados 4

Como ainda usar várias gravações, mas resulta em apenas uma linha como

dados 1 dados 2 dados 3 dados 4

Eu não quero usar \immediate\write\tempfile{data 1 data 2 data 3 data 4}.

Obrigado.

Responder1

A \writesempre adiciona uma nova linha, mas você sempre pode coletar os tokens e escrevê-los todos juntos.

Por exemplo, este texto simples \mywrite{aaa} e \mywrite{bbb}produz um arquivo comaaabbb

\newwrite\zz
\newtoks\zzz

\def\mywrite#1{\zzz\expandafter{\the\zzz#1}}

\mywrite{aaa}
\mywrite{bbb}




\immediate\openout\zz=\jobname.zz
\immediate\write\zz{\the\zzz}
\immediate\closeout\zz

\bye

informação relacionada