我有一张用垂直线分割页面的表格。我希望表格的总高度与页面的高度相同,特别是让中心的垂直线从中线延伸到页面底部。
以下是示例代码:
\documentclass[oneside,12pt]{memoir}
\begin{document}
\begin{tabularx}{\stockwidth}{X|c}
\multicolumn{2}{c}{A: Main heading - variable height} \\ \midrule%
X: (This side blank) & \textbf{B: Mid heading} \\ %
\cline{2-2} \\ [1ex]%
& C: Mid Content (may be any height) \\ [1ex] \cline{2-2} \\%
& \parbox{5cm}{D: This content may be short or long, but in any %
case the line on the left %
should go to the bottom of the page.}
\end{tabularx}
\end{document}
它看起来像这样(我希望中间的垂直线延伸到页面的底部):
我想使用\vfil
或类似的东西来扩展D
到页面的高度,但我不知道如何使用它。这似乎解决了主要问题。
以下是一些奇怪的限制:
A
可以是任意高度。它从页面顶部 1 厘米处开始,距页边距 1 厘米,底部有 1 厘米的页边距。C
可以是任意高度,最高可达 5 厘米(但只有在必要时才可以扩展到该尺寸)。D
可能是两个或三个固定尺寸之一(例如 3cm、6cm 或 9cm)X
是页面宽度减去 D 的宽度,但在任何情况下不小于页面宽度的 50%(即,如果 D 大于页面的 50%,则 D 必须换行或类似操作)。这一切都在
textblock*
(来自textpos
)内,该 (来自 )已rotated
旋转 90 度(即,在纵向文档中的横向页面上),并且大小调整为\stockwidth - 2cm
;我没有复制它以尝试保持简单。
如何将垂直线延伸至区域底部(在本例中为文本块)?
谢谢阅读。
答案1
以下是使用以下组合的尝试geometry
(出于布局目的)和multicol
。
将内容放入multicols
环境中后,您可以毫无问题地调整长度,因为文本会根据需要扩展。在最小示例中(如下所示),下图仅显示最后 2 页。
\documentclass[oneside,12pt]{memoir}% http://ctan.org/pkg/memoir
\usepackage{geometry}% http://ctan.org/pkg/geometry
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{multicol}% http://ctan.org/pkg/multicol
\usepackage{pdflscape}% http://ctan.org/pkg/pdflscape
\begin{document}
\lipsum[1-10]% Prior stuff in your document
\newgeometry{margin=1cm,includeheadfoot}% Page break and modify layout
\begin{landscape}
\setlength{\columnseprule}{0.4pt}%
\noindent\centerline{A: Main heading - variable height} \par
\hrulefill
\begin{multicols}{2}
\null\columnbreak
\noindent\centerline{\textbf{B: Mid heading}} \par
\noindent\hskip-.5\columnsep\hrulefill
C: Mid Content (may be any height). C~can be any height
up to around \verb!5cm! (but it should only expand to that size if necessary.
\noindent\hskip-.5\columnsep\hrulefill
\centering
\parbox{6cm}{%
D: This content may be short or long, but in any case the line on the left
should go to the bottom of the page.
}
\rule{0pt}{\textheight}
\end{multicols}
\end{landscape}
\end{document}
\null
“欺骗” TeX 认为第一列中有内容,之后发出\columnbreak
,将该列留空。或者,您可以根据需要在此列中放入任何内容。第二列的规则已移动以与 提供的0.5\columnsep
垂直线对齐,使其看起来像表格。\columnseprule
multicol
最后使用\rule{0pt}{\textheight}
(不可见/零宽度规则)可确保第二列一直延伸到文本块的末尾,而不会因包含landscape
环境而产生错误/警告。
答案2
根据 Werner 的回答,我做了以下事情:
\documentclass[oneside,12pt]{memoir}
\usepackage{pdflscape}
\usepackage{geometry}% http://ctan.org/pkg/geometry
\begin{document}
\newgeometry{margin=1cm,includeheadfoot}% Page break and modify layout
\begin{landscape}
\noindent
\begin{tabularx}{\linewidth}{X|c}
\multicolumn{2}{c}{
\parbox[l][2cm][l]{2cm par box height}
} \\ \midrule%
X: (This side blank) & \textbf{B: Mid heading} \\ %
\cline{2-2} \\ [1ex]%
& C: Mid Content (may be any height) \\ [1ex] \cline{2-2} \\%
& \parbox[l][.60\textheight][l]{6cm}{D: This content may be short or long, but in any %
case the line on the left %
should go to the bottom of the page.}
\end{tabularx}
\end{landscape}
\end{document}
目前,这对于这个答案来说已经足够好了。:) 一个有用的技巧是\parbox[l][.60\textheight][l]{6cm}
,将单元格的高度扩展为.6\textheight
,这应该适用于我的 99.9% 的用例(当A
较短时足够高,但当相当高时不会换到新页面A
)。