Вот все мои коды скомпилированы, некоторые страницы ниже.
нечетная страница четная страница
Моя проблема, длинная таблица не начинается слева на четных страницах. Это я хочу, добавить к marginparwidth
и marginparsep
.
Вот четная страница, то что я хочу.
Здесь МВЭ
\documentclass[a4paper,twoside,openright,12pt]{book}
\usepackage[left=1.5cm,right=1cm,top=3cm,bottom=1.5cm,marginparwidth=5.5cm,marginparsep=1cm,outer=8cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{longtable}
\usepackage{showframe}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\begin{longtable}[l]{|p{7cm}|p{7cm}|}
\hline
The power delivered at each instant, of course, varies with the
magnitude of the sinusoidal ac current & The power delivered at each instant, of course, varies with the magnitude of the sinusoidal ac current\\
\hline
\end{longtable}
\end{document}
Я думаю об этом так...
\checkoddpage
\ifoddpage
START -(\marginparsep+\marginparwidth)
\else
NOTHING DO
\fi
Что я должен делать?
решение1
\begin{center}
around longtable
не влияет на выравнивание, а просто добавляет лишнее вертикальное пространство.
longtable
по умолчанию выравнивается по центру, но если вам нужно выравнивание по левому краю, вы можете использовать
\begin{longtable}[l]
но вы не можете выровнять его вообще, так как он слишком широкий
Overfull \hbox (95.13185pt too wide) in alignment at lines 16--21
У вас нет места для двух 7-сантиметровых колонок,
{|p{7cm}|p{7cm}|}
сделайте эти 5 см
решение2
Начиная слева на четных страницах
Пакет showframe
визуализирует очень хорошо, почему таблица начинается с отступа на четных страницах. Как можно видеть, строка заголовка также смещена, а левое пространство занято довольно большим столбцом "marginpar" с шириной 5.5cm
. Поэтому вы можете захотеть исправить значения опций для пакета geometry
.
Слишком широкий стол
Так как таблица слишком широкая, см. Davids'sотвечать, ширину столбцов нужно уменьшить. Пакет tabularx
со своими X
столбцами можно использовать для таблиц, которые помещаются на одной странице. Также есть некоторые пакеты, которые имеют дело с объединением longtable
с tabularx
, которые можно использовать здесь.
Пример ниже вычисляет максимальную ширину. Спецификация заголовка таблицы достаточно проста.
Каждый столбец попадает на левую и правую сторону пространства \tabcolsep
(если не перезаписано в спецификации таблицы). Если пакет array
загружен, то правила также вносят вклад в пространство. Внимание, пакет array
часто загружается другими пакетами. Поэтому пример реализует тест для пакета в конце преамбулы.
Расчет может быть выполнен многими различными способами. Примерами являются package calc
, e-TeX's \dimexpr
, package pgfmath
. Пример ограничивается основными командами LaTeX \setlength
и \addtolength
.
\documentclass[a4paper,twoside,openright,12pt]{book}
\usepackage[
left=1.5cm,
right=1cm,
top=3cm,
bottom=1.5cm,
marginparwidth=5.5cm,
marginparsep=1cm,
outer=8cm
]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{array}
\usepackage{longtable}
\usepackage{showframe}
\usepackage{lipsum}
\newdimen\TabColWidth
\makeatletter
\newif\ifPackageArray
\AtBeginDocument{\@ifpackageloaded{array}{\PackageArraytrue}{}}
\makeatother
\begin{document}
\lipsum[1-3]
\setlength{\TabColWidth}{\linewidth}
\addtolength{\TabColWidth}{-4\tabcolsep}
\ifPackageArray
\addtolength{\TabColWidth}{-3\arrayrulewidth}
\fi
\setlength{\TabColWidth}{.5\TabColWidth}
\begin{longtable}[l]{|p{\TabColWidth}|p{\TabColWidth}|}
\hline
The power delivered at each instant, of course, varies with the
magnitude of the sinusoidal ac current & The power delivered at each
instant, of course, varies with the magnitude of the sinusoidal ac current\\
\hline
\end{longtable}
\end{document}