有没有办法让 eledmac 脚注在表格环境中可用? footnote.sty 中的\savenotes
和\makesavenoteenv
命令在这里不再起作用。
在以下 MWE 中,表格内的脚注不会出现。标签已设置,但脚注未设置。
\documentclass{scrartcl}
\RequirePackage{eledmac}
\newseries{T}
\let\footnote\footnoteT
\begin{document}
Foo bar\footnote{This footnote works.}
\begin{tabular}{ll}
A & B \\
C\footnote{This footnote doesn't appear.} & D \\
\end{tabular}
\end{document}
我正在使用 的eledmac
脚注引擎来获得熟悉的脚注。(而且我无法切换eledmac
。)
答案1
Eledmac 知道这个问题。这就是为什么它提供了一个 edtabularl 环境(实际手册的第 13 条)。
然而,由于某些技术原因,\let\footnote\footnoteC
在这种情况下无法工作(见https://github.com/maieul/ledmac/issues/207#issuecomment-54959471更多详细信息请参见 ,并且您必须执行类似 的操作def\footnote#1{\footnoteT{#1}}
。
因此完整的 MWE 为:
\documentclass{scrartcl}
\RequirePackage{eledmac}
\newseries{T}
\def\footnote#1{\footnoteT{a}}
\begin{document}
Foo bar\footnote{This footnote works.}
\begin{edtabularl}
A & B \\
C\footnote{This footnote doesn't appear.} & D \\
\end{edtabularl}
\end{document}
答案2
我现在有一个解决方案,它实现了一个推送弹出系统,将脚注推送到表格(和任何其他)环境中的标记列表中,并在结束后生成它们。基本想法是从 cacamailg 在帖子中的回答中得到的启发:禁忌表中的脚注未显示
我的解决方案提供了一个\Mymakesavenoteenv
类似于\makesavenoteenv
from 的命令footnote.sty
。您可以有选择地激活您喜欢的环境,以便能够处理脚注。整个过程是为脚注系列实现的T
。我更喜欢将其特定于一个系列,否则不会干扰功能eledmac
。(我使用系列T
作为全局正常脚注。)
这里是解决方案 MWE:
\documentclass{scrartcl}
\usepackage{eledmac}
\usepackage{longtable}
\makeatletter
\newseries{T}
\def\footnote#1{\footnoteT{#1}}
% push-pop-system for eledmac footnotes, saving footnotes around an environment.
\newtoks\Myftn@toks
\newcommand*{\@popftn@vfootnoteT}[3]{%
\def\@thefnmarkT{#1}%
\vfootnoteT{#2}{#3}%
}
\def\pushftn{%
\let\vfootnoteT\@pushftn@vfootnoteT
}
\def\popftn{%
\global\Myftn@toks\expandafter{\expandafter}\the\Myftn@toks%
}%
\long\def\@pushftn@vfootnoteT#1#2{%
\edef\@tempa{\the\Myftn@toks\noexpand\@popftn@vfootnoteT
{\csname @thefnmarkT\endcsname}{T}{#2}}%
\global\Myftn@toks\expandafter{\@tempa}%
}%
\def\Mymakesavenoteenv#1{
\AtBeginEnvironment{#1}{\pushftn}
\AfterEndEnvironment{#1}{\popftn}
}
% push pop functionality can simply be activated for selected environments
% similar to \makesavenoteenv from footnotes.sty
\Mymakesavenoteenv{longtable}
\Mymakesavenoteenv{tabular}
\makeatother
\begin{document}
Foo bar\footnote{This footnote works.}
\begin{tabular}{p{2cm}l}
A & B \\
C\footnote{tabular p-column} & D\footnote{tabular l-column} \\
\end{tabular}
\begin{longtable}{p{2cm}l}
A & B \\
C\footnote{longtable p-column} & D\footnote{longtable l-column} \\
\end{longtable}
\end{document}