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
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}
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~ breakmen ikke omno ~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.
~er uknuselig plass hvor som plass ikke er ' t uknuselig.:p\the....tellerutgangskommando.~=\nobreakspace