Не могли бы вы рассказать мне, как убедиться, что 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} }
вы можете контролировать точную ширину столбцов. Помните, что если вы хотите вертикальные линии между столбцами, они также занимают немного ширины. (Я не знаю точное количество)