是否可以使用 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}
答案2
您还可以使用包裹datatool
:
笔记:
- 我用了包裹
xstring
为了\IfStrEq
。
代码:
\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}
在Curie
filecontents 环境中。
\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) 也值得一看。以下代码直接取自此部分。
\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}
“超级酷”,我的孩子们会这么说:-)。