[Risolto] legare quote al testo precedente

  • Creatore
    Topic
  • #56109
    Up
    0
    Down
    ::


    Ciao a tutti.
    Vorrei sottoporvi un problema. Ho scritto una cosa del tipo:
    `bla bla bla. Tale postulato enuncia:
    \begin{quote}
    bla bla bla
    \end{quote}`
    Secondo voi il fatto che quote vada in una nuova pagina dopo i due punti non sta male? Personalmente, ma non so se è giusto, preferirei che il comportamento di quote sia tipo quello degli elenchi, nel qual caso nell’andare in una nuova pagina “si trascinano dietro” un paio di righe del paragrafo precedente.

    Che ne dite?

    Ciao,
    Daniele

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

      Ciao a tutti.
      Vorrei sottoporvi un problema. Ho scritto una cosa del tipo:
      `bla bla bla. Tale postulato enuncia:
      \begin{quote}
      bla bla bla
      \end{quote}`
      Secondo voi il fatto che quote vada in una nuova pagina dopo i due punti non sta male? Personalmente, ma non so se è giusto, preferirei che il comportamento di quote sia tipo quello degli elenchi, nel qual caso nell’andare in una nuova pagina “si trascinano dietro” un paio di righe del paragrafo precedente.

      Che ne dite?

      Ciao,
      Daniele

      Hai provato a inserire \nopagebreak dopo i due punti? In ogni caso direi che si tratta di una faccenda da considerare solo in fase di revisione finale.

      Ciao
      Enrico

    • #56111
      Up
      0
      Down
      ::


      Ciao,
      grazie. Non conoscevo il comando.
      Il problema è che mi sto avvicinando alla revisione finale. Per non scontrarmi con questi problemi all’ultimo minuto sto facendo pratica adesso, dopo aver salvato la tesi in un altra cartella.

      Grazie ancora,
      Daniele

    • #56112
      Up
      0
      Down
      ::


      Purtroppo \nopagebreak non funziona. Viene spezzata la pagina ugualmente.

    • #56113
      Up
      0
      Down
      ::

      Purtroppo \nopagebreak non funziona. Viene spezzata la pagina ugualmente.

      Metti \pagebreak fra due parole della terzultima riga prima di quote.

      Ciao
      Enrico

    • #56114
      Up
      0
      Down
      ::


      Risolto usando \nopagebreak e stringendo la pagina precedente quote di una riga.

      Ciao,
      Daniele

      PS Se qualcuno dovesse correggere il mio modo di fare la revisione finale faccia pure. Sarebbe anzi ben accetto.

    • #56115
      Up
      0
      Down
      ::

      Purtroppo \nopagebreak non funziona. Viene spezzata la pagina ugualmente.

      Metti \pagebreak fra due parole della terzultima riga prima di quote.

      Ciao
      Enrico

      Letto tardi, avevo già inviato. Ora ci provo.
      Grazie

    • #56116
      Up
      0
      Down
      ::

      Purtroppo \nopagebreak non funziona. Viene spezzata la pagina ugualmente.

      Non può funzionare (come egreg9 sa molto meglio di me, ma concediamogli almeno una piccola distrazione ogni 1000 messaggi 😉 ), perché l’ambiente quote, che richiama \trivlist, inserisce per suo conto un punto di cesura, con penalità \@beginparpenalty (be’, a rigore ciò dipende dalla classe di documento: l’ambiente quote non è definito nel nucleo del LaTeX); tipicamente, \@beginparpenalty ha un valore che addirittura incoraggia, seppur blandamente, l’interruzione di pagina. Un’alternativa al taglio manuale della pagina potrebbe essere una modifica locale a tale parametro:
      `
      \begin{quote}
      \makeatletter
      \@beginparpenalty = \@M
      \makeatother
      Mettete qui la vostra citazione.
      (\textsl{B.~Stroustrup})
      \end{quote}
      `
      Eppoi, c’è sempre il comando \samepage del LaTeX 2.09 (che fa la stessa cosa, più altre)…

      Ciao.


      Gustavo

    • #56117
      Up
      0
      Down
      ::

      Purtroppo \nopagebreak non funziona. Viene spezzata la pagina ugualmente.

      Non può funzionare (come egreg9 sa molto meglio di me, ma concediamogli almeno una piccola distrazione ogni 1000 messaggi 😉 ), perché l’ambiente quote, che richiama \trivlist, inserisce per suo conto un punto di cesura, con penalità \@beginparpenalty (be’, a rigore ciò dipende dalla classe di documento: l’ambiente quote non è definito nel nucleo del LaTeX); tipicamente, \@beginparpenalty ha un valore che addirittura incoraggia, seppur blandamente, l’interruzione di pagina. Un’alternativa al taglio manuale della pagina potrebbe essere una modifica locale a tale parametro:
      `
      \begin{quote}
      \makeatletter
      \@beginparpenalty = \@M
      \makeatother
      Mettete qui la vostra citazione.
      (\textsl{B.~Stroustrup})
      \end{quote}
      `
      Eppoi, c’è sempre il comando \samepage del LaTeX 2.09 (che fa la stessa cosa, più altre)…

      Giusto. Ma il rimedio che proponi non può funzionare, perché quando cambi il valore di \@beginparpenalty la penalità di trivlist è già stata emessa. Quindi il cambiamento va dato prima:
      `\makeatletter
      \newenvironment{quote*}
      {\@beginparpenalty\@M\quote}
      {\endquote}
      \makeatother`
      definisce un ambiente quote* che non permette un cambio pagina prima di sé.

      L’uso di samepage è scoraggiato: le famose altre cose che fa non sono tanto piacevoli.

      C’è un’altra soluzione che funziona se il capoverso precedente la citazione è di almeno quattro righe (se il capoverso precedente è di tre righe o meno il problema non si pone: tutto di là).
      `\newenvironment{specialpar}[1]{\par#1}{\par}

      \begin{specialpar}{\widowpenalties 3 10000 -10000 0\relax}
      Testo del capoverso precedente la citazione, lungo almeno quattro righe
      \end{specialpar}
      \begin{quote}
      Citazione che si porterà dietro esattamente due righe del capoverso precedente.
      \end{quote}`
      Carino, vero?

      Ciao
      Enrico

    • #56118
      Up
      0
      Down
      ::

      […]

      Giusto. Ma il rimedio che proponi non può funzionare, perché quando cambi il valore di \@beginparpenalty la penalità di trivlist è già stata emessa.[…]

      No, non dovrebbe: viene emessa da \@item… Accidenti, hai ragione! quote emette anche \item. E sì che ci avevo pensato! 🙂

      L’uso di samepage è scoraggiato: le famose altre cose che fa non sono tanto piacevoli.

      Ciao
      Enrico

      Infatti…

      Ciao.


      Gustavo

    • #56119
      Up
      0
      Down
      ::

      […]

      Giusto. Ma il rimedio che proponi non può funzionare, perché quando cambi il valore di \@beginparpenalty la penalità di trivlist è già stata emessa.[…]

      No, non dovrebbe: viene emessa da \@item… Accidenti, hai ragione! quote emette anche \item. E sì che ci avevo pensato! 🙂

      L’uso di samepage è scoraggiato: le famose altre cose che fa non sono tanto piacevoli.

      Ciao
      Enrico

      Infatti…

      Ciao.


      Gustavo

      Leggi il messaggio precedente, a cui ho aggiunto una cosa che potrebbe interessarti!

      Ciao
      Enrico

    • #56120
      Up
      0
      Down
      ::


      Grazie mille. Farò sicuramente utilizzo dei vostri consigli (e codici).

      Ciao,
      Daniele

    • #56121
      Up
      0
      Down
      ::

      Grazie mille. Farò sicuramente utilizzo dei vostri consigli (e codici).

      Se poi scrivi in italiano, è anche meglio. Dubito che “farò sicuramente utilizzo” si trovi negli autori più accreditati. 🙂

      Ciao
      Enrico

    • #56122
      Up
      0
      Down
      ::

      […]
      C’è un’altra soluzione che funziona se il capoverso precedente la citazione è di almeno quattro righe (se il capoverso precedente è di tre righe o meno il problema non si pone: tutto di là).
      `\newenvironment{specialpar}[1]{\par#1}{\par}

      \begin{specialpar}{\widowpenalties 3 10000 -10000 0\relax}
      Testo del capoverso precedente la citazione, lungo almeno quattro righe
      \end{specialpar}
      \begin{quote}
      Citazione che si porterà dietro esattamente due righe del capoverso precedente.
      \end{quote}`
      Carino, vero?

      […]

      Non mi convince appieno, per almeno due motivi:

      1) occorre intervenire anche sul capoverso precedente la citazione, per incapsularlo nell’ambiente specialpar;

      2) ma soprattutto, non è che una variante della prima soluzione (forzare un cambio di pagina due righe prima della citazione), e ne condivide il difetto di richiedere di sapere già che la pagina sta per finire.

      Infine, sono un vecchio barbogio tradizionalista, e finché posso rimanere fedele al TeX di Knuth son più contento.

      Insisto col dire che la soluzione del problema sia cambiare il valore di \@beginparpenalty, o definendo un ambiente ad hoc come il sopraccitato quote*, o direttamente per le vie brevi:
      `
      \begingroup
      \makeatletter \@beginparpenalty = \@M \makeatother
      \begin{quote}
      Mettete qui la vostra citazione.\qquad
      (\textsl{B.~Stroustrup})
      \end{quote}
      \endgroup
      `
      (come avevo scritto — e poi scientemente cancellato! — prima di tentare maldestramente di fare troppo il furbo).

      Si può anche considerare una variante più blanda, con \@beginparpenalty impostato a \@highpenalty anziché a 10000.

      Ciao.


      Gustavo

    • #56123
      Up
      0
      Down
      ::

      […]
      C’è un’altra soluzione che funziona se il capoverso precedente la citazione è di almeno quattro righe (se il capoverso precedente è di tre righe o meno il problema non si pone: tutto di là).
      `\newenvironment{specialpar}[1]{\par#1}{\par}

      \begin{specialpar}{\widowpenalties 3 10000 -10000 0\relax}
      Testo del capoverso precedente la citazione, lungo almeno quattro righe
      \end{specialpar}
      \begin{quote}
      Citazione che si porterà dietro esattamente due righe del capoverso precedente.
      \end{quote}`
      Carino, vero?

      […]

      Non mi convince appieno, per almeno due motivi:

      1) occorre intervenire anche sul capoverso precedente la citazione, per incapsularlo nell’ambiente specialpar;

      2) ma soprattutto, non è che una variante della prima soluzione (forzare un cambio di pagina due righe prima della citazione), e ne condivide il difetto di richiedere di sapere già che la pagina sta per finire.

      Infine, sono un vecchio barbogio tradizionalista, e finché posso rimanere fedele al TeX di Knuth son più contento.

      Insisto col dire che la soluzione del problema sia cambiare il valore di \@beginparpenalty, o definendo un ambiente ad hoc come il sopraccitato quote*, o direttamente per le vie brevi:
      `
      \begingroup
      \makeatletter \@beginparpenalty = \@M \makeatother
      \begin{quote}
      Mettete qui la vostra citazione.\qquad
      (\textsl{B.~Stroustrup})
      \end{quote}
      \endgroup
      `
      (come avevo scritto — e poi scientemente cancellato! — prima di tentare maldestramente di fare troppo il furbo).

      Si può anche considerare una variante più blanda, con \@beginparpenalty impostato a \@highpenalty anziché a 10000.

      La soluzione con \widowpenalties è nettamente migliore: modificare \@beginparpenalty infatti normalmente creerà una vedova, perché il capoverso prima della citazione sarà spezzato all’ultima riga. Non una vedova inconsolabile, perché c’è la citazione: soluzione dunque preferibile se per caso il capoverso è solo di tre righe.

      Si può agire anche senza introdurre “specialpar”:
      `Testo che precede la citazione:\adjustment{\widowpenalties=3 10000 -10000 0\relax}
      \begin{quote}
      Citazione
      \end{quote}`
      dove \adjustment ha una definizione molto semplice:
      `\newcommand*{\adjustment}[1]{#1}`
      Non ti piace dover scrivere esplicitamente quel codice di basso livello? Nessun problema. 🙂
      `\newcommand{\splitbefore}[1][0]{%
      \ifcase#1\or
      \widowpenalties 2 -10000 0 \or
      \widowpenalties 3 10000 -10000 0 \or
      \widowpenalties 4 10000 10000 -10000 0 \or
      \widowpenalties 5 10000 10000 10000 -10000 0
      \fi}`
      Il nostro codice diventerebbe
      `Testo che precede la citazione:\splitbefore[2]
      \begin{quote}
      Citazione
      \end{quote}`
      che diventa facilmente modificabile in fase di revisione. L’argomento opzionale vale 0 se non espresso e la macro, in quel caso, non fa nulla. Con argomento x da 1 a 4 spezza il capoverso lasciando x righe sulla nuova pagina.

      Le estensioni e-TeX semplificano la vita in molti casi.

      Ciao
      Enrico

    • #56124
      Up
      0
      Down
      ::


      No, mi sembra che continuiamo non capirci (forse sono io, non so). Forzare un inizio di pagina due righe prima della citazione può andar bene (se la pagina è abbastanza allungabile) solo se si sa già di essere vicini alla fine della pagina; ma se per caso il documento viene modificato e la citazione si sposta a metà della pagina? Insomma, tu stai pensando a un comando di impaginazione visiva, da usarsi solo in sede di revisione finalissima; io penso a un costrutto da utilizzare per citazioni brevissime (una sola riga, tipicamente), da usare per dire “qui sopra non voglio un’interruzione di pagina”, o più esplicitamente “tratta questa citazione come tratteresti una formula fuori corpo”.

      […]
      La soluzione con \widowpenalties è nettamente migliore: modificare \@beginparpenalty infatti normalmente creerà una vedova, perché il capoverso prima della citazione sarà spezzato all’ultima riga. Non una vedova inconsolabile, perché c’è la citazione […]

      Pensavo che, in caso di necessità, si sarebbe dovuto fare esattamente così. Insisto con il paragone con le formule fuori corpo.

      […]
      Non ti piace dover scrivere esplicitamente quel codice di basso livello? Nessun problema. 🙂
      `\newcommand{\splitbefore}[1][0]{%
      \ifcase#1\or
      \widowpenalties 2 -10000 0 \or
      \widowpenalties 3 10000 -10000 0 \or
      \widowpenalties 4 10000 10000 -10000 0 \or
      \widowpenalties 5 10000 10000 10000 -10000 0
      \fi}`
      Il nostro codice diventerebbe
      `Testo che precede la citazione:\splitbefore[2]
      \begin{quote}
      Citazione
      \end{quote}`

      Comunque, questa macro mi piace, come comando di emergenza. Noto gli spazi tra gli 0 e gli \or (per farti vedere che sto attento… 😀 )

      […]
      Le estensioni e-TeX semplificano la vita in molti casi.

      […]

      Be’, senz’altro: barbogio e tradizionalista, ma non oscurantista!

      Ciao.


      Gustavo

    • #56125
      Up
      0
      Down
      ::


      Grazie.
      Con calma rileggo tutto e poi valuto cosa utilizzare.

      Ciao,
      Daniele

    • #56126
      Up
      0
      Down
      ::

      No, mi sembra che continuiamo non capirci (forse sono io, non so). Forzare un inizio di pagina due righe prima della citazione può andar bene (se la pagina è abbastanza allungabile) solo se si sa già di essere vicini alla fine della pagina; ma se per caso il documento viene modificato e la citazione si sposta a metà della pagina? Insomma, tu stai pensando a un comando di impaginazione visiva, da usarsi solo in sede di revisione finalissima; io penso a un costrutto da utilizzare per citazioni brevissime (una sola riga, tipicamente), da usare per dire “qui sopra non voglio un’interruzione di pagina”, o più esplicitamente “tratta questa citazione come tratteresti una formula fuori corpo”.

      Sono proprio aggiustamenti da valutare durante la revisione finalissima, quella “dopo non si tocca più niente!”

      […]
      La soluzione con \widowpenalties è nettamente migliore: modificare \@beginparpenalty infatti normalmente creerà una vedova, perché il capoverso prima della citazione sarà spezzato all’ultima riga. Non una vedova inconsolabile, perché c’è la citazione […]

      Pensavo che, in caso di necessità, si sarebbe dovuto fare esattamente così. Insisto con il paragone con le formule fuori corpo.

      Giusto paragone.

      […]
      Non ti piace dover scrivere esplicitamente quel codice di basso livello? Nessun problema. 🙂
      `\newcommand{\splitbefore}[1][0]{%
      \ifcase#1\or
      \widowpenalties 2 -10000 0 \or
      \widowpenalties 3 10000 -10000 0 \or
      \widowpenalties 4 10000 10000 -10000 0 \or
      \widowpenalties 5 10000 10000 10000 -10000 0
      \fi}`
      Il nostro codice diventerebbe
      `Testo che precede la citazione:\splitbefore[2]
      \begin{quote}
      Citazione
      \end{quote}`

      Comunque, questa macro mi piace, come comando di emergenza. Noto gli spazi tra gli 0 e gli \or (per farti vedere che sto attento… 😀 )

      […]
      Le estensioni e-TeX semplificano la vita in molti casi.

      […]

      Be’, senz’altro: barbogio e tradizionalista, ma non oscurantista!

      Occhio di lince! Stavolta non mi becchi in castagna! 😀

      Bisognerebbe fare una collezione di attrezzi per la revisione finale. Questi trucchetti insieme a \looseness e vari altri comandi poco noti a volte sono anche meglio di un \enlargethispage, se la struttura della pagina lo permette (spazi elastici abbastanza flessibili). Con testi molto continui, cioè paginate di testo senza titoli, citazioni o formule fuori corpo, c’è di solito poco da fare e tanto più di \looseness o \enlargethispage non si può usare.

      Ciao
      Enrico

    • #56127
      Up
      0
      Down
      ::

      Bisognerebbe fare una collezione di attrezzi per la revisione finale. Questi trucchetti insieme a \looseness e vari altri comandi poco noti a volte sono anche meglio di un \enlargethispage, se la struttura della pagina lo permette (spazi elastici abbastanza flessibili). Con testi molto continui, cioè paginate di testo senza titoli, citazioni o formule fuori corpo, c’è di solito poco da fare e tanto più di \looseness o \enlargethispage non si può usare.

      Io insisto sull’utilità di un articolo specifico. Comandi a parte, esistenti o creati all’occorrenza, come avete fatto in questi giorni, sarebbe utile sapere come la “gente brava” li usa. Quando è il caso di agire in un modo o nell’altro; esempi pratici in cui si risolvono problemi di impaginazione (tante formule, tanti oggetti flottanti,…). Se non altro aiuterebbero chi come me è ansioso di “rubare” la conoscenza agli altri (ho in mente tre o quattro persone da cui vorrei rubare il bagaglio “LaTeX” e “Tipografia” :D)

      Ciao,
      Daniele

    • #56128
      Up
      0
      Down
      ::


      Certamente, sarebbe utilissimo, e ci potrebbe anche stare qualche istruzione anche per sistemare un indice che finisce nella pagina nuova soltanto per una voce, per esempio.

      Come sarebbe utilissimo un articolino che spieghi come interpretare correttamente i principali errori restituiti dal compilatore e come uscirne vivi 😀

      Ciao
      Tommaso

    • #56129
      Up
      0
      Down
      ::

      […]
      Come sarebbe utilissimo un articolino che spieghi come interpretare correttamente i principali errori restituiti dal compilatore e come uscirne vivi 😀
      […]

      Direi che sugli errori principali le guide esistenti dicono già abbastanza; forse è l’uso dei comandi di tracciamento, e l’interpretazione dei tracciati che producono, che potrebbero essere “reclamizzati” di più. Si tratta di strumenti diagnostici importanti per correggere gli errori e ottenere il meglio da (La)TeX, non saperli utilizzare è effettivamente uno svantaggio che a volte può rivelarsi importante.

      Ciao.


      Gustavo

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

Go to top