使用 CSV 阅读器将表格中的一个单元格加粗

使用 CSV 阅读器将表格中的一个单元格加粗

是否可以使用 csvreader(除了头部)将单个所需单元格(或多个单元格)加粗?以下是制作表格的示例。

\documentclass{article}
\usepackage{csvsimple}

% Make csv in question
\begin{filecontents*}{scientists2.csv}
name,surname,
Albert,Einstein,
Marie,Curie,
Thomas,Edison
\end{filecontents*}

\begin{document}

\begin{center}
\csvreader[tabular=|l|l|,
    table head=\hline \textbf{ First Name} & \textbf{Last Nmae} \\\hline,
    late after line = \\\hline]%
{scientists2.csv}{name=\name,surname=\surname}%
{\name & \surname}%

\end{center}


\end{document} 

我尝试使用过滤器来应用不同的规则,但没有成功。谢谢,

答案1

虽然不是直接的答案,但我会建议pgfplotstable对于此类任务。它非常全面,文件操作也非常方便。对于这个特定问题来说,它似乎有点过头了,但随着任务变得越来越复杂,它就会显露出真正的潜力。

\documentclass{article}
\usepackage{pgfplotstable,filecontents,booktabs}

% Make csv in question
\begin{filecontents*}{scientists2.csv}
name,surname
Albert,Einstein
Marie,Curie
Thomas,Edison
\end{filecontents*}

\pgfplotstableread[col sep=comma]{scientists2.csv}\mytable

\begin{document}

\begin{center}
\pgfplotstabletypeset[
string type,
columns/name/.style={column name=Name},
columns/surname/.style={column name=Surname},
% Row/column numbering starts from zero
every row 1 column 1/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
every head row/.style={before row={\toprule},after row=\midrule},
every last row/.style={after row={\toprule}},
]\mytable
\end{center}

\end{document} 

enter image description here

答案2

您还可以使用包裹datatool

enter image description here

笔记:

代码:

\documentclass{article}
\usepackage{datatool}
\usepackage{booktabs}
\usepackage{xstring}
\usepackage{xcolor}

% Make csv in question
%\usepackage{filecontents}
\begin{filecontents*}{scientists2.csv}
name,surname,
Albert,Einstein,
Marie,Curie,
Thomas,Edison,
\end{filecontents*}

\newcommand*{\FormatCell}[1]{%
    \IfStrEq{#1}{Curie}{\textcolor{red}{#1}}{#1}%
}%

\begin{document}
\DTLloaddb[keys={Name,Surname}]{myDB}{scientists2.csv}
\bigskip
\begin{tabular}{l l}\toprule
    \textbf{First Name} & \textbf{Last Name}\\\cmidrule{1-2} 
    \DTLforeach*{myDB}{\Name=Name,\Surname=Surname}{%
        \Name & \FormatCell{\Surname} \\
    }%
\end{tabular}
\end{document}

答案3

csvsimple 版本 1.06 发布 2012-11-08正是您想要的。下面的代码是您的原始 MWE,唯一的修改是\textbf{Curie}Curiefilecontents 环境中。

enter image description here

 \documentclass{article}
 \usepackage{csvsimple} % requires csvsimple version 1.06 released 2012-11-08

 % Make csv in question
 \begin{filecontents*}{scientists2.csv}
 name,surname
 Albert,Einstein
 Marie,\textbf{Curie}
 Thomas,Edison
 \end{filecontents*}

 \begin{document}

 \begin{center}
 \csvreader[tabular=|l|l|,
     table head=\hline \textbf{ First Name} & \textbf{Last Nmae} \\\hline,
     late after line = \\\hline]%
 {scientists2.csv}{name=\name,surname=\surname}%
 {\name & \surname}%

 \end{center}


 \end{document} 

文档中新增的“数据内的宏代码”部分 (p.21) 也值得一看。以下代码直接取自此部分。

enter image description here

 \documentclass{scrreprt}
 \usepackage{tikz,csvsimple,filecontents}
 \begin{document} 

  %-- file embedded for simplicity --
 \begin{filecontents*}{macrodata.csv}
 type,description,content
 M,A nice \textbf{formula},         $\displaystyle \int\frac{1}{x} = \ln|x|+c$
 G,A \textcolor{red}{colored} ball, {\tikz \shadedraw [shading=ball] (0,0) circle (.5cm);}
 M,\textbf{Another} formula,        $\displaystyle \lim\limits_{n\to\infty} \frac{1}{n}=0$
 \end{filecontents*}
 %-- end embedded file --

 \csvautotabular{macrodata.csv}


 \csvstyle{my enumerate}{head to column names}


 \begin{enumerate}
 \csvreader[my enumerate]{macrodata.csv}{}{\item \description:\par\content}
 \end{enumerate}


 Now, formulas only:

 \begin{enumerate} 
 \csvreader[my enumerate,filter equal={\type}{M}]{macrodata.csv}{}{%
   \item \description:\qquad\content}
 \end{enumerate}



 \end{document}

“超级酷”,我的孩子们会这么说:-)。

相关内容