关于这个问题如何编写一个比段落稍大、列居中且无警告的表格?我学会了将文档居中对齐。现在,我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}
表格如下: