una facciata sola

  • Questo topic ha 12 risposte, 6 partecipanti ed è stato aggiornato l'ultima volta 18 anni, 6 mesi fa da DMW.
  • Creatore
    Topic
  • #22204
    Up
    0
    Down
    ::


    ciao ragazzi, come fare per scrvere un documento con una facciata sola e quindi senza alcun numero di pagina? devo usare qualche classe particolare? o c’è un comando apposito?

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


      Basta che scrivi:
      `
      \makeatletter
      \let\ps@plain\ps@empty
      \ps@empty
      \makeatother
      `

      Funziona sia che il documento sia con una pagina che con più pagine in quanto elimina la numerazione.

      Ciao Alberto

    • #22206
      Up
      0
      Down
      ::

      ciao ragazzi, come fare per scrvere un documento con una facciata sola e quindi senza alcun numero di pagina? devo usare qualche classe particolare? o c’è un comando apposito?

      Classe article
      `\pagestyle{empty}
      \thispagestyle{empty}`
      Se non usi \maketitle basta il primo (classe article), altrimenti dà il secondo dopo \maketitle

      Ciao
      Enrico

    • #22207
      Up
      0
      Down
      ::


      funziona! grazie.

      p. 8)

    • #22208
      Up
      0
      Down
      ::

      Basta che scrivi:
      `\makeatletter
      \let\ps@plain\ps@empty
      \ps@empty
      \makeatother`
      Funziona sia che il documento sia con una pagina che con più pagine in quanto elimina la numerazione.

      Per eliminare le zanzare da casa dai fuoco all’edificio? 🙂 È leggermente più semplice usare l’interfaccia utente con \pagestyle o \thispagestyle, non trovi? 😉

      La tua stessa costruzione si può fare senza \makeatletter:
      `
      \expandafter\let\csname ps@plain\expandafter\endcsname\csname ps@empty\expandafter\endcsname\csname ps@empty\endcsname`
      Esercizio: perché funziona?

      Ciao
      Enrico

    • #22209
      Up
      0
      Down
      ::

      `
      \expandafter\let\csname ps@plain\expandafter\endcsname\csname ps@empty\expandafter\endcsname\csname ps@empty\endcsname`
      Esercizio: perché funziona?

      …facile… funziona perché l’hai scritto tu!
      😉

      LuCa

    • #22210
      Up
      0
      Down
      ::

      Per eliminare le zanzare da casa dai fuoco all’edificio?

      Penso proprio di no.:wink:

      Mi dispiace ma non so proprio rispondere al tuo esercizio, e a dirla tutta non saprei proprio da che parte iniziare per rispondere. 🙁
      Avevo visto la soluzione che ho riportato mi pare da qualche parte sul forum e ho provato a dare una indicazione a pepox in modo che risolvesse il problema, d’ora in avanti terrò a mente la tua indicazione e la prossima volta, se qualcuno lo richiedesse, cercherò di indicare la tua strada.

      Ciao Alberto

    • #22211
      DMW
        Up
        0
        Down
        ::


        \csname come \string e come \the interpreta ciò che segue come caratteri di categoria 12.
        Però non so perché non dà errore. Normalmente @ è di categoria 12 e dà errore!!!

        Infatti
        `\showthe\catcode`@`
        dà 12.
        Bo!!

        Ciao

        Andrea

      • #22212
        Up
        0
        Down
        ::

        \csname come \string e come \the interpreta ciò che segue come caratteri di categoria 12.
        Però non so perché non dà errore. Normalmente @ è di categoria 12 e dà errore!!!

        Infatti
        `\showthe\catcode`@`
        dà 12.
        Bo!!

        Ciò che sta fra \csname e \endcsname viene espanso completamente; il risultato devono essere tutti token di tipo carattere, non importa quale codice di categoria abbiano (ma i caratteri commento, ignorati o non validi non contano perché vengono intercettati prima che avvenga l’espansione). Perciò
        `\csname ps@empty\endcsname`
        equivale a
        `\makeatletter
        \ps@empty
        \makeatother`
        Il fatto che ciò che sta fra \csname e \endcsname venga espanso completamente può essere usato per espandere quegli \expandafter che a loro volta espandono il \csname successivo; il risultato è come scrivere
        `\let\ps@plain\ps@empty\ps@empty`
        ma senza bisogno di cambiare il codice di categoria di @.

        Il trucco dell’espansione è usato per le liste numerate annidate che usano i contatori enumi, enumii, enumiii ed enumiv; se si vuole accedere al contatore usato senza dover sapere a che livello si è si può dire
        `\csname c@enum\romannumeral\the\@enumdepth\endcsname`
        dove \@enumdepth è un contatore (di quelli di tipo Plain) che l’inizio di ogni enumerate incrementa di uno; \csname causa l’espansione di \romannumeral che causa quella di \the e il risultato è i, ii, iii oppure iv a seconda del livello, ottenendo appunto una delle sequenze di controllo
        `\c@enumi \c@enumii \c@enumii \c@enumiii \c@enumiv`
        che sono i nomi dei contatori usati dall’ambiente.

        Ciao
        Enrico

      • #22213
        DMW
          Up
          0
          Down
          ::


          Scusa,

          forse risulterò patetico o tardone, ma non ho capito se l’espansione tra \csname e \endcsname la fa \csname stesso o \expandafter che sta prima di \let o \endcsname.

          In quetso caso Il comando “espandi dopo” (presente prima di \endcsname precedente) espande ps@empty o, come credo io, tutto l’insieme
          `
          \csname ps@empty\endcsname`
          ?

          Ciao

          Andrea

        • #22214
          Up
          0
          Down
          ::

          Scusa,

          forse risulterò patetico o tardone, ma non ho capito se l’espansione tra \csname e \endcsname la fa \csname stesso o \expandafter che sta prima di \let o \endcsname.

          In quetso caso Il comando “espandi dopo” (presente prima di \endcsname precedente) espande ps@empty o, come credo io, tutto l’insieme
          `
          \csname ps@empty\endcsname`
          ?

          Non è roba facile, lo so.

          \csname \endcsname espande completamente la lista all’interno. È \csname che provoca l’espansione, la lista finisce quando si incontra il comando \endcsname corrispondente (non è vietato avere \csname annidati).

          Adesso vediamo che cosa succede con
          `\csname pippo\expandafter\endcsname\csname pluto\endcsname`
          Il primo \csname provoca l’espansione della lista, come detto; quando si arriva a \expandafter questo espande il token successivo al seguente, in questo caso \csname. Ma \expandafter non provoca espansione completa, solo al primo livello; quindi a questo punto la lista che si ha è equivalente a
          `\pippo\pluto`
          e TeX riparte espandendo \pippo.

          Un esempio più complicato:
          `\def\aaa{xyz}
          \csname pippo\aaa\expandafter\endcsname\csname\aaa\endcsname`
          Espansione della prima lista: pippo\aaa\expandafter -> pippoxyx + espansione del csname seguente in \xyz

          TeX esegue l’espansione completa quando incontra \edef e \csname; in altri casi esegue solo l’espansione di primo livello
          `\def\aaa{xy\z}
          \def\z{pippo}
          \edef\prova{\aaa p}`
          La macro \prova ha come testo di sostituzione xypippop, perché l’espansione è completa.
          `\def\aaa{xy\z}
          \def\z{pippo}
          \expandafter\def\expandafter\prova\expandafter{\aaa p}`
          Adesso \prova ha come testo di sostituzione xy\z p, perché \expandafter esegue solo l’espansione di primo livello \aaa -> xy\z (i tre \expandafter servono per arrivare proprio a \aaa).

          Ciao
          Enrico

        • #22215
          Up
          0
          Down
          ::


          E bravo Enrico,
          questi esercizi di TeX dovremmo raccoglierli da qualche parte e creare una sorta di manuale di TeX per esempi.
          Ciao
          Michele

        • #22216
          DMW
            Up
            0
            Down
            ::

            Scusa,

            forse risulterò patetico o tardone, ma non ho capito se l’espansione tra \csname e \endcsname la fa \csname stesso o \expandafter che sta prima di \let o \endcsname.

            In quetso caso Il comando “espandi dopo” (presente prima di \endcsname precedente) espande ps@empty o, come credo io, tutto l’insieme
            `
            \csname ps@empty\endcsname`
            ?

            Non è roba facile, lo so.

            \csname \endcsname espande completamente la lista all’interno. È \csname che provoca l’espansione, la lista finisce quando si incontra il comando \endcsname corrispondente (non è vietato avere \csname annidati).

            Ciao
            Enrico

            Ora sì che sei stato chiaro. Sapevo che TeX esegue l’espansione completa quando incontra \edef o \xdef ma non sapevo che lo facesse anche con \csname.

            Grazie mille,

            Andrea

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

        Go to top