複数のオプション引数を持つコマンドの解析

複数のオプション引数を持つコマンドの解析

一部の LaTeX コマンドは複数のオプション引数を受け入れます。次に例を示します。

  • \makebox[<width>][<pos>]{<text>}
  • \framebox[<width>][<pos>]{<text>}
  • \parbox[<pos>][<height>][<contentpos>]{<width>}{<text>}
  • \raisebox{<lift>}[<height>][<depth>]{<text>}
  • \begin{minipage}[<pos>][<height>][<contentpos>]{<width>} <content> \end{minipage}(実際は環境)

(しかし、私の質問は完全に一般的な意味合いで書かれています。)

オプション引数の適切なサブセットのみが指定された場合、左から順に入力されるのは直感的にわかるでしょう。<- この推測は間違っていることに注意してください。

しかし、この動作はどこかに文書化されていますか? 反例を知っている人はいますか?すべてのコマンドが持っているそのような行動をとる。

答え1

省略可能な引数が欠落している場合の解釈には、一般的な規則はありません。例として挙げたものがこれを示しています。つまり、「左から埋める」という方法はなく、あまり意味がありません。

場合によっては、コマンドの動作が引用コマンドと異なることがあります。たとえば、引用コマンドは次のbiblatex形式になります。

\command[prenote][postnote]{keys}

2 番目のオプション引数が欠落していると、最初の引数は として解釈されますpostnote。これはプログラマーが選択します。

これは「反例」ではありません。なぜなら、一般的な規則を述べることができないからです。


あなたが言及した 4 つのコマンドと環境は LaTeX マニュアルに記載されていますが、 と の 2 番目と 3 番目のオプション引数である拡張構文は\parboxminipageLaTeX Companion にのみ記載されています。

  • \makebox[wdth][pos]{text}は、LaTeX マニュアルの 217 ページにあります。2 番目のオプション引数は、最初の引数が指定されている場合にのみ意味を持ちます。デフォルトは で、またはcになることもあります。これらは、「center」、「left」、「right」、「spread」を意味します。最初の 3 つは、指定された幅に対して素材がどのように配置されるかを意味するため、ほぼ明らかです。最後の 1 つは、素材内のスペースが指定された幅を埋めるために引き伸ばされることを意味します。lrs

  • \frameboxは、\makebox

  • \raisebox{raise_len}[width][depth]{text}LaTeX マニュアルの 219 ページにあります。結果のボックスの深さを指定するための 2 番目のオプション引数は、最初の引数が指定されている場合にのみ使用できます。

  • \parbox[pos][height][inner-pos]{width}{text}LaTeX Companion (第 2 版) の 866 ページにあります。LaTeX マニュアルでは、最初のオプション引数についてのみ言及されています。minipage引数の意味はまったく同じです。

\parboxおよびのオプション引数は何をするのでしょうかminipage?

3 番目のオプション引数は、他の 2 つの引数が先行する場合にのみ指定できます。2 番目の引数は、最初の引数が先行する場合にのみ指定できます。

最初のオプション引数はc(デフォルト)、tまたは でb、結果として得られるボックスが周囲の素材に対して垂直方向にどのように配置されるかを指定します。 の場合、t配置はボックスの最初の項目のベースラインを基準に行われ、 の場合、b最後の項目が使用されます。cは、ボックスが垂直方向に中央に配置され、半分はベースラインの上、半分はベースラインの下 (ほぼ) になることを意味します。

2 番目のオプション引数は、ボックスの垂直寸法を指定します。次に例を示します。\rodベースラインのマーカーが左側に付いた測定定規を描画します。これは、\fboxボックスの拡張を示すために使用されます。

\documentclass{article}
\newcommand{\rod}[2]{%
  \leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}

\setlength{\fboxsep}{0pt}

\begin{document}

\rod{2cm}{0pt}
\fbox{\parbox[b][2cm]{.3\textwidth}{
  Some text\\
  some other text\\
  again
}}

\end{document}

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

c3番目のオプション引数として

\parbox[b][2cm][c]{.3\textwidth}{...}

そして私たちは

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

ボックスの拡張子は同じですが、内部のテキストのみが使用可能なスペースの中央に移動されることに注意してください。3 番目の引数が指定されていない場合は、デフォルトで最初の引数と同じになります。

最後のオプション引数は にすることもできますsが、ある程度の柔軟なスペースを用意する必要があります。例えば

\parbox[b][2cm][s]{.3\textwidth}{
  Some text\\[\fill]
  some other text\\[\fill]
  again
}

生産する

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

上記のいずれの場合も、ボックス内の最後のアイテムの深さは垂直方向の寸法に関しては考慮されないことに注意してください。2番目の例では、ボックスはその通り最後のものは充填接着剤なので深さがないので縦方向に2cmです。

以下は、「上」の外側配置を組み合わせた例です。前述と同様の考慮事項が適用されます。

\documentclass{article}
\newcommand{\rod}[2]{%
  \leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}

\setlength{\fboxsep}{0pt}

\begin{document}

\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm]{.3\textwidth}{
  \strut Some text\\
  some other text\\
  again
}}

\rod{0pt}{2cm}
\fbox{\parbox[t][2cm][b]{.3\textwidth}{
  \strut Some text\\
  some other text\\
  again
}}

\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm][s]{.3\textwidth}{
  \strut Some text\\
  some other text\\[\fill]
  again
}}

\end{document}

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

関連情報