Mi a különbség \hbox
és ?
Kapcsolódó:
- Ez a válasz a “Miben vannak a különféle dobozok ( La) TeX? “ általában különféle dobozokat tárgyal.
- Ez a válasz a” Különböző módszerek a szöveg előállításához matematikai módban “válaszra megkülönbözteti a
\text
-t a\mbox
-től.
Megjegyzések
Válasz
\hbox
egy TeX primitív, a \mbox
pedig a
\long\def\mbox#1{\leavevmode\hbox{#1}}
segítségével definiált LaTeX makró. A \leavevmode
azt jelenti, hogy elindít egy bekezdést, hasonlítsa össze:
\hbox{one} \hbox{two} three
a
\mbox{one} \mbox{two} three
A másik különbség az, hogy az argumentumot normál makró argumentumként elemzik, így például a \mbox a
működik, és megegyezik a \mbox{a}
, míg a \hbox a
szintaktikai hiba. A \mbox{\verb|{|}
hibákhoz vezet, de a \hbox{\verb|{|}
szó szerinti bejelölést tesz közzé {
.
Ha kapcsos zárójelcsoportot használ az argumentumhoz, annak explicit {}
(vagy más, 1. és 2. katkóddal rendelkező karakterekkel) kell lennie, de \hbox
használhat implicit zárójeleket, például \hbox\bgroup
… \egroup
(főleg akkor indíthat el egy mezőt egy makróban, és fejezheti be egy másikban).
Ne használja a \hbox
elemet egy LaTeX dokumentumban (bár gyakran látni fogja a belső csomag kódjában).
Igény szerint néhány további részlet a \leavevmode
-ról:
\documentclass{article} \begin{document} compare \hbox{one} \hbox{two} three with \mbox{one} \mbox{two} three see? compare zero \hbox{one} \hbox{two} three with zero \mbox{one} \mbox{two} three see? \end{document}
Az első compare
után egy bekezdéstörés van, így a TeX függőleges módba megy. Függőleges módban a dobozok függőlegesen vannak egymásra rakva. A következő két doboz \hbox
es és two
, így függőlegesen csatlakoznak az aktuális függőleges listához. Ezután következik a three
t
betű; a betűk függőleges módban nem engedélyezettek, ezért a TeX visszaszorítja a bemenetbe, és ehelyett új bekezdést indít, hozzáadja a bekezdés behúzását, majd vízszintes módban ismét látja a three
-t.
Az első with
után ismét van egy bekezdéstörés, de ezúttal a TeX látja a \leavevmode
-et (vagy pontosabban a \unhbox
definíciójában), ezért új bekezdést indít, hozzáadja a behúzást és majd vízszintes módban látja az \hbox{one}
. \leavevmode
semmit nem csinál h-módban, így a sorvégi karakterből adódó szótér ragasztása után a TeX látja a \hbox{two}
, amely vízszintesen jön a one
után, és a three
ugyanabban a bekezdésben következik.
A második compare
után a TeX ismét függőleges módban van, de a bekezdést ezúttal zero
indítja, tehát a TeX már vízszintes mód, mielőtt látná a \hbox
-et, tehát \hbox
és \mbox
ugyanúgy járnak el.
A LaTeX alapvetően bizonyos hosszúságú, hogy soha ne tegye ki a primitív TeX doboz viselkedését: az összes LaTeX mező \leavevmode
-nel kezdődik, hogy cselekedjenek mint \mbox
és nem \hbox
. (A különbség alapvetően megegyezik a \parbox
(LaTeX) és a \vbox
(TeX) és a (LaTeX) és \hrule
(TeX).)
\hbox
használata a LaTeX-ben váratlan eredményekhez vezethet. Tehát mindig használja az utóbbit, hacsak nem tudja, mit csinál ' a\hbox
.