Tabularray превышает ширину строки

Tabularray превышает ширину строки

Я использую tabularrayдля создания таблицы с различными colspans и rowspans. Таблица имеет width = \linewidthи colspec = {|X[1]|X[1]|X[2]|}, но она превышает linewidth, и Xзапросы на ширину столбцов не выполняются:

стол

Как мне сделать так, чтобы таблица придерживалась ширины строк и учитывала указанную мной ширину столбцов?

Минимальный рабочий пример:

\documentclass{article}

\usepackage{multicol}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage{tabularray}
\usepackage{pgffor, etoolbox}

% headers and footers
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear existing header/footer entries
\fancyhead[C]{\footnotesize test}

\begin{document}

\noindent
\begin{tblr}{
    width = \linewidth,
    colspec = {|X[1]|X[1]|X[2]|}
}
%\begin{tblr}{|p{0.2\linewidth}|p{0.2\linewidth}|p{0.4\linewidth}|}
    \hline
    \SetCell[c=3]{c} \textbf{DOCUMENTATION INFORMATION PAGE} & &
    \\
    \hline
    \textbf{1. DATE} \newline date & \textbf{2. DOCUMENT TYPE} \newline document type & \textbf{3. DOCUMENT NUMBER / REV} \newline document number \space document version
    \\
    \hline
    \SetCell[c=2]{l} \textbf{4. Title \newline title } & & \textbf{5. PROJECT CODE} \newline project code
    \\
    \hline
    \SetCell[c=2]{l} \textbf{6. AUTHOR} \newline author & & \textbf{7. CUSTOMER} \newline customer
    \\
    \hline
    \SetCell[c=2,r=2]{l} {
        \textbf{8. CONTACT ADDRESS} \\
        Lorem \\
        Ipsum \\
        Dolor \\
        Sit \\
        Amet
    }
    &
    &
    \textbf{9. CONTACT PHONE} \newline telephone number \vspace{0.4em}
    \\
    \hline
    &
    &
    \textbf{10. CONTACT EMAIL} \newline author email
    \\
    \hline
    \SetCell[c=2]{l} \textbf{11. TELEPHONE NUMBER} \newline telephone number
    &
    &
    \textbf{12. NAME OF RESPONSIBLE PERSON} \newline author
    \\
    \hline
\end{tblr}

\end{document}

решение1

Не смешивайте синтаксис классических таблиц с tabularrayтекущими: вместо этого \newlineследует использовать \\.

Редактировать:Лучшего интервала между текстом ячеек вы достигнете, если измените `colspec˙ на:

colspec = {X[0.9, l,h] X[1.1, l,h] X[2,l,h]},

Учитывая это в предыдущей версии MWE, получаем

введите описание изображения здесь

Исправленный MWE составляет:

\documentclass{article}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}% For dummy text. Don't use in a real document

\usepackage{multicol}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage{tabularray}
\usepackage{pgffor, etoolbox}

% headers and footers
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear existing header/footer entries
\fancyhead[C]{\footnotesize test}

\begin{document}

\noindent%
\begin{tblr}{hlines, vlines,
             colspec = {X[0.9, l,h] X[1.1, l,h] X[2,l,h]},
             row{1}  = {font=\bfseries},
             cell{3-Z}{1} = {c=2}{},
             vspan=even
             }
\SetCell[c=3]{c}    DOCUMENTATION INFORMATION PAGE
    &   &   \\
{\textbf{1. DATE}\\ date} 
    &   {\textbf{2. DOCUMENT TYPE}\\ document type}
        &   {\textbf{3. DOCUMENT NUMBER/REV}\\ document number\\ document version}   \\
{\textbf{4. Title\\ title}} 
    &   &   {\textbf{5. PROJECT CODE}\\ project code}                                 \\
{\textbf{6. AUTHOR}\\ author}  
    &   &   {\textbf{7. CUSTOMER}\\ customer}                                       \\
\SetCell[c=2, r=2]{l}    {\textbf{8. CONTACT ADDRESS}                                    \\
                    Lorem \\
                    Ipsum \\
                    Dolor \\
                    Sit \\
                    Amet}
    &   &   {\textbf{9. CONTACT PHONE}\\ telephone number}                          \\
    &   &   {\textbf{10. CONTACT EMAIL}\\ author email}                             \\
{\textbf{11. TELEPHONE NUMBER}\\ telephone number}
    &   & {\textbf{12. NAME OF RESPONSIBLE PERSON}\\ author}                        \\
\end{tblr}
\end{document}

решение2

Используйте \\вместо \newline(и переносите {}вокруг соответствующего содержимого ячейки) и проблема исчезнет. Я действительно не знаю, почему \newlineздесь не работает (на самом деле, это глючит только в первой ячейке последней строки). В любом случае, using \\— это способ, которым руководство пакета говорит вам вставлять переносы строк в конце концов:

\documentclass{article}
\usepackage{tabularray}

% headers and footers
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear existing header/footer entries
\fancyhead[C]{\footnotesize test}

\begin{document}

\noindent
\begin{tblr}{
    width = \linewidth,
    colspec = {|X[1]|X[1]|X[2]|}
}
%\begin{tblr}{|p{0.2\linewidth}|p{0.2\linewidth}|p{0.4\linewidth}|}
    \hline
    \SetCell[c=3]{c} \textbf{DOCUMENTATION INFORMATION PAGE} & &
    \\
    \hline
    { \textbf{1. DATE} \\ date } & 
    { \textbf{2. DOCUMENT TYPE} \\ document type } & 
    { \textbf{3. DOCUMENT NUMBER / REV} \\ document number \space document version }
    \\
    \hline
    \SetCell[c=2]{l} 
    { \textbf{4. Title} \\ title } & & 
    { \textbf{5. PROJECT CODE} \\ project code }
    \\
    \hline
    \SetCell[c=2]{l} 
    { \textbf{6. AUTHOR} \\ author } & & 
    { \textbf{7. CUSTOMER} \\ customer }
    \\
    \hline
    \SetCell[c=2,r=2]{l} 
    {
        \textbf{8. CONTACT ADDRESS} \\
        Lorem \\
        Ipsum \\
        Dolor \\
        Sit \\
        Amet
    }
    &
    &
    { \textbf{9. CONTACT PHONE} \\ telephone number } \vspace{0.4em} 
    \\
    \hline
    &
    &
    { \textbf{10. CONTACT EMAIL} \\ author email }
    \\
    \hline
    \SetCell[c=2]{l} 
    { \textbf{11. TELEPHONE NUMBER} \\ telephone number }
    &
    &
    { \textbf{12. NAME OF RESPONSIBLE PERSON} \\ author }
    \\
    \hline
\end{tblr}

\end{document}

введите описание изображения здесь

Связанный контент