Mitä eroja on \hbox ja ?

Liittyvät:

kommentit

  • Tärkein ero on, että \hbox -sovelluksen käyttö LaTeX: ssä voi johtaa odottamattomiin tuloksiin. Joten käytä aina jälkimmäistä, ellet tiedä mitä ' teet \hbox: n kanssa.

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} 

kirjoita kuvakuvaus tähän

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).)

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *