Tikz 中的可点击条形图(pgfplots)

Tikz 中的可点击条形图(pgfplots)

我正在尝试制作一个可点击的条形图,一旦点击某个条形图,它就会提供额外的信息。
我看过一些使用它的代码示例,并尝试了自己的代码示例:

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{clickable}

\begin{tikzpicture}
\begin{axis}[
    ybar, bar width=3pt,width=14cm, height=7cm,
    xmin = 1960, xmax=2020, ymax = 250,
    ymajorgrids, ylabel={Count}, xlabel={Year},
    clickable coords= {Year \thisrow{year}:\thisrow{count}},
    xticklabel style = {rotate=90, anchor=east, align=center},
    xticklabel style = {/pgf/number format/1000 sep=},
    ticklabel style = {font=\footnotesize},]
    \addplot table[x=year,y=count] {
year    count
2019    246
2018    234
2017    197
2016    180
2015    181
2014    167
2013    145
2012    144
2011    124
2010    118
2009    103
2008    111
    };
\end{axis}
\end{tikzpicture}

但无法使用 overleaf 来编译它们:

    File: pgflibraryplotmarks.code.tex 2015/08/03 v3.0.1a (rcs-revision 1.14)
)))
(/usr/share/texlive/texmf-dist/tex/latex/pgfplots/libs/tikzlibrarypgfplots.clic
kable.code.tex

! LaTeX Error: File `insdljs.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
! Emergency stop.
<read *> 

l.145   \RequirePackage
                      [pdftex]{eforms}^^M
*** (cannot \read from terminal in nonstop modes)

我是不是漏掉了什么?
这个包过时了吗?如果是,还有其他选择吗?

答案1

clickable由于许可限制,该库的一些依赖项未包含在 TeX Live 中。您可以在软件包的 CTAN 页面:请注意,它是 acrotex 包的一部分,并且仅列为包含在 MikTeX 中,而不是 TeX Live。

Overleaf 使用 TeX Live,因此如果您想clickable在 Overleaf 上使用该库,则需要手动将 insdljs 包及其一些依赖项添加到您的项目中。这涉及从 CTAN 下载包源并处理文件.inslatex生成所需的文件.sty和其他文件。这在 Overleaf 上是可能的,但并非完全简单。


如果您的计算机上安装了 TeX 发行版,则可以从中获取所需的文件。这比在 Overleaf 上生成文件要容易得多。如果您恰好安装了 MikTeX,则 acrotex 将在您的系统上可用(假设您已安装该软件包)。因此,您可以复制所需的软件包文件并将其添加到您的 Overleaf 项目中。

如果你的系统上安装了 TeX Live,你可以从以下位置下载该包的源文件https://ctan.org/pkg/insdljs,提取档案,然后从提取的目录中运行以下命令:

latex insdljs.ins
latex eforms.ins
latex taborder.ins

然后获取运行这些命令生成的所有文件并将其上传到您的 Overleaf 项目。如果您愿意,可以使用以下方法将这些文件隐藏在 Overleaf 项目的子文件夹中:如何在单独的子文件夹中保存一个包含自定义 .cls、.sty、.bst 文件的干净文档文件夹?


如果您的电脑上没有安装自己的 TeX 发行版,因此需要在 Overleaf 上执行此过程:可以做到,但不可否认的是有点复杂。:-)

此过程只需执行一次。一旦您在 Overleaf 项目中拥有此过程产生的.sty文件.def,您无需重复此操作,只需复制 Overleaf 项目即可获得包含所需文件的新项目。

  1. AcroTEX 教育套装,下载这些文件并上传到临时的 Overleaf 项目:

    insdljs.ins
    insdljs.dtx
    eforms.ins
    eforms.dtx
    taborder.ins
    taborder.dtx
    
  2. 在临时 Overleaf 项目的根目录中创建一个名为latexmkrc(无扩展名)的新文件,其中包含以下行代码:

    BEGIN {system ('latex insdljs.ins; latex eforms.ins; latex taborder.ins');}
    

    这将指示 Overleaf 的构建工具( )在下次编译时latexmk处理这些文件。.ins

  3. 重新编译项目。这将产生一些额外的文件:该insdljs.sty文件及其依赖项。

  4. 下载所有这些额外的文件。你可以在 Overleaf 的输出文件区域。您只需下载具有.def.sty扩展名的输出文件。

  5. 将这些文件上传.sty.def要使用该clickable库的 Overleaf 项目中。正如我上面提到的,你可能希望将它们放在子文件夹中,并设置一个latexmkrc文件,以便编译器找到它们:如何在单独的子文件夹中保存一个包含自定义 .cls、.sty、.bst 文件的干净文档文件夹?

  6. 下载.sty.def文件后,您可以自由删除用于创建它们的临时 Overleaf 项目。

相关内容