如何防止使用 csvsimple 的 csvreader 创建表后显示标签

如何防止使用 csvsimple 的 csvreader 创建表后显示标签

我正在为这个项目使用 ShareLaTeX 的物理研究所模板。我创建了一些数据表,由于我制作的报告相对较长,并且顺序可能会发生变化,所以我希望每个数据表都有一个标签。我从 CSV 文件导入数据,并使用 csvsimple 包在图形环境中使用其 csvreader 命令创建表格。我的问题是,出于某种原因,在第一个表格之后,每个后续标签都会打印在 PDF 中。

\usepackage[nolabels]{showlabels}我曾尝试使用 showlabels 包来防止使用和显示标签\usepackage[final]{showlabels},但这两个命令都没有任何效果。

以下是我正在使用的代码以及几个 CSV 文件和输出:

\documentclass[12pt,a4paper,final]{iopart}
\newcommand{\gguide}{{\it Preparing graphics for IOP journals}}
%Uncomment next line if AMS fonts required
\usepackage{iopams}  
\usepackage{graphicx}
\usepackage[breaklinks=true,colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref}
\usepackage{gensymb}
\usepackage{csvsimple}
\usepackage{caption}
\usepackage{array}
\usepackage{longtable}
\usepackage{amsmath}
\usepackage{float}
\usepackage[final]{showlabels}

\makeatletter
\newcommand\footnoteref[1]{\protected@xdef\@thefnmark{\ref{#1}}\@footnotemark}
\makeatother

\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}
\section{\label{sec:level1} Procedure}

\subsection{\label{sec:level2} Organization}
\subsection{\label{sec:level2} Trivialities and Setup-Determining Experiments}
\begin{table}[H]
    \label{tab: MassofMasses}
    \centering
    \caption{Actual Mass of Masses by Label}
    \csvreader[tabular=|C{1.5cm}|C{3cm}|, 
    table head=\hline Label & Mass (g)\\\hline,
    table foot=\hline]
    {ActualMassofMasses.csv}{Mass number=\label, Actual mass=\mass}
    {\label & \mass}
\end{table}

\begin{table}[H] \label{tab:CenterofMass} 
    \centering
    \caption{Distance from Tip of Hook to Center of Mass of Masses}
    \csvreader[tabular=|c|c|,
    table head=\hline Mass (g) & Distance (cm)\\\hline,
    table foot=\hline]
    {CenterofMass.csv}{mass=\mass, tip to CM=\distance}
    {\mass & \distance}
\end{table}

输出 输出

所需文件(链接到公共 Google Drive 文件夹): https://drive.google.com/drive/u/1/folders/0B8iLMKPpwWqKeHZDNmhJSXIzazA

提前感谢大家的帮助!另外,如果我遗漏了任何需要包含的内容,请向我索取。

答案1

使用您的样式和类文件还存在一些其他问题,但我可以为您描述的问题提供解决方案。

你的代码行

{ActualMassofMasses.csv}{Mass number=\label, Actual mass=\mass}

重新定义标准\label宏。请注意,此重新定义是全局的。

为了避免这种情况,我们可以保存并恢复原始文件\label,但首选方法是重命名您的私有宏,例如

{ActualMassofMasses.csv}{Mass number=\mylabel, Actual mass=\mass}

完整代码如下:

\documentclass[12pt,a4paper,final]{iopart}
\newcommand{\gguide}{{\it Preparing graphics for IOP journals}}
%Uncomment next line if AMS fonts required
\usepackage{iopams}
\usepackage{graphicx}
\usepackage[breaklinks=true,colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref}
\usepackage{gensymb}
\usepackage{csvsimple}
\usepackage{caption}
\usepackage{array}
\usepackage{longtable}
\usepackage{amsmath}
\usepackage{float}
\usepackage[final]{showlabels}

\makeatletter
\newcommand\footnoteref[1]{\protected@xdef\@thefnmark{\ref{#1}}\@footnotemark}
\makeatother

\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}
\section{\label{sec:level1} Procedure}

\subsection{\label{sec:level2} Organization}
\subsection{\label{sec:level2} Trivialities and Setup-Determining Experiments}
\begin{table}[H]
    \label{tab: MassofMasses}
    \centering
    \caption{Actual Mass of Masses by Label}
    \csvreader[tabular=|C{1.5cm}|C{3cm}|,
    table head=\hline Label & Mass (g)\\\hline,
    table foot=\hline]
    {ActualMassofMasses.csv}{Mass number=\mylabel, Actual mass=\mass}
    {\mylabel & \mass}
\end{table}

\begin{table}[H] \label{tab:CenterofMass}
    \centering
    \caption{Distance from Tip of Hook to Center of Mass of Masses}
    \csvreader[tabular=|c|c|,
    table head=\hline Mass (g) & Distance (cm)\\\hline,
    table foot=\hline]
    {CenterofMass.csv}{mass=\mass, tip to CM=\distance}
    {\mass & \distance}
\end{table}
\end{document}

(由于提供的样式和类文件,上述代码仍然有编译错误)

相关内容