横向宽表与标题重叠

横向宽表与标题重叠

我有一张宽表,我想将其横向放置,如下例所示。但它与页眉重叠!

\documentclass[a4paper,12pt]{scrbook}

\usepackage[pass]{geometry}
\usepackage{pdflscape}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\setheadsepline{1pt}

\usepackage{lipsum}

\begin{document}

\chapter{first chapter}
\lipsum

\begin{landscape}
    \begin{tabular}{c|ccccccccccccccc}
        some wide table & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345  \\
    \end{tabular}
\end{landscape}

\end{document}

我该如何避免这种情况?到目前为止,我只能通过减少页边距来解决问题

\newgeometry{
    top=3cm,
    bottom=1cm,
    left=1cm,
    right=1cm
    }

在横向环境之前和\restoregeometry之后。但是我必须手动定义顶部边距,并且它不会导致与文档其余部分一致的标题。

答案1

从您的 MWE 可以得出结论,您的表格不是太长,因此需要更多页面,但它比横向页面的宽度更宽。如果我的结论是正确的,那么您可以使用tabular*规定宽度等于文本高度的表格环境,并使用宏\extracolsep{\fill}}来确定列分隔。使用它您可以使用横向,但更简单/更好的方法是使用包sidewaystable中定义的浮点数rotating

\documentclass[a4paper,12pt]{scrbook}
\usepackage[pass]{geometry}
% \usepackage{pdflscape}    % not used
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\setheadsepline{1pt}
\usepackage{rotating}   % <--- new

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
\usepackage{lipsum}

\begin{document}

\chapter{first chapter}
\lipsum

\begin{sidewaystable}
\setlength\tabcolsep{0pt}
    \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}} c|ccccccccccccccc}
        some long table & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345  \\
    \end{tabular*}
\end{sidewaystable}

\end{document}

这使:

在此处输入图片描述

(红线表示页面布局)

答案2

过去我遇到过一些KOMA-Script问题pdflscape有疑问。因此,答案是约尔格(这\newenvironment{rotatepage}这篇文章中的)查看时旋转单个 PDF 页面并且hvfloat我发现了一个“非常规”的包装方式:

\documentclass[a4paper,12pt]{scrbook}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\setheadsepline{1pt}

\usepackage{lipsum}
\usepackage{hvfloat}
\usepackage{tabu}

\makeatletter
\newenvironment{rotatepage} %\newenvironment{Name}[Number]{Begin}{End}
{\if@twoside%
    \pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90} %
    \else%
    \clearpage\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
    \fi%
}%
{\if@twoside%
    \afterpage{\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}%
    \else%
    \afterpage{\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}%
    \fi%
} %
\makeatother %

\begin{document}

    \chapter{first chapter}
    \lipsum
     \vfill

    %saving the table in a box to be passed as argument to \hvfloat
    \savebox{\hvOBox}{%
%       \scalebox{0.9}{%changing the size of the table
%       \resizebox{23cm}{!} {%changing the size of the table
        \footnotesize %changing the font size of the table
       \begin{tabular}{c|ccccccccccccccc}
        some long table & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345  \\
       \end{tabular}}
%      }
     \begin{rotatepage}
    \hvFloat[capPos=r,objectAngle=90,capAngle=90,useOBox=true,]%
       {table}%
       {\hvOBox}%
       [wide table] %
       {wide table}
       {tab: wide table} 
     \end{rotatepage}
    \end{document}

输出改变字体大小:

在此处输入图片描述

答案3

如果您坚持局部改变边距而不是使表格本身变窄,您可能需要使用changepage包及其adjustwidth环境:

在此处输入图片描述

\documentclass[a4paper,12pt]{scrbook}

\usepackage[pass]{geometry}
\usepackage{pdflscape}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\setheadsepline{1pt}

\usepackage{lipsum}
\usepackage{changepage} 

\begin{document}

\chapter{first chapter}
\lipsum

\begin{landscape}
\begin{adjustwidth}{-1cm}{-1cm} \centering
    \begin{tabular}{c|ccccccccccccccc}
        some wide table & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345 & 12345  \\
    \end{tabular}
\end{adjustwidth}
\end{landscape}

\end{document}

相关内容