使用 csvreader 的“转义下划线”环境

使用 csvreader 的“转义下划线”环境

我想将 csv 文件的内容放入tabular环境中。但是,这包括带有下划线“_”的文本。由于这会触发数学环境,因此会出现错误:Missing $ inserted

使用转义下划线显示实际文本不起作用,因为 csv 阅读器不起作用:

\documentclass{article}
\usepackage{csvsimple}
\usepackage{url}
\DeclareUrlCommand\UScore{\urlstyle{rm}}
% Make csv in question
\begin{filecontents*}{scientists3.csv}
name
Albert_Einstein,
Marie_Curie,
Thomas_Edison
\end{filecontents*}

\begin{document}
    \csvreader[tabular=|l|,
  table head=\textbf{ Reference} \\\hline,
  late after line = \\\hline]%
    {scientists3.csv}{name=\name}%
    {\UScore{\name}}%
\end{document} 

结果显然是:“ \name”,而不是.csv文件的内容。

答案1

您必须扩展两次\name

\begin{filecontents*}{\jobname.csv}
name
Albert_Einstein
Marie_Curie
Thomas_Edison
\end{filecontents*}

\documentclass{article}
\usepackage{csvsimple}
\usepackage{url}

\DeclareUrlCommand\UScore{\urlstyle{rm}}
\newcommand{\expUScore}{%
  \expandafter\expandafter\expandafter
  \UScore
  \expandafter\expandafter\expandafter
}

\begin{document}
\csvreader[
  tabular=|l|,
  table head=\hline\textbf{Reference} \\\hline,
  late after line = \\\hline
]{\jobname.csv}{name=\name}
 {\expUScore{\name}}

\end{document}

在此处输入图片描述

我过去常常\jobname避免破坏我的文件。

答案2

最简单的解决方案是使用respect underscore=true选项:

\csvreader[respect underscore=true,...]

查看csvsimple 的文档

如果设置了该键,则 CSV 内容中的每个下划线符号“_”都是普通字符。

相关内容