我有一个长表和页眉,它们会获取页面上表格的第一项和最后一项。我通过汇总各种建议(例如此处)实现了解决方案长表最后一页的页眉不正确和这里longtable - 如何将页面上的第一个元素放入标题中但结果还不令人满意;页眉的边距和表格的边距不一致。
我希望使标题与表格(左右边距)一致,并且不能使表格变窄。
MWE 是:
\documentclass{scrbook}
\KOMAoptions{paper= 6.14in:9.21in,
BCOR=8mm,twoside,
headinclude=false, footinclude=false,
headings=normal,
titlepage=true,
DIV=13, % textbuecher 11 % textwidth 117
fontsize=11pt,
}
\usepackage[german]{babel}
\usepackage{booktabs,array,microtype, longtable}
\usepackage[automark,headsepline]{scrlayer-scrpage}
\rehead{\leftmark} \rohead{\leftmark}
\lehead{\rightmark} \lohead{\rightmark}
\begin{document}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
{\begin{scriptsize}
\addtolength{\oddsidemargin}{-10mm}
\addtolength{\evensidemargin}{-10mm}
\begin{longtable}{@{}
l
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{18mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{65mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{26mm}
p{9mm}}
{} & Lemma & Gedichtzeile & Gedichttitel & Index \\\\
\endfirsthead
\markboth{Abendsäuseln}{Abendsäuseln}&Abendsäuseln & Eingelullt von Abendsäuseln, & Himmelsleiter & 5:1-3\\
\markboth{abgedorrt}{abgedorrt}&abgedorrt & Doch endlich abgedorrt! & Am Sarg eines & 7:1-3\\
\markboth{alt}{alt}&alt & Hockt vor der Tür und flickt die alten Schuh und wirkt und wirkt bis ans ende der Zeit. & Wie glänzt der helle & 2:1-14\\
\markboth{alt}{alt}& & So ist die alte Eiche & Am Sarg eines & 7:1-2\\
\end{longtable}
\end{scriptsize}
}
\end{document}
有什么建议如何修复吗?
答案1
您的表格比 宽,因此溢出了右边距。计算列宽时,linewidth
您必须考虑列之间的添加。您的表格很宽,但由于您有五列,因此只有可用于列内的文本。由于我习惯于删除左右侧边距(每个边距计为 1 ),因此我需要总共减去八个额外的s。tabcolsep
\linewidth
\linewidth-10 tabcolsep
@{}
tabcolsep
tabcolsep
表格似乎向右移动了几毫米,原因是第一列在右侧l
添加了一个。因此,即使列宽为零,您也会在第 1 列和第 2 列之间看到一个,并且表格似乎没有与左边距对齐。实际上它确实对齐了。添加一个,您就会看到。因此,我通过在右侧添加一个来删除了tabcolsep
tabcolsep
\midrule
tabcolsep
@{}
l
。事实上,这与您在问题中描述的问题完全相同:longtable 的左对齐 - 不需要的最小缩进。
@{}
最后一个 -column 后面的 on删除p
了表格右侧的侧边距,确保右对齐或两端对齐的文本与右边距齐平。它还会为列内的文本添加一些额外的空间。如果您没有右对齐或两端对齐的文本,您将无法直接看到效果。
另外,我建议您计算相对于的列宽linewidth
。我加载了包计算使计算更加容易。您可以不用(使用\dimexpr
)进行计算。
在您的 MWE 中,您使用\setlength ...
。这些命令只会将文本块向内边距移动 1 厘米,不会为文本添加额外的空间。我已将它们注释掉。我也移动了一些其他代码,但这并不重要。您可以恢复这些更改。
这是我的 MWE:
\documentclass{scrbook}
\KOMAoptions{paper=6.14in:9.21in,
BCOR=8mm,twoside,
headinclude=false, footinclude=false,
headings=normal,
titlepage=true,
DIV=13, % textbücher 11 % textwidth 117
fontsize=11pt,
}
\usepackage[german]{babel}
\usepackage{booktabs,array,microtype, longtable, calc}
\usepackage[automark,headsepline]{scrlayer-scrpage}
\rehead{\leftmark} \rohead{\leftmark}
\lehead{\rightmark} \lohead{\rightmark}
\setlength\LTleft{0pt}
\setlength\LTright\fill
\newcommand{\dohang}{\hangindent1em\hangafter1}
\begin{document}
%\addtolength{\oddsidemargin}{-10mm} % These two commands only move the textarea, they do not widen it.
%\addtolength{\evensidemargin}{-10mm}
\scriptsize % `longtable` should not be put in an environment
\begin{longtable}{@{}
l@{} % You need to remove the tabcolsep in a zero width column
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{2\linewidth/12-\tabcolsep}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{6.4\linewidth/12-2\tabcolsep}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{2.5\linewidth/12-2\tabcolsep}
p{1.1\linewidth/12-\tabcolsep}@{}} % You need to subtract the tabcolseps from tabular column width
{} & Lemma & Gedichtzeile & Gedichttitel & Index\\\midrule
\endfirsthead
\markboth{Abendsäuseln}{Abendsäuseln}&Abendsäuseln & Eingelullt von Abendsäuseln, & Himmelsleiter & 5:1-3\\
\markboth{abgedorrt}{abgedorrt}&abgedorrt & Doch endlich abgedorrt! & Am Sarg eines & 7:1-3\\
\markboth{alt}{alt}&alt & Hockt vor der Tür und flickt die alten Schuh und wirkt und wirkt bis ans ende der Zeit. & Wie glänzt der helle & 2:1-14\\
\markboth{alt}{alt}& & So ist die alte Eiche & Am Sarg eines & 7:1-2\\
\end{longtable}
\normalsize
\end{document}