
Мне нужно добавить несколько таблиц в book
документ класса. Иногда таблица шире текста. Это не проблема, если это происходит на нечетных страницах, так как у них больше правые поля, и я буду переплетать слева, как показано ниже.
Однако это становится проблемой, когда таблица должна быть на четных страницах, как показано ниже, потому что переплет происходит с правой стороны, и часть таблицы будет затронута. Следовательно, было бы лучше, чтобы дополнительная таблица занимала место с левой стороны, а не с правой на четных страницах. Как этого добиться, пожалуйста? Спасибо! Мой пример приложен ниже.
\documentclass[a4paper, twoside, hidelinks, 11pt]{book}
\usepackage{booktabs}
\usepackage{lipsum}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\ \bottomrule
\end{tabular}
\end{table}
\lipsum[1-5]
\begin{table}[h]
\centering
\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
решение1
Попробуйте это. Похоже на ответ @Werner, но я автоматизирую tabular
выравнивание.
\documentclass[a4paper, twoside, hidelinks, 11pt]{book}
\usepackage{booktabs}
\usepackage{lipsum}
\makeatletter
\newcommand*\mytabalign{%
\edef\sk@align{\ifodd\c@page l\else r\fi}
\makebox[\textwidth][\sk@align]}
\makeatother
\begin{document}
\begin{table}[h]
\centering
\mytabalign{\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\ \bottomrule
\end{tabular}}
\end{table}
\lipsum[1-5]
\begin{table}[h]
\centering
\mytabalign{\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\ \bottomrule
\end{tabular}}
\end{table}
\end{document}
Я не уверен, что это сработает правильно во всех ситуациях, но, похоже, в этом случае (внутри table
помещения) это сработало хорошо.
решение2
Я бы предложил компилировать ваш book
и подождать, чтобы настроить такие вещи в самом конце. В это время вы можете избежать \hbox
предупреждений о переполнении для слишком больших нечетных страниц, tabular
используя
\makebox[0pt][l]{\begin{tabular}{..}
...
\end{tabular}}
и даже страницы tabular
с использованием
\raggedleft
\makebox[0pt][r]{\begin{tabular}{..}
...
\end{tabular}}
Вот ваш пример в действии:
\documentclass[a4paper, twoside]{book}
\usepackage{booktabs,lipsum}
\begin{document}
\begin{table}[h]
\makebox[0pt][l]{%
\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\
\bottomrule
\end{tabular}}
\end{table}
\lipsum[1-5]
\begin{table}[h]
\raggedleft
\makebox[0pt][r]{%
\begin{tabular}{rccccc}
\toprule
Blah & Blah & Blah & Blah & Blah & Blah Blah Blah Blah \\ \midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\
\bottomrule
\end{tabular}}
\end{table}
\end{document}
Автоматизация этой процедуры действительно возможна, но это во многом зависит от вашего типичного использования tabular
(например, внутри поплавков и/или снаружи).
решение3
Основная проблема в том, что ваша таблица слишком большая, и это происходит из-за того, что в ней слишком много данных для имеющейся у вас ширины текста :) Вследствие этого я вижу разные возможности решения этой проблемы:
Измените форматирование таблицы. Например, вы можете отобразить пары на двух строках вместо использования
(... , ...)
. Или написать.123
вместо0.123
, в зависимости от соглашений, используемых в вашей области. Другой способ — использовать другие единицы масштабирования, например,2.716
вместо0.02716
с фактором$10^{-2}$
, записанным в заголовке столбца. Опять же, это может быть осуществимо или нет.Использовать
\small
размер шрифта. Этоволясделайте таблицу меньше. Однако ее может быть сложнее читать, в зависимости от фактического содержимого.Используйте плавающую среду
table
, поместите таблицу на отдельную страницу и наберите ее в альбомном формате.
Если ни одна из этих возможностей (или их комбинаций) вам не подходит, вы можете попытаться заставить LaTeX выдвинуть таблицу ввнешнийmargin вместо right margin. Пока я это писал, я увидел, что Вернер уже показал вам, как это сделать.
решение4
Решение, основанное на tabularx
, и игра с \arraycolsep
показывает, что таблица может быть ровно textwidth шириной. Я добавил siunitx
пакет для форматирования чисел в первых четырех столбцах.
\documentclass[a4paper, twoside]{book}
\usepackage{booktabs, tabularx, siunitx, lipsum}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash$}m{#1}<{$}}
\begin{document}
\lipsum[1]
\begin{table}[h]\setlength\extrarowheight{1.5pt}
\begin{tabularx}{\linewidth}{@{\,}S[table-format=-1.1]S[table-format=-1.5]S[table-format=1.5]S[table-format=1.5]XX @{\,}}
\toprule
{Blah} & Blah & Blah & Blah & \text{Blah} & \parbox{\hsize}{\centering Blah Blah Blah Blah} \\[1ex]
\midrule
-0.4 & -0.00495 & 0.02716 & 0.02719 & (0.70525, 1.34978) & (0.67622, 1.32378) \\
-0.3 & -0.00558 & 0.02534 & 0.02537 & (0.71227, 1.33488) & (0.68681, 1.31319) \\
-0.2 & -0.00616 & 0.02362 & 0.02366 & (0.71923, 1.32050) & (0.69718, 1.30282) \\
-0.1 & -0.00669 & 0.02201 & 0.02206 & (0.72613, 1.30662) & (0.70732, 1.29268) \\
0.1 & -0.00762 & 0.01909 & 0.01915 & (0.73968, 1.28034) & (0.72692, 1.27308) \\
0.2 & -0.00802 & 0.01776 & 0.01783 & (0.74636, 1.26790) & (0.73638, 1.26362) \\
0.3 & -0.00838 & 0.01652 & 0.01659 & (0.75294, 1.25591) & (0.74561, 1.25439) \\
0.4 & -0.00870 & 0.01536 & 0.01543 & (0.75945, 1.24439) & (0.75462, 1.24538) \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}