Как сделать так, чтобы две таблицы имели одинаковую ширину?

Как сделать так, чтобы две таблицы имели одинаковую ширину?

Не могли бы вы рассказать мне, как убедиться, что LATEX создает две таблицы одинаковой ширины? Я включил код Latex для двух таблиц, которые я пытаюсь подогнать по размеру ниже. Спасибо за ваше время, если что-то непонятно, дайте мне знать, я внесу правки.

\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}

введите описание изображения здесь

решение1

Поскольку обе таблицы имеют одинаковые форматы столбцов, я могу использовать этот трюк. Я создаю одну большую таблицу в savebox, содержащую обе таблицы. Затем я использую , \clipboxчтобы вырезать то, что не нужно для каждой отдельной таблицы.

\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}

введите описание изображения здесь

решение2

Один из способов гарантировать, что общая ширина двух трехколоночных таблиц одинакова, это (a) выбрать общую ширину для обеих таблиц (скажем, 0.7\textwidth), (b) использовать tabularxокружение вместо tabularокружения и установить ширину обоих tabualarxокружений на выбранную ширину, и (c) назначить Xтип столбца по крайней мере одному столбцу в обеих таблицах. Таким образом, в пределах границ LaTeX может изменять ширину столбцов -type, Xчтобы компенсировать различия в ширине других столбцов.

В коде ниже ширина обеих таблиц установлена ​​на , 0.7\textwidthа первому столбцу обеих таблиц назначен тип X. Общая ширина третьего столбца одинакова в обеих таблицах. Обратите внимание, что средний столбец во второй таблице шире, чем в верхнем. Вторая таблица компенсирует увеличенную ширину второй, автоматически уменьшая ширину первого столбца.

Таблицы также настроены таким образом, чтобы назначить автоматический математический режим для последних двух столбцов; это позволило мне избавиться от большого количества $символов, существенно разгрузив код.

введите описание изображения здесь

\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}

решение3

если вы используете, \begin{table}{ p{3cm} p{8cm} }вы можете контролировать точную ширину столбцов. Помните, что если вы хотите вертикальные линии между столбцами, они также занимают немного ширины. (Я не знаю точное количество)

Связанный контент