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