Como alinhar esta linha vertical no final da multicoluna?
Procurei, mas não consegui encontrar uma resposta para esse problema. Isto foi originado deComo corrigir este erro de matriz de pacote: apenas uma especificação de coluna é permitida?
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\begin{document}
\section{Custos}
\begin{tabular}
{|
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{3.9cm}|} % Item
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{1.9cm}|} % Quantidade
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{3.0cm}|} % Valor
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{2.6cm}|} % Valor
}
\hline Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ \hline
Total & \multicolumn{2}{c|}{} & 165,00 \\ \hline
\end{tabular}
\end{document}
Atualização 1
Encontro outra pergunta que parece ter o mesmo problema, mas não é fácil entender o que fizeram para corrigi-lo. Tenho que abrir meu programa diff para comparar o código original e o código fixo:
À direita está o código fixo, à esquerda está o código original.
Essa tabela parte disto:
Nisso:
Atualização 2
Por@David Carlislecomentário, descubro que a pergunta mencionada no Update 1
é diferente desta:
a pergunta editada é um problema totalmente diferente. Não altere a pergunta dessa forma, invalidando todas as respostas postadas. A questão adicionada é o problema comum de colocar | no lado errado do limite da célula, a questão original não está relacionada a isso e apenas sobre o uso indevido de
Responder1
Seu preâmbulo obscureceu as especificações de coluna necessárias:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\begin{document}
\section{Custos}
\begin{tabular}
{|
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{3.9cm}|} % Item
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{1.9cm}|} % Quantidade
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{3.0cm}|} % Valor
*1{@{\hspace{3.0pt}}>{ \RaggedRight\arraybackslash\hsize=1.1\hsize }p{2.6cm}|} % Valor
}
\hline Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ \hline
Total & \multicolumn{2}{c|@{\hspace{3.0pt}}}{} & 165,00 \\ \hline
\end{tabular}
\end{document}
Saí no \hsize=1.1\hsize
mas está completamente errado! Também conforme comentado na pergunta, o @
uso aqui faz com que as regras verticais não sejam mais centralizadas no espaço entre colunas.
Responder2
Você está complicando demais as coisas aqui. Se você precisar ajustar o tabcolsep
, basta substituir o padrão 4pt
por \setlength{\tabcolsep}{3pt}
.
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\newcolumntype{R}[1]{>{\RaggedRight}p{#1}}
\setlength{\tabcolsep}{3pt}
\begin{document}
\section{Custos}
\begin{tabular}
{| R{3.9cm}| % Item
R{1.9cm}| % Quantidade
R{3.0cm}| % Valor
R{2.6cm}| % Valor
}
\hline
Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ \hline
Total & \multicolumn{2}{c|}{} & 165,00 \\ \hline
\end{tabular}
\end{document}
Responder3
Uma solução para a primeira pergunta:
O culpado é o @{\hspace{3pt}}
, que você não usou no \multicolumn
. Mas é melhor definir \tabcolsep
para 3pt
toda a tabela:
\documentclass[12pt, brazil]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[a4paper, margin=2cm, showframe]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\begin{document}
\section{Custos}
{\setlength\tabcolsep{3pt}
\begin{tabular}
{|>{\RaggedRight\arraybackslash}p{3.9cm}|% Item
>{\RaggedRight\arraybackslash}p{1.9cm}| % Quantidade
>{\RaggedRight\arraybackslash}p{3.0cm}| % Valor
>{\RaggedRight\arraybackslash}p{2.6cm}|} % Valor
\hline %
Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ %
\hline
Total & \multicolumn{2}{c|}{Lalala} & 165,00 \\ %
\hline
\end{tabular}}
\end{document}
Responder4
Eu adiciono a geometry
opção showframe
de mostrar o layout da página. Agora é melhor ver o tamanho da tabela e quão desnecessárias são as definições de estilo de coluna.
MWE:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[showframe,
a4paper, margin=2cm]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\newcolumntype{R}[1]{>{\RaggedRight}p{#1}}
%\setlength{\tabcolsep}{3pt}
\begin{document}
\section{Custos}
\begin{tabular}
{| R{4cm}| % Item
R{2cm}| % Quantidade
R{3.5cm}| % Valor
R{3cm}| % Valor
}
\hline
Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ \hline
Total & \multicolumn{2}{R{4.9cm}|}{} & 165,00 \\ \hline
\end{tabular}
\end{document}
Editar: Talvez você goste da seguinte solução:
onde for table é usado tabularx
ambiente:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[showframe,
a4paper, margin=2cm]{geometry}
\usepackage{newtxtext,newtxmath}
\usepackage{array,ragged2e,tabularx,multirow}
\newcolumntype{R}{>{\RaggedRight}X|}
\begin{document}
\section{Custos}
\begin{tabularx}{\linewidth}
{| >{\hsize=1.75\hsize}R % Item
R % Quantidade
>{\hsize=1.25\hsize}R % Valor
R % Valor
}
\hline
Item & Quantidade & Valor Unitário (R\$) & Valor Total (R\$) \\ \hline
Total & \multicolumn{2}{R}{} & 165,00 \\ \hline
\end{tabularx}
\end{document}