Mitä eroja on \hbox
ja ?
Liittyvät:
- Tämä vastaus kysymykseen ”Mitä ovat erilaiset laatikot ( La) TeX? ” käsittelee yleensä erilaisia laatikoita.
- Tämä vastaus” Erilaisten menetelmien välinen ero tekstin tuottamiseksi matematiikkatilassa ” erottaa
\text
\mbox
.
kommentit
vastaus
\hbox
on TeX-primitiivi ja \mbox
on LaTeX-makro, joka on määritelty
\long\def\mbox#1{\leavevmode\hbox{#1}}
\leavevmode
tarkoittaa, että se aloittaa kappaleen, vertaa:
\hbox{one} \hbox{two} three
kanssa
\mbox{one} \mbox{two} three
Toinen ero on, että argumentti jäsennetään normaalina makro argumenttina, joten esimerkiksi \mbox a
toimii ja on identtinen \mbox{a}
kanssa, kun taas \hbox a
on syntaksivirhe. \mbox{\verb|{|}
johtaa virheisiin, mutta \hbox{\verb|{|}
ruudun sanatarkasti {
.
Jos käytät argumenttina aaltosulkuryhmää, sen on oltava selkeä {}
(tai muita merkkejä, joiden koodit ovat 1 ja 2), mutta \hbox
voi käyttää implisiittisiä aaltosulkeita, kuten \hbox\bgroup
… \egroup
(erityisesti voit aloittaa laatikon yhdessä makrossa ja lopettaa sen
Älä käytä \hbox
LaTeX-dokumentissa (vaikka näet sen usein sisäisessä pakettikoodissa).
Pyynnöstä joitain lisätietoja kohdasta \leavevmode
:
\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}
Ensimmäisen compare
-kohdan jälkeen on kappaleenvaihto, joten TeX siirtyy pysty -tilaan. Pystytilassa laatikot pinotaan pystysuunnassa. Seuraavat kaksi laatikkoa ovat \hbox
es ja ja two
, joten ne liitetään pystysuoraan nykyiseen pystysuuntaiseen luetteloon. Sitten tulee t
-kirjain three
; kirjaimia ei sallita pystytilassa, joten TeX työntää sen takaisin syötteeseen ja aloittaa uuden kappaleen, lisää kappaleen sisennyksen ja näkee sitten three
uudelleen vaakatasossa.
Ensimmäisen with
jälkeen on jälleen kappaleenvaihto, mutta tällä kertaa TeX näkee \leavevmode
(tai tarkemmin \unhbox
määritelmässään), joten se aloittaa uuden kappaleen, lisää sisennyksen ja sitten näkee \hbox{one}
vaakasuorassa tilassa . \leavevmode
ei tee mitään h-tilassa, joten rivin lopun merkistä johtuvan sanatilan liiman jälkeen TeX näkee \hbox{two}
, joka tulee vaakasuoraan one
jälkeen, ja three
seuraa samassa kappaleessa.
Toisen compare
jälkeen TeX on jälleen pystytilassa, mutta tällä kertaa kappaleen aloittaa zero
, joten TeX on jo vaakasuuntainen tila ennen kuin se näkee \hbox
, joten \hbox
ja \mbox
toimivat samalla tavalla.
Periaatteessa LaTeX ei koskaan paljasta primitiivistä TeX-laatikkokäyttäytymistä: kaikki LaTeX-laatikot alkavat \leavevmode
niin, että ne toimivat kuten \mbox
eikä \hbox
. (Ero on periaatteessa sama kuin ero \parbox
(LaTeX) ja \vbox
(TeX) ja (LaTeX) ja \hrule
(TeX).)
\hbox
-sovelluksen käyttö LaTeX: ssä voi johtaa odottamattomiin tuloksiin. Joten käytä aina jälkimmäistä, ellet tiedä mitä ' teet\hbox
: n kanssa.