tre asterischi

  • Creatore
    Topic
  • #99033
    ernded
    Partecipante
      Up
      0
      Down
      ::


      È 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
      Ernesto

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

        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
        Ernesto

        Forse con
        `\newcommand{\asterischi}{\par\nobreak\bigskip *** \bigskip}`
        ?

        Ciao
        Ivan

      • #99035
        ernded
        Partecipante
          Up
          0
          Down
          ::


          Non 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.

        • #99036
          Up
          0
          Down
          ::

          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])
          • asterischi

          Uno 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

        • #99037
          Up
          0
          Down
          ::


          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
          Ernesto

          Mi sembra che la risposta data qui

          ivan” post=98610[…]
          Forse con
          `\newcommand{\asterischi}{\par\nobreak\bigskip *** \bigskip}`
          ?

          Ciao
          Ivan

          non 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

        • #99038
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            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}`

          • #99039
            Up
            0
            Down
            ::

            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

          • #99040
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              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

            • #99041
              Up
              0
              Down
              ::

              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:

              1. 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.
              2. 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 in fondo alla pagina appena concluso, 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

            • #99042
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                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

              • #99043
                Up
                0
                Down
                ::

                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

              • #99044
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Appena torno a casa consulto i testi di riferimento.

                  Claudio

                • #99045
                  Up
                  0
                  Down
                  ::


                  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

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

              Go to top