¿Podría decirme cómo asegurarse de que LATEX construya dos tablas del mismo ancho? Incluí el Código de Látex para las dos mesas que estoy tratando de ajustar en tamaño a continuación. Gracias por su tiempo, si algo no está claro, hágamelo saber y luego haré una edición.
\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}
Respuesta1
Como los dos cuadros tabulares tienen los mismos formatos de columna, puedo usar este truco. Creo una tabla grande en un cuadro de guardado que contiene ambas tablas. Luego, suelo \clipbox
recortar lo que no es necesario para cada mesa 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}
Respuesta2
Una forma de garantizar que los anchos generales de dos tablas de tres columnas sean los mismos es (a) elegir un ancho total para ambas tablas (digamos, 0.7\textwidth
) (b) usar un tabularx
entorno en lugar de un tabular
entorno y establecer los anchos de ambos tabualarx
entornos. al ancho elegido, y (c) asignar el X
tipo de columna a al menos una columna en ambas tablas. De esa manera, dentro de los límites, LaTeX puede variar los anchos de las X
columnas de tipo para compensar las variaciones en los anchos de las otras columnas.
En el código siguiente, los anchos de ambas tablas se establecen en 0.7\textwidth
y a la primera columna de ambas tablas se le asigna el tipo X
. El ancho total de la tercera columna es el mismo en ambas tablas. Observe que la columna del medio en la segunda tabla es más ancha que la de la superior. La segunda tabla compensa el ancho aumentado de la segunda reduciendo automáticamente el ancho de la primera columna.
Las tablas también están configuradas de manera que se asigne el modo matemático automático a las dos últimas columnas; esto me permitió deshacerme de muchos $
símbolos, ordenando significativamente el 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}
Respuesta3
si lo usas \begin{table}{ p{3cm} p{8cm} }
puedes controlar el ancho exacto de las columnas. Tenga en cuenta que si desea reglas verticales entre columnas, también deben tener un poco de ancho. (No sé la cantidad exacta)