ltablex 包取消对齐我的文档并产生坏框

ltablex 包取消对齐我的文档并产生坏框

关于这个问题如何编写一个比段落稍大、列居中且无警告的表格?我学会了将文档居中对齐。现在,我ltablex按照以下问题向文档中添加内容如何自动调整我最后一个表格的列宽,以及为什么这个表格上有 Underfull \vbox 问题?

但是,如果我在不使用软件包的情况下构建文档ltablex,它将会正确输出而没有任何警告/坏框/不良信息:

在此处输入图片描述

但如果我添加ltablex,我会收到 4 个 badboxes 警告,并且所有内容都会出错:

test2.tex:65: Overfull \hbox (43.05408pt too wide) in alignment at lines 65--65 [] [] [] [] [] [] [] [] [] [] [] [] 
test2.tex: Underfull \vbox (badness 10000) detected at line 65
test2.tex:164: Overfull \hbox (44.00002pt too wide) in alignment at lines 164--164 [] [] [] [] [] [] 
test2.tex: Underfull \vbox (badness 10000) detected at line 164

在此处输入图片描述

这是我的代码,它ltablex做了一些坏事并取消了表格对齐。如果你注释掉这个ltablex包,它就会被修复。

我可以ltablex针对问题使用该包吗如何自动调整我最后一个表格的列宽,以及为什么这个表格上有 Underfull \vbox 问题?不允许它破坏我的其他表格的问题如何编写一个比段落稍大、列居中且无警告的表格?

\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm, showframe]{geometry}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}

\usepackage{mathptmx}
\usepackage{xspace}
\usepackage{microtype}
\usepackage{indentfirst}
\usepackage{lettrine}
\usepackage{graphicx}
\usepackage{float}

\usepackage{ragged2e}
\usepackage{array, multirow, tabularx}
\usepackage[strict]{changepage}% <-- added

\usepackage{hyperref}

\newcolumntype{B}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]
{%
    \gdef\currentrowstyle{#1}#1\ignorespaces
}

% Comment/uncomment this `ltablex`
\usepackage{ltablex}


\begin{document}

\section{Cronograma}

    \begin{adjustwidth}{-0.5\marginparwidth}{-0.5\marginparwidth}
    \small
    \begin{tabularx}{\linewidth}{|BX|*{11}{^c|}}

        \hline
        \multicolumn{1}{|c|}{\multirow{2}{*}{{\bfseries Etapas}}} & \multicolumn{11}{|c|}{{\bfseries Meses}} \\
        \cline{2-12}

        \rowstyle{\bfseries}
        & ago & set & out & dez & jan & fev & mar & abr & mai & jun & jul   \\ \hline

        Escrita da revisão bibliográfica
        &  x  &  x  &     &     &     &     &     &     &     &     &     \\ \hline

        Classificar todas classes e tipos de formatações
        &     &  x  &  x  &     &     &     &     &     &     &     &     \\ \hline

        Implementação de um núcleo funcional
        &     &     &  x  &  x  &     &     &     &     &     &     &     \\ \hline

        Finalização da escrita do TCC
        &     &     &     &  x  &  x  &     &     &     &     &     &     \\ \hline

        Ajustes finais no texto do TCC
        &     &     &     &     &  x  &  x  &  x  &  x  &     &     &     \\ \hline

        Defesa do TCC
        &     &     &     &     &     &     &     &     &  x  &  x  &  x  \\ \hline

    \end{tabularx}
    \end{adjustwidth}

    \hfill


\section{Custos}

    % How to align a vertical line at the end of the multicolumn in a table?
    % https://tex.stackexchange.com/questions/367075/how-to-align-a-vertical-line-at-the-end-of-the-multicolumn-in-a-table
    \begin{tabular}
    {|
        *1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }Bp{3.9cm}|} % Item
        *1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }^p{2.0cm}|} % Quantidade
        *1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }^p{3.2cm}|} % Valor, Valor
        *1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }^p{2.8cm}|} % Valor, Valor
    }

        \hline
        \rowstyle{\bfseries}
        Item                    &   Quantidade  &   Valor Unitário (R\$)    &   Valor Total (R\$) \\ \hline
        CD                      &   1           &   5,00                    &   5,00              \\ \hline
        Impressão               &   800         &   0,15                    &   120,00            \\ \hline
        Reserva Gerencial       &   1           &   20,00                   &   20,00             \\ \hline
        Reserva de Contingência &   1           &   20,00                   &   20,00             \\ \hline
        Total                   & \multicolumn{2}{c|@{\hspace{3.0pt}}}{}    &   165,00            \\ \hline

    \end{tabular}

    \medskip
    \hfill


\section{Comunicação}

    \begin{tabular}{|Bl|^l|^l|^l|}

        \hline
        \rowstyle{\bfseries}
        O quê  & De quem & Para Quem & Como                                        \\ \hline
        Proposta de TCC         & Autor     & bla bla           & Site de projetos \\ \hline
        Relatório de TCC I      & Autor     & bla bla           & Site de projetos \\ \hline
        Prévia do TCC, em TCC I & Autor     & Banca             & E-mail           \\ \hline
        Defesa do TCC           & Autor     & Banca             & Pessoalmente     \\ \hline
        Reunião de Orientação   & Orientadores  & Autor         & Pessoalmente     \\ \hline

    \end{tabular}

    \medskip
    \hfill


\section{Riscos}

    % https://tex.stackexchange.com/questions/366156/how-to-change-the-left-padding-for-one-latex-tables-cell
    % https://tex.stackexchange.com/questions/366155/how-to-write-a-table-a-little-larger-than-the-paragraphs-with-centered-columns
    %
    \begin{adjustwidth}{-0.5\marginparwidth}{-0.5\marginparwidth}
    \small
    \begin{tabularx}{\linewidth}
    {|
        *1{                 >{\RaggedRight\arraybackslash\hsize=1.1\hsize }BX        |} % Riscos
        *3{@{\hspace{3.0pt}}>{\Centering\arraybackslash                   }^p{0.95cm}|} % Probabilidade, Impacto, Prioridade
        *2{                 >{\RaggedRight\arraybackslash\hsize=0.95\hsize}^X        |} % Resposta, Prevenção
    }

    \hline

    \rowstyle{\bfseries}
    Riscos  & a & b & c & Estratégia de resposta & Ações de prevenção \\ \hline

    % Row 1
    % Riscos
    Problemas com perda de dados &
    % Probabilidade
    Baixa &
    % Impacto
    Alto &
    % Prioridade
    Alta &
    % Estratégia de resposta
    Uso do backup &
    % Ações de prevenção
    Backup periódicos \\ \hline

    % Row 2
    % Riscos
    Alteração do cronograma ou descontinuidade do projeto onde recebo uma bolsa &
    % Probabilidade
    Média &
    % Impacto
    Alto &
    % Prioridade
    Alta &
    % Estratégia de resposta
    Redefinição da data de entrega do trabalho &
    % Ações de prevenção
    Monitoramento contínuo das informações obtidas com superiores imediatos \\ \hline

    \end{tabularx}

    \hfill {\small {\bfseries a}: Probabilidade, {\bfseries b}: Impacto, {\bfseries c}: Prioridade}

    \end{adjustwidth}

    \vspace*{-4mm}
    \hfill

\end{document}

答案1

警告并不重要,它们只是通知您表格中列的自然宽度(第一列和最后一列)比可用空间要宽。为了减少它们的数量,请尝试减小\tabcolsep尺寸

我没有发现警告和ltablex(您的文档示例中未使用)之间的任何联系。但是,使用ltablex和保留功能X列表,您需要添加\keepXColumns到序言或表格之前。

通过你的小改变平均能量损失对于第一个表我获得以下结果:

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm, showframe]{geometry}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}

\usepackage{cfr-lm}
\usepackage{microtype}

\usepackage{array, makecell, multirow,
            ltablex}            % <--- doesn't change anything, 
                                % however for keep X column features
                                % you should add (before table) \keepXColumns 
\newcolumntype{B}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
                          #1\ignorespaces}
\newcolumntype{C}{>{\centering\arraybackslash}X}   % <-- new
\usepackage{siunitx}

\begin{document}
\section{Cronograma}
    \begin{center}                      % <--- adjustwidth is not necesary
    \small
    \setlength\tabcolsep{3pt}           % <--- added
    \renewcommand\arraystretch{1.3}     % <--- added
    \keepXColumns                       % <--- added
\begin{tabularx}{\linewidth}{| Bl *{11}{|@{} ^C @{}} |}
    \hline
    &   \multicolumn{11}{c|}{\textbf{Meses}}                            \\
    \cline{2-12}
\rowstyle{\bfseries\footnotesize}       % <--- changed
\multirow{-2}{*}{\hspace{20ex} Etapas}  % <--- moved here
    & ago & set & out & dez & jan & fev & mar & abr & mai & jun & jul   \\
    \hline
Escrita da revisão bibliográfica
    &  x  &  x  &     &     &     &     &     &     &     &     &       \\ \hline
Classificar todas classes e tipos de formatações
    &     &  x  &  x  &     &     &     &     &     &     &     &       \\ \hline
Implementação de um núcleo funcional
    &     &     &  x  &  x  &     &     &     &     &     &     &       \\ \hline
Finalização da escrita do TCC
    &     &     &     &  x  &  x  &     &     &     &     &     &       \\ \hline
Ajustes finais no texto do TCC
    &     &     &     &     &  x  &  x  &  x  &  x  &     &     &       \\ \hline
Defesa do TCC
    &     &     &     &     &     &     &     &     &  x  &  x  &  x    \\ \hline
\end{tabularx}
    \end{center}
\end{document}

编译上述代码,我只获得一个与以下内容相关的“坏盒子”underfull \vbox (badness10000) detected at line 52

无关:

如果您显示表格而不是tabularx使用tabu表格环境(无论是否tabu再维护并且有缺陷;在显示表格中它将毫无问题地工作)并且siunitx对于具有小数的列,使用的代码可以简化并且表格看起来更好。使用它们您的代码可以如下:

\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm, showframe]{geometry}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}

\usepackage{microtype}

\usepackage{array, multirow, tabularx}
\usepackage{ltablex}            % <--- doesn't change anything
\usepackage{tabu}               % <--- new
\usepackage{siunitx}

\begin{document}

\section{Cronograma}

    \begin{center}
    \small
    \setlength\tabcolsep{1.5pt}
    \tabulinesep =_3pt^3pt
\begin{tabu} to \linewidth {| l *{11}{| X[1,c]} |}
    \hline
    &   \multicolumn{11}{c|}{\textbf{Meses}}                            \\
    \cline{2-12}
\rowfont[c]{\bfseries\footnotesize}
\multirow{-2}{*}{\textbf{Etapas}}
    & ago & set & out & dez & jan & fev & mar & abr & mai & jun & jul   \\
    \hline
Escrita da revisão bibliográfica
    &  x  &  x  &     &     &     &     &     &     &     &     &       \\ \hline
Classificar todas classes e tipos de formatações
    &     &  x  &  x  &     &     &     &     &     &     &     &       \\ \hline
Implementação de um núcleo funcional
    &     &     &  x  &  x  &     &     &     &     &     &     &       \\ \hline
Finalização da escrita do TCC
    &     &     &     &  x  &  x  &     &     &     &     &     &       \\ \hline
Ajustes finais no texto do TCC
    &     &     &     &     &  x  &  x  &  x  &  x  &     &     &       \\ \hline
Defesa do TCC
    &     &     &     &     &     &     &     &     &  x  &  x  &  x    \\ \hline
\end{tabu}
    \end{center}

\section{Custos}

    \begin{center}
\newcolumntype Y{S [output-decimal-marker={,},
                    table-format=4.4] }
\tabucolumn Y
\tabulinesep =_3pt^3pt
\begin{tabu} {|l |*3{Y|} }
    \hline
\rowfont\bfseries
\multicolumn{1}{|c|}{Item}
            &   {Quantidade}    &   {Valor Unitário (R\$)}  &   {Valor Total (R\$)} \\
    \hline
CD          &   1               &   5,00                    &   5,00                \\ \hline
Impressão   &   800             &   0,15                    &   120,00              \\ \hline
Reserva Gerencial
            &   1               &   20,00                   &   20,00               \\ \hline
Reserva de Contingência
            &   1               &   20,00                   &   20,00               \\ \hline
Total       &   \multicolumn{2}{c|}{}                       &   165,00              \\ \hline
\end{tabu}
    \end{center}

\section{Comunicação}

    \begin{center}
    \tabulinesep =_3pt^3pt
\begin{tabu} {*{4}{| l}|}
    \hline
\rowfont[c]{\bfseries}
O quê                   & De quem       & Para Quem & Como              \\ \hline
Proposta de TCC         & Autor         & bla bla   & Site de projetos  \\ \hline
Relatório de TCC I      & Autor         & bla bla   & Site de projetos  \\ \hline
Prévia do TCC, em TCC I & Autor         & Banca     & E-mail            \\ \hline
Defesa do TCC           & Autor         & Banca     & Pessoalmente      \\ \hline
Reunião de Orientação   & Orientadores  & Autor     & Pessoalmente      \\ \hline
\end{tabu}
    \end{center}

\section{Riscos}

    \begin{center}
    \small
    \setlength\tabcolsep{3pt}
    \tabulinesep =_3pt^3pt
\begin{tabu} to \linewidth{| X[1,l] *{3}{| l} *{2}{| X[1,l]} |}
    \hline
\rowfont[c]{\bfseries}
Riscos  & a     & b     & c     & Estratégia de resposta
                                        & Ações de prevenção \\ \hline
Problemas com perda de dados
        & Baixa & Alto & Alta   & Uso do backup
                                        & Backup periódicos \\ \hline
Alteração do cronograma ou descontinuidade do projeto onde recebo uma bolsa
        & Média & Alto & Alta   & Redefinição da data de entrega do trabalho
                                        & Monitoramento contínuo das informações obtidas com superiores imediatos \\ \hline
\multicolumn{6}{r}{\textbf{a}: Probabilidade, \textbf{b}: Impacto, \textbf{c}: Prioridade}
\end{tabu}
    \end{center}
\end{document}

表格如下:

在此处输入图片描述

相关内容