我有一本书,基本上是一张 100 页的表格。我使用 xtab 包来布局这本书。
这本书列出了 100 多个定义,这些定义在表格中被多次引用。想象一下银行佣金表,其中有许多脚注被多次引用,例如 1) 对于这件事,您需要有一张金卡,2) 对于这件事,您需要在您的账户中有 100 万美元,等等。
定义的编号是固定的(例如,这是一份法律文件)。定义可以有任意编号(例如“1”、“W”、“III”)。
我希望能够做的是针对每个定义页面上引用的让它们显示为脚注(或视觉上类似于脚注的内容)。这可行吗?或者至少部分可行?
答案1
因此,这将在第一页列出 A 和 i,在第二页列出 i 和 w,每个只列出一次,按定义顺序排列。它从上一次运行中获取每页要使用的引用的页码,因此需要运行几次才能稳定下来。
\documentclass{article}
\textheight.3\textheight
\paperheight.5\paperheight
\pdfpageheight\paperheight
\usepackage{longtable}
\makeatletter
\def\foopage#1#2{\global\expandafter\let\csname foopage-#1-#2\endcsname\@empty}
\let\foolist\@empty
\def\foodef#1#2{%
\g@addto@macro\foolist{{#1}}%
\@namedef{foo-#1}{#2}}
\def\foocite#1{%
\textsuperscript{#1}%
\let\reserved@a\relax
\protected@write\@auxout{}{\string\foopage{#1}{\thepage}}%
}
\def\fooloop{%
\expandafter\@tfor\expandafter\tmp\expandafter:\expandafter=\foolist\do{%
\expandafter\ifx\csname foopage-\tmp-\thepage\endcsname\@empty
\insert\footins{%
\reset@font\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
\textsuperscript{\tmp}\csname foo-\tmp\endcsname}%
\fi
}}
% add the insert loop
\def\foopatch#1\output#2{%
\def\LT@start{#1\fooloop\output{\LT@output}}}
\expandafter\foopatch\LT@start
\def\foopatch#1\copy\LT@head\nobreak#2{%
\def\LT@output{#1\copy\LT@head\nobreak\fooloop#2}}
\expandafter\foopatch\LT@output
\begin{document}
\foodef{A}{Something about A.}
\foodef{i}{Something equally dull about i.}
\foodef{w}{In case you missed $x$ $y$ and $z$, here's $w$.}
\begin{longtable}{ll}
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{A}\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{i}\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{i}\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{w}\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{i}\\
aaaa&bbb\\
aaaa&bbb\\
aaaa&bbb\foocite{w}\\
aaaa&bbb\\
aaaa&bbb\\
\end{longtable}
\end{document}