Mikä on nimi ja ~?
En näe eroja kokoamisen jälkeen.
MWE:
\documentclass[a4paper]{article} \usepackage[english]{babel} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{graphicx} \usepackage[colorinlistoftodos]{todonotes} \title{Your Paper} \author{You} \date{\today} \begin{document} \maketitle I am cool. I~am~cool. \end{document}
Kommentit
Vastaa
Ero näkyy lopussa linjan. Tila on rikkoutuva ja ~ on katkaisematon tila.
\documentclass[a4paper]{article} \usepackage[english]{babel} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{graphicx} \usepackage[colorinlistoftodos]{todonotes} \title{Your Paper} \author{You} \date{\today} \begin{document} \maketitle \hspace*{0.9\textwidth}I am cool. \hspace*{0.9\textwidth}I~am~cool. \end{document}
Kolme sanaa I am ja cool on liimattu yhteen toisella rivillä.
Vastaa
~ on aktiivinen merkki , mikä tarkoittaa, että se on sama kuin makro kuten \mbox ja niin edelleen. Sen toiminto kuvataan sen määritelmä, joka on
\nobreakspace{}
joten kirjoittamalla ~ vastaa \nobreakspace{}.
Mitä \nobreakspace tekee? Tässä se on:
\leavevmode\nobreak\
(välilyönti seuraa viimeistä takaviivaa.) Joten kappale aloitetaan tai mitään ei tehdä, jos ”olemme jo kappaleessa (\leavevmode); sitten annetaan \nobreak, joka estää kaikki rivinvaihdot pisteessä (\nobreak) ja lisätään sitten normaali sanatila.
Siten kirjoitettaessa
no~break
näiden kahden sanan välissä on välilyönti, mutta riviä ei katkaista .
Miksi {} \nobreakspace jälkeen? Jos sinulla on tekstin no~break, .aux -tiedostossa laajennettu versio näkyy
no\nobreakspace {}break
Aaltosulkeet on otettu käyttöön selviytyäkseen harvoista tapauksista, joissa halutaan tilaa ~ jälkeen; ilman niitä no~ break kirjoittaisi
no\nobreakspace break
ja lukiessasi .aux tiedosto, välilyönti jätetään huomiotta. Aaltosulkeilla
no\nobreakspace {} break
kirjoitetaan eikä ylimääräistä tilaa jätetä huomiotta.
Mitä tapahtuu, jos yksi tyyppi no~ break lähdössä? Kaksi välilyöntiä lisätään, mutta rivinvaihto niissä ei ole mahdollista, koska välilyönti on toteutettavissa oleva rivinvaihtopiste vain, jos sitä ei edeltää hylättävä esine; koska \nobreakspace tulee
\leavevmode\penalty 10000 \
ja rangaistukset hylätään kuten välilyönnit, kumpikaan \ eikä seuraavaa välilyöntiä voi käyttää rivinvaihtoon.
Käänteisessä tapauksessa no ~break annetaan kaksi välilyöntiä, mutta nyt katkaisupiste on mahdollinen ensimmäisessä välilyönnissä (ja molemmat katoavat yhdessä rangaistuksen kanssa, jos se toteutetaan).
Kommentit
- Hieno selitys. Voinko sanoa +1?
- Puhut
no~ break, mutta etno ~break. Erityisesti tämä tapaus voi ilmetä, kun käytetään hiirirajoitusta riviä kohden, kun rivin paluu on tilan sisällä. Mitä tapahtuu tässä tapauksessa? - @RomainPicot Lähes sama, saat kaksi välilyöntiä, jos taukoa ei tapahdu, mutta tauko on mahdollinen (mikä ei ole
no~ break) - @egreg kiitos tarkkuudesta
;-) - @RomainPicot Lisäsin viimeisen muistiinpanon, kiitos kehotuksesta.
vastaus
Tämä on määritelmä ~ kohdasta latex.ltx
\catcode `\~=13 \def~{\nobreakspace{}}
kun taas \nobreakspace määritellään seuraavasti:
\DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ }
Aktiivinen merkki ~ vastaa tilaa, jota ei voida jakaa viivoiksi.
~on särkymätön tila, jossa tila ei ole ' t rikkoutumaton.:p\the....-laskentakomennon jälkeen.~=\nobreakspace