Domande su: Appunti di programmazione in LaTeX e TeX

  • Creatore
    Topic
  • #24389
    Up
    0
    Down
    ::


    Ciao ragazzi, un saluto particolare a Enrico a cui è ovviamente rivolto il topic.

    Vorrei prima fare un’osservazione: a pag. 43 c’è questo pezzo:

    Una specificazione come
    `
    \vspace{2pc plus 3pt minus 6pt}
    `
    significa che si desidera uno spazio di 24pt (due righe di stampa corpo 10) che però può essere aumentato fino a 21pt o ridotto fino a 18pt.

    Ma lo spazio non dovrebbe essere aumentato fino a 27pt?

    Poi alcune domande che mi sono venute e forse possono interessare anche qualcun altro:

    • a pag. 55 parli del pacchetto ifthen ma sostieni (e mi trovi pienamente d’accordo) che l’annidamento delle condizioni diventa complesso data l’obbligatorietà del codice per l’else. Però tutti i condizionali in stile LaTeX sono della forma del pacchetto ifthen.

      Io mi sono trovato nella condizione di dover verificare più di una volta se un argomento opzionale era vuoto o meno, quindi ho pensato di costruirmi un comando per non rifare sempre la stessa tiritera. Il comando va definito il stile LaTeX oppure una definizione come la seguente va bene?
      `\newcommand{\if@empty}[1]{\def\next{#1}\ifx\next\@empty}`
      Questa mi permette (a meno che non ci sia qualche errore che tu vedi e io no) di scrivere:
      `\if@empty{#1} qualcosa \else qualcos'altro \fi`
      con la clausola \else opzionale.

    • A pag. 80 parli di \chardef e dici che il comando \@ne non è espandibile in quanto definito con
      `\chardef\@ne=1`
      La non espandibilità di \@ne è dettata dal fatto che è definita con \chardef? \`E una caratteristica di \chardef quindi? E poi non dovrebbe essere espandibile e la sua espansione dovrebbe essere proprio “1”? C’è qualcosa che non capito probabilmente…

    Queste sono le domande che mi sono venute fin’ora… non dubito che me ne verranno delle altre. Grazie in anticipo per le risposte e per la guida che hai messo a disposizione.

    Ciao ragazzi, Daniele.

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

      Ciao ragazzi, un saluto particolare a Enrico a cui è ovviamente rivolto il topic.

      Vorrei prima fare un’osservazione: a pag. 43 c’è questo pezzo:

      Una specificazione come
      `
      \vspace{2pc plus 3pt minus 6pt}
      `
      significa che si desidera uno spazio di 24pt (due righe di stampa corpo 10) che però può essere aumentato fino a 21pt o ridotto fino a 18pt.

      Ma lo spazio non dovrebbe essere aumentato fino a 27pt?

      Errore di stampa, grazie.

      a pag. 55 parli del pacchetto ifthen ma sostieni (e mi trovi pienamente d’accordo) che l’annidamento delle condizioni diventa complesso data l’obbligatorietà del codice per l’else. Però tutti i condizionali in stile LaTeX sono della forma del pacchetto ifthen.

      Infatti il nucleo di LaTeX usa spessissimo i condizionali primitivi e quelli definiti con \newif.

      Io mi sono trovato nella condizione di dover verificare più di una volta se un argomento opzionale era vuoto o meno, quindi ho pensato di costruirmi un comando per non rifare sempre la stessa tiritera. Il comando va definito il stile LaTeX oppure una definizione come la seguente va bene?
      `\newcommand{\if@empty}[1]{\def\next{#1}\ifx\next\@empty}`
      Questa mi permette (a meno che non ci sia qualche errore che tu vedi e io no) di scrivere:
      `\if@empty{#1} qualcosa \else qualcos'altro \fi`
      con la clausola \else opzionale.

      Puoi farlo, ma \if@empty non può essere annidato dentro altri condizionali:
      `\ifdim\mialunghezza<6pt
      \if@empty{#1}aaa\else bbb\fi
      \else
      ccc
      \fi`
      darebbe un errore nel caso \mialunghezza non fosse minore di 6pt. La via di scampo è definire
      `\newcommand\testfor@empty[1]{TT\fi\def\next{#1}\ifx\next\@empty}`
      usando, al posto di \if@empty, la combinazione
      `\if\testfor@empty{#1}\else\fi`

      A pag. 80 parli di \chardef e dici che il comando \@ne non è espandibile in quanto definito con
      `\chardef\@ne=1`
      La non espandibilità di \@ne è dettata dal fatto che è definita con \chardef? \`E una caratteristica di \chardef quindi? E poi non dovrebbe essere espandibile e la sua espansione dovrebbe essere proprio “1”? C’è qualcosa che non capito probabilmente…

      Ogni comando definito con \chardef, \mathchardef, \countdef, \dimendef, \skipdef, \toksdef, \muskipdef, \font (spero di non averne dimenticati) è non espandibile. I comandi definiti con \chardef o \mathchardef possono essere però “espansi” al loro valore numerico con \number, perché le regole sintattiche di TeX permettono di usarli quando viene richiesto un numero.

      I comandi definiti con \let ereditano invece l’espandibilità dal token dopo l’uguale:
      `\let\NotAnA=A
      \let\@xp=\expandafter`
      Siccome A non è un token espandibile non lo sarà nemmeno \NotAnA; invece \expandafter è espandibile e quindi lo è anche \@xp.

      Ciao
      Enrico

    • #24391
      Up
      0
      Down
      ::


      Grazie della risposta… come sempre molto chiaro. Un’altra piccola segnalazione: a pagina 121 spiegando il fuzionamento di \@removefromreset arrivi ad un punto dove dici:

      In definitiva è come se avessimo dato`\gdef\cl@chapter{%
      \@elt{section}\@elt{equation}\@elt{table}\@elt{footnote}}`

      Ma dato che l’esempio era su footnote non dovrebbe essere `\gdef\cl@chapter{%
      \@elt{section}\@elt{equation}\@elt{figure}\@elt{table}}` proprio perché l’espansione di \@elt{footnote} è vuota?

    • #24392
      Up
      0
      Down
      ::

      Grazie della risposta… come sempre molto chiaro. Un’altra piccola segnalazione: a pagina 121 spiegando il fuzionamento di \@removefromreset arrivi ad un punto dove dici:

      In definitiva è come se avessimo dato`\gdef\cl@chapter{%
      \@elt{section}\@elt{equation}\@elt{table}\@elt{footnote}}`

      Ma dato che l’esempio era su footnote non dovrebbe essere `\gdef\cl@chapter{%
      \@elt{section}\@elt{equation}\@elt{figure}\@elt{table}}` proprio perché l’espansione di \@elt{footnote} è vuota?

      Esattamente. Ora correggo, grazie.

      Ciao
      Enrico

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

Go to top