LINUX.ORG.RU

LaTeX, таблицы


0

1

Дано: страничка с текстом, которого может быть от пары строк до половины страницы Нужно: после текста добавить таблицу, которая займет оставшуюся часть страницы. Табличка сейчас рисуется так:

\begin{tabular}{|p{0.2\columnwidth}|p{0.32\columnwidth}|p{0.32\columnwidth}|}
\hline
\textbf{Колонка1} & \textbf{Колонка2} & \textbf{Колонка3}\\
\hline\hline
\vspace{250pt} & ~ & ~ \\

\hline
\hline

\end{tabular}

те у нее фиксированная высота (1/2 страницы), что не всегда красиво выглядит. \vfill почему то не работает. Хочется сделать по человечески, но как?


Вам нужно не \vspace{250pt} делать, а \vspace{остаток}, где «остаток» можно вычислить, если вычесть из высоты страницы высоту уже сформированного блока. Как это сделать у Кнута было, лень искать.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от CFA

Таки savebox не подходит, тк текст начинается не на этой же странице, а на предыдущей. Больше ничего полезного нагуглить не удалось.

CFA ()
Ответ на: комментарий от CFA

на dxdy.ru подсказали. работает.

\newlength{\bottomspaceheigth}
\newcommand{\bottomspacecalc}{\par%
\setlength{\bottomspaceheigth}{\pagegoal-\pagetotal-\footskip}
\ifnum\bottomspaceheigth<0 \setlength{\bottomspaceheigth}{\pagegoal+\bottomspaceheigth}
\fi}

\begin{tabular}{|p{0.2\columnwidth}|p{0.32\columnwidth}|p{0.32\columnwidth}|}
\hline
\textbf{Колонка1} & \textbf{Колонка2} & \textbf{Колонка3}\\
\hline\hline
\bottomspacecalc \vspace{\bottomspaceheigth} & ~ & ~ \\

\hline
\hline

\end{tabular}

даже сейчас, зная что искать трудно найти информацию о всех этих \pagetotal \pagegoal

CFA ()

А я такую штуку сделал, основываясь на Кнутовских примерах:

\def\endout{
	\setbox0=\vbox{\unvbox255}
	\dimen0=\textheight \advance\dimen0 by-\ht0
	\advance\dimen0 by-\baselineskip
	\setbox1=\vbox{
		\box0
		\begin{tabular}{|p{0.2\columnwidth}|p{0.32\columnwidth}|p{0.32\columnwidth}|}
		\hline
		\textbf{Колонка1} & \textbf{Колонка2} & \textbf{Колонка3}\\
		\hline\hline
		\rule{0pt}{\dimen0}&&\\
		\hline\hline
		\end{tabular}
	}
	\vbox{\box1}
}
\def\filltable{\begingroup\output={\endout}\eject\endgroup\eject}
В нужные места текста вставляете \filltable, получаете разрыв страницы с заполнением до конца страницы таблицей.

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.