- Questo topic ha 14 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 3 mesi fa da
egreg9.
-
CreatoreTopic
-
17 Maggio 2011 alle 16:35 #58975::
Salve genteSe volessi scrivere delle (anche semplici) espressioni nel testo ma non volessi che queste venissero spezzate a piacimento di LaTeX (anzi, che non venissero spezzate proprio) come posso fare? dovrei usare sempre \mbox{
}??? spesso le espressioni sono delle definizioni anche semplici, tipo
-
CreatoreTopic
-
AutoreRisposte
-
-
17 Maggio 2011 alle 16:49 #58976::
Salve gente
Se volessi scrivere delle (anche semplici) espressioni nel testo ma non volessi che queste venissero spezzate a piacimento di LaTeX (anzi, che non venissero spezzate proprio) come posso fare? dovrei usare sempre \mbox{
}??? spesso le espressioni sono delle definizioni anche semplici, tipo
Se proprio non vuoi che le formule vengano spezzate mai, preparati a un lungo lavoro di revisione. 🙂 Puoi ottenerlo scrivendo nel preambolo
`\binoppenalty=9999
\relpenalty=9999`
Questo non impedisce del tutto che le formule vengano spezzate, ma lo rende altamente improbabile. Usa 10000 se proprio non vuoi alcuna divisione.Ciao
Enrico
-
17 Maggio 2011 alle 20:07 #58977
-
17 Maggio 2011 alle 20:16 #58978
-
17 Maggio 2011 alle 20:36 #58979::
http://en.wikibooks.org/wiki/TeX/binoppenalty
http://www-sop.inria.fr/miaou/tralics/doc-r.html#cmd-relpenaltyvedi un po’…cmq con 9999 ancora qualche formula resta divisa…guarda caso quelle più brutte…ma credo allora di dover intervenire dividendo la formula nell’uguale
-
17 Maggio 2011 alle 20:43 #58980::
OMG perchè lungo lavoro di revisione???
Credo che fosse ironico: bastano quelle due righe. 😀
Ne approfitto per chiedere: \binoppenalty si riferisce (dedurrei dal nome) allo spazio che circonda gli operatori binari + * – /. Invece \relpenalty cosa gestisce?
Una penalità non ha nulla a che fare con le spaziature, serve invece a indicare a TeX posti buoni o meno adatti per spezzare una riga. Quando TeX incontra una formula, la elabora secondo quanto spiegato nella famosa Appendice G del TeXbook e poi la converte in una lista orizzontale che va a far parte del capoverso in cui si trova la formula. Durante questa conversione aggiunge dopo ogni simbolo di operazione binaria una penalità di valore \binoppenalty e dopo ogni simbolo di relazione una di valore \relpenalty. Non ci sono altri posti dove poter spezzare una formula, nemmeno gli spazi espliciti inseriti con “\ “.
Una penalità ha valori da -10000 a 10000; quelle negative indicano punti buoni dove spezzare, quelli positivi invitano a non farlo. Il valore -10000 forza TeX a spezzare la riga, 10000 lo impedisce. Valori minori di -10000 sono equivalenti a -10000 e, analogamente, valori maggiori di 10000 sono equivalenti a 10000. I valori normali di \binoppenalty e \relpenalty sono, rispettivamente, 700 e 500; quindi TeX non è molto propenso a spezzare una formula e lo fa meno malvolentieri dopo un simbolo di relazione.
Gli spazi attorno ai simboli di operazione sono espressi con il parametro \medmuskip, per quelli di relazione c’è \thickmuskip.
@m45dj: il lungo lavoro di revisione sarà causato da un grande numero di messaggi di Overfull \hbox, se hai formule complesse.Ciao
Enrico
-
17 Maggio 2011 alle 21:07 #58981::
Ne approfitto per chiedere: \binoppenalty si riferisce (dedurrei dal nome) allo spazio che circonda gli operatori binari + * – /. Invece \relpenalty cosa gestisce?
Una penalità non ha nulla a che fare con le spaziature, serve invece a indicare a TeX posti buoni o meno adatti per spezzare una riga.
Sì, mi ero espresso malissimo, ma intendevo proprio questo. È che di solito una riga viene spezzata dove c’è uno spazio (in modo testo, in effetti, non matematico).
Quando TeX incontra una formula, la elabora secondo quanto spiegato nella famosa Appendice G del TeXbook e poi la converte in una lista orizzontale che va a far parte del capoverso in cui si trova la formula. Durante questa conversione aggiunge dopo ogni simbolo di operazione binaria una penalità di valore \binoppenalty e dopo ogni simbolo di relazione una di valore \relpenalty. Non ci sono altri posti dove poter spezzare una formula, nemmeno gli spazi espliciti inseriti con “\ “.
Una penalità ha valori da -10000 a 10000; quelle negative indicano punti buoni dove spezzare, quelli positivi invitano a non farlo. Il valore -10000 forza TeX a spezzare la riga, 10000 lo impedisce. Valori minori di -10000 sono equivalenti a -10000 e, analogamente, valori maggiori di 10000 sono equivalenti a 10000. I valori normali di \binoppenalty e \relpenalty sono, rispettivamente, 700 e 500; quindi TeX non è molto propenso a spezzare una formula e lo fa meno malvolentieri dopo un simbolo di relazione.
Gli spazi attorno ai simboli di operazione sono espressi con il parametro \medmuskip, per quelli di relazione c’è \thickmuskip.
@m45dj: il lungo lavoro di revisione sarà causato da un grande numero di messaggi di Overfull \hbox, se hai formule complesse.Ciao
EnricoGrazie delle informazioni, a entrambi.
-
17 Maggio 2011 alle 21:12 #58982::
http://en.wikibooks.org/wiki/TeX/binoppenalty
http://www-sop.inria.fr/miaou/tralics/doc-r.html#cmd-relpenaltyvedi un po’…cmq con 9999 ancora qualche formula resta divisa…guarda caso quelle più brutte…ma credo allora di dover intervenire dividendo la formula nell’uguale
Impostare le penalità a 10000 può non essere una cattiva idea; nel caso poi tu decida di spezzare una formula puoi farlo molto più semplicemente:
`$\mu(x -
17 Maggio 2011 alle 21:26 #58983::
È che di solito una riga viene spezzata dove c’è uno spazio (in modo testo, in effetti, non matematico).
Pagina 96 del TeXbook: TeX può spezzare una riga
- (a) a un grumo di colla (glue) che sia immediatamente preceduta da un oggetto non scartabile (una box, un carattere, …) e che non sia in una formula;
(b) a una crenatura che sia seguita da colla e che non sia in una formula;
(c) alla fine di una formula che sia seguita da colla
(d) a una penalità (che in alcuni casi è inserita automaticamente, come nel caso delle formule);
(e) a una cesura facoltativa (\discretionary, tipicamente \- oppure anche -, perché nella fase in cui si cercano le cesure TeX aggiunge dopo – un \discretionary{}{}{}).
Conseguenza di queste regole è che la combinazione
`\penalty10000\ `
inserisce uno spazio normale dove non si può spezzare una riga: infatti \penalty10000 lo inibisce e la colla inserita da “\ ” è preceduta da un elemento scartabile (la penalità lo è). E infatti ~ è definito proprio come quella combinazione.Ciao
Enrico
-
17 Maggio 2011 alle 21:57 #58984::
È che di solito una riga viene spezzata dove c’è uno spazio (in modo testo, in effetti, non matematico).
Pagina 96 del TeXbook: TeX può spezzare una riga
[ul](a) a un grumo di colla (glue) che sia immediatamente preceduta da un oggetto non scartabile (una box, un carattere, …) e che non sia in una formula;(b) a una crenatura che sia seguita da colla e che non sia in una formula;
(c) alla fine di una formula che sia seguita da colla
(d) a una penalità (che in alcuni casi è inserita automaticamente, come nel caso delle formule);
(e) a una cesura facoltativa (\discretionary, tipicamente \- oppure anche -, perché nella fase in cui si cercano le cesure TeX aggiunge dopo – un \discretionary{}{}{}).[/ul]
Conseguenza di queste regole è che la combinazione
`\penalty10000\ `
inserisce uno spazio normale dove non si può spezzare una riga: infatti \penalty10000 lo inibisce e la colla inserita da “\ ” è preceduta da un elemento scartabile (la penalità lo è). E infatti ~ è definito proprio come quella combinazione.Ciao
EnricoLe mie conoscenze si limitavano allo spazio (pur ammettendo, certo, delle eccezioni). A parte la conoscenza intuitiva e quel poco che posso aver colto leggendo qua e là, devo sicuramente approfondire alcuni argomenti che hai menzionato. In effetti ho iniziato proprio oggi a leggere (prima del TeXbook) i tuoi Appunti, e cominciano a sorgere già alcuni dubbi, ma suppongo sia per quelle “piccole bugie” che (come dici nell’Introduzione) servono a evitare di complicare troppo l’esposizione nelle parti iniziali.
Grazie e ciao
Antonio
-
18 Maggio 2011 alle 10:11 #58985::
e allora voglio fare una cosa ancor più di fino (non ho colto molto di quel che avete scritto…)Voglio che nelle formule in corpo, l’interruzione avvenga solo in prossimità di alcuni simboli, come ad esempio =, \Rightarrow, \rightarrow insomma, o simboli che dividono “bene” una formula o che non la dividono affatto, esattamente come fareste voi a mano (si va a capo con un uguale o con gli implica).
E dato che si fanno le cose in grande vorrei che andando a capo ripetesse il simbolo precedente, esempi1)
2x+y-7z=
=20a2)
a+b-c+d+
+e+f+g=03)
6x=12 =>
=> x=2Eventualmente posso dichiarare tutti i simboli che voglio che abbiano questo comportamento…
-
18 Maggio 2011 alle 10:54 #58986::
ritengo che l ripetizione dl simbolo di relazione o il simbolo binario dopo essere andati a capo, oltre a violare certe regole di tipografia (almeno come le descrive Knuth nel TeXbook) sia di pessimo gusto e residuo di una vecchia tradizione, direi, dattilografica.
(pdf)TeX, (pdf)LaTeX, XeLaTeX funzionano bene così come sono impestati e l’unica cosa che potrei accettare per modificarne le impostazioni predefinite sarebbe quello che ti ha suggerito Enrico per aumentare le penalità per evitare di andare a capo nelle formule in linea con il testo. Naturalmente tu sei tu, e si padronissimo di scegliere lo stile di scrittura dlela matematica che più ti ispira; i rischi di essere frainteso (specialmente con due segni meno, uno prima e uno dopo l’ “a capo”) li corri tu.
Capisco che manuali di tipografia che trattino anche di matematica ce ne sono pochi in giro; capisco che anche i grandi book designer come Bringhurst accennano appena alla matematica, e si capisce che non ne hanno mai scritta molta; ma andare a capo in quel modo, secondo me, e chiunque può essere di parere opposto, non ha senso: già i font usati anche dopo l’ “a capo’, lasciano capire che l’espressione continua, poi il fatto che la riga dove si va a capo termini con un segno di relazione o un segno binario ribadisce il concetto che l’espressione non è finita. Quini a che cosa serve l’operatore di relazione o quello binario? Forse leggendo 15-20 cm più a destra e tonando indietro all’inizio della riga successiva il lettore si è già dimenticato di quello che sta dicendo la formula prima di andare a capo?Mah; fai come credi, ma ti consiglio di ripensare a quello che ti proporresti di fare.
-
18 Maggio 2011 alle 11:07 #58987::
beh, io mi stavo rifacendo a quel che farei nello scrivere a mano. I due meno effettivamente sono un problema, e di regola si mette un + nella riga sopra e un – nella riga sotto.
Ma ciò che più mi urta è lo spezzare le parentesi…quello che non vorrei mai vedere èM(x>
0)=4oppure
f(x,y,
z,t)=\dot VTipicamente non uso espressioni lunghe, quindi non è sempre chiarissimo il comportamento dell’espressione da una riga all’altra. Inoltre, spero che concorderai con me nel dire che questi a capo selvaggi sono orrendi a dir poco… quindi il punto principale è far andare a capo SOLO su determinati simboli (uguaglianza, implicazione etc) che non interrompano la lettura di un membro. Poi sarebbe stato buono per me ripetere il simbolo perchè così da sempre mi hanno insegnato a fare nella carta e penna…i numeri all’inizio di una riga sono sempre un dito in un occhio…
-
18 Maggio 2011 alle 17:46 #58988::
Lo so perfettamente che non si deve andare a capo all’interno di una espressione fra parentesi, e questo, in particolare nlle formule in display, può succedere, nel senso che in display la formula non va mai a capo da sola, ma è il compositore che deve decidere dove andare a capo e in display le espressioni possono essere molto lunghe.A me le formule il linea col testo LaTeX me le ha spezzate sempre nei posti giusti, mai dentro una espressione fra parentesi, ma mentre sono sicuro che non spezzi mi dopo una parentesi aperta, non sono sicuro che non spezzi dopo un operatore di relazione o dopo un operatore binario; tuttavia a me non è mai successo. Allo stesso tempo non sarebbe impossibile mettere l’espressione fra parentesi dentro una scatola, oppure, senza usa re una scatola, usare le graffe di gruppo dentro le quali specificare mediante un breve comando le penalità infinite per i possibili break point dopo gli operatori di relazione e gli operatori binari. come non sarebbe impossibile scrive una acro dal nome tanto breve da renderlo comodo da usare il cui argomento (matematico) non debba venire spezzato per nessun motivo.
Inve quello che ti hanno insegnato a scrivere con carta penna e inchiostro non va bene quando si compone tipograficamente; come quello che si insegnava per dattilografare un manoscritto non va bene in tipografia. Avevano insegnato anche a me a duplicare il segno a inizio riga e ho provato un vero senso di liberazione quando ho scoperto che oltre a poter essere ambiguo era anche tipograficamente errato.
-
18 Maggio 2011 alle 21:33 #58989::
beh, io mi stavo rifacendo a quel che farei nello scrivere a mano. I due meno effettivamente sono un problema, e di regola si mette un + nella riga sopra e un – nella riga sotto.
Ma ciò che più mi urta è lo spezzare le parentesi…quello che non vorrei mai vedere èM(x>
0)=4oppure
f(x,y,
z,t)=\dot VTipicamente non uso espressioni lunghe, quindi non è sempre chiarissimo il comportamento dell’espressione da una riga all’altra. Inoltre, spero che concorderai con me nel dire che questi a capo selvaggi sono orrendi a dir poco… quindi il punto principale è far andare a capo SOLO su determinati simboli (uguaglianza, implicazione etc) che non interrompano la lettura di un membro. Poi sarebbe stato buono per me ripetere il simbolo perchè così da sempre mi hanno insegnato a fare nella carta e penna…i numeri all’inizio di una riga sono sempre un dito in un occhio…
L’usanza di riportare il simbolo alla nuova riga non ha alcun fondamento (la usano solo i russi, che io sappia, e la tipografia russa non è fra le migliori). Scrivere “+” a fine riga e “-” all’inizio della successiva sfiora, a mio parere, il ridicolo. Non c’è alcun bisogno di questo, come ha giustamente osservato OldClaudio: che fai? Riporti a nuova riga anche l’ultima sillaba della parola divisa? 🙂
Nel tuo primo esempio risolvi scrivendo
`M({x>0})=4`
(e probabilmente useresti una macro per inserire quell’operatore). Il secondo esempio mostra qualcosa che non accade mai: TeX non spezza una formula dopo una virgola in alcun caso; l’unica possibilità è che l’autore del documento abbia scritto
`$f(x,y,\penalty-100 z,t)=\dot V$`
o magari \break al posto di \penalty-100 (il valore dopo \penalty è irrilevante a meno che non sia 10000 o superiore).Ciao
Enrico
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.