Que compilé todos mis códigos, algunas páginas se encuentran a continuación.
página impar página par
Mi problema es que la tabla larga no comienza a la izquierda en páginas pares. Eso quiero, agregarlo al marginparwidth
y marginparsep
.
Aquí la página par lo que quiero.
Aquí el MWE
\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}
Estoy pensando esto como...
\checkoddpage
\ifoddpage
START -(\marginparsep+\marginparwidth)
\else
NOTHING DO
\fi
¿Qué tengo que hacer?
Respuesta1
\begin{center}
alrededor longtable
no afecta la alineación, solo agrega espacio vertical espurio.
longtable
está centrado de forma predeterminada, pero si desea alineación a la izquierda, puede usar
\begin{longtable}[l]
pero no puedes alinearlo en absoluto porque es demasiado ancho
Overfull \hbox (95.13185pt too wide) in alignment at lines 16--21
No tienes espacio para dos columnas de 7 cm,
{|p{7cm}|p{7cm}|}
haz esos 5cm
Respuesta2
Empezando por la izquierda en páginas pares
El paquete showframe
se visualiza muy bien, por eso la tabla comienza con una sangría en las páginas pares. Como puede verse, la línea del encabezado también se mueve y el espacio izquierdo está ocupado por una columna "marginpar" bastante grande con ancho 5.5cm
. Por lo tanto, es posible que desee corregir los valores de las opciones para el paquete geometry
.
mesa demasiado ancha
Como la mesa es demasiado ancha, consulte la de Davids.respuesta, es necesario reducir el ancho de las columnas. El paquete tabularx
con sus X
columnas se puede utilizar para tablas que caben en una página. También hay algunos paquetes que se ocupan de la unión de longtable
with tabularx
y que se pueden utilizar aquí.
El siguiente ejemplo calcula el ancho máximo. La especificación del cabezal de la mesa es bastante sencilla.
Cada columna se coloca en el lado izquierdo y derecho del espacio \tabcolsep
(a menos que se sobrescriba en la especificación de la tabla). Si el paquete array
está cargado, las reglas también contribuyen al espacio. Precaución, el paquete array
suele ser cargado por otros paquetes. Por lo tanto, el ejemplo implementa una prueba para el paquete al final del preámbulo.
El cálculo se puede realizar de muchas formas diferentes. Algunos ejemplos son paquete calc
, e-TeX \dimexpr
, paquete pgfmath
. El ejemplo se limita a los comandos básicos de LaTeX \setlength
y \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}