我正在尝试使用列出 csv 文件中的数据csvsimple
并添加指向相关部分的自动超链接。
问题
当使用带有标题的文件时(但使用no head
选项为标题定义不同的行为),行数会增加 1,从而相应地移动索引。
这会导致未定义的引用。
问题
有没有办法可以用某种方式来(\thecsvrow - 1)
代替实际的行号?
我是否必须手动修改索引以匹配计数器?
平均能量损失
\documentclass[draft]{article}
\usepackage{mwe}
\usepackage{booktabs}
\usepackage{csvsimple}
\usepackage{hyperref}
\begin{filecontents*}{data.csv}
name,type,value
var1,numeric,32+1
var2,string,"text"
var3,float,3.14-x
\end{filecontents*}
\begin{document}
\section{Variables}\label{sec:var}
\csvloop{
file=data.csv,
respect all,
separator=comma,
no head,
column names={1=\variableName, 2=\variableType, 3=\variableValue},
before reading={
\begin{table}
\centering
\begin{tabular}{llr}
\toprule
},
command={\csviffirstrow
{\textbf{\variableName} & \textbf{\variableType} & \textbf{\variableValue}}
{\hyperref[sec:var-\thecsvrow]{\variableName} & \variableType & \variableValue}
},
late after line=\\,
late after first line=\\\midrule,
late after last line=\\\bottomrule,
after reading={
\end{tabular}
\caption{List of variables}
\label{tab:variables}
\end{table}
}
}
\subsection{Variable 1}\label{sec:var-1}
\dots
\subsection{Variable 2}\label{sec:var-2}
\dots
\subsection{Variable 3}\label{sec:var-3}
\dots
\end{document}
答案1
玩计数器csvrow
似乎有效。
我之前已经从计数器中减去 1 \hyperref
,然后恢复到原始值并加 1(否则它的值始终为 1):
\addtocounter{csvrow}{-1}\hyperref[sec:var-\thecsvrow]{\variableName}\addtocounter{csvrow}{1}
[draft]
请注意,我从您的命令中删除了该选项\documentclass
,否则链接将不起作用,并且,如果您使用 Adobe Acrobat Reader DC,则必须放大文档才能看到链接起作用(至少放大 60%,因为子部分是空的)。
\documentclass{article}
\usepackage{filecontents}
\usepackage{booktabs}
\usepackage{csvsimple}
\usepackage{hyperref}
\begin{filecontents*}{data.csv}
name,type,value
var1,numeric,32+1
var2,string,"text"
var3,float,3.14-x
\end{filecontents*}
\begin{document}
\section{Variables}\label{sec:var}
\csvloop{
file=data.csv,
respect all,
separator=comma,
no head,
column names={1=\variableName, 2=\variableType, 3=\variableValue},
before reading={
\begin{table}
\centering
\begin{tabular}{llr}
\toprule
},
command={\csviffirstrow
{\textbf{\variableName} & \textbf{\variableType} & \textbf{\variableValue}}
{\addtocounter{csvrow}{-1}\hyperref[sec:var-\thecsvrow]{\variableName}\addtocounter{csvrow}{1} & \variableType & \variableValue}
},
late after line=\\,
late after first line=\\\midrule,
late after last line=\\\bottomrule,
after reading={
\end{tabular}
\caption{List of variables}
\label{tab:variables}
\end{table}
}
}
\subsection{Variable 1}\label{sec:var-1}
\dots
\subsection{Variable 2}\label{sec:var-2}
\dots
\subsection{Variable 3}\label{sec:var-3}
\dots
\end{document}
点击var1
此处:
您转到Variable 1
子部分:
等等。