Välin ja “ aalto ” -symbolin (tilde / “ ~ ”)?

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

  • Näet eron rivin lopussa. ~ on särkymätön tila, jossa tila ei ole ' t rikkoutumaton.
  • " Olen viileä " … Se ' on melko rohkea lausunto :p
  • Se hallitsee myös tilaa, sitä ' käytetään usein \the.... -laskentakomennon jälkeen.
  • Tekstitilassa ~ = \nobreakspace
  • @yo ' Pitäisikö minun sitten poistaa nämä kysymykset?

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} 

kirjoita kuvan kuvaus tähän

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 et no ~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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *