Tabularx usando alineación X con diferentes tamaños

Tabularx usando alineación X con diferentes tamaños

Estaba usando la técnica descrita.aquípero obtuve un resultado extraño en la imagen (cerca del cursor).

¿Alguna idea de por qué y cómo se puede solucionar?

ingrese la descripción de la imagen aquí

\documentclass[12pt,openright,twoside]{article}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{times}
\usepackage[table]{xcolor}
\usepackage{tabularx}

\usepackage{footnote}
\makesavenoteenv{tabular}
\makesavenoteenv{table}

\usepackage{geometry}
\geometry{margin=0.8in}


%for notes
\usepackage[show]{chato-notes}

\definecolor{light-gray}{gray}{0.65}
\definecolor{very-light-gray}{gray}{0.80}

\newcolumntype{b}{X}
\newcolumntype{s}{>{\hsize=.2\hsize}X}
\newcolumntype{v}{>{\hsize=.05\hsize}X}

\begin{document}
\date{}
\maketitle

\begin{table}[htbp]
    \centering
    %\begin{tabularx}{\textwidth}{| X | X | X |}
    \begin{tabularx}{\textwidth}{|b|s|s|}
        \hline
        Alpha     & Beta     & Gamma     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}

\end{document}

Respuesta1

Como ya mencionó @DavidCarlisle, la suma de los anchos debe sumar 3X porque tienes 3 columnas. Por lo tanto, si necesita que la columna 3, por ejemplo, sea, 0.08\textwidthdebe establecerla \hsize=3*0.08 approx 0.25\hsizeen la especificación para \newcolumntype{v}.

Mi consejo, sin embargo, es simplificar el problema utilizando simplemente la pcolumna. Vea las dos opciones a continuación:

%\newcolumntype{b}{>{\hsize=2.15\hsize}X}
%\newcolumntype{s}{>{\hsize=0.6\hsize}X}
%\newcolumntype{v}{>{\hsize=0.25\hsize}X}

\begin{table}[htbp]
    \centering
    %\begin{tabularx}{\textwidth}{|b|s|v|}  % <= This solution
    \begin{tabularx}{\textwidth}{|X|p{.2\textwidth}|p{.08\textwidth}|} % <= Or this
        \hline
        Alpha     & Beta     & Gamma     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}

ingrese la descripción de la imagen aquí

Respuesta2

Supongo que quieres tres Xcolumnas, las dos últimas tienen un ancho igual a 1/5 del ancho de la primera columna. En este caso, las proporciones α y β, algo así como las coordenadas baricéntricas, deben satisfacer las ecuaciones α = 5β, α + 2β =3, es decir, α=15/7, β=3/7. Una aproximación es 2.15y 0.425respectivamente.

Entonces creo que buscas esto:

\documentclass[12pt,openright,twoside]{article}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[table]{xcolor}
\usepackage{tabularx}

\usepackage{geometry}
\geometry{margin=0.8in,  showframe}

\begin{document}

\begin{table}[htbp]
    \centering
 \begin{tabularx}{\textwidth}{|>{\hsize=2.15\hsize}X|>{\hsize=.425\hsize}X|>{\hsize=.425\hsize}X|}
        \hline
        Alpha & Beta & Gamma \\ \hline
        0 & 2 & 4 \\ \hline
        1 & 3 & 5 \\ \hline
\end{tabularx}

\end{table}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Como conoces las proporciones de tus columnas, es decir, la primera columna debe ser cuatro veces mayor que las otras dos, simplemente puedes hacer algunos cálculos, que debes hacer de tabularxtodos modos.

\documentclass{article}
\usepackage{array}

% The available space is \textwidth
% minus twice the number of columns \tabcolsep spaces
% minus one more than the number of columns \arrayrulewidth
%
% The first two arguments to P are numerator and denominator
% and the third argument is the number of columns

% In this case the fractions are 4/6, 1/6 and 1/6
\newcolumntype{P}[3]{%
  p{#1\dimexpr(
        \textwidth-
        \tabcolsep*\numexpr2*#3\relax-
        \arrayrulewidth*\numexpr#3+1\relax
      )/#2%
  }%
}

\begin{document}

\noindent
X\dotfill X

\noindent
\begin{tabular}{|P{4}{6}{3}|P{1}{6}{3}|P{1}{6}{3}|}
\hline
Alpha     & Beta     & Gamma     \\ \hline
0         & 2        & 4         \\ \hline
1         & 3        & 5         \\ \hline
\end{tabular}

\end{document} 

Entonces solo necesitas dividir 1 en partes proporcionales a 4, 1 y 1, es decir, 4/6, 1/6 y 1/6.

ingrese la descripción de la imagen aquí

información relacionada