Címként mi a különbség egy és
~
?
A fordítás után nem látok különbséget.
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}
Megjegyzések
Válasz
A különbség a végén látható vonal. Egy szóköz megtörhető, a ~
pedig törhetetlen hely.
\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}
A három szó I
am
és cool
összeragasztva vannak a második sorban.
Válasz
A ~
egy aktív karakter , ami azt jelenti, hogy “megegyezik egy olyan makróval, mint a \mbox
és így tovább. Funkcióját a definíció, amely
\nobreakspace{}
így az ~
beírás egyenértékű az \nobreakspace{}
.
Mit csinál \nobreakspace
? Itt van:
\leavevmode\nobreak\
(szóköz követi az utolsó visszavonást.) Tehát egy bekezdés elindul, vagy semmi nem történik, ha “már szerepelünk egy bekezdésben (\leavevmode
); akkor kiáll a \nobreak
, amely tiltja az esetleges sortörést a pontban (\nobreak
), majd egy normál szóköz beillesztésre kerül.
Így gépeléskor
no~break
szóköz lesz a két szó között, de a sor nem szakad meg .
Miért a {}
a \nobreakspace
után? Ha no~break
van egy feliratban, akkor az .aux
fájlban megjelenik a kibővített verzió
no\nobreakspace {}break
A zárójeleket annak a ritka esetnek a kezelésére vezették be, amikor ~
után szóközt akarnak találni; nélkülük no~ break
írna
no\nobreakspace break
és az .aux
file, a szóköz figyelmen kívül marad. A zárójelekkel
no\nobreakspace {} break
íródik, és a további helyet nem hagyjuk figyelmen kívül.
Mi történik, ha egy típus no~ break
a kimenetben? Két szóköz hozzáadódik, de ezeknél nem lehet sortörni, mert a szóköz csak akkor kivitelezhető sorszakítási pont, ha előtte nem dobható elem áll rendelkezésre; mivel \nobreakspace
válik
\leavevmode\penalty 10000 \
és a büntetések eldobhatók, mint a szóközök, sem \
és a következő szóköz sem használható sortöréshez.
Fordított esetben no ~break
két szóköz kerül kimenetre, de most már lehetséges töréspont az első szóköznél (és mindkettő eltűnik a büntetéssel együtt, ha azt végrehajtják).
Hozzászólások
- Szép magyarázat. Mondhatok +1?
- Ön a
no~ break
-ről beszél, de nem ano ~break
-ről. Különösen ez az eset fordulhat elő, ha egy soronként egy korláta korlátozást használunk, és a tér mögött egy vonal visszatér. Mi történik ebben az esetben? - @RomainPicot Szinte ugyanaz, két szóközt kap, ha nem történik törés, de törés lehetséges (ami nem a
no~ break)
- @egreg köszönöm a pontosságot
;-)
- @RomainPicot Hozzáadtam egy utolsó megjegyzést, köszönöm a felszólítást.
Válasz
Ez a ~
meghatározása a
\catcode `\~=13 \def~{\nobreakspace{}}
míg \nobreakspace
a következő:
\DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ }
Tehát az ~
aktív karakter egyenértékű egy olyan szóközzel, amelyet nem lehet sorokra bontani.
~
egy törhetetlen tér, ahol a tér nem ' t nem törhetetlen.:p
\the....
számláló kimeneti parancs után.~
=\nobreakspace