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~ break
men 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