Como garantir que duas tabelas tenham a mesma largura?

Como garantir que duas tabelas tenham a mesma largura?

Você poderia me dizer como garantir que o LATEX construa duas tabelas com a mesma largura? Incluí o código Latex para as duas tabelas que estou tentando ajustar abaixo. Obrigado pelo seu tempo, se algo não estiver claro, me avise, farei uma edição então.

\documentclass[a4paper, 11pt, oneside]{book}
\bibliographystyle{plainnat}


\makeatletter
\makeatother
\usepackage[a4paper,left=3cm,right=3cm,top=3cm,bottom=3cm]{geometry}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage{fancyhdr}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{latexsym}
\usepackage{lmodern}    
\usepackage{mathtools}
\usepackage{mdframed}
\usepackage{pgf}
\usepackage{tcolorbox}
\usepackage[flushleft]{threeparttable}
\usepackage{tikz}
\usepackage{titlesec}
\usepackage[absolute,overlay]{textpos}


    
\begin{document}
    
    \begin{table}[ht]
        \centering
        \begin{tabular}{llc}
            \toprule
            Operation   &   &Bit Complexity \\
            \midrule
            Addition        &$a+b$          &$\mathcal{O}(\log(ab)+)$ \\
            Subtraction     &$a-b$          &$\mathcal{O}(\log(ab))$ \\
            Multiplication  &$a \cdot b$    &$\mathcal{O}(\log^2(ab))$ \\
            Division with remainder     &$a = k \cdot b + r$    &$\mathcal{O}(\log^2(ab))$\\
            \bottomrule
        \end{tabular}
        \caption{Bit complexity of elementary operations in $\mathbb{Z}$.}
        \label{tab:table_1}
    \end{table}
    
    \begin{table}[ht]
        \centering
        \begin{tabular}{llc}
            \toprule
            \multicolumn{2}{c}{Operation}   &Bit Complexity \\
            \midrule
            Modular Addition        &$a+b \bmod n$          &$\mathcal{O}(\log(n))$ \\
            Modular Subtraction     &$a-b \bmod n$          &$\mathcal{O}(\log(n))$ \\
            Modular Multiplication  &$a \cdot b \bmod n$    &$\mathcal{O}(\log^2(n))$ \\
            Modular Inversion &$a^{-1} \bmod n$     &$\mathcal{O}(\log^2(n))$ \\
            Modular Exponentiation  &$a^k \bmod n$, $k < n$         &$\mathcal{O}(\log^3(n))$ \\
            \bottomrule
        \end{tabular}
        \caption{Bit complexity of elementary operations in $\mathbb{Z} \/ n \mathbb{Z}$.}
        \label{tab:table_2}
    \end{table}
    
    
    
    
\end{document}

insira a descrição da imagem aqui

Responder1

Como as duas tabelas têm os mesmos formatos de coluna, posso usar esse truque. Eu crio uma tabela grande em um savebox, contendo as duas tabelas. Depois, costumo \clipboxrecortar o que não é necessário para cada tabela individual.

\documentclass[a4paper, 11pt, oneside]{book}
\bibliographystyle{plainnat}
\makeatletter
\makeatother
\usepackage[a4paper,left=3cm,right=3cm,top=3cm,bottom=3cm]{geometry}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage{fancyhdr}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{latexsym}
\usepackage{lmodern}    
\usepackage{mathtools}
\usepackage{mdframed}
\usepackage{pgf}
\usepackage{tcolorbox}
\usepackage[flushleft]{threeparttable}
\usepackage{tikz}
\usepackage{titlesec}
\usepackage[absolute,overlay]{textpos}
\usepackage{trimclip}
\begin{document}
\newsavebox\sharedtable
\savebox\sharedtable{%
        \begin{tabular}{llc}
            \toprule
            Operation   &   &Bit Complexity \\
            \midrule
            Addition        &$a+b$          &$\mathcal{O}(\log(ab)+)$ \\
            Subtraction     &$a-b$          &$\mathcal{O}(\log(ab))$ \\
            Multiplication  &$a \cdot b$    &$\mathcal{O}(\log^2(ab))$ \\
            Division with remainder     &$a = k \cdot b + r$    &$\mathcal{O}(\log^2(ab))$\\
            \bottomrule\\
            \toprule
            \multicolumn{2}{c}{Operation}   &Bit Complexity \\
            \midrule
            Modular Addition        &$a+b \bmod n$          &$\mathcal{O}(\log(n))$ \\
            Modular Subtraction     &$a-b \bmod n$          &$\mathcal{O}(\log(n))$ \\
            Modular Multiplication  &$a \cdot b \bmod n$    &$\mathcal{O}(\log^2(n))$ \\
            Modular Inversion &$a^{-1} \bmod n$     &$\mathcal{O}(\log^2(n))$ \\
            Modular Exponentiation  &$a^k \bmod n$, $k < n$         &$\mathcal{O}(\log^3(n))$ \\
            \bottomrule
        \end{tabular}%
}
    \begin{table}[ht]
        \centering
        \clipbox{0pt 107pt 0pt 0pt}{\usebox\sharedtable}
        \vspace{-5pt}
        \caption{Bit complexity of elementary operations in $\mathbb{Z}$.}
        \label{tab:table_1}
    \end{table}    
    \begin{table}[ht]
        \centering
        \clipbox{0pt 0pt 0pt 91pt}{\usebox\sharedtable}
        \caption{Bit complexity of elementary operations in $\mathbb{Z} \/ n \mathbb{Z}$.}
        \label{tab:table_2}
    \end{table}    
\end{document}

insira a descrição da imagem aqui

Responder2

Uma maneira de garantir que as larguras gerais de duas tabelas de três colunas sejam iguais é (a) escolher uma largura geral para ambas as tabelas (digamos, 0.7\textwidth) (b) usar um tabularxambiente em vez de um tabularambiente e definir as larguras de ambos tabualarxos ambientes à largura escolhida e (c) atribuir o Xtipo de coluna a pelo menos uma coluna em ambas as tabelas. Dessa forma, dentro dos limites, o LaTeX pode variar as larguras da X(s) coluna(s) do tipo -para compensar as variações nas larguras das outras colunas.

No código abaixo, as larguras de ambas as tabelas são definidas como 0.7\textwidthe a primeira coluna de ambas as tabelas é atribuída a type X. A largura total da terceira coluna é a mesma em ambas as tabelas. Observe que a coluna do meio da segunda tabela é mais larga que a da superior. A segunda tabela compensa o aumento da largura da segunda reduzindo automaticamente a largura da primeira coluna.

As tabelas também são configuradas de forma a atribuir o modo matemático automático às duas colunas finais; isso me permitiu me livrar de muitos $símbolos, organizando significativamente o código.

insira a descrição da imagem aqui

\documentclass[a4paper, 11pt, oneside]{book}
\bibliographystyle{plainnat}

\usepackage[margin=3cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathtools,amssymb,amsthm}
\usepackage{etoolbox,fancyhdr,graphicx}
\usepackage{tabularx,booktabs,lmodern}
\newcolumntype{C}{>{$}c<{$}} % automatic math mode, centered
\newcolumntype{L}{>{$}l<{$}} % automatic math mode, left-aligned 

\usepackage{lmodern}    
\usepackage{mdframed,pgf,tikz,tcolorbox}
\usepackage[flushleft]{threeparttable}

\begin{document}
\begin{table}[ht]
\centering

\begin{tabularx}{0.7\textwidth}{@{}XLC@{}}
\toprule
Operation & & $Bit Complexity$ \\
\midrule
Addition        &a+b          &\mathcal{O}(\log(ab)+) \\
Subtraction     &a-b          &\mathcal{O}(\log(ab)) \\
Multiplication  &a \cdot b    &\mathcal{O}(\log^2(ab)) \\
Division with remainder &a = k \cdot b + r &\mathcal{O}(\log^2(ab))\\
\bottomrule
\end{tabularx}
\caption{Bit complexity of elementary operations in $\mathbb{Z}$.}
\label{tab:table_1}

\vspace{8mm}
\begin{tabularx}{0.7\textwidth}{@{}XLC@{}}
\toprule
\multicolumn{2}{@{}c}{Operation} & $Bit Complexity$ \\
\midrule
Modular Addition       &a+b \bmod n         &\mathcal{O}(\log(n)) \\
Modular Subtraction    &a-b \bmod n         &\mathcal{O}(\log(n)) \\
Modular Multiplication &a \cdot b \bmod n   &\mathcal{O}(\log^2(n)) \\
Modular Inversion      &a^{-1} \bmod n      &\mathcal{O}(\log^2(n)) \\
Modular Exponentiation &a^k \bmod n,\ k < n &\mathcal{O}(\log^3(n)) \\
\bottomrule
\end{tabularx}
\caption{Bit complexity of elementary operations in $\mathbb{Z} \/ n \mathbb{Z}$.}
\label{tab:table_2}
\end{table}

\end{document}

Responder3

se você usar, \begin{table}{ p{3cm} p{8cm} }poderá controlar a largura exata das colunas. Lembre-se de que se você quiser regras verticais entre colunas, elas também ocuparão um pouco de largura. (não sei a quantidade exata)

informação relacionada