- Questo topic ha 20 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 6 mesi fa da
letteracdp.
-
CreatoreTopic
-
18 Febbraio 2011 alle 10:32 #56109::
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
-
CreatoreTopic
-
AutoreRisposte
-
-
18 Febbraio 2011 alle 10:44 #56110::
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,
DanieleHai 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
-
18 Febbraio 2011 alle 10:51 #56111
-
18 Febbraio 2011 alle 10:57 #56112
-
18 Febbraio 2011 alle 11:09 #56113
-
18 Febbraio 2011 alle 11:10 #56114
-
18 Febbraio 2011 alle 11:12 #56115
-
18 Febbraio 2011 alle 22:57 #56116::
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
-
18 Febbraio 2011 alle 23:12 #56117::
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
-
18 Febbraio 2011 alle 23:20 #56118::
[…]
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
EnricoInfatti…
Ciao.
—
Gustavo
-
18 Febbraio 2011 alle 23:40 #56119::
[…]
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
EnricoInfatti…
Ciao.
—
GustavoLeggi il messaggio precedente, a cui ho aggiunto una cosa che potrebbe interessarti!
Ciao
Enrico
-
19 Febbraio 2011 alle 7:16 #56120
-
19 Febbraio 2011 alle 11:00 #56121
-
19 Febbraio 2011 alle 11:42 #56122::
[…]
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
-
19 Febbraio 2011 alle 12:05 #56123::
[…]
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
-
19 Febbraio 2011 alle 12:35 #56124::
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
-
19 Febbraio 2011 alle 13:14 #56125
-
19 Febbraio 2011 alle 13:47 #56126::
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
-
19 Febbraio 2011 alle 14:50 #56127::
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
-
19 Febbraio 2011 alle 17:35 #56128::
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
-
19 Febbraio 2011 alle 22:03 #56129::
[…]
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
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.