Forskjell mellom et mellomrom og et “ bølge ” symbol (tilde / “ ~ ”)?

Som tittel, hva er forskjellen mellom en og ~?

Jeg ser ingen forskjeller etter samlingen.

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} 

Kommentarer

  • Du vil se forskjellen på slutten av linjen. ~ er uknuselig plass hvor som plass ikke er ' t uknuselig.
  • " Jeg er kult " … At ' er en ganske fet uttalelse :p
  • Den styrer også plass, den ' brukes ofte etter en \the.... tellerutgangskommando.
  • I tekstmodus ~ = \nobreakspace
  • @yo ' Skal jeg slette disse spørsmålene?

Svar

Forskjellen kan sees på slutten av linjen. Et mellomrom kan brytes, og et ~ er et rom som ikke kan brytes.

\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} 

skriv inn bildebeskrivelse her

De tre ordene I am og cool limes sammen i andre linje.

Svar

~ er et aktivt tegn , som betyr at det er det samme som en makro som \mbox og så videre. Funksjonen er beskrevet av definisjon, som er

\nobreakspace{} 

så å skrive ~ tilsvarer å skrive \nobreakspace{}.

Hva gjør \nobreakspace? Her er det:

\leavevmode\nobreak\ 

(et mellomrom følger siste tilbakeslag) Så et avsnitt startes eller ingenting gjøres hvis vi allerede er i et avsnitt (\leavevmode); så utgis \nobreak, som ikke tillater et hvilket som helst linjeskift på punktet (\nobreak), og deretter settes et vanlig mellomrom inn.

Når du skriver

no~break 

, vil det være mellomrom mellom de to ordene, men linjen blir ikke brutt etter no.


Hvorfor {} etter \nobreakspace? Hvis du har no~break i bildetekst, vil den utvidede versjonen vises i .aux -filen

no\nobreakspace {}break 

Bøylene er introdusert for å takle det sjeldne tilfellet når et mellomrom etter ~ er ønsket; uten dem ville no~ break skrive

no\nobreakspace break 

og ved å lese .aux fil, vil plassen bli ignorert. Med klammeparentesene

no\nobreakspace {} break 

vil bli skrevet, og den ekstra plassen vil ikke bli ignorert.


Hva skjer hvis man skriver no~ break i utgangen? To mellomrom er lagt til, men ingen linjeskift på dem er mulig, fordi et mellomrom bare er et mulig linjeskiftpunkt hvis det ikke går foran et gjenstand som kan kastes; siden \nobreakspace blir

\leavevmode\penalty 10000 \ 

og straffer kan kastes som mellomrom, verken \ og heller ikke følgende mellomrom kan brukes til linjeskift.

I motsatt tilfelle no ~break to mellomrom ut, men nå er et bruddpunkt mulig i første omgang (og begge vil forsvinne sammen med straffen i tilfelle den blir tatt).

Kommentarer

  • Fin forklaring. Kan jeg si +1?
  • Du snakker om no~ break men ikke om no ~break. Spesielt kan dette tilfellet oppstå når du bruker en røyebegrensning per linje med en linje tilbake i rommet. Hva skjer i dette tilfellet?
  • @RomainPicot Nesten det samme, du får to mellomrom hvis det ikke skjer noe brudd, men et brudd er mulig (som ikke er med no~ break)
  • @egreg takk for presisjonen ;-)
  • @RomainPicot Jeg la til et siste notat, takk for ledeteksten.

Svar

Dette er definisjonen av ~ i latex.ltx

\catcode `\~=13 \def~{\nobreakspace{}} 

mens \nobreakspace er definert som

\DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ } 

Så, det aktive tegnet ~ tilsvarer et mellomrom som ikke kan deles opp i linjer.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *