将 csv 文件中的图形包含到 Pgftable 中时出现问题,命令消失了(可能是本地的?)

将 csv 文件中的图形包含到 Pgftable 中时出现问题,命令消失了(可能是本地的?)

我一直在尝试在 csv 文件中添加带有文件名的 eps 图形。查看 CSV 以了解我的意思:https://docs.google.com/spreadsheet/ccc?key=0Ao9if7HTdeaPdGowdXJXbURJQWVmVTdDUVRaYTdldXc#gid=0

到目前为止,我已经设法让 LaTeX 输出这么多的内容:试剂表

我正在尝试将图形(带有化合物 eps 和名称)放置在试剂列中。到目前为止,我已经在 Pgfplotstable 中创建了一个新列,并尝试从我的 csv 文件的名称和结构列中包含值。

我现在很困惑,所以我开始尝试为每个图像创建一个新命令,稍后我会在图中调用该命令(\cmpi->compound 1 name、\structurei->compound 1 structure、\cmpii->compound 2 name、\structureii->compound 2 structure)。我无法设置该命令,因为在再次调用 defineCompound 后命令会丢失。可能有更好的方法来创建表格内图形,但我现在迷茫了。

第一个\typeout{TESTING: \cmpi, \structurei}可以工作并打印TESTING: (R)-(-)carvone, ../chemicals/(r)-(-)-carvone.eps,但第二个由于“未定义的控制序列”而失败

错误

任何帮助都将不胜感激。我刚开始使用 LaTeX,到目前为止,这是一个相当艰难的过程。

我希望最终能够将所有化合物放在一个 csv 文件中,并且能够根据我正在执行的实验选择我想要的化合物。

我的 LaTeX 是:

\documentclass[pdftex,12pt,a4paper]{article}
\usepackage{enumitem}
\usepackage[left=.75in,right=.75in,top=.75in,bottom=1in]{geometry}
\usepackage{textcomp}
\usepackage{pgfplotstable}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{epstopdf}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{fp}
\usepackage[runs=2]{auto-pst-pdf}
\usepackage[journal=rsc]{chemstyle}



\newlist{steps}{enumerate}{1}
\setlist[steps,1]{
  label={Step~\arabic*},
  leftmargin=*,
  align=left,
  labelsep=10mm,
}

\setcounter{secnumdepth}{0}

\newcommand\defineCompound[3]{%
    \typeout{#1}
    \typeout{#2}
    \typeout{#3}
    \global\expandafter\newcommand\csname cmp#1\endcsname{#2}
    \global\expandafter\newcommand\csname structure#1\endcsname{#3}
    \typeout{TESTING: \cmpi, \structurei}
}

\begin{document}
\makeatletter
\section{Introduction}
\newcommand{\expnum}{14}
\newcommand{\exptitle}{Conversion of Carvone to Carvacrol: Multiweek Experiment Part 1}
\input{../common/intro.tex}

\begin{figure}[h!]
  \caption{Conversion of (R)-(-)Carvone to Carvacrol by Sulfuric Acid and Heat.}
  \centering
    \includegraphics[width=\textwidth]{../reactions/(r)-(-)-carvone-to-carvacrol.eps}
\end{figure}
\begin{figure}[h!]
  \caption{Balanced Equation.}
  \centering
    \includegraphics[width=\textwidth]{../reactions/2.eps}
\end{figure}
\newpage
\section{Table of Reagents}
\begin{center}
  \pgfplotstableread[col sep=comma]{../common/reagents.csv}\loadedtable
  \pgfplotstablecreatecol[
    create col/assign/.code={%
      \getthisrow{name}\name
      \getthisrow{structure}\structure
      \FPeval{\result}{clip(\pgfplotstablerow + 1)}
      \edef\entry{\romannumeral\result}
      \defineCompound{\entry}{\name}{\structure}
      \pgfkeyslet{/pgfplots/table/create col/next content}\entry
    }]{reagent}\loadedtable
  \pgfplotstabletypeset[
    string type,
    begin table=\begin{tabularx}{\textwidth},
    end table=\end{tabularx},
    columns={reagent,mw,bp,mp,density},
    %columns/name/.style={column name=Name, column type={|c}},
    columns/reagent/.style={
      column name=Reagent,
      column type={l},
      postproc cell content/.code={
        \message{\pgfkeysvalueof{/pgfplots/table/@cell content}}
        \message{\cmpi}
        %\pgfkeyssetvalue{/pgfplots/table/@cell content}{}%
      },
    },
    columns/mw/.style={column name={Molecular Weight (\si[per-mode=symbol]{\gram\per\mol})}, column type={X}},
    columns/bp/.style={column name=Boiling Point (\si{\celsius}), column type={l}},
    columns/mp/.style={column name=Melting Point (\si{\celsius}), column type={l}},
    columns/density/.style={column name=Density (g/mol), column type={X}},
    every nth row={1}{before row=\midrule},
    every head row/.style={before row=\toprule,after row=\midrule},
    every last row/.style={after row=\bottomrule},
    ]\loadedtable
\end{center}

\end{document}

答案1

我希望我在这里回答的是正确的问题...据我所知,您有一列“文件名”,并且您不只是排版文件名,而是想要通过 包含相关的图形文件,对\includegraphics吗?如果这个假设是错误的,我会要求您清理您的示例并相应地重新表述问题。

如果我的理解是正确的,那么以下内容可能会有所帮助:

在此处输入图片描述

\documentclass{standalone}
\usepackage{pgfplotstable}
\usepackage{graphicx}


\begin{document}
  \pgfplotstableread{
filename X
PP-figure0.pdf 1
PP-figure1.pdf 2
PP-figure2.pdf 3
}\loadedtable

  \pgfplotstabletypeset[
    columns/filename/.style={
      column name=Reagent,
      column type={l},
      assign cell content/.code={%
          \pgfkeyssetvalue{/pgfplots/table/@cell content}{\includegraphics{##1}}%
      },
    },
    ]\loadedtable

\end{document}

我自己生成了一个最小示例。assign cell content由于此步骤不是预处理步骤,因此它使用如此步骤。

它可能会受益于一些垂直对齐,但在我(或其他人)跳到它之前,你应该弄清楚这是否是你想要的。


记录如下:我使用pdflatex -shell-escape PP以下文件生成了图形文件

\documentclass[a4paper]{article}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize


\begin{document}

\tikz \draw[left color=red, right color=white] (0,0) circle (10pt);
\tikz \draw[left color=blue, right color=white] (0,0) circle (10pt);
\tikz \draw[left color=black, right color=white] (0,0) circle (10pt);
\end{document}

相关内容