我有一张有两列一行的表格。第一行很长,决定了表格的整体高度(如果需要,可以将其固定为\textheight
)。第二列中有两张图片。我希望其中一张图片与第一列的顶部对齐,另一张图片与第二列的顶部对齐 - 类似于\vfill
普通页面上的效果 - 请参见下面的示例。
这\vfill
似乎不起作用,大概是因为设置该列时没有定义表的高度?
我努力了:
\measurepage
使用宏计算页面上的剩余空间这个问题并插入使用\vspace
- 不幸的是,这似乎产生的长度远远大于实际可用空间放入 0 宽度(不可见)规则来
\textheight
固定列高,然后使用它\raisebox
来将列内容上移。(这失败了)
还有其他方法吗
这是一个最小的例子
%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[10pt,a4paper,oneside,english,oldfontcommands,a4paper]{memoir}
\usepackage{fontspec}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\pdfpageheight\paperheight
\pdfpagewidth\paperwidth
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
%packages
\usepackage{calc}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{lipsum}
\newcommand\measurepage{\dimexpr\pagegoal-\pagetotal-\baselineskip\relax}
\makeatother
\usepackage{babel}
\begin{document}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\noindent\begin{tabularx}{\linewidth}{@{}X|p{0.2\linewidth}@{}}
\rule{\TX@col@width}{\textheight-\baselineskip}
&
\begingroup\rule{\linewidth}{0.15\textheight} \newline Some text \vfill \rule{\linewidth}{0.15\textheight}\endgroup \tabularnewline
\end{tabularx}
\end{document}
编辑:
这是一张展示我想要实现的效果的图片。两列表格,左侧的一列决定整体高度。右侧的两张图片应与左列内容的顶部和底部对齐。右列中的这些图片之间会有一些文本,长度可变。
到目前为止,我可以使图像底部对齐或顶部对齐,但不能使图像一张在顶部,一张在底部。
答案1
tabular
不使用环境而只使用环境似乎更简单minipage
。下面我使用该showframe
包来显示边距的位置:
\documentclass{memoir}
\usepackage[demo]{graphicx}
\usepackage{showframe}
\newcommand{\DesiredHeight}{10.0cm}%
\begin{document}
\noindent
\begin{minipage}[b][\DesiredHeight]{0.8\linewidth}
\includegraphics[height=\DesiredHeight, width=0.8\textwidth]{leftImage}
\end{minipage}%
\begin{minipage}[b][\DesiredHeight]{0.2\linewidth}\noindent
\includegraphics[width=\linewidth]{topImage}
\par\noindent
Some text and some more text.
\vfill
\includegraphics[width=\linewidth]{bottomImage}
\end{minipage}%
\end{document}
答案2
\documentclass{memoir}
\usepackage{calc}
\usepackage{tabularx}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{@{} X | p{0.2\linewidth} @{} }
\rule{\linewidth}{\textheight-\baselineskip}
&\vspace*{-3pt}%%%%%
\parbox[s][\textheight-\baselineskip]{\linewidth}{%
\rule{\linewidth}{0.15\textheight} \\
Some text \par\vfill
\rule{\linewidth}{0.15\textheight}} \tabularnewline
\end{tabularx}
\end{document}