如何在 LaTeX 中从 csv 文件创建 hyperref 表格?

如何在 LaTeX 中从 csv 文件创建 hyperref 表格?

我正在研究运行参数研究后自动创建报告。为了总结所有结果,我将重要数据以及案例名称放在一个表中。为了方便起见,案例名称与超链接相关联,该链接指向研究案例的文档部分。为了创建此表,我使用了 csvautotabular 包。链接可以正常工作,但表格太长(超过 4 页)。所以我切换到 csvautolongtable(添加了 lontable 包)。然后链接不起作用。我对这个问题一无所知。

如何从 csv 文件创建表格内带有 hyperref 的长表格(csv 文件很重要,它是用 python 脚本创建的)?

以下是使用 hyperref 工作的最小示例:

\documentclass[a4paper, 11pt, twoside,openright]{article}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{float}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{fancyhdr}        
\usepackage{csvsimple}
\usepackage{longtable}
\usepackage{hyperref}
\usepackage{adjustbox}
\usepackage{grffile}    

\begin{document}
\newpage
    \section{Results summary}
    test
        \begin{table}
               \begin{adjustbox}{width=\columnwidth,center}
                \csvautotabular{Summary-MWE.csv}
               \end{adjustbox}
        \end{table}
        \section{test1}
        \label{test1}
        blabla
        \section{test2}
        \label{test2}
        blablablabla
        
\end{document}

这里是具有 autolongtable 的最小示例(我必须删除 adjustbox 环境才能使其工作):

\documentclass[a4paper, 11pt, twoside,openright]{article}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{float}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{fancyhdr}    
\usepackage{csvsimple}
\usepackage{longtable}
\usepackage{hyperref}
\usepackage{adjustbox}
\usepackage{grffile}    

\begin{document}
\newpage
    \section{Results summary}
    blabbla test
        % \begin{table}
               % \begin{adjustbox}{width=\columnwidth,center}
                \csvautolongtable[respect all]{Summary-MWE.csv}
               % \end{adjustbox}
        % \end{table}
        \section{test1}
        \label{test1}
        blabka
        \section{test2}
        \label{test2}
        blablablabla
        
\end{document}

以下是 csv 文件的副本(在一列上):

Case,Value1,Value2,Value3,Value4
c \hyperref[test1]{Geom1},7920.0,0.452,0.776,1.7
c \hyperref[test2]{Geom2},990.0,0.452,0.78,0.2

答案1

这里使用数据工具包而不是 csvsimple。您能否检查一下这是否按预期工作?

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{hyperref}

\usepackage{datatool}
\DTLsetseparator{,}
\DTLloaddb{data}{Summary-MWE.csv}
    
\begin{document}
\newpage
    \section{Results summary}
    blabbla test
    
        \begin{table}
        \begin{longtable}{lcccc}
            \toprule
            \DTLforeach*{data}
            {\case=Case, \va=Value1, \vb=Value2, \vc=Value3, \vd=Value4}
            {\case & \va & \vb & \vc & \vd \\}%
            \\[-15pt]\bottomrule
        \end{longtable}    
        \end{table}
        \section{test1}
        \label{test1}
        blabka
        \section{test2}
        \label{test2}
        blablablabla
\end{document}

编辑:一个更简单的解决方案是,无需读取所有 CSV,而是稍微更改数据文件并将其直接导入到 LaTeX 文件中。

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{hyperref}

\begin{document}
\newpage
    \section{Results summary}
    blabbla test
    
        \begin{longtable}{lcccc}
            \toprule
            \input{Summary-MWE.csv}
            \bottomrule
        \end{longtable}    
        \section{test1}
        \label{test1}
        blabka
        \section{test2}
        \label{test2}
        blablablabla
\end{document}

对于您的数据文件,您只需删除标题行并用和符号替换逗号,并\\在每行末尾放置双反斜杠,如下所示:

c \hyperref[test1]{Geom1}&7920.0&0.452&0.776&1.7\\
c \hyperref[test2]{Geom2}&990.0&0.452&0.78&0.2\\
...

不幸的是,这个解决方案在表格环境中也不适用。

相关内容