ボックス内の高さと垂直方向の位置合わせを最小限に抑えたボックスを作成するにはどうすればよいですか?

ボックス内の高さと垂直方向の位置合わせを最小限に抑えたボックスを作成するにはどうすればよいですか?

最小のテーブル (1 行のテーブル) の高さを設定し、その中のコンテンツを valign する必要があります。この目的のために、正しい表形式でラップtabularし、parbox で最小の高さを取得します。parboxvalign

私の質問は、parbox でテーブルを valign する方法 (または、ミニページを使用してテーブルを作成する方法、ただし最小の高さを設定する方法) です。

ここにサンプルコードがあります(前の質問と同じです:)):テーブルを整列させる方法(ここではヘッダーにあります)

\documentclass{book}
\usepackage{fancybox,fancyhdr}
\usepackage[T1]{fontenc}
\usepackage[dvipsnames]{xcolor}

\usepackage[left=72pt,right=72pt,
    headheight=124pt,
    top=\dimexpr124pt+\headsep\relax,% <- added
    textheight =540pt
    ]{geometry}
\usepackage{array}


\newcolumntype{L}[2]{>{\raggedright\arraybackslash}{#2}{#1}}

\fancyhf{}
\fancyhead[C]{%
  \sbox{0}{\parbox{\textwidth}{\begin{tabular}{@{}L{\textwidth}{p}@{}}Non-disclosure agreement (NDA)\end{tabular}}}%
  \ifdim\dimexpr\ht0+\dp0<124pt \dp0\dimexpr124pt-\ht0\fi
  \makebox{\usebox{0}}%
}

\usepackage{lipsum}
\usepackage{showframe}
\begin{document}
\pagestyle{fancy}
\lipsum
\end{document}

コメントによる: 一般的なタスクは、1 つの生の列と複数の列、valign-halign、および固定された最小の高さを持つテーブルを作成することです。私の例では、タスクを簡素化するために 1 つの列のみを使用しています。

答え1

もっと簡単な解決策があります。

\documentclass{book}
\usepackage{fancybox,fancyhdr}
\usepackage[T1]{fontenc}
\usepackage[dvipsnames]{xcolor}

\usepackage[left=72pt,right=72pt,
    headheight=124pt,
    top=\dimexpr124pt+\headsep\relax,% <- added
    textheight =540pt
    ]{geometry}
\usepackage{array}


\newcolumntype{L}[2]{>{\raggedright\arraybackslash}{#2}{#1}}

\fancyhf{}
\fancyhead[C]{%
  %\raisebox{\dimexpr\headheight-\height}[\headheight][0pt]% top alignment
  %\raisebox{0pt}[0.5\headheight][0.5\headheight]% middle alignment
  \raisebox{\depth}[\headheight][0pt]% bottom alignment
  {\begin{tabular}{@{}L{\textwidth}{p}@{}}
  Non-disclosure agreement (NDA)\\
  %a\\b\\c\\d\\e\\f\\g\\h\\i\\j\\k\\l
  \end{tabular}}%
}

\usepackage{lipsum}
\usepackage{showframe}
\begin{document}
\pagestyle{fancy}
\lipsum
\end{document}

関連情報