csvsimple 与 minted 环境问题

csvsimple 与 minted 环境问题

我正在尝试解析一个csv文件csvsimple以便在minted环境内输出值。

问题

csv当尝试输出行内的值时,mintinline它似乎会破坏命令并打印它而不是解析的结果。

理想情况下,我想使用该minted环境(或者更确切地说是它的定制版本),但如果我使用以下代码,它就不会编译:

\begin{minted}[breaklines, breakanywhere]{python}
  \variableValue
\end{minted}

我收到此错误:

./test.tex:32: FancyVerb Error:
  Extraneous input ` \variableValue \end {minted} \relax \csv@do@postline 
  \csv@next \closein \csv@file \@endloophook \csv@latepostlastline 
  \csv@table@end \csv@postreading \csv@reset@catcodes ' between 
  \begin{minted}[<key=value>] and line end
.
\FV@Error ... {FancyVerb Error:
\space \space #1
}

l.32 }

演示

演示

平均能量损失

\documentclass{article}

\usepackage{mwe}
\usepackage{csvsimple}
\usepackage{minted}

% \begin{filecontents}{data.csv}
%   name,type,value
%   var1,numeric,32+1
%   var2,string,"text"
%   var3,float,3.14-x
% \end{filecontents}

\begin{document}

\csvloop{
  file=data.csv,
  respect all,
  separator=comma,
  head=true,
  column names={1=\variableName, 2=\variableType, 3=\variableValue},
  command={%
    \begin{itemize}
      \item Name: \variableName
      \item Type: \variableType
    \end{itemize}
    \smallbreak
    \mintinline{python}{\variableValue}
  }
}

\end{document}

答案1

您需要\variableValue在将其传递给之前进行扩展\mintinline;也会respect all破坏事物。

\begin{filecontents*}{\jobname.csv}
name,type,value
var1,numeric,32+1
var2,string,"text"
var3,float,3.14-x
\end{filecontents*}

\documentclass{article}

\usepackage{csvsimple}
\usepackage{minted}


\begin{document}

\csvloop{
  file=\jobname.csv,
%  respect all,
  separator=comma,
  head=true,
  column names={1=\variableName, 2=\variableType, 3=\variableValue},
  command={%
    \begin{itemize}
      \item Name: \variableName
      \item Type: \variableType
    \end{itemize}
    \smallbreak
    \begingroup\edef\x{\endgroup
      \noexpand\mintinline{python}{\variableValue}%
    }\x
  }
}

\end{document}

在此处输入图片描述

替代方案(并带有换行符)。我将代码设置在里面itemize,否则缩进会很有趣。

\begin{filecontents*}{\jobname.csv}
name,type,value
var1,numeric,32+1
var2,string,"text" "abc def ghi jklm nopq rstuv wxyz" "abc def ghi jklm nopq rstuv wxyz"
var3,float,3.14-x
\end{filecontents*}

\documentclass{article}

\usepackage{csvsimple}
\usepackage{minted}

\newmintinline[csvpython]{python}{breaklines}

\begin{document}

\csvloop{
  file=\jobname.csv,
%  respect all,
  separator=comma,
  head=true,
  column names={1=\variableName, 2=\variableType, 3=\variableValue},
  command={%
    \begin{itemize}
      \item Name: \variableName
      \item Type: \variableType
    \smallbreak
    \expandafter\csvpython\expandafter{\romannumeral-`Q\variableValue}
    \end{itemize}
  }
}

\end{document}

在此处输入图片描述

相关内容