\hboxと?

関連:

コメント

  • 主な違いは、LaTeXで\hboxを使用すると予期しない結果が生じる可能性があることです。したがって、' \hboxで何をしているのかわからない場合は、常に後者を使用してください。

回答

\hboxはTeXプリミティブであり、\mbox

\long\def\mbox#1{\leavevmode\hbox{#1}} 

\leavevmodeを介して定義されたLaTeXマクロは、段落を開始することを意味します。比較してください:

\hbox{one} \hbox{two} three 

with

\mbox{one} \mbox{two} three 

もう1つの違いは、引数が通常のマクロ引数として解析されることです。たとえば、\mbox aは機能し、\mbox{a}と同じですが、\hbox aは構文エラーです。 \mbox{\verb|{|}はエラーになりますが、\hbox{\verb|{|}は逐語的に{を囲みます。

引数に中括弧グループを使用する場合は、明示的な{}(またはcatcode 1および2の他の文字)である必要がありますが、\hboxは、\hbox\bgroup\egroupなどの暗黙的な中括弧を使用できます(特に、1つのマクロでボックスを開始して終了することができます)

LaTeXドキュメントで\hboxを使用しないでください(ただし、内部パッケージコードでよく見られます)。


リクエストに応じて、\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} 

ここに画像の説明を入力してください

最初のcompareの後に段落区切りがあるため、TeXは垂直モードになります。垂直モードでは、ボックスは垂直に積み重ねられます。次の2つのボックスは、\hboxとおよびtwoであるため、現在の垂直リストに垂直に追加されます。次に、threetという文字が表示されます。文字は垂直モードでは許可されないため、TeXはそれを入力に押し戻し、代わりに新しい段落を開始し、段落のインデントを追加してから、水平モードでthreeを再度表示します。

最初のwithの後に再び段落の区切りがありますが、今回はTeXは\leavevmode(より正確には\unhboxの定義)、新しい段落を開始し、インデントを追加すると、 水平モードで\hbox{one}が表示されます。 。 \leavevmodeはhモードでは何も実行しないため、行末文字に起因する単語スペースからの接着後、TeXは\hbox{two}を認識します。 、水平方向の後にoneが続き、threeが同じ段落の後に続きます。

2番目のcompareの後、TeXは再び垂直モードになりますが、今回は段落がzeroで開始されるため、TeXはすでに\hboxが表示される前の水平モード。したがって、\hbox\mboxは同じように動作します。

基本的に、LaTeXは、基本的なTeXボックスの動作を決して公開しないようにある程度の長さになります。すべてのLaTeXボックスは、\leavevmodeで始まるため動作します。 \mboxのように、\hboxではありません。 (違いは基本的に\parbox(LaTeX)と\vbox(TeX)と(LaTeX)および\hrule(TeX)など。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です