Javascript 通过单击标题对表格进行排序

Javascript 通过单击标题对表格进行排序,javascript,pdf,tabular,Javascript,Pdf,Tabular,是否可以创建一个TeX格式的表并编译成PDF格式,该格式有其列标题,因此单击它们可以按该列对(数字)表内容进行排序 我知道您可以在PDF中使用Javascript,这可能会允许类似的内容 有人做过这样的事情吗?在我的评论之后,这应该是OCG层可以做到的,我刚刚发现,OCG-p包提供了ocgtabular环境,它正是您想要的 示例取自ocg-pdoc: \documentclass{article} \usepackage[ocgtabular]{ocg-p} \usepackage{datato

是否可以创建一个TeX格式的表并编译成PDF格式,该格式有其列标题,因此单击它们可以按该列对(数字)表内容进行排序

我知道您可以在PDF中使用Javascript,这可能会允许类似的内容


有人做过这样的事情吗?

在我的评论之后,这应该是OCG层可以做到的,我刚刚发现,
OCG-p
包提供了
ocgtabular
环境,它正是您想要的

示例取自
ocg-p
doc:

\documentclass{article}
\usepackage[ocgtabular]{ocg-p}
\usepackage{datatool} % will be needed for this example
\usepackage{booktabs} % will be needed for this example
\DTLnewdb{sdata}
\DTLnewrow{sdata}
\DTLnewdbentry{sdata}{Firstname}{John}
\DTLnewdbentry{sdata}{Lastname}{Doe}
\DTLnewdbentry{sdata}{Grade}{5}
\DTLnewrow{sdata}
\DTLnewdbentry{sdata}{Firstname}{Paul}
\DTLnewdbentry{sdata}{Lastname}{Bauer}
\DTLnewdbentry{sdata}{Grade}{1}
\DTLnewrow{sdata}
\DTLnewdbentry{sdata}{Firstname}{Peggy}
\DTLnewdbentry{sdata}{Lastname}{Sue}
\DTLnewdbentry{sdata}{Grade}{3}
\DTLnewrow{sdata}
\DTLnewdbentry{sdata}{Firstname}{Ever}
\DTLnewdbentry{sdata}{Lastname}{Last}
\DTLnewdbentry{sdata}{Grade}{4}
\DTLnewrow{sdata}
\DTLnewdbentry{sdata}{Firstname}{Werner}
\DTLnewdbentry{sdata}{Lastname}{Moshammer}
\DTLnewdbentry{sdata}{Grade}{1}
\begin{document}
This table can be sorted by clicking on the headers:

\begin{ocgtabular}{llc}{sdata}{}
\toprule%
\bfseries \setocgtabularheader{Firstname}{First name}
& \bfseries \setocgtabularheader{Lastname}{Last name}
& \bfseries \setocgtabularheader{Grade}{Grade}
\DTLforeach{sdata}{\first=Firstname, \last=Lastname,\grade=Grade}{%
\DTLiffirstrow{\\ \midrule}{\\}
\first & \last & \grade
}
\\ \bottomrule%
\end{ocgtabular}
\end{document}

我从来没有见过这样的PDF格式。无论如何:这个问题不是以TeX为中心的;你会有更好的运气。你可以通过简单地预先计算“隐藏”页面中所有排序的排列,并将标题链接到适当的页面(类似于beamer overlays)@morbusq来避免javascript要求(这限制了查看者),如果不需要动态排序,这应该可以在OCG层中实现。在几个OCG层上有不同版本的表。可以通过单击列标题来切换这些图层的可见性。请参阅:以及Thanke@remus中的彩色模型演示;这实际上是一个完全相同的副本,但由于它位于另一个SE站点上,我不确定如何继续。@morbusg过了一会儿,我只想通知您我找到了一个解决方案。请看我的答案。一个非常“TeXnical”的答案:)但这个解决方案有一个重要的脚注:它不“排序”PDF中的表格通常情况下,使用Javascript可以进行排序,但无法在PDF页面上移动文本。此解决方案预先创建所有已排序的文本,并且在PDF查看器中只显示和隐藏这些文本,而不会实时“排序”。这个问题是从
tex.stackexchange.com
!;-)迁移而来的问题在于以某种方式呈现数据。背后的技术应该可以忽略不计。当然,从乳胶的角度来看。另一点,gerneral中的
AdobeJavaScriptAPI
Javascript
仅由AdobeViewer AFAIK支持。对OCGs的支持要广泛得多。但我认为有必要指出,这不是“在PDF中排序”的一般方法。