- Questo topic ha 12 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 2 mesi fa da
letteracdp.
-
CreatoreTopic
-
11 Dicembre 2014 alle 16:21 #99033
-
CreatoreTopic
-
AutoreRisposte
-
-
11 Dicembre 2014 alle 22:10 #99034::
ernded” post=98601È banale scrivere una macro che stampa tre asterischi centrati lasciando un ` \bigskip ` prima e dopo la riga stessa ma come si può fare in modo che gli asterischi non compaiano se la riga che li contiene è la prima o l’ultima di una pagina?
Ciao
Grazie
ErnestoForse con
`\newcommand{\asterischi}{\par\nobreak\bigskip *** \bigskip}`
?Ciao
Ivan
-
11 Dicembre 2014 alle 22:21 #99035
-
18 Dicembre 2014 alle 19:50 #99036::
ernded” post=98611Non ho ancora fatto delle prove, ma mi pare di ricordare che, se capita in un fine-pagina, il \nobreak allunga semplicemente la pagina e comunque non risolve il problema se la riga compare all’inizio della pagina.
Con [tt]\nobreak[/tt] non c’è pericolo che gli asterischi vadano a nuova pagina; infatti la sequenza è
• fine capoverso
• penalità infinita
• skip (da [tt]\bigskip[/tt])
• skip (da [tt]\parskip[/tt])
• asterischiUno skip che sia preceduto da un discardable item, nel caso specifico la penalità, non è mai un punto legale per spezzare una pagina.
Ovviamente questo porterà un paio di righe dell’ultimo capoverso alla nuova pagina, se gli asterischi capitassero troppo vicini al margine inferiore o lo superassero.
Ciao
Enrico
-
3 Aprile 2015 alle 18:45 #99037::
Si vede che sono cominciate le vacanze di Pasqua, eh? 🙂 Continuando a scartabellare, ne ho trovata un’altra che mi è parsa irresistibilmente accattivante.ernded” post=98601È banale scrivere una macro che stampa tre asterischi centrati lasciando un ` \bigskip ` prima e dopo la riga stessa ma come si può fare in modo che gli asterischi non compaiano se la riga che li contiene è la prima o l’ultima di una pagina?
Ciao
Grazie
ErnestoMi sembra che la risposta data qui
ivan” post=98610[…]
Forse con
`\newcommand{\asterischi}{\par\nobreak\bigskip *** \bigskip}`
?Ciao
Ivannon faccia quel che @ernded chiede, che, per come capisco io, non è tanto impedire il taglio della pagina in corrispondenza dei tre asterischi, quanto piuttosto evitare che questi vengano stampati se il taglio della pagina finisce col cadere giusto lì. Anzi, magari @ernded intende usare i tre asterischi proprio per segnalare una cesura nella struttura logica del discorso, e quindi desidererebbe semmai incoraggiare l’inizio di una nuova pagina in corrispondenza di essi, imitando quel che fa “\bigbreak”.
In effetti, questo si può fare senza troppa difficoltà. Strano che non sia stato @egreg9, che, vedo, è già intervenuto in questa discussione, a suggerire questo trucchetto, ma si vede che non aveva tempo, o voglia. 🙂 (È ovvio che lo conosce benissimo.) Nel codice che segue, il necessario “incantesimo” è tutto contenuto nel comando “\threeastbreak”:
`
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{lipsum}\title{Astri e asterischi}
\author{Z.~I.~Chicchi\thanks{%
Istituto \emph{Galalao Gali\ldots\ Galelai Gala\ldots\ Legalao Gale\ldots}
\space Istituto \emph{Newton} di Padova!%
}}\makeatletter
\newcommand*\threeastbreak{\par
% Emulate LaTeX's \bigbreak (more or less):
\ifdim\lastskip<\bigskipamount \removelastskip \fi \penalty -200 % Do not depend on e-TeX's \glueexpr: \skip@ \medskipamount \multiply \skip@ \tw@ \advance \skip@ \baselineskip \dimen@ \skip@ \advance \dimen@ -8\p@ \cleaders \vbox to \dimen@ {% \vss \centerline{% \vrule \@height 10\p@ \@depth\tw@\p@ \@width \z@ $*\quad*\quad*$% }% \vss }\vskip \skip@ } \makeatother \hfuzz = 0pt \vfuzz = 0pt \begin{document} \maketitle \lipsum[1-2] \threeastbreak \lipsum[3] \threeastbreak Ora aggiungiamo lentamente del testo capoverso per capoverso, fino a raggiungere quasi la fine della pagina. % Questa \`{e} la riga che fa ``scattare'' il salto di pagina. Decommentatela. \threeastbreak Un nuovo capoverso. Come si vede, quando questo capoverso ``salta'' a inizio pagina, non \`{e} preceduto dai tre asterischi. \threeastbreak Viceversa, questo capoverso, trovandosi per il momento a inizio pagina, non \`{e} preceduto dagli asterischi, ma li acquista quando il capoverso precedente ``salta'' al suo posto. \lipsum[4] \threeastbreak \lipsum[5] \newpage Per raffronto. \lipsum[6] \end{document} ` Questo rozzo abbozzo può essere migliorato in vari aspetti: [ol] [li]Si può rendere variabile (specificato in un argomento) il testo da stampare al posto dei tre asterischi.[/li] [li]Si possono offrire versioni del comando che lasciano più o meno spazio, e incoraggiano di più o di meno l’interruzione di pagina: come qui ho imitato "\bigbreak", si possono imitare anche "\medbreak" e "\smallbreak".[/li] [li]Si possono usare le estensioni di e-TeX per (rendere più leggibili i calcoli e) ricavare dinamicamente, con "\glueshrink", l’accorciabilità di "\bigskipamount", e anche tenere conto, con "\gluestretch", della sua allungabilità. In effetti, la soluzione mostrata qui tira un po’ a indovinare, e sebbene funzioni con i valori tipici, non è impossibile che, con valori abnormi di "\bigskipamount", finiscano con uscir fuori due (o, teoricamente, anche più di due) file di asterischi, o magari nessuna.[/li] [/ol] Magari ci torniamo sopra se la cosa dovesse ancora interessare a qualcuno… Ciao. -- Gustavo -
4 Aprile 2015 alle 12:21 #99038::
Un modo semplice per mettere i tre asterischi è quello di metterli in modo matematico in display:`\[\star\ \star\ \star\] `
Non c’è nessuna garanzia che non possa avvenire un salto apgina subito prima dei tre asterischi, ma c’è una penalità per interreompera la pgina prima della matematica, quindi la probabilità che TeX vada alla nuova pagina è bassa. Probabilmente (anche con le altre soluzioni) si può aggiustare al situazione con un comando`\enlargethispage*{\baselineskip}`
-
4 Aprile 2015 alle 13:24 #99039::
OldClaudio” post=100840Un modo semplice per mettere i tre asterischi è quello di metterli in modo matematico in display:`\[\star\ \star\ \star\] `
Questa è sempre la stessa idea: impedire, o scoraggiare, un’interruzione di pagina prima degli asterischi. Io invece voglio incoraggiarla, e scaricare i tre asterischi se l’interruzione si verifica. È profondamente diverso.
OldClaudio” post=100840Non c’è nessuna garanzia che non possa avvenire un salto apgina subito prima dei tre asterischi, ma c’è una penalità per interreompera la pgina prima della matematica, quindi la probabilità che TeX vada alla nuova pagina è bassa. […]
Per la verità, il plain TeX imposta “\predisplaypenalty” a 10000 e, a quel che so, quasi tutti gli vanno dietro; ma, ripeto, il problema non è vietare l’interruzione di pagina prima, ma sopprimere gli asterischi in caso di interruzione.
P.S.: Si vede non solo che è Pasqua, ma anche che è brutto tempo: è tutto il pomeriggio che sto in casa… 🙂
Ciao.
—
Gustavo
-
4 Aprile 2015 alle 15:01 #99040::
No, io intendevo proprio evitare il fine pagina prima degli asterischi, perché rimandarli all’inizio della pagina dopo credo che sia tipograficamente sbagliato; ovviamente posso sbagliarmi, ma i tre asterischi segnano la fine di una paragrafo per poi cominciarne un altro senza titolo, me metti la fine di qualcosa nella pagina dopo, perde di significato.
Non sono un tipografo professionista, ma quello che ho letto sugli asterismi (cioè sembra che si chiamino i gruppi di asterischi e spesso sono collocati a triangolo) e sul loro uso mi conferma quello che ho letto; bene inteso quello che si trova scritto in rete non sempre è affidabile, anzi…
Ma non essendo uno del mestiere non sono in grado di accedere a informazioni più precise. Inoltre ora sono in vista da mio figlio che in casa non ha nessun libro di divulgazione tipografica e non posso documentarmi meglio.Ecco perché ho ritenuto suggerire l’uso dell’ambiente matematico che provvede sia a mettere gli spazi uguali sopra e sotto assolutamente uguali, ma anche inserisce il \predispalypenalty che assicura con il suo valore “TeXnicamente” infinito di non inserre un salto di pagina prima dell’asterismo.
L’ho usato nella Guida GuIT e funziona benissimo.
Ovviamente incoraggiare il salto pagina prima dell’asterismo è un’altra soluzione, che persegue uno scopo diverso. Tutte e due sono valide a seconda di quello che si vuole ottenere.
Anche qui piove e fa freddo con temperatura massima di 5°C; ecco perché non siamo fuori all’aperto con i nipotini…
Buona Pasqua
Claudio
-
4 Aprile 2015 alle 16:51 #99041::
OldClaudio” post=100842No, io intendevo proprio evitare il fine pagina prima degli asterischi, perché rimandarli all’inizio della pagina dopo credo che sia tipograficamente sbagliato […]
Ahimè, non riesco a spiegarmi… 🙂 Non li rimando alla pagina dopo. Nel punto dove si dà il comando “\threeastbreak” possono succedere due cose:
- Il TeX, nonostante l’incoraggiamento rappresentato dalle duecento unità negative di penalità, non interrompe la pagina, perché il “\pagegoal” è ancora troppo lontano e la colla disponibile non può allungarsi a sufficienza. In questo caso, viene lasciato uno spazio verticale pari a “\bigskipamount”, seguito dai tre asterischi, seguito da uno spazio uguale.
- Il TeX, in base al suo solito algoritmo, decide di interrompere la pagina. In questo caso, non compaiono né spazi verticali né asterischi, e questo né in fondo alla pagina appena concluso, né in cima a quella appena cominciata.
Questo succede perché, con “\cleaders”, la scatola che contiene i tre asterischi è “annegata” in una “goccia” di colla, come un insetto nell’ambra, e quindi, facendo parte della colla, viene anch’essa scaricata al confine di pagina, come sempre accade col TeX.
OldClaudio” post=100842ovviamente posso sbagliarmi, ma i tre asterischi segnano la fine di una paragrafo per poi cominciarne un altro senza titolo, me metti la fine di qualcosa nella pagina dopo, perde di significato.
Certo, come dicevo nel post col quale ho riaperto la discussione, il comando “\threeastbreak” dovrebbe essere usato proprio per questo: chiudere un segmento logico del discorso e aprirne un altro. I due segmenti logici saranno separati o dagli asterischi o da un’interruzione di pagina, ma mai da entrambi.
OldClaudio” post=100842[Gli] asterischi […] spesso sono collocati a triangolo.
Si può fare anche questo… 🙂 Se la cosa interessa, si può anche scrivere un pacchettino fatto per bene, magari uno che si adatta dinamicamente a tutte le componenti, incluse allungabilità e accorciabilità, dei parametri di stile “\bigskipamount” e “\medskipamount” (“\smallskipamount” lo lascerei stare) se il “motore” di composizione è e-(pdf)TeX, e solo alla loro lunghezza naturale in caso contrario. Credo di averlo già detto, non ditemi che il TeX “ortodosso” (di Knuth) non lo usa più nessuno, perché mi toccate su una questione di religione… 😉
Buona Pasqua anche a te, e a tutti i frequentatori del forum. 🙂
—
Gustavo
-
4 Aprile 2015 alle 18:49 #99042::
Capisco il tuo approccio e lo condivido, ma…Certo è difficile spiegarsi nelle poche righe che i messaggi del forum consentono e si finisce sempre con l’omettere qualcosa, almeno da parte mia.
Secondo me l’asterismo serve in modo meno formale a chiudere un paragrafo, non un capoverso, tanto quanto il rientro della prima riga di un capoverso serve per capire che un nuovo capoverso sta cominciando; lasciare uno spazio fra capoversi sarebbe un’alternativa, ma non è efficace come il rientro; infatti se un capoverso termina una pagina la prima riga rientrata nella pagina successiva spiega benissimo che si tratta di una nuova unità logica, mentre se mancasse il rientro uno potrebbe arguire che si tratta solo di un nuovo periodo del capoverso che termina nella pagina precedente ma con l’ultima riga che arriva a fine giustezza.
I paragrafi sono unità di sezionamento a livello più alto dei capoversi, visto che di solito sono composti da due o più capoversi; ma talvolta non meritano un titolo perché la nuova struttura o la struttura del documento non richiede il formalismo di “navigazione” richiesto ai libri “scientifici” che di solito scriviamo. Ogni paragrafo va staccato dal paragrafo precedente ma lo stacco deve rimanere visibile anche se in corrispondenza del cambio di paragrafo avviene anche un cambio di pagina. In questo caso una decorazione qualsiasi, da un asterismo a una ghirlanda, a un disegno qualsiasi, poco ingombranti in senso verticale ma che devono restare visibili anche in corrispondenza di un cambio di pagina. Ci si può domandare se sia meglio un cambio di pagina prima o dopo del cambio di pagina, ma quando la decorazione serve per lo scopo descritto a me pare più valido tipograficamente che il salto pagina se deve esserci sia dopo la decorazione.
Ora non c’è dubbio che il codice che hai scritto faccia esattamente quello che hai programmato che faccia e che hai descritto benissimo nel messaggio precedente; probabilmente ci sono usi della decorazione dei tre asterischi diverse da quella di segnare lo stacco fra due paragrafi, per le quali il tuo codice vada benissimo, compresa la spaziatura dei \cleaders che spariscono in corrispondenza del cambio pagina.
La mia soluzione, che non cancella la decorazione anche con il cambio di pagina risulta essere molto più semplice anche se si usa la composizione matematica per uno scopo, ehm, “creativo” (in realtà improprio).
No, non ti dico che il TeX ortodosso di Knuth non lo usa più nessuno; sarebbe una cretinata chiunque lo affermasse, anche perché almeno uno, il Grand Wizard, continua ad usarlo alla grande e si scrive il file di stile di volta in volta da solo, senza appoggiarsi a nessun metalinguaggio che traduca un codice di alto livello nel linguaggio “macchina” di TeX-the-program.
Tutti noi che scriviamo codice di vario genere, da file di classe a file di estensione, a moduli specifici di estensione ai file di estensione, usiamo il linguaggio cosiddetto “primitivo” (ma che non è primitivo per niente) di TeX-the-program o almeno di Plain TeX, se non altro perché incluso quasi tutto nel linguaggio LaTeX.
Ma tutti oggi usiamo pdftex (oltre a xetex e luatex, solo per citare i motori più comuni) che già incorporano le funzionalità di eTeX; se proprio uno non le vuole le deve disabilitare apposta. Quindi, a meno che non disabilitiamo la funzionalità di eTeX tutti usiamo qualcosa che ha delle funzionalità che in TeX-the-program non ci sono, ma al contrario contengono tutte el funzionalità di TeX-the-program (altrimenti non potrebbero passare gli stress test che Knuth ha predisposto per consentire che essi si adornino del nome TeX.Io però non disdegno dall’usare, per esempio, i registri numerati da 256 a 32.000 e passa, senza usare il pacchetto etex.sty che estende la possibilità di allocare registri con il solito meccanismo bel oltre il registro 255. È molto utile, ma non è TeX-the-program, anzi è una esplicita violazione. Io non disdegno di usare macro definite nel nucleo di LaTeX che a lor volta sono costruite, alla lunga, su comandi primitivi, ma mi risparmio non poco tempo se le uso senza ridefinire macro personali dalle stesse funzionalità.
Non è una questione di religione; è semplicemente non stare a riscoprire qualcosa che qualcuno l’ha già scoperto in precedenza. Per scrivere file di classe o di estensione o moduli di ulteriore estensione va benissimo; Per scrivere documenti è possibile che non lo sia; per quanto mi riguarda non uso mai plain TeX per scrivere documenti, ma uso il linguaggio primitivo per scrivere in modo LaTeX-compatibile ciò che Knuth si scrive in linguaggio primitivo per ogni documento che produce.
Ciao
Claudio
-
5 Aprile 2015 alle 15:10 #99043::
OldClaudio” post=100844[…]
Secondo me l’asterismo serve in modo meno formale a chiudere un paragrafo, non un capoverso, tanto quanto il rientro della prima riga di un capoverso serve per capire che un nuovo capoverso sta cominciando […]. Ci si può domandare se sia meglio un cambio di pagina prima o dopo del cambio di pagina, ma quando la decorazione serve per lo scopo descritto a me pare più valido tipograficamente che il salto pagina se deve esserci sia dopo la decorazione.
[…]Non ho armi per entrare in quest’arringo. 🙂 Ma credo, alla fine, di avere capito anch’io il tuo punto di vista, e di condividerlo a mia volta.
Aveva cominciato @ernded chiedendo: vorrei far sparire gli asterischi se capitano in corrispondenza di una cesura di pagina, e io glieli ho fatti sparire, né più né meno di come lui aveva chiesto. Ma il tuo approccio guarda oltre, e giustamente: giochetti di prestigio con le scatole del TeX se ne possono fare quanti si vuole, ma il punto vero è sapere se quel che si sta facendo ha senso dal punto di vista tipografico; anche perché, se ci vuole un giochetto di prestigio per farlo, magari quel che si sta cercando di fare è una bestialità.
Forse è questo il caso :smile:/:sad:: se faccio sparire l’asterismo al salto di pagina, come faccio a sapere che c’era un marcatore di cesura logica? Potrebbe darsi che non ci fosse niente, e che la pagina sia finita lì per caso; perfettamente calzante è il paragone con il rientro a inizio capoverso. Quindi, forse la risposta giusta da dare a @ernded e di non fare quel che vorrebbe (voleva) fare.
Siccome però ormai la questione mi ha intrigato, chiederei a Claudio, quando ne avrà modo, magari consultando i suoi testi di riferimento, di sciogliere la questione che io non ho armi per affrontare: cesura di pagina prima o dopo l’asterismo?
Ciao.
—
Gustavo
-
5 Aprile 2015 alle 18:56 #99044
-
16 Giugno 2015 alle 20:03 #99045::
Mi faccio scrupolo di aggiungere una precisazione in calce a questa vecchia discussione perché solo oggi ho scoperto, in una discussione su TeX.SX, che il trucco di “annegare” una scatola dentro [tt]\cleaders[/tt] per renderla scaricabile, e farla così sparire, in corrispondenza di un’interruzione di pagina (o di riga) ha una paternità precisa, che uno come egreg (lo conoscete? 🙂 ) si preoccupa di citare ogni volta che si trova ad usare un’idea simile: pare sia dovuto a Marcin Woliński («How to make a box disappear at a line break»), che lo ideò nel 2007.Preciso questo fatto perché non vorrei mai, a questo punto, correre anche solo il rischio di passare per plagiario: vi prego di voler credere che non ero assolutamente consapevole di questa paternità così importante, e che il trucco in questione mi è venuto in mente in modo del tutto indipendente. Anzi, nella mia ingenuità pensavo che fosse un trucchetto moderatamente astuto, sì, ma tutto sommato abbastanza ovvio e quindi, per così dire, “folkloristico”. Vi prego di nuovo, non prendete quest’ultima frase come una vanteria: è che proprio odierei essere preso per ladro d’idee! 🙁
Ciao.
—
Gustavo
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.