使 eledmac 脚注在表格环境中可用

使 eledmac 脚注在表格环境中可用

有没有办法让 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类似于\makesavenoteenvfrom 的命令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}

相关内容