
У меня есть таблица с несколькими длинными текстами, и я не могу втиснуть их в ширину страницы. Я вычислил оптимальный набор ширины столбцов (методом проб и ошибок в соответствии с textwidth), но когда я вставляю содержимое, оно либо ломает таблицу, либо не работает.
Позже я придумал обходной путь, теперь это не объединенная строка, выглядит ужасно, и поскольку я буду использовать таблицу в статье, я не могу это использовать. Мой обходной путь:
\documentclass{article}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{libertine}
\usepackage[verbose=true,letterpaper]{geometry}
\AtBeginDocument{
\newgeometry{
textheight=9in,
textwidth=6.5in,
top=1in,
headheight=14pt,
headsep=25pt,
footskip=30pt
}
}
\begin{document}
\begin{longtable}[h]{p{1.2cm}p{3.8cm}p{1.8cm}p{2cm}p{1.8cm}p{3.5cm}}
\caption{Sample table}
\label{table:sample} \\
\hline
\textbf{Col 1} & \textbf{Col 2} & \textbf{Slightly loooooooong name} & \textbf{Col 4} & \textbf{Col 5} & \textbf{Col 6} \\ \hline
\endfirsthead
\multicolumn{5}{c}{{\bfseries Table \thetable\ continued from previous page}} \\
\hline
\textbf{Col 1} & \textbf{Col 2} & \textbf{Slightly looooong name} & \textbf{Col 4} & \textbf{Col 5} & \textbf{Col 6} \\ \hline
\endhead
\\ \hline
\multicolumn{5}{r}{{Continued on next page}} \\ \hline
\endfoot
\\ \hline
\endlastfoot
\multirow{2}{*}{lorem ipsum} & voluptatem accusantium doloremque laudantium & 111,111 & 222,222 & 333,333 & Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad \\
& voluptatem accusantium doloremque laudantium & 444,444 & 555,555 & 666,666 \\
\end{longtable}
\end{document}
Например, на прикрепленном изображении вы можете видеть, что хотя я указал ширину столбца, он переполняется. Мне нужно, чтобы все данные междуКол 1иКол 6следует подогнать под высоту этих двух столбцов, желательно с учетом указанной мной ширины столбцов.
Когда я использовал \makecell
, это выглядело как комбинация из 3 строк. Я пробовал другие способы (многострочные с шириной и т. д.), но не смог решить свою проблему.
решение1
Если я правильно понял, вам нужно это:
\documentclass{article}
\usepackage{libertine}
\usepackage[verbose=true,letterpaper]{geometry}
\AtBeginDocument{
\newgeometry{
textheight=9in,
textwidth=6.5in,
top=1in,
headheight=14pt,
headsep=25pt,
footskip=30pt
}
}
\usepackage{tabularray}
\DefTblrTemplate{conthead-text}{normal}{\bfseries Table \thetable\ continued from previous page}
\begin{document}
\begin{longtblr}[
caption={Sample table},
label={table:sample},
]{
colspec={Q[l,1.2cm]Q[l,3.8cm]Q[l,1.8cm]Q[l,2cm]Q[l,1.8cm]Q[l,3.5cm]},
hline{1,2,Z}={solid},
row{1}={font=\bfseries},
rowhead=1,
}
Col 1 & Col 2 & Slightly loooooooong name & Col 4 & Col 5 & Col 6 \\
\SetCell[r=2]{l} lorem ipsum & voluptatem accusantium doloremque laudantium & 111,111 & 222,222 & 333,333 & \SetCell[r=2]{l} Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad \\
& voluptatem accusantium doloremque laudantium & 444,444 & 555,555 & 666,666 \\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
Other & lines & just & to & show & the page break\\
\end{longtblr}
\end{document}
решение2
Что-то вроде этого?
Обратите внимание, что я удалил эту \multirow
директиву, поскольку она здесь не имеет никакой полезной роли.
\documentclass{article}
\usepackage{longtable}
\usepackage{libertine}
\usepackage[verbose=true,letterpaper]{geometry}
\AtBeginDocument{%
\newgeometry{%
textheight=9in, textwidth=6.5in,
top=1in, headheight=14pt, headsep=25pt,
footskip=30pt
}
}
\usepackage{array}
\usepackage{ragged2e} % for '\RaggedRight' macro
\usepackage{booktabs} % for well-spaced horizontal rules
\newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}p{#1}}
\hyphenation{looooooo-ong loooo-ong} % choose something sensible
\begin{document}
\begin{longtable}{@{} P{1.2cm} P{3.9cm} *{3}{P{1.8cm}} P{3.9cm} @{}}
%% headers and footers
\caption{Sample table} \label{table:sample} \\
\toprule
\textbf{Col 1} & \textbf{Col 2} &
\textbf{Slightly loooooooong name} &
\textbf{Col 4} & \textbf{Col 5} &
\textbf{Col 6} \\
\midrule
\endfirsthead
\multicolumn{6}{@{}l}{Table \thetable, continued from preceding page} \\
\addlinespace
\toprule
\textbf{Col 1} & \textbf{Col 2} &
\textbf{Slightly looooong name} &
\textbf{Col 4} & \textbf{Col 5} &
\textbf{Col 6} \\
\midrule
\endhead
\midrule
\multicolumn{6}{r@{}}{\footnotesize Continued on next page} \\
\endfoot
\bottomrule
\endlastfoot
%% body of longtable
lorem ipsum &
voluptatem accusantium doloremque laudantium &
111,111 & 222,222 & 333,333 &
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad \\
\addlinespace
&
voluptatem accusantium doloremque laudantium &
444,444 & 555,555 & 666,666 \\
\end{longtable}
\end{document}