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}
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 \clipbox
recortar 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}
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 tabularx
ambiente em vez de um tabular
ambiente e definir as larguras de ambos tabualarx
os ambientes à largura escolhida e (c) atribuir o X
tipo 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\textwidth
e 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.
\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)