我用datatool
。
我有这样的流程:
- 如果文本 A 或文本 B 为空白,则显示虚线
- 如果文本 A 或文本 B 不为空,则删除虚线并显示文本 A/文本 B
我的最小工作示例:
\RequirePackage{filecontents}
\begin{filecontents*}{file.tex}
No,TextA,TextB
1,a1,b1
2,,b2
3,a2,
4,,
5,a5,b5
\end{filecontents*}
\documentclass[twocolumn]{article}
\usepackage[many]{tcolorbox}
\usepackage{filecontents}
\usepackage{datatool}
\usepackage{wrapfig}
\usepackage{xparse}
\usepackage[utf8]{vietnam}
\usepackage{lipsum}
\tcbset{colframe=blue!75!black,colback=white}
\DTLloaddb{file}{file.tex}
\begin{document}
\DTLforeach*
{file}% Database
{\No=No,\TextA=TextA,\TextB=TextB}
{%
\begin{tcolorbox}[width=3cm, height=2cm]
\No \quad \\
..........\TextA \quad \\
..........\TextB
\end{tcolorbox}
% \newpage
}
\end{document}
答案1
您可以用它\DTLifnullorempty
来测试条目是否为空。
编辑:要测试值 0,请使用\DTLifeq
。
\RequirePackage{filecontents}
\begin{filecontents*}{file.tex}
No,TextA,TextB
1,a1,b1
2,,b2
3,a2,
4,,
5,0,b2
6,a2,0
7,0,0
\end{filecontents*}
\documentclass[twocolumn]{article}
\usepackage[many]{tcolorbox}
\usepackage{filecontents}
\usepackage{datatool}
\usepackage{wrapfig}
\usepackage{xparse}
\usepackage[utf8]{vietnam}
\usepackage{lipsum}
\tcbset{colframe=blue!75!black,colback=white}
\DTLloaddb{file}{file.tex}
\begin{document}
\DTLforeach*
{file}% Database
{\No=No,\TextA=TextA,\TextB=TextB}
{%
\begin{tcolorbox}[width=3cm, height=2cm]
\No\newline
\DTLifnullorempty{\TextA}{..........}{\DTLifeq{\TextA}{0}{..........}{\TextA}}\newline
\DTLifnullorempty{\TextB}{..........}{\DTLifeq{\TextB}{0}{..........}{\TextB}}
\end{tcolorbox}
% \newpage
}
\end{document}