使用数据工具时自动处理多行使用的空白行

使用数据工具时自动处理多行使用的空白行

以下示例代码略微改编自Peter Grill 对“包含主表行的表”的回答

我遇到的问题是,如果我有多行,那么我需要在其后立即添加一个额外的空白行。如果我选​​择任意行子集,则很难自动完成此操作。我以为我可以在行&&&&&&&\\末尾将空白行(类似于)添加到 csv 文件中multirow,但datatool我不喜欢这样。还有其他想法吗?

\documentclass{article}
\usepackage{array}
\usepackage{multirow}
\usepackage{datatool}
\usepackage{filecontents}
\newcommand{\colhead}[1]{\multicolumn{1}{>{\bfseries}l}{#1}}
\newcounter{tabenum}\setcounter{tabenum}{0}
\newcommand{\nextnuml}[1]{\refstepcounter{tabenum}\thetabenum.\label{#1}}

\begin{filecontents*}{foo.dat}
  Hammer001,   Hammer,    1 ,  0 , 1 , 10 , 1 , \multirow{2}{2in}{light (add some words here to wrap around)}\\
  Hammer002,   Hammer,    2 ,  0 , 1 , 10 , 1 , heavy\\
  Hammer003,   Hammer,    3 ,  0 , 1 , 10 , 1 , really heavy\\
  Longsword001,Longsword, 1 , -1 , 2 , 75 , 2 , one-handed \\
  Longsword002,Longsword, 2 , -1 , 2 , 75 , 2 , two-handed \\
  Longsword003,Longsword, 3 , -1 , 2 , 75 , 2 , three-handed \\
\end{filecontents*}

\newcommand{\PrintDTLTable}[2]{%
  % #1 = database to search
  % #2 = list of rowIDs
  \begin{tabular}{c c c c c c c p{3.0cm}}
   & \colhead{Label} & \colhead{Cost} & \colhead{Weight} & \colhead{PropA} & \colhead{PropB} & \colhead{PropC} & \colhead{Description}\\\hline
    \DTLforeach[\DTLisSubString{#2}{\RowID}]{#1}{%
      \RowID=RowID,%
      \Label=Label,%
      \Cost=Cost,%
      \Weight=Weight,%
      \PropA=PropA,%
      \PropB=PropB,%
      \PropC=PropC,%
      \Description=Description%
    }{%
      \nextnuml{\RowID} & \Label &\Cost & \Weight & \PropA & \PropB & \PropC & \Description
    }%
  \end{tabular}
}%

\begin{document}
% \DTLsetseparator{&}% Define separator of the data
\DTLloaddb[noheader,keys={RowID,Label,Cost,Weight,PropA,PropB,PropC,Description}]{myDB}{foo.dat}

% \DTLdisplaydb{myDB}% Usefule for debugging.

\PrintDTLTable{myDB}{Hammer001,Hammer003,Longsword003}

This is a reference to ~\ref{Hammer003}.

\end{document}

答案1

实际上,下面的代码似乎可行。定义

\newcommand{\foo}{&&&&&&&}

然后将其添加\foo到多行行尾。因此,只要包含多行行,就会包含额外的空白行。有人发现这有问题吗?如果您想到更好、更优雅的方法,请发帖。出于某种原因,直接添加&&&&&&&到 csv 文件会出现错误;我不确定为什么。由于我不太了解 datatool 的工作原理,因此如果能给出解释,我将不胜感激。

Hammer001,   Hammer,    1 ,  0 , 1 , 10 , 1 , \multirow{2}{2in}{light (add some words here to wrap around)}\\ \foo \\

附录:实际上,它甚至更简单。\foo不需要。只需执行即可。

Hammer001,   Hammer,    1 ,  0 , 1 , 10 , 1 , \multirow{2}{2in}{light (add some words here to wrap around)}\\ \\

相关内容