我正在研究运行参数研究后自动创建报告。为了总结所有结果,我将重要数据以及案例名称放在一个表中。为了方便起见,案例名称与超链接相关联,该链接指向研究案例的文档部分。为了创建此表,我使用了 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\\
...
不幸的是,这个解决方案在表格环境中也不适用。