我正在尝试将进度条垂直居中放置在表格内。下面是一个 MWE,
\documentclass[letterpaper, 12pt]{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{lscape}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{progressbar}
\begin{document}
\begin{landscape}
\vfill
\centering
\begin{threeparttable}[!h]
\caption{Timeline for blah blah blah.}
\begin{tabular}{c l p{400pt} l}
\toprule
& Target & & \\
& completion & & Percent \\
Task & date & Milestone & complete \\
\midrule
0.0 & Whenever & \blindtext & \progressbar[width=100pt, heighta=12pt, roundnessr=0.25, ticksheight=0]{0} \\
\bottomrule
\end{tabular}
\end{threeparttable}
\vfill
\end{landscape}
\end{document}
我尝试使用m{}
fromarray
和makecell
,但似乎都没有用。
答案1
如果将p
现在的列变成一m
列,则它将\progressbar
相对于文本块垂直居中:
如您所见,这也适用于前两列。
为什么这样做有效?将表格行视为一行文本。p
列的内容就像\parbox[t]{<width>}{<text>}
,而列的内容m
就像\parbox[c]{<width>}{<text>}
(就我所理解的)。 a 的可选参数\parbox
([t]
/ [c]
/ [b]
)指示它如何放置在周围文本的基线上。使用[t]
, 的第一行parbox
放置在基线上, 的[c]
(近似)垂直中心parbox
放置在基线上。一个例子:
\documentclass{article}
\begin{document}
Foo \parbox[t]{1cm}{bar baz box} lorem \parbox[c]{1cm}{bar baz box} ipsum.
\end{document}
在中也会发生同样的事情tabular
,其中一p
列的“锚点”是单元格的第一行,其m
中心就是它。
另一种可能性是保留p
列并使用\raisebox{-60pt}{\progressbar[width=100pt, heighta=12pt, roundnessr=0.25, ticksheight=0]{0}}
(必须60pt
根据长文本单元格的高度进行修改)。这会将移动到\progressbar
当前基线以下。使用列的区别m
在于,前两列中的文本仍然与Milestone
列中的第一行对齐,只有\progressbar
移动。
\documentclass[letterpaper, 12pt]{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{pdflscape}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{progressbar}
\usepackage{array}
\begin{document}
\begin{landscape}
\vfill
\centering
\begin{threeparttable}
\caption{Timeline for blah blah blah.}
\begin{tabular}{c l p{400pt} l}
\toprule
& Target & & \\
& completion & & Percent \\
Task & date & Milestone & complete \\
\midrule
0.0 & Whenever & \blindtext & \raisebox{-60pt}{\progressbar[width=100pt, heighta=12pt, roundnessr=0.25, ticksheight=0]{0}} \\
\bottomrule
\end{tabular}
\end{threeparttable}
\begin{threeparttable}
\caption{Timeline for blah blah blah.}
\begin{tabular}{c l m{400pt} l}
\toprule
& Target & & \\
& completion & & Percent \\
Task & date & Milestone & complete \\
\midrule
0.0 & Whenever & \blindtext & \progressbar[width=100pt, heighta=12pt, roundnessr=0.25, ticksheight=0]{0} \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{landscape}
\end{document}