全宽包中不显示长表标题

全宽包中不显示长表标题

我正在编写一个文档,其中长而宽的表格溢出了双面文档类中的边距区域。我正在使用马可·丹尼尔fullwidth包裹。

使用longtable(甚至longtabu) 表格可以正确“超出”边距,但标题和页脚意外消失。这是 MWE:

\documentclass[twoside,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage[inner=1in, width=345pt]{geometry}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{array}  
\usepackage{fullwidth}

\newlength{\tablewidth}
\setlength{\tablewidth}{\textwidth}
\addtolength{\tablewidth}{1in}

\begin{document}
\lipsum[1-2] 

\begin{fullwidth}[outermargin=-1in]
  \begin{longtable}{p{0.5\tablewidth}p{0.5\tablewidth}}
    \toprule
    Loren & Ipsum\\
    \midrule
    \endhead
    \lipsum[1] & \lipsum[2]\\ \midrule
    \lipsum[3] & \lipsum[4]\\ \midrule
    \lipsum[5] & \lipsum[6]\\ 
    \bottomrule
  \end{longtable}
\end{fullwidth}

\lipsum[5]

\begin{longtable}{p{0.5\tablewidth}p{0.5\tablewidth}}
  \toprule
  This & Works\\
  \midrule
  \endhead
  \lipsum[1] & \lipsum[2]\\ \midrule
  \lipsum[3] & \lipsum[4]\\ \midrule
  \lipsum[5] & \lipsum[6]\\ 
  \bottomrule
\end{longtable}
\end{document}

我也尝试过 Marco 的mdframded解决方案这里,但标题仍然没有出现。

有任何想法吗?

提前致谢。

答案1

这是一个解决方案。我们不使用fullwidth包,因为它在这里什么也做不了。

我们的想法是修补\LT@output命令(使用的特殊输出longtable),我们将表移动到左边,实际上我们只需要对偶数页执行此操作,但我们也可以对奇数页执行此操作。

\documentclass[twoside,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage[inner=1in, width=345pt]{geometry}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{array} 


\newlength{\tablewidth}
\setlength{\tablewidth}{\textwidth}
\addtolength{\tablewidth}{1in}

%%--------------------------
\usepackage{etoolbox}

\newcommand{\LTemove}{1in}%  move longtable in even pages
\newcommand{\LTomove}{0in}%  move longtable in odd pages

\makeatletter
\patchcmd{\LT@output}%
{\global\vsize\@colht}%
{\global\vsize\@colht%
\ifodd\c@page\moveleft\LTomove\else\moveleft\LTemove\fi}{}{}

\patchcmd{\LT@output}%
{\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}}%
{\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\setbox\@cclv\vbox{\ifodd\c@page\moveleft\LTomove\else\moveleft\LTemove\fi\box\@cclv}}{}{}
\makeatother
%%------------
\begin{document}
\lipsum[1-2] 
 \begin{longtable}{p{0.5\dimexpr\tablewidth-4\tabcolsep\relax}p{0.5\dimexpr\tablewidth-4\tabcolsep\relax}}
    \toprule
    Loren & Ipsum\\
    \midrule
    \endhead
    \lipsum[1] & \lipsum[2]\\ \midrule
    \lipsum[3] & \lipsum[4]\\ \midrule
    \lipsum[5] & \lipsum[6]\\ 
    \bottomrule
  \end{longtable}
\lipsum[5]


\begin{longtable}{p{0.5\dimexpr\tablewidth-4\tabcolsep\relax}p{0.5\dimexpr\tablewidth-4\tabcolsep\relax}}
  \toprule
  This & Works\\
  \midrule
  \endhead
  \lipsum[1] & \lipsum[2]\\ \midrule
  \lipsum[3] & \lipsum[4]\\ \midrule
  \lipsum[5] & \lipsum[6]\\ 
  \bottomrule
\end{longtable}
\end{document}

在此处输入图片描述


在此处输入图片描述

相关内容