![longtable - 如何将页面上的第一个元素放入标题中](https://linux22.com/image/397027/longtable%20-%20%E5%A6%82%E4%BD%95%E5%B0%86%E9%A1%B5%E9%9D%A2%E4%B8%8A%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E6%94%BE%E5%85%A5%E6%A0%87%E9%A2%98%E4%B8%AD.png)
我有一个很长的 longtable(>100 页),有 4 列,代表一些文学文本的索引。索引数据是通过编程生成的,我删除了除第一次出现之外的所有第一个(索引元素)。有些情况下,一个索引元素会跟随多行,因此有些页面根本没有显示索引元素。
该页面应如下所示:
Header A-Entry
value1 value2 .. which is the continuation of A-entry
value3 value4
... many more A-entry lines till a new index entry
B-entry value5 value6
value7 value8
C-entry ...
我认为有三种解决方案:
- 在页眉中显示当前(即最后看到的)索引条目。
- 当乳胶函数在页面内重复第一列中的索引时,删除该索引。
- 将当前(即最后看到的)索引放在 longtable 的标题中。
我已经看到 问题解决方案使用struts
但未找到任何其他文档。这是解决我的问题的途径吗?
我当前的解决方案(按照收到的建议)是:
\documentclass{article}
\usepackage[german]{babel}
\usepackage{booktabs,array,microtype, longtable}
\usepackage{alltt} % to use input with commands
\usepackage{fontspec}
\newfontfamily{\tablefont}{ebgaramond}
\usepackage{lmodern} % to avoid scalable font error
\usepackage[automark,headsepline,plainheadsepline]{scrlayer-scrpage}
\begin{document}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\begin{scriptsize}\tablefont
\mark{ AAA3mal}
\begin{longtable}{@{}
l
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{18mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{55mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{26mm}
p{9mm}}
{} & Lemma & Gedichtzeile & Gedichttitel & Index \\\\
\endfirsthead
\markboth{Trankst}{Trankst}&Trankst & Trankst du begierig, durst'ger Greis! & Am Sarg eines & 7:1-12\\
\markboth{traulich}{traulich}&traulich & Wo, traulich sich dran schmiegend, es & Im Schnee & 1:1-13\\
\markboth{träumend}{träumend}&träumend & Welche träumend drinnen schliefen & Himmelsleiter & 5:2-1\\
\markboth{Türe}{Türe}&Türe & Hockt vor der Tür und flickt die alten Schuh. & Wie glänzt der helle &
\end{longtable}
\end{scriptsize}
\end{document}
该解决方案之所以有效,是因为我已经(以编程方式)生成了数据行以形成索引,并在没有条目 XXX 开始时向每行添加 a\markboth{XXX}{XXX}&
或 just &
。其次,我添加了一个类型为“l”且标题为“{}”的空列,因为“p”列不会触发该\mark
命令。它可以工作,但不能与更简单的一起使用\mark
。
答案1
我收到了建议并找到了其他提示;模板“dictionary.tex”特别有用。使用 KOMAscript scrbook 的解决方案非常简单,只需 3 行:
\usepackage[automark,headsepline,plainheadsepline]{scrlayer-scrpage}
\rehead{\leftmark} \rohead{\leftmark}
\lehead{\rightmark} \lohead{\rightmark}
诀窍是将右标题设置为 \leftmark (最后一个看到的),将左标题设置为 \rightmark (第一个看到的)。
作为完整的 MWE:
\documentclass{scrbook}
\usepackage{booktabs,array,microtype, longtable}
\usepackage[automark,headsepline,plainheadsepline]{scrlayer-scrpage}
\rehead{\leftmark} \rohead{\leftmark}
\lehead{\rightmark} \lohead{\rightmark}
\begin{document}
\newcommand{\dohang}{\hangindent1em\hangafter1 }
\begin{longtable}{@{}
l
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{18mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{55mm}
>{\everypar{\dohang}\dohang\raggedright\arraybackslash}p{26mm}
p{9mm}}
{} & Lemma & Gedichtzeile & Gedichttitel & Index \\\\
\endfirsthead
% \input{index}
\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. & Wie glänzt der helle & 2:1-14\\
\markboth{alt}{alt}& & So ist die alte Eiche & Am Sarg eines & 7:1-2\\
\markboth{anfüllen}{anfüllen}&anfüllen & Angefüllt wird jedes Tal, & Am Himmelfahrtstage & 4:1-6\\
\markboth{Auge}{Auge}&Auge & Und ein Spielen vor den Augen & Himmelsleiter & 5:1-7\\
\markboth{ausklingen}{ausklingen}&ausklingen & Ein ausgeklungen Gotteswort. & Am Sarg eines & 7:1-6\\
\markboth{außenßen}{außenßen}&außenßen & Kein Neider schilt's, nicht aussen und nicht innen. & Jeder Schein trügt & 6:1-4\\
\markboth{aussterben}{aussterben}&aussterben & Ausgestorben scheint die Stadt, & Am Himmelfahrtstage & 4:1-1\\
\markboth{begeben}{begeben}&begeben & Sich hinaus begeben hat & Am Himmelfahrtstage & 4:1-4\\
\markboth{begierig}{begierig}&begierig & Trankst du begierig, durst'ger Greis! & Am Sarg eines & 7:1-12\\
\markboth{beginnen}{beginnen}&beginnen & Da begann von Licht und Blumen & Himmelsleiter & 5:1-5\\
\markboth{Berg}{Berg}&Berg & Auf die Hügel, auf die Berge, & Am Himmelfahrtstage & 4:1-5\\
\markboth{bescheiden}{bescheiden}&bescheiden & Dem warm ein Herz beschieden ist, & Im Schnee & 1:1-11\\
\markboth{blühende}{blühende}&blühende & Verschwunden ist die blühende & Im Schnee & 1:1-5\\
\markboth{Blume}{Blume}&Blume & Da begann von Licht und Blumen & Himmelsleiter & 5:1-5\\
\markboth{Blume}{Blume}& & Kosend durch die Blumen liefen. & Himmelsleiter & 5:2-3\\
\markboth{brennen}{brennen}&brennen & Das heimlich loht und brennt! & Im Schnee & 1:1-12\\
\markboth{Bund}{Bund}&Bund & Und den Bund mit ihm erneut, & Am Himmelfahrtstage & 4:1-3\\
\end{longtable}
\end{document}