我有一个longtable
,尽管我已将 LTleft 设置为零,但还是有一点点缩进。表格“Gedichttitel ..”的标题行与上面的文本不对齐!
到目前为止,阅读其他可能相关的问题没有帮助;例如,似乎@
在这种情况下可能有用,但我无法理解它的用途,也找不到文档(数组包的文档对我来说似乎太技术性了)。
MVE 是:
\documentclass{scrbook}
\KOMAoptions{paper= %161mm:239mm, % increased size to avoid resizing
6.14in:9.21in, %format of proof
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}
\setlength\LTleft{0pt}
\setlength\LTright\fill
\begin{document}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\section{Titel der Gedichte - Titels of Poems}
Da Gedichttitel manchmal im Laufe der Zeit verändert werden
\begin{longtable}{>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{0.7\textwidth}
p{0.15\textwidth}
p{0.05\textwidth}
p{0.1\textwidth}}
Gedichttitel - erste Zeile & Anzahl Zeilen & Buch & Nummer \\\\
\endhead
Abendblick vom Hochstein & 16 & 1 & 1 \\
Abschied & 17 & 1 & 56 \\
Als ich zum ersten Male diesen Narren & 14 & 1 & 30 \\
Als König Salomo beim Tempelbau & 14 & 1 & 50 \\
\end{longtable}
\end{document}
需要进行哪些更改才能使表格与文本完全对齐?
答案1
@{}
在第一列定义之前添加:
\documentclass{scrbook}
\KOMAoptions{paper= %161mm:239mm, % increased size to avoid resizing
6.14in:9.21in, %format of proof
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}
\setlength\LTleft{0pt}
\setlength\LTright\fill
\begin{document}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\section{Titel der Gedichte - Titels of Poems}
Da Gedichttitel manchmal im Laufe der Zeit verändert werden
\begin{longtable}{%
@{}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}
p{0.64\textwidth}
r
r
r
@{}
}
Gedichttitel - erste Zeile & \multicolumn{1}{p{0.12\textwidth}}{Anzahl Zeilen} & Buch & Nr. \\\\
\endhead
Abendblick vom Hochstein & 16 & 1 & 1 \\
Abschied & 17 & 1 & 56 \\
Als ich zum ersten Male diesen Narren & 14 & 1 & 30 \\
Als König Salomo beim Tempelbau & 14 & 1 & 50 \\
\end{longtable}
\end{document}
答案2
解决方案如下xltabular
:
\documentclass{scrbook}
\KOMAoptions{paper= %161mm:239mm, % increased size to avoid resizing
6.14in:9.21in, %format of proof
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,xltabular}
\usepackage[automark,headsepline]{scrlayer-scrpage}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\begin{document}
\section{Titel der Gedichte - Titels of Poems}
Da Gedichttitel manchmal im Laufe der Zeit verändert werden
\begin{xltabular}{\linewidth}{@{}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}X
c c c
@{}}
Gedichttitel - erste Zeile & \shortstack{Anzahl\\Zeilen} & Buch & Nummer \\\\
\endhead
Abendblick vom Hochstein & 16 & 1 & 1 \\
Abschied & 17 & 1 & 56 \\
Als ich zum ersten Male diesen Narren & 14 & 1 & 30 \\
Als König Salomo beim Tempelbau & 14 & 1 & 50 \\
\end{xltabular}
\end{document}
答案3
您还可以使用包构建表卡路里。但是,该\dohang
命令需要修改卡路里左对齐单元格。您需要将文本封装在parbox
与列宽相同的宽度中。因此,我定义了一个新命令,,\colbox
其中还包括dohang
和raggedright
命令。 parbox 的宽度使用与计算列宽时相同的公式计算,减去左右填充(侧边距):
\newcommand{\colbox}[1]{\parbox{\dimexpr(\columnwidth)/32*19-\cals@paddingL-\cals@paddingR\relax}{\raggedright\dohang #1}}
每个单元格都column 1
需要进行此修改。如果您不同意表头( )后面的规则midrule
,可以轻松将其删除。
\documentclass{scrbook}
\KOMAoptions{paper= %161mm:239mm, % increased size to avoid resizing
6.14in:9.21in, %format of proof
BCOR=8mm,twoside,
headinclude=false, footinclude=false,
headings=normal,
titlepage=true,
DIV=13, % textbuecher 11 % textwidth 117
fontsize=11pt,
}
\usepackage[german]{babel}
\usepackage{microtype, cals}
\usepackage[automark,headsepline]{scrlayer-scrpage}
\let\nc=\nullcell % CALS Shortcuts
\let\sc=\spancontent
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\makeatletter
\newcommand{\colbox}[1]{\parbox{\dimexpr(\columnwidth)/32*19-\cals@paddingL-\cals@paddingR\relax}{\raggedright\dohang #1}}
\makeatother
\begin{document}
\section{Titel der Gedichte -- Titels of Poems}
Da Gedichttitel manchmal im Laufe der Zeit verändert werden
\bigskip
\begin{calstable}[l] % Left aligned CALS tabular
% Calculate the column width
\colwidths{{\dimexpr(\columnwidth)/32*17\relax}
{\dimexpr(\columnwidth)/32*5\relax}
{\dimexpr(\columnwidth)/32*5\relax}
{\dimexpr(\columnwidth)/32*5\relax}
}
% The tabular fills the text area if sum of all columns is 32
% Set up the tabular
\makeatletter
\def\cals@framers@width{0pt} % Outside frame rules
\def\cals@framecs@width{0pt}
\def\cals@bodyrs@width{0.6pt} % Rule between header and tabular body
\def\cals@cs@width{0pt} % Inside vertical rules
\def\cals@rs@width{0pt} % Inside horizontal rules
\def\lp{\ifdim\cals@paddingL=0.0pt\relax % Left padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingL}{0pt}\fi}
\def\rp{\ifdim\cals@paddingR=0.0pt\relax % Right padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingR}{0pt}\fi}
% R1H1
\thead{% The first row are heading and vill be repeated on every page
\brow
\lp\alignL\cell{\vfill\colbox{Gedichttitel -- erste Zeile}}\lp
\alignR\cell{\vfill Anzahl Zeilen}
\alignR\cell{\vfill Buch}
\rp\alignR\cell{\vfill Nummer}\rp
\erow
}
\tfoot{\lastrule\nointerlineskip
\strut\par}
%R2B1
\brow
\lp\alignL\cell{\colbox{Abendblick vom Hochstein}}\lp
\alignR\cell{16}
\alignR\cell{1}
\rp\alignR\cell{1}\rp
\erow
%R3B2
\brow
\lp\alignL\cell{\colbox{Abschied}}\lp
\alignR\cell{17}
\alignR\cell{1}
\rp\alignR\cell{56}\rp
\erow
%R4B3
\brow
\lp\alignL\cell{\colbox{Als ich zum ersten Male diesen Narren}}\lp
\alignR\cell{14}
\alignR\cell{1}
\rp\alignR\cell{30}\rp
\erow
%R5B4
\brow
\lp\alignL\cell{\colbox{Als König Salomo beim Tempelbau}}\lp
\alignR\cell{14}
\alignR\cell{1}
\rp\alignR\cell{50}\rp
\erow
\makeatletter
\end{calstable}\par
\end{document}