Я получил на этом сайте так много помощи в решении моих конкретных задач, а теперь понимаю, что использую что-то не то для своих целей.
Мне нужно решение (компонент или набор компонентов), которое обеспечивает несколько столбцов, возможность разбиения на страницы, выравнивание по вертикали/ширине, минимальную высоту и отсутствие интервалов между абзацами между компонентами. здесьКак сделать коробку с минимальной высотой и вертикальным выравниванием внутри коробки?У меня есть хороший ответ, для заголовка. Но он не работает с longtable
, поэтому не поддерживает разрыв страницы.
Может быть, для этой цели мне нужно использовать не таблицу, а какую-то комбинацию ящиков?
Например, пользователь создает такой шаблон:
Я беру шаблон, беру текст из БД и вставляю в том порядке, в котором хочет пользователь.
Так что я не знаю, сколько текста будет в макете. Сейчас у меня есть рабочая версия с использованием longtables
. Минимальная высота, которую я предоставляю \parbox
(если данные короткие, а макет высокий). Но тогда у меня проблема с valign - как выровнять таблицу в parbox? Если текст в макете больше - макет должен быть растянут наверняка и разбит на страницы.
Я сейчас использую такую конструкцию (каждая строка в шаблоне - один parbox с longtable), она не обеспечивает разрыв страниц и не выравнивается:
И у меня получился такой результирующий PDF (текст не выровнен и имеет большой интервал между абзацами, поэтому начинается не сверху):
Код, который я использую, следующий:
\documentclass{book}
\usepackage{fancybox,fancyhdr}
\usepackage[T1]{fontenc}
\usepackage[dvipsnames]{xcolor}
\usepackage{graphicx}
\usepackage{fixltx2e}
\usepackage[normalem]{ulem}
\usepackage[left=72pt,right=72pt,
headheight=72pt,
top=\dimexpr72pt+\headsep\relax,
textheight =592pt
]{geometry}
\usepackage{array}
\usepackage{longtable}
\usepackage[export]{adjustbox}
\newcolumntype{R}[2]{>{\raggedleft \arraybackslash \hspace{0pt}}{#2}{#1}}
\newcolumntype{L}[2]{>{\raggedright\arraybackslash}{#2}{#1}}
\newcolumntype{C}[2]{>{\center\arraybackslash}{#2}{#1}}
\fancyhf{} \fancyhead[C]{\raisebox{\dimexpr\headheight-\height}[\headheight][0pt] {\begin{tabular}{L{\textwidth}{p}}Non-disclosure agreement (NDA)\end{tabular}}}\begin{document}
\pagestyle{fancy}
\noindent\sbox{0}{\parbox{\textwidth}{\noindent\begin{longtable}{C{\textwidth}{m}}Text\end{longtable}}}
\ifdim\dimexpr\ht0+\dp0<517pt
\dp0\dimexpr517pt-\ht0\fi
\makebox{\usebox{0}}\\ \noindent\sbox{0}{\parbox{\textwidth}{\noindent\begin{longtable}{L{\textwidth}{p}}Text\end{longtable}}}
\ifdim\dimexpr\ht0+\dp0<27pt
\dp0\dimexpr27pt-\ht0\fi
\makebox{\usebox{0}}
\end{document}