plain: apertura e chiusura implicita di un registro token.

  • Creatore
    Topic
  • #83313
    Up
    0
    Down
    ::


    Salve a tutti.

    Desidero scrivere i comandi di un ambiente che raccoglie tokens e che li salva in un apposito registro.

    Alcuni dei miei ultimi esperimenti sono
    `
    \newtoks\toka

    \edef\opentok#1{\noexpand#1=\bgroup} % dovrebbe aprire il registro token
    \edef\closetok{\iffalse{\else}\fi} % dovrebbe chiudere il registro token

    \opentok\toka
    Una lista di tokens che finisce con una i
    \closetok

    \the\toka
    \bye
    % Il file di log dice:
    % ! Too many }'s.
    % l.13 \edef\closetok{\iffalse{\else}\fi}
    `
    ci riprovo
    `
    \newtoks\toka

    \edef\opentok#1{\noexpand#1=\iftrue{\else}\fi} % invece di usare \bgroup
    \edef\closetok{\iffalse{\else}\fi}

    \opentok\toka
    Una lista di tokens che finisce con una i
    \closetok

    \the\toka
    \bye
    % ! Undefined control sequence.
    % l.13 \edef\closetok
    % {\iffalse{\else}\fi}
    `

    L’ultimo messaggio di errore è davvero criptico e non riesco ad andare avanti.

    Esiste un modo per riuscirci?

    Grazie, ciao.

Visualizzazione 0 filoni di risposte
  • Autore
    Risposte
    • #83314
      Up
      0
      Down
      ::

      Sam Qasbah” post=82658Salve a tutti.

      Desidero scrivere i comandi di un ambiente che raccoglie tokens e che li salva in un apposito registro.

      Alcuni dei miei ultimi esperimenti sono
      `
      \newtoks\toka

      \edef\opentok#1{\noexpand#1=\bgroup} % dovrebbe aprire il registro token
      \edef\closetok{\iffalse{\else}\fi} % dovrebbe chiudere il registro token

      \opentok\toka
      Una lista di tokens che finisce con una i
      \closetok

      \the\toka
      \bye
      % Il file di log dice:
      % ! Too many }'s.
      % l.13 \edef\closetok{\iffalse{\else}\fi}
      `
      ci riprovo
      `
      \newtoks\toka

      \edef\opentok#1{\noexpand#1=\iftrue{\else}\fi} % invece di usare \bgroup
      \edef\closetok{\iffalse{\else}\fi}

      \opentok\toka
      Una lista di tokens che finisce con una i
      \closetok

      \the\toka
      \bye
      % ! Undefined control sequence.
      % l.13 \edef\closetok
      % {\iffalse{\else}\fi}
      `

      L’ultimo messaggio di errore è davvero criptico e non riesco ad andare avanti.

      Esiste un modo per riuscirci?

      No. Le liste di token passate a [tt]\toks[/tt], [tt]\uppercase[/tt], [tt]\lowercase[/tt] e qualche altro comando primitivo possono cominciare con una graffa implicita, ma devono terminare con una esplicita. Siccome TeX non espande in quelle situazioni, anche [tt]\iffalse{\else}\fi[/tt] non può funzionare.

      Nota che
      `\edef\opentok#1{\noexpand#1=\bgroup} % dovrebbe aprire il registro token`
      è del tutto equivalente a
      `\def\opentok#1{#1=\bgroup} % dovrebbe aprire il registro token`
      e effettivamente apre la lettura della lista di token. Ma non puoi finirla che con [tt]}[/tt].

      Invece
      `\edef\closetok{\iffalse{\else}\fi} % dovrebbe chiudere il registro token`
      è illegale, nel senso che l’espansione di [tt]\iffalse[/tt] produce la graffa che corrisponde a quella aperta e ne rimane una chiusa di troppo.

      Ciao
      Enrico

Visualizzazione 0 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top