我有一张宽表,我想将其横向放置,如下例所示。但它与页眉重叠!
\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}