我正在尝试解析一个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}