Risposte nei forum create
-
AutoreRisposte
-
::
Vedi Antiiia, chiedere quale sia il font migliore è una questione di gusti e stai ricevendo le risposte più diverse.È un po’ come chiedere quale sia la musica migliore; è una questione di gusti.
Si può chiedere quale sia il font preferibile per fare questo o quello; per esempio se devi comporre matematica, o se devi comporre con alfabeti diversi da quello latino, o se devi comporre molte grandi tabelle, eccetera.
Allora ciascuno, pur avendo le sue preferenze e i suoi gusti personali, ti può dire quali siano i vantaggi e gli svantaggi ad usare il font che ciascuno preferisce.
Quindi io non ti dico quali font preferisco io, perché io scrivo certi testi che presumibilmente sono diversi da ciò che vuoi scrivere tu, quindi ho certamente esigenze diverse.
Il bello di LaTeX è che puoi cambiare font semplicemente cambiando un nome nell’argomento di un comando \usepackage; e tutto il tuo documento, ricompilato, ti mostra quello che si può fare con quel font. Se ti piace e fa quello che ti serve, bene; altrimenti lo cambi.
Ma il bello di una composizione tipografica non è solo l’uso di questo o quel font; è anche l’impaginazione e lo scartamento fra le righe del testo; scegli un font e componi il testo; poi imposta uno scartamento del 50% più grande e ricomponi; confronta le due composizioni: quella con le righe più distanziate ti apparirà certamente più brutta, meno professionale, più alla Word…
Si dice che i font Compur=er Modern sono talmente riconoscibili e talmente privi di personalità che gli stampati con quei font sono riconoscibili a distanza. Ti grantisco che non è vero; impagina il testo un po’ più stretto, lascia meno spazio bianco verticale fra il testo e gli oggetti fuori testo, e lo stampato, senza modificare i font, è subito diverso e può piacere di più.
Non perdere troppo tempo a scegliere un font in modo esteticamente astratto; pensa bene a quello che devi fare e, a prestazioni equivalenti, puoi scegliere un font su basi estetiche, non viceversa.
::[…] modo asincrono con il quale il programma di composizione produce el pagine da appendere al file di uscita […]
Quindi, è definito il concetto di «comando che si trova a inizio pagina»?
Non non è definito.
L’attivazione della divisione in righe viene eseguita ad ogni fine capoverso, diviso il capoverso in righe queste scatole orizzontali vengono inviate nella scatola 255 che funziona da galley proof; bozza non impaginata e senza inserzioni. Ad ogni capoverso che viene stivato nella scatola 255, viane attivata la routine di output che controlla se c’è abbastanza materiale per spedire una pagina completa al file di uscita; pagina completa di note, oggetti flottanti e compagnia.
Per vedere se c’è abbastanza materiale da spedire fuori (routine di ship out) bisogna vedere quanto spazio rimane in fondo all’eventuale pagina per metterci qualcosa; ecco che quando un tratto di codice rimasto nella lista verticale si trova in questa fase, vene eseguito e in particolare viene controllato se il \pagegoal (che inizialmente vale \textheight, ma va diminuendo via via che si mettono inserimenti in calce, è maggiore di \pagetotal, il totale della potenziale pagina accumulato fino a quel momento compresi gli oggetti flottanti e altri inserimenti verticali.
Ecco che se questa differenza è positiva ci sta ancora qualcosa, ma le penalità verticali possono impedire di metterci qualcosa e allora viene allargato lo spazio elestico verticale. ecco che se ainizio pagina nuova si controlla che siamo con \pagetoal=0pt, siamo a inizio pagina per davvero. Se a fine pagina , prima del salto abbiamo \pagetotal =\pagegoal siamo a fine pagina; se in qualunque momento in modo verticale controlliamo che \pagegoal-\pagetotal <5\balineskip, vuol dire che c’è ancora posto per circa 4 righe di testo.MA il concetto di inzio pagina non è mai espresso in modo preciso nel file che l’utente crea, ma l’utente può inserire comandi che verranno eseguiti solo al momento di spedire fuori una pagina. Il più noto di tutti è \write, il cui argomento viene sviluppato ed eseguito solo al momento dello ship out. Ma ce ne sono molti altri che sono spazi verticali, penalità in modo verticale, e simili cose.
Purtroppo la routine di output, così com’è ora è la sovrapposizione di 30 anni di modifiche e di correzioni e di aggiunte, su un file che inizialmente, nel 1984 circa, non era stato adeguatamente commentato e in cui le varie modifiche sono state commentate e giustificate in na maniera comprensibile solo a chi le ha fatte. Ora esiste un dtx che raccoglie il codice odierno e i commenti passati, quindi è decisamente oscuro.
Ne avrete notizia da uno degli autori, forse il principale dopo Lamport stesso, Frank Mittelbach, in un articolo che ci ha permesso di tradurre e che apparirà nel prossimo numero di ArsTeXnica.
::
Concordo con Gustavo, ma sarei meno fermo sul punto che la figura stia al centro di una pagina. Nel tuo caso la figura è stata collocata nella posizione p (non in h e non in t); e una pagina di float per impostazione predefinita mette i vari float che dovesse contenere centrandoli sulla pagina ma distanziandoli l’uno dall’altro di uno spazio fisso; l’importante è che l’unica figura o le varie figure non costituisca(no) un blocco troppo piccolo. Una iccola figura sola soletta ala fine di un capitolo a centro di una pagina annega in tutto quello spazio bianco, am può succedere perché l’inzo del capitolo implica l’esecuzione di un comando \cleardoublepage, che svuota tutte le code degli oggetti flottanti e se l’ultimo in coa è piccolo e non ce ne sono alri da mettergli sopra, quel piccolino resta solo soletto nella apgina da solo.Come fare? Nella guida tematica Il LaTeX Reference Manual commentato e liberamente tradotto in italiano, (Sezione Documentazione/Guide GuIT Tematiche di questo sito) vi è descritto il meccanismo con cui vengono emessi gli oggetti flottanti; vi vengono descritti i parametri che regolano questa “spedizione” degli oggetti flottanti nelle pagine accodate al file di uscita: se leggi bene trovi come aggiungere qualche comando intelligente per spostare il tuo oggetto flottante piccolo, solo soletto nel mezzo della pagina, in mdo che almeno gli faccia compagnia la testatina.
::
Come ti ha detto Ivan, il problema è ben noto; si presenta solo se componi flush bottom, quindi con le pagine affacciate che terminano allo stessa lunghezza.Inoltre le penalità per evitare le righe vedovo e le righe orfane;Le vedove sono costituite da righe isolate a inizio pagina con il resto del capoverso alle loro spalle, nel passato. Orfane sono le righe isolate alla fine della pagina, con il resto del capoverso, il futuro, che si trova nella pagina successiva. I tipografi farebbero carte false per evitare righe vedove e righe orfane, ma talvolta non se ne può fare a meno.
Poi ci sono i titoli si paragrafi, sotoparagrafi eccetera. Questi titoli, a differenza di che cosa fanno i word processor, non devono assolutamente venire separati dal contenuto del rispettivo paragrafo, sottoparagrafo, eccetera. Tieni presente che se metti insieme la regola dlele orfane, lo sazio fra titolino e primo capoverso e il titolo stesso, occorono almeno 4 righe di spazio per inserire l’inizio di un sezionamento sotto a quello del capitoloUna per il titolo, una per lo spazio di separazione e due per cominciare il testo senza lasciare una riga orfana.
Sapendo queste cose ti rindi conto che LaTeX fa del suo meglio; ma se il testo è quello che è, e gli spazi sono quelli che sono, e la parte elastica degli spazi è quella che è, c’è poco da fare e se LaTeX non ce la fa, è perché non si può fare di meglio con i vincoli imposti. Ricorda che la divisione del testo in pagine è una operazione di ottimizzazione discreta che un Matematico come Knuth non ha avuto problemi a concepire e a realizzare; e se l’ottimo è quello, vuol dire che non si può fare di meglio.
Ma non si può fare di meglio se si lasciano il testo e i vincoli quelli che sono. Cambiando i vincoli cambia anche l’ottimo ottenibile; cambiando il testo cambia anche l’ottimo ottenibile.
Allora, \enlargethispage, specialmente se con l’asterisco; è preziosa, ma non è l’unica soluzione perché \enlargethispage* non trova abbastanza spazio elastico da scorciare; oppure perché per togliere quello spazio eccessivo bisogna allungare la pagina di tre o quattro righe, e allora la brutteza degli spazi eccessivi, diventa la bruttezza della pagina intera.
Ci sono sotanzialmente sono sostanzialmente due soluzioni, una delle quali automatizzabile con qualche probabilità di successo.
1) Come ti ha detto Ivan la più efficace è quella di rimaneggiare il testo; per allungarlo si può usare \looseness, ma funziona solo con capoversi lunghetti, diciamo ameno 10 righe e talvolta non bastano; modificare il fraseggio è molto più efficace sia per allungare sia per scorciare il testo.
Questa operazione va fatta essenzialmente nel testo della pagina che senza maquillage del testo avrebbe spazi verticali bianchi eccessivi; talvolta anche nella pagina precedente.2) Inserire un \newpage prima del comando di sezionamento; in questo modo la sezione comincia all’inizio della terza pagina, ma la seconda, quella con gli spazi eccessivi, accumula lo spazio necessario a fondo pagina; la pagina si dice “mozza”, perché è stata tagliata, “mozzata”, quindi non allineata con la pagina a fronte. Questa operazione si può automatizzare con una certa probabilità di successo definendo un comando, diciamo \goodpagebreak, che misuri quanto spazio disponibile c’è in fondo alla pagina, per cui si può impostare se inserire la pagina se manca lo spazio corrispondente a 4 righe, o 5 righe; in questo odo si riesce ad ottenere un comportamento buono, mozzando le pagine senza lasciarle troppo mozze; ti avviso che questo comando talvolta non produce nessun effetto a casa del modo asincrono con il quale il programma di composizione produce el pagine da appendere al file di uscita, ma di solito funziona. Credo di averne descritto una passibile realizzazione nella Guida GuIT, scaricabile dalla sezione Documentazione di questo sito.
Prima di comentarti con l’utomatizzazione del metodo 2) cimentati con il metodo 1) 🙂
::
La soluzione al primo problemino è che manca un % in fondo alla riga 75 di begingreek.sty dove c’è scritto [tt]\edef\Greekfontfamily{#1}[/tt].Intanto aggiungilo a mano; io provvedo a caricare su CTAN la nuova versione corretta, ma ci vorranno alcuni giorni prima che sia aggiornabile nella propria distribuzione.
::
Ti ringrazio per avermi fatto notare il primo problema; controllo e riparo appena posso.Il secondo temo che sia una questione di codifica della tastiera; chiaramente è una tastiera widows, usata sooto Linux, che probabilmenta mappa la tastiera italiana o anche una qualsiasi tastiera qwerty in modo che corrisponda alla tastiera greca più o meno ufficiale; e con quella il tasto che per noi corrisponde a u, diventa un theta aperto quando lo si dovrebbe tradurre nel font (quasi) LGR udidot. Si potrebbe chiedere a Günter Milde che cosa suggerisce (il curatore di babel-greek, e il creatore delle macro LICR). Gli scriverò in merito.
Cerco di controllare anche quello, ma temo che avrò delle grosse difficoltà perchee non dispongo di tatiere italiane e di una macchina con Ubuntu installato. Vedrò quel che posso fare.
Claudio
15 Febbraio 2015 alle 16:50 in risposta a: Come fa una macro a sapere che è ad inizio pagina? #100253::
Siccome il test su \pagetotal viene fatto dopo aver composto il titolo con \emph{#1} ho impressione che la cosa non funzioni, almeno con il confronto con 2pt; però l’idea non è male, però bisogna vedere come interferisce con lo spazio insecabile che il comando \section inserisce dopo il titolo.
15 Febbraio 2015 alle 15:49 in risposta a: Come fa una macro a sapere che è ad inizio pagina? #100251::GuidoSette” post=99977
Mi chiedevo se, usando in un futuro piuttosto lontano LuaLaTeX invece che XeLaTeX, oppure addirittura passando a ConTeX, si potessero avere strumenti più flessibili? Oppure la difficiltà è intrinseca al modello computazionale di TeX, che ne è la piattaforma comune?
Credo che LuaLaTeX per quel che riguarda la routine di divisione in pagine della galley proof (la bozza non impaginata) usi la stessa routine di pdflatex e xelatex. Context, invece, non usa il markup di latex e ha una routine di output molto diversa.
Non ho sufficiente esperienza con CnTeXt per darti notizie rassicuranti; semplicemente non lo so se questo programma di compl=ilazione abbia routine,macro o altro per cambiare comportamento a inizio pagina.
::
E che cosa c’è scritto dentro il file main,blg?
Senza le informazioni del file log non si può tirare a indovinare, ma è certo che biblatex e biber sono cambiati negli ultimi due anni in modo sostanziale; per cui, ho il sospetto che la tua versione completa di MiKTeX 2.9 vada aggiornata con il suo Package Manager (o Wizard) non copiando e cercando di installare i file in cartelle di sistema che non bisognerebbe mai toccare “a mano”; inoltre il Manager ricostruisce anche i filename database, mentre a mano è la prima cosa che si scorda.
15 Febbraio 2015 alle 9:45 in risposta a: Come fa una macro a sapere che è ad inizio pagina? #100249::
OK, ho capito il problema, e la soluzione forse è più complessa se usi i comandi \titlepacing, specialmente se vuoi variare la seocnda spaziatura dopo il titolo della sezione.Si sa di essere a inizio pagina, prima di comporre il titolo se \pagegoal e \pagetotal sono due lunghezze uguali; Questo ti permette di definire una variabile booleana. Questo ti permetterebbe, se non usassi quei comandi ma ridefinissi direttamente il comando \section, di saper al momento in cui \section comincia ad essere eseguito se le due lunghezze sono uguali; se lo sono poi impostare la varibaile booleana al valore true, e quindi dopo aver composto il titolopoi scegliere un avanzamento piuttosto che un altro sulla base dello stato di quella variabile booleana.
Direi che la cosa non sarebbe impossibile, ma certamante difficile epr fare le infinite prove necessarie.
Un altro metodo potrebbe ssere quello di definire due comandi \section e \Section, quello con la lettera maiuscola con uno spazio maggiore, per cui, anche facendo a mano, avresti in fase di correzione delle bozze la possibilità si camiare solo una s in una S, molto più semplice che non mettere il comando per disteso per aggiungere lo spazio mancante, che non è semplice spazio mancante, ma uno spazio insecabile verticale.
Altra possibilità di efficacia dubbia, ma spesso efficace; definisci un comando che ti controlla la quatità di spazio in fondo pagina, in modo da emettere un \newpage se mancano meno di , diciamo, quattro righe dal fondo; Questa macro può anche impostare con lo stesso di controllo delle dimensioni può anche impostare anche la variabile booleana del primo metodo e sulla base di quello eseguire \section oppure \Section.
Vedi che comunque la gire è possobile automatizzare la cosa, ma non è banale realizzarla.
Tuttavia ti ho dato la risposta: in modo verticale si può sapere se la macro viene eseguita a inizio pagina se \pagegoal e \pagetotal sono uguali.
14 Febbraio 2015 alle 22:19 in risposta a: Come fa una macro a sapere che è ad inizio pagina? #100247::
Perché se un titolo di sezione cade a inizio pagina, deve essere distanziato di più dal testo della sezione, rispetto a quando il titolo cade a metà pagina e il testo comincia (ovviamente) nella stessa pagina?Tipograficamente parlando non si fa così. Quindi se lo vuoi fare deve esserci un motivo molto valido per violare una regola.
::letteracdp” post=99942Sì, ma \do non è un comando “usa e getta”, un po’ come \count@, \box0, ecc.? Per esempio, quando voglio fare qualcosa ai caratteri “speciali” definisco \do#1{…} in modo che faccia quello che voglio e chiamo \dospecials. È usato dappertutto in questo senso, fin dal formato plain TeX. Sono vent’anni che uso e vedo usare \do in questo modo, e non mi è mai andato a remengo niente; finito di usarlo, diligentemente lo rilascio:`\let \do = \@undefined`(lo fa anche letteracdp.cls, alla fine del file). Direi che in vent’anni dovrebbe ben essermi capitato di rompere qualcosa!
Ciao.
—
GustavoPuò darsi che l’aver ridefinito \do non ti abbia mai prodotto nessun problema fino ad oggi; a a me risulta che serva attraverso \dospecials per cambiare il codice di categoria ai 10 caratteri speciali in modo da poter comporre verbatim. Se nelle lettere non usi mai i due ambienti verbatim e non usi mai i due comandi \verb( due perché sono con e senza asterisco) non succede niente.
Ma è sempre pericoloso dare della altre definizioni ai comandi interni; sei relativamente al sicuro se lo fai dentro un gruppo usando \def o \edef, ma non \gdef o \xdef; sei sicuramente al sicuro se definisci dei comandi con dei nomi che appartengano ad uno “space-name” sicuramente unico al tuo pacchetto; il fatto che tu renda \do undefined alla fine del pacchetto non consola per niente, perché se un danno potenziale c’era, il danno resta.
Padronissimo di non credermi; quindi sei liberissimo di mantenere le cose come stanno; il pacchetto è tuo e ne sei responsabile tu.
Io se qualcuno mi facesse notare un errore che io ho fatto ma che non mi ha mai prodotto inconvenienti, sarei molto contento, non risentito, come mi pare di capire dalle tue parole. Se sono io che ho equivocato, ti chiedo scusa in anticipo.
::
Benvenuto con il tuo primo post.Non è chiaro che cosa tu vagli dire con “localizzato in italiano” carichi babel con l’opzione italian, dopo ‘istruzione \cocumentclass[…]{ieeetrans}? Quello è il modo per comporre in italiano; poi se viene fuori qualche stringa in inglese, allora nella guida l’Arte di scrivere con LaTeX c’è scritto come aggiungere o come modificare le stringhe che contengono quelle parole, ma ci vorrebbe un esempio minimo compilabile per vedere quali stringhe escono in inglese malgrado tu abbia caricato babel con l’opzione italian.
Visto che questo è il tuo rimo messaggio, ti faccio una domanda retorica: hai già scaricato dall sezione Documentazione la guida L’Arte di scrivere con LaTeX? Se non l’avessi ancora fatto, affrettati a farlo e a leggere la guida; ti assicuro che non eprdi tempo, ma ne guadagni moltissimo.
-
AutoreRisposte