Re: tre asterischi

#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

Go to top