解析具有多個可選參數的命令

解析具有多個可選參數的命令

某些 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}

缺少第二個可選參數會使第一個參數被解釋為postnote.這是程式設計師所做的選擇。

這不是一個“反例”,因為沒有一般規則可以說明。


您提到的四個命令和環境在 LaTeX 手冊中進行了描述,但擴展語法,即 和 的第二個和第三個可選參數\parboxminipage僅在 LaTeX Companion 中進行了描述。

  • \makebox[wdth][pos]{text}位於 LaTeX 手冊的第 217 頁。只有當指定第一個可選參數時,第二個可選參數才有意義;它預設為c,也可能是l,rs。它們的意思是「中心」、「左」、「右」和「展開」;前三個幾乎是顯而易見的,因為它們意味著材料如何相對於指定寬度放置;最後一個意味著材料中的空間將被拉伸以填充指定的寬度。

  • \framebox具有與完全相同的語法\makebox

  • \raisebox{raise_len}[width][depth]{text}位於 LaTeX 手冊的第 219 頁。僅當指定了第一個參數時,才能使用用於說明結果框深度的第二個可選參數。

  • \parbox[pos][height][inner-pos]{width}{text}可在 LaTeX Companion(第二版)第 866 頁找到。 LaTeX 手冊僅提到第一個可選參數。因為minipage參數具有完全相同的意義。

\parbox和的可選參數有什麼作用minipage

只有當第三個可選參數前面有其他兩個參數時,才可以給定;僅當第二個之前有第一個時。

第一個可選參數可以是c(預設)tb,表示產生的框將如何相對於周圍的材質垂直對齊。對於t對齊方式將相對於框中第一個項目的基線,對於b最後一個項目將使用;c表示盒子垂直居中,一半在基線上方,一半在基線下方(幾乎)。

第二個可選參數指定框的垂直尺寸。這是一個例子;\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}

在此輸入影像描述

我們可以使用c第三個可選參數

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

我們會得到

在此輸入影像描述

請注意,框的副檔名是相同的,只是內部的文字被移動到可用空間的中心。如果未表達第三個參數,則預設與第一個參數相同。

最後一個可選參數也可以是s,但必須提供一些靈活的空間。例如

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

會產生

在此輸入影像描述

請注意,在上述情況下,就垂直尺寸而言,均不會考慮框中最後一項的深度。在第二個範例中,該方塊是確切地垂直方向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}

在此輸入影像描述

相關內容