- Questo topic ha 10 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 16 anni, 9 mesi fa da
illinguista1972.
-
CreatoreTopic
-
9 Dicembre 2009 alle 7:13 #40147
-
CreatoreTopic
-
AutoreRisposte
-
-
9 Dicembre 2009 alle 7:16 #40148
-
9 Dicembre 2009 alle 10:15 #40149
-
9 Dicembre 2009 alle 10:26 #40150::
Non lo so 😀
Per quello lo chiedo. Si comporta come ~ nelle interruzioni di riga?È, in linguaggio TeXnico, un \kern, dove TeX non può interrompere una riga.
~ invece è una combinazione “\penalty+\hskip”; a una \penalty è possibile l’interruzione di riga, ma siccome il valore assegnato è 10000, nel caso particolare diventa impossibile. Un’interruzione di riga è possibile a un \hskip solo se questo non è preceduto da “discardable items”; ma \penalty10000 è un “discardable item”. 😉
Ciao
Enrico
-
9 Dicembre 2009 alle 12:31 #40151
-
9 Dicembre 2009 alle 13:00 #40152::
Dalla risposta, divino che \, produca uno spazio insecabile 😉
Ciao
TommasoIn alternativa alla divinazione
`
\documentclass{article}\begin{document}\tracingall\,\end{document}
`
e si studia il log:
`
\,->\x@protect \,\protect \,\x@protect #1->\ifx \protect \@typeset@protect \else \@x@protect #1\fi
#1<-\, {\ifx} {true} {\else} {\relax} \, ->\relax \ifmmode \mskip \thinmuskip \else \thinspace \fi
{\relax}
{\ifmmode}
{false}\thinspace ->\kern .16667em
{\kern}
{\fi}`
Non è il massimo: ci vorrebbere tipo un \tracingnone subito dopo \, e prima di \end{document}.
Inoltre è sempre meglio inserirlo nel contesto,
sai mai se uno lo ridefinisce…
-
10 Dicembre 2009 alle 7:04 #40153::
È, in linguaggio TeXnico, un \kern, dove TeX non può interrompere una riga.
~ invece è una combinazione “\penalty+\hskip”; a una \penalty è possibile l’interruzione di riga, ma siccome il valore assegnato è 10000, nel caso particolare diventa impossibile. Un’interruzione di riga è possibile a un \hskip solo se questo non è preceduto da “discardable items”; ma \penalty10000 è un “discardable item”.
`
\,->\x@protect \,\protect \,\x@protect #1->\ifx \protect \@typeset@protect \else \@x@protect #1\fi
#1<-\, {\ifx} {true} {\else} {\relax} \, ->\relax \ifmmode \mskip \thinmuskip \else \thinspace \fi
{\relax}
{\ifmmode}
{false}\thinspace ->\kern .16667em
{\kern}
{\fi}`
Obscurum per obscurius… 😉Ciao,
L.
-
10 Dicembre 2009 alle 8:15 #40154::
Ringrazio tutti, ma non ci capisco un accidente. 😀Vedi di ri-formulare il problema con una domanda del tipo sì/no.
Il carattere ~ produce uno spazio insecabile, che ha delle conseguenze, per esempio, nella divisione delle parole in fin di riga. Vorrei qualcosa che agisca nello stesso modo di ~ , ma che produca uno spazio sottile.
Dunque:
il comando \, produce uno spazio sottile insecabile, sì o no?
Grazie 😉
Tommaso
-
10 Dicembre 2009 alle 9:12 #40155::
Ringrazio tutti, ma non ci capisco un accidente. 😀
Vedi di ri-formulare il problema con una domanda del tipo sì/no.
Il carattere ~ produce uno spazio insecabile, che ha delle conseguenze, per esempio, nella divisione delle parole in fin di riga. Vorrei qualcosa che agisca nello stesso modo di ~ , ma che produca uno spazio sottile.
Dunque:
il comando \, produce uno spazio sottile insecabile, sì o no?
Se devo dire la verità, il neologismo “insecabile” non mi piace affatto. A parte questo, visto che questo è il messaggio numero 6000 ❗ vedo di dilungarmi un pochino.
Ci sono due comandi primitivi per produrre spazi “orizzontali”: \hskip, che in LaTeX viene chiamato tramite \hspace, e \kern, che non ha un corrispondente LaTeX. I due comandi producono oggetti diversi, sebbene la realizzazione su una riga di stampa sia la stessa, cioè uno spazio vuoto.
Differenza fondamentale è che lo spazio prodotto da \hskip è (per meglio dire può essere) elastico, quello prodotto da \kern no. Altra differenza è che un \hskip è uno dei posti dove TeX ha facoltà di finire una riga, \kern no. In comune i due tipi di spazio hanno che entrambi spariscono se capitano all’inizio o alla fine di una riga.
Perché \kern non ha un corrispondente comando LaTeX? Si tratta di una spaziatura che va lasciata all’esperto, un trucco tipografico che non è bene divulgare troppo. 🙂 Nolite iacere margaritas ante porcos 😉 Scherzo: \kern è utile in alcuni casi, si cerchi sul forum dove è usato.
La definizione di \, è quella fatta vedere da Luigi: a parte alcune faccende con vari “protect” che servono a renderlo robusto, la definizione sostanziale è
`\relax \ifmmode \mskip \thinmuskip \else \thinspace \fi`
Il \relax serve per questioni TeXniche irrilevanti con il problema trattato (fidatevi). La parte importante è il condizionale: se si è in modo matematico, viene inserito uno spazio matematico sottile. (Lo spazio matematico, \mskip, è un terzo tipo di spaziatura, ma si può usare solo nelle formule.)In modo testo, invece, viene inserito un \kern di un ottavo di quadratone (come si vede, la definizione di \thinspace è \kern .16667em).
Per la regola citata prima, \, non potrà mai essere usato come punto dove finire una riga di stampa (nemmeno in modo matematico, per chi potesse avere dubbi: le formule possono essere spezzate solo dopo simboli di relazione o di operazione).
Adesso però voglio una giustificazione del fatto che la seguente citazione
È, in linguaggio TeXnico, un \kern, dove TeX non può interrompere una riga.
non sia risolutiva della questione posta. 🙂
Ciao
Enrico
-
10 Dicembre 2009 alle 10:57 #40156::
Ringrazio tutti, ma non ci capisco un accidente. 😀
Buon segno, ma ormai devo rincarare la dose.
Il carattere ~ produce uno spazio insecabile, che ha delle conseguenze, per esempio, nella divisione delle parole in fin di riga. Vorrei qualcosa che agisca nello stesso modo di ~ , ma che produca uno spazio sottile.
Se non trovi quello che cerchi,
puoi sempre provare con una tua macro.
In questo caso vediamo se esiste qualcosa di simile.Oltre a \tracingall, c’è sempre il sorgente da studiare,
nel ns caso se hai una tl2009, il file è
tl2009/texmf-dist/tex/latex/base/latex.ltx
(i numeri a fianco sono i numeri di linea)
`
1297 \DeclareRobustCommand{\nobreakspace}{%
1298 \leavevmode\nobreak\ }
1299 \catcode `\~=13
1300 \def~{\nobreakspace{}}
1301 \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
1302 \DeclareRobustCommand{\,}{%
1303 \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi
1304 }
`Alla riga 1299
la sempreverde questione sui caratteri attivi
http://www.texdev.net/2009/12/09/active-characters-again/
http://en.wikibooks.org/wiki/TeX/catcodeSecondo me ora sei in grado di costruirti la macro che vuoi:
io suggerisco di iniziare con
\DeclareRobustCommand{\MyNoBreakSpace}{%
%%completa tu..
%%…
%%…e testala, perchè TeX è un leone imbizzarrito, a volte
}
-
10 Dicembre 2009 alle 12:31 #40157::
Carissimo professore!
Mi metto immantinente all’opera per darLe la risposta che mi richiede.Lusingatissimo di essere il destinatario del suo seimillesimo messaggio nel forum, colgo l’occasione di uscire dal topic per proporre una libagione. Non necessariamente prima della santissima Natività. 😉
A presto
Tommaso
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.